ref: 76e4f7caf9440f3ebb667b801fa55f5bc1c4be08
parent: 8d9a94a66ed80605cb21be1a091a9b6fe02bd023
author: cinap_lenrek <[email protected]>
date: Thu May 5 12:32:15 EDT 2016
remove unmaintained bitsy (ipaq) kernel
--- a/sys/src/9/bitsy/Booting101
+++ /dev/null
@@ -1,245 +1,0 @@
-
-
-The bitsy comes with Wince. To get to Plan 9, you will need a serial cable,
-a Windows machine with a serial interface, the CDROM that comes with the bitsy,
-and a Plan 9 machine with a serial interface. The Windows machine is used to
-get the Linux boot loader onto the bitsy (and to save away wince, if you so
-desire). The Plan 9 machine is used to get the plan 9 kernel and a read only
-file system onto the bitsy.
-
-0. charge up the bitsy.
-
-1. go to
- ftp://ftp.handhelds.org/pub/linux/compaq/ipaq/stable/install.html
-Get the latest version of the Linux "osloader" and "bootldr" programs
-(we have tried versions 1.3.0 and 0000-2.14.8, respectively; newest
-versions seem not to allow you to suspend your bitsy due to a bug
-which is probably ours). You can find them all at
-www.collyer.net/who/geoff/9/bitsy/.
-
-2. Use ActiveSync to copy osloader and bootldr to the bitsy. Copy or
-rename the bootldr binary to "bootldr" on Windows, then copy it to the
-bitsy; trying to rename it on WinCE won't produce the right result.
-
-Steps 3 - 7 may work on a Pocket PC bitsy, but see Steps 3a - 7a
-if they don't or if you have a Pocket PC 2002 bitsy.
-
-3. Run osloader by clicking on it under the WinCE File Explorer
-
-4. Use osloader to save your WinCE flash away. This takes a while,
-as it's 16MB over a 115,200 baud line.
-
-5. Select "Run" from the osloader menu. Ignore "Run from RAM"; it's
-not needed.
-
-6. At this point, the bitsy's screen turns blank, but you can still
-talk to the bitsy over its serial port. The serial port is connected
-to the OS loader's terminal program. On Windows, you have to exit
-ActiveSync before the serial port is available for a terminal program.
-I moved the bitsy and its cable over to a Plan 9 machine and connected
-using "con -b 115200 /dev/eia[01]" to talk to the console. The
-command "help" lists the OS loader's commands.
-
-7. Now you need to download the BOOT loader program into flash (right
-now, you're only running the OS loader program out of RAM; rebooting
-will get you back to WinCE). In the con window, "load bootldr" to the
-bitsy. It will indicate that it's starting an xmodem download.
-Under con, type "Ctrl-\" to get a ">>>" prompt. At this prompt, you
-want to run Plan 9's xms program to pipe the bootldr program to the
-bitsy. For example, to download /tmp/bootldr, type "!xms /tmp/bootldr".
-
-If this step works successfully, the OS loader will print out some sort
-of OK checksum message.
-
-If you have a Pocket PC 2002 or steps 3 - 7 above didn't work for you,
-try 3a - 7a.
-
-3a. Copy BootBlaster (also) to the bitsy via ActiveSync.
-
-4a. Save your flash by running osloader and selecting "Flash->Save to
-File". As it produces 4MB files, use ActiveSync to copy them off the
-bitsy.
-
-5a. Move the bitsy and its cable over to a Plan 9 machine and connect
-using "con -b 115200 /dev/eia[01]" to talk to the console.
-
-6a. Run BootBlaster by clicking on it under the WinCE File Explorer.
-
-7a. Select "Program"; it should copy "bootldr" into your flash in
-about 15 seconds.
-
-8. Reboot your bitsy (either cycle the power or use the reset
-switch). The new boot loader runs out of Flash. You'll get the linux
-penguin splash screen and a bunch of options triggered by buttons.
-Pick the one that gets you to the boot loader.
-
-9. Make the partitions you need in the bitsy's flash, type, using
-the con program:
- partition reset
- partition define bootldr 0x000000 0x040000 2
- partition define params 0x040000 0x040000 0
- partition define kernel 0x080000 0x0c0000 0
- partition define user 0x140000 0x0c0000 0
- partition define ramdisk 0x200000 0x600000 0
- partition define fs 0x800000 0x800000 0
- params save
-
-These are the partitions as shown by partition show:
- boot> partition show
- argv[1]=partition
- npartitions=00000006
- bootldr
- base: 00000000
- size: 00040000
- flags: 00000002
- params
- base: 00040000
- size: 00040000
- flags: 00000000
- kernel
- base: 00080000
- size: 000C0000
- flags: 00000000
- user
- base: 00140000
- size: 000C0000
- flags: 00000000
- ramdisk
- base: 00200000
- size: 00600000
- flags: 00000000
- fs
- base: 00800000
- size: 00800000
- flags: 00000000
-
-After each line you'll get a message like `defining partition: params'.
-Different versions of the bootloader predefine different partitions.
-The bootldr partition is usually predefined, so you don't have to remake
-that. You may have to delete one or two partitions. The command is
- partition delete <name>
-Make sure the partition layout is as given above; some of this knowledge is
-built into the kernel.
-
-10. Before you can fill the new partitions with a kernel and a read-only
-file system, you'll have to make them. In the directory /sys/src/9/bitsy,
-type mk and mk paqdisk. Before mk-ing paqdisk, make sure you have all
-the necessary arm binaries installed in /arm and examine the file
-paqfiles/mfs to see what you need to change for connecting to your local
-file servers.
-
-11. Now you can type "load kernel". The boot loader will prompt for
-another xmodem download. Again escape using "Ctrl-\", then use
-"!xms /sys/src/9/bitsy/9bitsy" (or "!xms /arm/9bitsy" if you've already
-installed it).
-
-12. Download the ramdisk, using "load ramdisk" and
-"!xms /sys/src/9/bitsy/paqdisk" (or "!xms /arm/paqdisk" if you've already
-installed it), similarly to 10, above.
-
-13. Type `boot' or `boot flash' depending on your version of the boot loader.
-If you need the latter, you may want to
-
- set boot_type flash
- params save
-
-to make boot flash the default.
-
-You'll get a Dutch flag (or a French one, if you hold the iPaq the wrong way),
-then the boot screen will say, on the serial port, thus in your con window:
-
- root is from [paq]:
-
-Just wait a while or hit enter in the con window and it'll continue.
-
-14. The bitsy will now want to calibrate the screen. It'll put up a
-series of crosses that you should press the center of. Hold the pen
-down over each cross for a second or so; aim carefully. Hold the
-machine in your hand the way you'ld normally use it or the calibration
-could be off since there is depth to the glass in the screen.
-
-15. You'll get a new screen with a single line at the top and a
-keyboard/scribble area at the bottom. This is a simple one file
-editor. This file is similar to plan9.ini on PC's. There may be
-garbage on the top line. If there is, delete the garbage letters.
-(Be careful here: the backspace and delete keys are adjacent on the
-wee keyboard and it's much too easy to hit delete instead of
-backspace, especially if you haven't calibrated the screen dead-on.)
-You should be left with a single line containing (with different
-numbers):
- calibrate='-16374 22919 251 -24'
-You need to enter a few more things, including, but not limited to:
-
- user=<user-name>
- wvkey1=<key string>
- wvkey2=<key string>
- wvkey3=<key string>
- wvtxkey=<key string>
- wvessid=<wavelan name>
- auth=<ip address>
- cpu=<ip address>
- proxy=<ip address>
- fs=<ip address>
-
-Your best bet is to copy these off a working bitsy. wv*key* only
-matter if your wireless network is encrypted. When roaming the world,
-omit wv*. When you're done, hit the "ESC" key on the simulated
-keyboard, or the side button near the word iPAQ on the bitsy. The
-system will now come up as you. However, you'll get a message about
-the flash file system being corrupted, because we haven't yet
-initialized it.
-
-16. To set up the file systems, sweep a window and give the following
-sequence of commands.
-
- # aux/mkflashfs /dev/flash/fs
- # aux/flashfs
-
-aux/flashfs created a Plan 9 server in /srv/brzr, which we can use to set up
-default directories.
-
- # mount -c /srv/brzr /n/brzr
- # cd /n/brzr
- # mkdir n usr
- # mkdir n/fs n/emelie n/choline n/nslocum
- # mkdir usr/yourname usr/yourfriend
-
-17. For safety, reboot the system:
-
- # reboot
-
-18. Now reboot, go through the Linux splash screen, the Plan 9 boot
-editor, and sweep yourself a new rio window.
-
-Before you can connect to other machines, you need a way to enter
-passwords and keys into factotum. The easiest way to do this is to
-run
-
- # auth/fgui &
-
-in the window you just made. The window will disappear (fgui spends
-most of its time hidden), so sweep a new window and run the command
-
- # mfs
-
-to connect to file servers. You will probably need to modify mfs to
-work in your environment (see point 10), though you can supply many
-of the variables it needs in step 15, and doing
-
- # import $cpu /net
-
-before running mfs can go a long ways.
-
-19. When you're all set with a working wavelan, you can download new
-kernels more quickly using
-
- # bitsyload k
-
-and new paqdisks using
-
- # bitsyload r
-
-(r stands for ramdisk, the name of the partition into which paqdisk goes).
-Note that overwriting the ramdisk partition will cause the read-only file
-system which forms the root of you namespace to fail. You'll need to
-reboot immediately after bytsyload r.
--- a/sys/src/9/bitsy/bitsy
+++ /dev/null
@@ -1,49 +1,0 @@
-dev
- root
- cons
- dup
- env
- ether netif
- flash
- ip arp chandial ip ipv6 ipaux iproute netlog nullmedium pktmedium inferno
- kprof
- mnt
- µc
- pcmcia cis
- draw
- penmouse
- pipe
- proc
- cap
- srv
- ssl
- uart
- uda1341
- sd
-
-ip
- tcp
- udp
- ipifc
- icmp
- icmp6
- gre
- ipmux
-
-link
- etherwavelan wavelan
- ethermedium
-
-misc
- uartsa1110
- sdata
-
-port
- int cpuserver = 1;
-
-bootdir
- /$objtype/bin/paqfs
- /$objtype/bin/auth/factotum
- bootfs.paq
- boot
-
--- a/sys/src/9/bitsy/bitsyreset.s
+++ /dev/null
@@ -1,103 +1,0 @@
-#include "mem.h"
-
- // Bitsy development board uses two banks: KM416S4030C,
- // 12 row address bits, 8 col address bits
- // Bitsy uses two banks KM416S8030C, 12 row address bits,
- // 9 col address bits
- // Have to set DRAC0 to 14 row bits or else you only get 8 col bits
- // from the formfactor unit configuration registers: 0xF3536257
-mdcnfg: // DRAM Configuration Register 10.2.1
- WORD 1<<0 | 1<<2 | 0<<3 | 0x5<<4 | 0x3<<8 | 3<<12 | 3<<14
-mdrefr0: // DRAM Refresh Control Register 10.2.2
- WORD 1<<0 | 0x200<<4 | 1<<21 | 1<<22 | 1 <<31
-mdrefr1: // DRAM Refresh Control Register 10.2.2
- WORD 1<<0 | 0x200<<4 | 1<<21 | 1<<22
-mdrefr2: // DRAM Refresh Control Register 10.2.2
- WORD 1<<0 | 0x200<<4 | 1<<20 | 1<<21 | 1<<22
-
- /* MDCAS settings from [1] Table 10-3 (page 10-18) */
-waveform0:
- WORD 0xAAAAAAA7
-waveform1:
- WORD 0xAAAAAAAA
-waveform2:
- WORD 0xAAAAAAAA
-
-delay: // delay without using memory
- mov $100, r1 // 200MHz: 100 × (2 instructions @ 5 ns) == 1 ms
-l1:
- sub $1, r1
- bgt l1
- sub $1, r0
- bgt delay
- ret
-
-reset:
- mov $INTREGS+4, r0 // turn off interrupts
- mov $0, (r0)
-
- // Is this necessary on wakeup?
- mov $POWERREGS+14, r0 // set clock speed to 191.7MHz
- mov $0xb, (r0)
-
- // This is necessary on hard reset, but not on sleep reset
- mov $0x80, r0 // wait ±128 µs
- bl delay
-
- /* check to see if we're operating out of DRAM */
- bic $0x000000ff, pc, r4
- bic $0x0000ff00, r4
- bic $0x00ff0000, r4
- cmp r4, $PHYSDRAM0
- beq dram
-
-dramwakeup:
-
- mov $POWERREGS+0x4, r1 // Clear DH in Power Manager Sleep Status Register
- bic $(1<<3), (r1) // DH == DRAM Hold
- // This releases nCAS/DQM and nRAS/nSDCS pins to make DRAM exit selfrefresh
-
- /* Set up the DRAM in banks 0 and 1 [1] 10.3 */
- mov $MEMCONFREGS, r1
-
- mov mdrefr0, r2 // Turn on K1RUN
- mov r2, 0x1c(r1)
-
- mov mdrefr1, r2 // Turn off SLFRSH
- mov r2, 0x1c(r1)
-
- mov mdrefr2, r2 // Turn on E1PIN
- mov r2, 0x1c(r1)
-
- mov waveform0, r2
- mov r2, 0x4(r1)
-
- mov waveform1, r2
- mov r2, 0x8(r1)
-
- mov waveform2, r2
- mov r2, 0xc(r1)
-
- mov $PHYSDRAM0, r0
- mov 0x00(r0), r2 // Eight non-burst read cycles
- mov 0x20(r0), r2
- mov 0x40(r0), r2
- mov 0x60(r0), r2
- mov 0x80(r0), r2
- mov 0xa0(r0), r2
- mov 0xc0(r0), r2
- mov 0xe0(r0), r2
-
- mov mdcnfg, r2 // Enable memory banks
- mov r2, 0x0(r1)
-
- // Is there any use in turning on EAPD and KAPD in the MDREFR register?
-
- ret
-
-
-
-
-dram:
-
-
--- a/sys/src/9/bitsy/clock.c
+++ /dev/null
@@ -1,254 +1,0 @@
-#include "u.h"
-#include "../port/lib.h"
-#include "mem.h"
-#include "dat.h"
-#include "fns.h"
-#include "io.h"
-#include "ureg.h"
-#include "../port/error.h"
-
-
-enum {
- RTCREGS = 0x90010000, /* real time clock registers */
- RTSR_al = 0x01, /* alarm detected */
- RTSR_hz = 0x02, /* 1Hz tick */
- RTSR_ale= 0x04, /* alarm interrupt enable */
- RTSR_hze= 0x08, /* 1Hz tick enable */
-
- Never = 0xffffffff,
-};
-
-typedef struct OSTimer
-{
- ulong osmr[4]; /* match registers */
- volatile ulong oscr; /* counter register */
- ulong ossr; /* status register */
- ulong ower; /* watchdog enable register */
- ulong oier; /* timer interrupt enable register */
-} OSTimer;
-
-typedef struct RTCregs
-{
- ulong rtar; /* alarm */
- ulong rcnr; /* count */
- ulong rttr; /* trim */
- ulong dummy; /* hole */
- ulong rtsr; /* status */
-} RTCregs;
-
-OSTimer *timerregs = (OSTimer*)OSTIMERREGS;
-RTCregs *rtcregs = (RTCregs*)RTCREGS;
-static int clockinited;
-
-static void clockintr(Ureg*, void*);
-static void rtcintr(Ureg*, void*);
-static Tval when; /* scheduled time of next interrupt */
-
-long timeradjust;
-
-enum
-{
- Minfreq = ClockFreq/HZ, /* At least one interrupt per HZ (50 ms) */
- Maxfreq = ClockFreq/10000, /* At most one interrupt every 100 µs */
-};
-
-ulong
-clockpower(int on)
-{
- static ulong savedtime;
-
- if (on){
- timerregs->ossr |= 1<<0;
- timerregs->oier = 1<<0;
- timerregs->osmr[0] = timerregs->oscr + Minfreq;
- if (rtcregs->rttr == 0){
- rtcregs->rttr = 0x8000; // nominal frequency.
- rtcregs->rcnr = 0;
- rtcregs->rtar = 0xffffffff;
- rtcregs->rtsr |= RTSR_ale;
- rtcregs->rtsr |= RTSR_hze;
- }
- if (rtcregs->rcnr > savedtime)
- return rtcregs->rcnr - savedtime;
- } else
- savedtime = rtcregs->rcnr;
- clockinited = on;
- return 0L;
-}
-
-void
-clockinit(void)
-{
- ulong x;
- ulong id;
-
- /* map the clock registers */
- timerregs = mapspecial(OSTIMERREGS, sizeof(OSTimer));
- rtcregs = mapspecial(RTCREGS, sizeof(RTCregs));
-
- /* enable interrupts on match register 0, turn off all others */
- timerregs->ossr |= 1<<0;
- intrenable(IRQ, IRQtimer0, clockintr, nil, "clock");
- timerregs->oier = 1<<0;
-
- /* figure out processor frequency */
- x = powerregs->ppcr & 0x1f;
- conf.hz = ClockFreq*(x*4+16);
- conf.mhz = (conf.hz+499999)/1000000;
-
- /* get processor type */
- id = getcpuid();
-
- print("%lud MHZ ARM, ver %lux/part %lux/step %lud\n", conf.mhz,
- (id>>16)&0xff, (id>>4)&0xfff, id&0xf);
-
- /* post interrupt 1/HZ secs from now */
- when = timerregs->oscr + Minfreq;
- timerregs->osmr[0] = when;
-
- /* enable RTC interrupts and alarms */
- intrenable(IRQ, IRQrtc, rtcintr, nil, "rtc");
- rtcregs->rttr = 0x8000; // make rcnr 1Hz
- rtcregs->rcnr = 0; // reset counter
- rtcregs->rtsr |= RTSR_al;
- rtcregs->rtsr |= RTSR_ale;
-
- timersinit();
-
- clockinited = 1;
-}
-
-/* turn 32 bit counter into a 64 bit one. since todfix calls
- * us at least once a second and we overflow once every 1165
- * seconds, we won't miss an overflow.
- */
-uvlong
-fastticks(uvlong *hz)
-{
- static uvlong high;
- static ulong last;
- ulong x;
-
- if(hz != nil)
- *hz = ClockFreq;
- x = timerregs->oscr;
- if(x < last)
- high += 1LL<<32;
- last = x;
- return high+x;
-}
-
-ulong
-µs(void)
-{
- return fastticks2us(fastticks(nil));
-}
-
-void
-timerset(Tval v)
-{
- ulong next, tics; /* Must be unsigned! */
- static int count;
-
- next = v;
-
- /* post next interrupt: calculate # of tics from now */
- tics = next - timerregs->oscr - Maxfreq;
- if (tics > Minfreq){
- timeradjust++;
- next = timerregs->oscr + Maxfreq;
- }
- timerregs->osmr[0] = next;
-}
-
-static void
-clockintr(Ureg *ureg, void*)
-{
- /* reset previous interrupt */
- timerregs->ossr |= 1<<0;
- when += Minfreq;
- timerregs->osmr[0] = when; /* insurance */
-
- timerintr(ureg, when);
-}
-
-void
-rtcalarm(ulong secs)
-{
- vlong t;
-
- if (t == 0){
- iprint("RTC alarm cancelled\n");
- rtcregs->rtsr &= ~RTSR_ale;
- rtcregs->rtar = 0xffffffff;
- } else {
- t = todget(nil);
- t = t / 1000000000ULL; // nsec to secs
- if (secs < t)
- return;
- secs -= t;
- iprint("RTC alarm set to %uld seconds from now\n", secs);
- rtcregs->rtar = rtcregs->rcnr + secs;
- rtcregs->rtsr|= RTSR_ale;
- }
-}
-
-static void
-rtcintr(Ureg*, void*)
-{
- /* reset interrupt */
- rtcregs->rtsr&= ~RTSR_ale;
- rtcregs->rtsr&= ~RTSR_al;
-
- rtcregs->rtar = 0;
- iprint("RTC alarm: %lud\n", rtcregs->rcnr);
-}
-
-void
-delay(int ms)
-{
- ulong start;
- int i;
-
- if(clockinited){
- while(ms-- > 0){
- start = timerregs->oscr;
- while(timerregs->oscr-start < ClockFreq/1000)
- ;
- }
- } else {
- while(ms-- > 0){
- for(i = 0; i < 1000; i++)
- ;
- }
- }
-}
-
-void
-microdelay(int µs)
-{
- ulong start;
- int i;
-
- µs++;
- if(clockinited){
- start = timerregs->oscr;
- while(timerregs->oscr - start < 1UL+(µs*ClockFreq)/1000000UL)
- ;
- } else {
- while(µs-- > 0){
- for(i = 0; i < 10; i++)
- ;
- }
- }
-}
-
-/*
- * performance measurement ticks. must be low overhead.
- * doesn't have to count over a second.
- */
-ulong
-perfticks(void)
-{
- return timerregs->oscr;
-}
--- a/sys/src/9/bitsy/dat.h
+++ /dev/null
@@ -1,289 +1,0 @@
-typedef struct Cisdat Cisdat;
-typedef struct Conf Conf;
-typedef struct Confmem Confmem;
-typedef struct FPU FPU;
-typedef struct FPenv FPenv;
-typedef struct FPsave FPsave;
-typedef struct DevConf DevConf;
-typedef struct Label Label;
-typedef struct Lock Lock;
-typedef struct MMU MMU;
-typedef struct Mach Mach;
-typedef struct Notsave Notsave;
-typedef struct Page Page;
-typedef struct PCMmap PCMmap;
-typedef struct PCMslot PCMslot;
-typedef struct PCMconftab PCMconftab;
-typedef struct PhysUart PhysUart;
-typedef struct PMMU PMMU;
-typedef struct Proc Proc;
-typedef struct Uart Uart;
-typedef struct Ureg Ureg;
-typedef struct Vctl Vctl;
-typedef long Tval;
-
-#pragma incomplete Ureg
-
-typedef void IntrHandler(Ureg*, void*);
-
-#define MAXSYSARG 5 /* for mount(fd, mpt, flag, arg, srv) */
-
-/*
- * parameters for sysproc.c
- */
-#define AOUT_MAGIC (E_MAGIC)
-
-struct Lock
-{
- ulong key;
- ulong sr;
- ulong pc;
- Proc *p;
- Mach *m;
- ushort isilock;
-};
-
-struct Label
-{
- ulong sp;
- ulong pc;
-};
-
-/*
- * FPsave.status
- */
-enum
-{
- FPinit,
- FPactive,
- FPinactive,
-};
-struct FPsave
-{
- ulong status;
- ulong control;
- ulong regs[8][3]; /* emulated fp */
-};
-
-struct Confmem
-{
- ulong base;
- ulong npage;
- ulong limit;
- ulong kbase;
- ulong klimit;
-};
-
-struct Conf
-{
- ulong nmach; /* processors */
- ulong nproc; /* processes */
- Confmem mem[2];
- ulong npage; /* total physical pages of memory */
- ulong upages; /* user page pool */
- ulong nimage; /* number of page cache image headers */
- ulong nswap; /* number of swap pages */
- int nswppo; /* max # of pageouts per segment pass */
- ulong copymode; /* 0 is copy on write, 1 is copy on reference */
- int monitor;
- ulong ialloc; /* bytes available for interrupt time allocation */
- ulong pipeqsize; /* size in bytes of pipe queues */
- ulong hz; /* processor cycle freq */
- ulong mhz;
-};
-
-/*
- * MMU stuff in proc
- */
-enum
-{
- NCOLOR= 1, /* 1 level cache, don't worry about VCE's */
- Nmeg= 32, /* maximum size of user space */
-};
-
-struct PMMU
-{
- Page *l1page[Nmeg]; /* this's process' level 1 entries */
- ulong l1table[Nmeg]; /* ... */
- Page *mmufree; /* free mmu pages */
-};
-
-/*
- * things saved in the Proc structure during a notify
- */
-struct Notsave
-{
- int dummy;
-};
-
-#include "../port/portdat.h"
-
-struct Mach
-{
- int machno; /* physical id of processor */
- ulong splpc; /* pc of last caller to splhi */
-
- Proc *proc; /* current process */
- ulong mmupid; /* process id currently in mmu & cache */
-
- ulong ticks; /* of the clock since boot time */
- Label sched; /* scheduler wakeup */
- Lock alarmlock; /* access to alarm list */
- void* alarm; /* alarms bound to this clock */
- int inclockintr;
-
- Proc* readied; /* for runproc */
- ulong schedticks; /* next forced context switch */
-
- /* stats */
- int tlbfault;
- int tlbpurge;
- int pfault;
- int cs;
- int syscall;
- int load;
- int intr;
- vlong fastclock; /* last sampled value */
- uvlong inidle; /* time spent in idlehands() */
- ulong spuriousintr;
- int lastintr;
- int ilockdepth;
- Perf perf; /* performance counters */
-
- int flushmmu; /* make current proc flush it's mmu state */
- Proc *pid2proc[31]; /* what proc holds what pid */
- int lastpid; /* highest assigned pid slot */
-
- int cpumhz; /* speed of cpu */
- vlong cpuhz; /* ... */
- uvlong cyclefreq; /* Frequency of user readable cycle counter */
-
- /* save areas for exceptions */
- ulong sfiq[5];
- ulong sirq[5];
- ulong sund[5];
- ulong sabt[5];
-
- int stack[1];
-};
-
-/*
- * Fake kmap since we direct map dram
- */
-typedef void KMap;
-#define VA(k) ((ulong)(k))
-#define kmap(p) (KMap*)((p)->pa)
-#define kunmap(k)
-
-struct
-{
- Lock;
- char machs[MAXMACH]; /* active CPUs */
- int exiting; /* shutdown */
-}active;
-
-#define MACHP(n) ((Mach *)(MACHADDR+(n)*BY2PG))
-
-extern Mach *m;
-extern Proc *up;
-
-enum
-{
- OneMeg= 1024*1024,
-};
-
-/*
- * PCMCIA structures known by both port/cis.c and the pcmcia driver
- */
-
-/*
- * Map between ISA memory space and PCMCIA card memory space.
- */
-struct PCMmap {
- ulong ca; /* card address */
- ulong cea; /* card end address */
- ulong isa; /* local virtual address */
- int len; /* length of the ISA area */
- int attr; /* attribute memory */
-};
-
-/*
- * a PCMCIA configuration entry
- */
-struct PCMconftab
-{
- int index;
- ushort irqs; /* legal irqs */
- uchar irqtype;
- uchar bit16; /* true for 16 bit access */
- struct {
- ulong start;
- ulong len;
- } io[16];
- int nio;
- uchar vpp1;
- uchar vpp2;
- uchar memwait;
- ulong maxwait;
- ulong readywait;
- ulong otherwait;
-};
-
-/*
- * PCMCIA card slot
- */
-struct PCMslot
-{
- RWlock;
-
- Ref ref;
-
- long memlen; /* memory length */
- uchar slotno; /* slot number */
- void *regs; /* i/o registers */
- void *mem; /* memory */
- void *attr; /* attribute memory */
-
- /* status */
- uchar occupied; /* card in the slot */
- uchar configed; /* card configured */
- uchar inserted; /* card just inserted */
-
- Dev *dev; /* set in ctlwrite `configure' */
-
- /* cis info */
- int cisread; /* set when the cis has been read */
- char verstr[512]; /* version string */
- int ncfg; /* number of configurations */
- struct {
- ushort cpresent; /* config registers present */
- ulong caddr; /* relative address of config registers */
- } cfg[8];
- int nctab; /* number of config table entries */
- PCMconftab ctab[8];
- PCMconftab *def; /* default conftab */
-
- /* maps are fixed */
- PCMmap memmap;
- PCMmap attrmap;
-};
-
-/*
- * hardware info about a device
- */
-typedef struct {
- ulong port;
- int size;
-} Devport;
-
-struct DevConf
-{
- RWlock; /* write: configure/unconfigure/suspend; read: normal access */
- ulong mem; /* mapped memory address */
- Devport *ports; /* ports[0]: mapped i/o regs, access size */
- int nports; /* always 1 for the bitsy */
- int itype; /* type of interrupt */
- ulong intnum; /* interrupt number */
- char *type; /* card type, mallocated */
-};
-
--- a/sys/src/9/bitsy/defont.c
+++ /dev/null
@@ -1,291 +1,0 @@
-#include <u.h>
-#include <libc.h>
-#include <draw.h>
-
-/*
- * /tmp/latin1.6x13, in uncompressed form
- */
-uchar
-defontdata[] =
-{
- 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x20,0x20,0x20,0x20,
- 0x20,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
- 0x20,0x20,0x30,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x31,0x35,0x33,0x36,0x20,
- 0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x31,0x33,0x20,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2a,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0x41,0x0e,0x00,0x60,0xc2,0x0a,0x00,
- 0x00,0x00,0x60,0xc2,0x00,0x60,0xc2,0x00,0x00,0xa6,0x0c,0x20,0xa0,0x00,0x01,0x83,
- 0x08,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x0c,0x00,0x00,0x00,0x00,0x0c,0x00,0x03,0x00,0x00,0x00,0x3f,
- 0x30,0x03,0x1c,0x30,0x00,0x00,0x00,0x83,0x00,0x41,0x02,0x00,0x31,0x85,0x14,0x51,
- 0xc0,0x00,0x31,0x85,0x14,0x31,0x85,0x14,0x01,0x43,0x18,0x51,0x45,0x00,0x08,0xc6,
- 0x14,0x51,0x86,0x1c,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x02,0x00,
- 0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x08,0x00,0x0c,0x00,0x73,0xe0,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x85,0x00,0x71,0x24,0x0c,0x11,0x00,0x00,0x00,0x00,0x02,
- 0x20,0x87,0x3e,0x13,0xe7,0x3e,0x71,0xc0,0x00,0x08,0x08,0x1c,0x70,0x8f,0x1c,0xf3,
- 0xef,0x9c,0x89,0xc3,0xa2,0x82,0x28,0x9c,0xf1,0xcf,0x1c,0xfa,0x28,0xa2,0x8a,0x2f,
- 0x9c,0x81,0xc2,0x00,0x30,0x08,0x00,0x08,0x03,0x00,0x80,0x00,0x20,0x60,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x23,0x04,0xaa,0x8f,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
- 0xff,0xff,0xff,0xff,0x0c,0x80,0x00,0x02,0x22,0x12,0x00,0xc0,0x80,0x00,0x03,0x00,
- 0x48,0x04,0x82,0x60,0x06,0xc0,0x00,0x84,0x80,0x49,0x24,0x08,0x00,0x08,0x80,0x01,
- 0x40,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0xf0,0x00,0x00,0x88,0x00,0x00,0x70,0x00,
- 0x00,0x00,0x04,0x22,0x60,0xc5,0x0a,0x00,0x00,0x00,0x60,0xc5,0x00,0x60,0xc5,0x00,
- 0x09,0x46,0x0c,0x51,0x40,0x00,0x01,0x83,0x14,0x00,0xc8,0x00,0x1b,0xe0,0x00,0x03,
- 0x84,0x00,0xc0,0x00,0x00,0xf0,0x0e,0x38,0xc3,0x0c,0x30,0xc2,0x4e,0x38,0x63,0x8e,
- 0x38,0xe3,0x8c,0x28,0x00,0x85,0x14,0xa2,0xaa,0x08,0x20,0x82,0x00,0x00,0x00,0x02,
- 0x51,0x88,0x82,0x12,0x08,0x82,0x8a,0x20,0x00,0x10,0x04,0x22,0x89,0x44,0xa2,0x4a,
- 0x08,0x22,0x88,0x81,0x22,0x82,0x2c,0xa2,0x8a,0x28,0xa2,0x22,0x28,0xa2,0x8a,0x20,
- 0x90,0x80,0x45,0x00,0x10,0x08,0x00,0x08,0x04,0x80,0x80,0x81,0x20,0x20,0x00,0x00,
- 0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x08,0x20,0x8a,0x94,0x77,0xff,0xff,0x1e,
- 0xff,0xcf,0xff,0xff,0xc3,0xfc,0x71,0xcf,0x3c,0xf3,0xcf,0x6c,0x71,0xe7,0x1c,0x71,
- 0xc7,0x3c,0x73,0xd7,0x00,0x02,0x00,0x8a,0x22,0x10,0x51,0x23,0x82,0x00,0x04,0x80,
- 0x48,0x01,0x0c,0x00,0x0a,0x80,0x00,0x84,0xa0,0x51,0x42,0x80,0x71,0xc7,0x1c,0x71,
- 0xc7,0xa2,0xfb,0xef,0xbe,0x71,0xc7,0x1c,0x4a,0x27,0x1c,0x71,0xc7,0x00,0x9a,0x28,
- 0xa2,0x8a,0x27,0x22,0x31,0x88,0x94,0x51,0xc0,0x00,0x31,0x88,0x94,0x31,0x88,0x94,
- 0x7e,0x83,0x18,0x8a,0x85,0x0c,0x00,0xc6,0x22,0x51,0x88,0x14,0x9f,0xee,0x38,0xe2,
- 0x0a,0x08,0xa2,0x88,0x22,0x81,0xc8,0x20,0xa2,0x8a,0x28,0xa3,0x48,0x20,0x92,0x08,
- 0x20,0x82,0x0a,0x28,0x00,0x85,0x14,0xa1,0x4a,0x10,0x20,0x8a,0x88,0x00,0x00,0x04,
- 0x8a,0x88,0x84,0x32,0x08,0x04,0x8a,0x22,0x08,0x20,0x02,0x22,0x8a,0x24,0xa0,0x4a,
- 0x08,0x20,0x88,0x81,0x24,0x83,0x6c,0xa2,0x8a,0x28,0xa0,0x22,0x28,0xa2,0x51,0x41,
- 0x10,0x40,0x48,0x80,0x08,0x08,0x00,0x08,0x04,0x00,0x80,0x00,0x20,0x20,0x00,0x00,
- 0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x08,0x20,0x89,0x2a,0x74,0x71,0xc7,0x7d,
- 0x7d,0xd7,0x5d,0xf7,0x5f,0x8d,0xf7,0xd7,0x5d,0x75,0xd7,0x2d,0xf7,0xdb,0x7d,0xf7,
- 0xdf,0x5d,0xf5,0xd7,0x00,0x82,0x0c,0x71,0x42,0x10,0x02,0x14,0x84,0x00,0x08,0x40,
- 0x48,0x82,0x02,0x00,0x0a,0x80,0x00,0x83,0x10,0x20,0x8d,0x08,0x8a,0x28,0xa2,0x8a,
- 0x2a,0x20,0x82,0x08,0x20,0x20,0x82,0x08,0x4b,0x28,0xa2,0x8a,0x28,0x80,0x9a,0x28,
- 0xa2,0x89,0x44,0xa6,0x00,0x00,0x00,0x01,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x08,0x00,0x00,0x00,0x00,0x0c,0x08,0x00,0x00,0x00,0x08,0x00,0xff,0xe8,0x20,0x83,
- 0x8a,0x1c,0xc2,0x88,0x22,0xe2,0x0e,0x38,0xa2,0x8a,0x28,0xa2,0xce,0x30,0x83,0x8e,
- 0x38,0xe2,0x8c,0x28,0x00,0x80,0x3e,0x70,0x44,0x00,0x40,0x4f,0x88,0x00,0x00,0x04,
- 0x88,0x80,0x88,0x52,0xc8,0x04,0x8a,0x27,0x1c,0x43,0xe1,0x02,0x9a,0x24,0xa0,0x4a,
- 0x08,0x20,0x88,0x81,0x28,0x82,0xaa,0xa2,0x8a,0x28,0xa0,0x22,0x28,0xa2,0x51,0x41,
- 0x10,0x40,0x40,0x00,0x01,0xcf,0x1c,0x79,0xc4,0x1c,0xb1,0x83,0x24,0x23,0x4b,0x1c,
- 0xf1,0xeb,0x1c,0xf2,0x28,0xa2,0x8a,0x2f,0x88,0x20,0x80,0x14,0xf5,0xf7,0xdf,0x1d,
- 0x78,0xcf,0x5d,0xf7,0x47,0x7c,0x71,0xd7,0x5d,0x75,0xd7,0x4c,0x73,0xdf,0x1c,0x71,
- 0xc7,0x3d,0x73,0xd7,0x00,0x87,0x12,0x51,0x42,0x1c,0x02,0xd4,0x8a,0xf8,0x0b,0x40,
- 0x30,0x87,0x9c,0x01,0x2a,0x80,0x00,0x80,0x28,0x49,0x42,0x88,0x8a,0x28,0xa2,0x8a,
- 0x2a,0x20,0x82,0x08,0x20,0x20,0x82,0x08,0x4b,0x28,0xa2,0x8a,0x28,0xa1,0xaa,0x28,
- 0xa2,0x89,0x44,0xac,0x71,0xc7,0x1c,0x71,0xcf,0x1c,0x71,0xc7,0x1c,0x61,0x86,0x18,
- 0x7a,0xc7,0x1c,0x71,0xc7,0x00,0x72,0x28,0xa2,0x8a,0x2f,0x22,0x1b,0xee,0x38,0xc2,
- 0x0e,0x1c,0xa3,0x88,0x14,0x82,0x02,0x08,0xa2,0x8a,0x28,0xa2,0x42,0x20,0x92,0x02,
- 0x20,0x82,0x8a,0x28,0x00,0x80,0x14,0x28,0x8a,0x00,0x40,0x47,0x3e,0x03,0xe0,0x08,
- 0x88,0x81,0x1c,0x53,0x2f,0x08,0x71,0xe2,0x08,0x80,0x00,0x84,0xaa,0x27,0x20,0x4b,
- 0xcf,0x20,0xf8,0x81,0x30,0x82,0xaa,0xa2,0xf2,0x2f,0x1c,0x22,0x25,0x2a,0x20,0x82,
- 0x10,0x20,0x40,0x00,0x00,0x28,0xa2,0x8a,0x2f,0x22,0xc8,0x81,0x28,0x22,0xac,0xa2,
- 0x8a,0x2c,0xa2,0x42,0x28,0xa2,0x52,0x21,0x30,0x20,0x60,0x2a,0xec,0x71,0xcf,0x7c,
- 0x78,0xd7,0x1d,0xfa,0xdf,0x7f,0x7d,0xd7,0x5d,0x75,0xd7,0x6f,0x77,0xdb,0x7f,0x77,
- 0xdf,0x5d,0x75,0xd7,0x00,0x8a,0x90,0x50,0x80,0x12,0x02,0x93,0x94,0x09,0xea,0x40,
- 0x03,0xe0,0x00,0x01,0x26,0x8c,0x00,0x07,0x94,0x9a,0xa5,0x90,0x8a,0x28,0xa2,0x8a,
- 0x2b,0xa0,0xf3,0xcf,0x3c,0x20,0x82,0x08,0xea,0xa8,0xa2,0x8a,0x28,0x92,0xaa,0x28,
- 0xa2,0x88,0x85,0xa6,0x08,0x20,0x82,0x08,0x22,0xa2,0x8a,0x28,0xa2,0x20,0x82,0x08,
- 0x8b,0x28,0xa2,0x8a,0x28,0x9e,0x9a,0x28,0xa2,0x8a,0x28,0xa2,0x3b,0xe2,0x20,0x83,
- 0x8a,0x14,0xc2,0x8e,0x08,0x81,0xce,0x38,0xc3,0x0c,0x30,0xc2,0x4e,0x38,0x63,0x8e,
- 0x38,0x83,0x8a,0x10,0x00,0x80,0x3e,0x29,0x09,0x80,0x40,0x4f,0x88,0x00,0x00,0x10,
- 0x88,0x82,0x02,0x90,0x28,0x88,0x88,0x20,0x00,0x40,0x01,0x08,0xab,0xe4,0xa0,0x4a,
- 0x08,0x26,0x88,0x81,0x28,0x82,0x29,0xa2,0x82,0x2a,0x02,0x22,0x25,0x2a,0x50,0x84,
- 0x10,0x10,0x40,0x00,0x01,0xe8,0xa0,0x8b,0xe4,0x22,0x88,0x81,0x30,0x22,0xa8,0xa2,
- 0x8a,0x28,0x18,0x42,0x28,0xaa,0x22,0x22,0x08,0x20,0x80,0x14,0xdf,0x77,0xdf,0x1d,
- 0x7a,0xcf,0x5c,0x7d,0xdf,0x8c,0x71,0xcf,0x3c,0xf3,0xcf,0x6c,0x71,0xe7,0x1c,0x71,
- 0xdf,0x5c,0x75,0xef,0x00,0x8a,0x3c,0x53,0xe2,0x0e,0x02,0xd0,0x28,0x09,0xea,0x40,
- 0x00,0x80,0x00,0x01,0x22,0x8c,0x00,0x00,0x0a,0x28,0x2a,0xa0,0xfb,0xef,0xbe,0xfb,
- 0xee,0x20,0x82,0x08,0x20,0x20,0x82,0x08,0x4a,0xa8,0xa2,0x8a,0x28,0x8c,0xaa,0x28,
- 0xa2,0x88,0x86,0x22,0x79,0xe7,0x9e,0x79,0xe7,0xa0,0xfb,0xef,0xbe,0x20,0x82,0x08,
- 0x8a,0x28,0xa2,0x8a,0x28,0x9e,0xaa,0x28,0xa2,0x8a,0x28,0xa2,0x33,0xee,0x38,0xf0,
- 0xc5,0x3e,0x72,0x87,0x00,0x79,0xc0,0x00,0x20,0x01,0x0e,0x18,0xa4,0x98,0x49,0x16,
- 0x1c,0x71,0xc7,0x1c,0x00,0x80,0x14,0x71,0x49,0x00,0x20,0x8a,0x88,0x00,0x00,0x10,
- 0x88,0x84,0x02,0xf8,0x28,0x90,0x88,0x20,0x00,0x23,0xe2,0x08,0xb2,0x24,0xa0,0x4a,
- 0x08,0x22,0x88,0x81,0x24,0x82,0x29,0xa2,0x82,0x29,0x02,0x22,0x25,0x2a,0x50,0x84,
- 0x10,0x10,0x40,0x00,0x02,0x28,0xa0,0x8a,0x04,0x22,0x88,0x81,0x28,0x22,0xa8,0xa2,
- 0x8a,0x28,0x04,0x42,0x25,0x2a,0x22,0x64,0x08,0x20,0x80,0x2a,0xdc,0x71,0xc3,0xce,
- 0xb0,0x63,0x5e,0x3f,0xe1,0x8f,0xff,0xf7,0xff,0xbc,0x79,0xd6,0xd9,0xed,0xba,0x78,
- 0xe3,0x8e,0x38,0xe3,0x00,0x8a,0x08,0x50,0x82,0x02,0x02,0x17,0x94,0x08,0x08,0x40,
- 0x00,0x80,0x00,0x01,0x22,0x80,0x00,0x00,0x14,0x48,0x44,0xa2,0x8a,0x28,0xa2,0x8a,
- 0x2a,0x20,0x82,0x08,0x20,0x20,0x82,0x08,0x4a,0x68,0xa2,0x8a,0x28,0x8c,0xca,0x28,
- 0xa2,0x88,0x84,0x22,0x8a,0x28,0xa2,0x8a,0x2a,0x20,0x82,0x08,0x20,0x20,0x82,0x08,
- 0x8a,0x28,0xa2,0x8a,0x28,0x80,0xaa,0x28,0xa2,0x8a,0x68,0xa6,0x33,0xe4,0x92,0x41,
- 0x25,0x08,0x41,0xc4,0x3e,0x41,0x23,0x04,0x20,0x42,0x82,0x28,0xa6,0x94,0x69,0xb5,
- 0x10,0x41,0x04,0x10,0x00,0x00,0x14,0x22,0xa6,0x80,0x20,0x82,0x00,0x30,0x02,0x20,
- 0x50,0x88,0x22,0x12,0x28,0x90,0x8a,0x22,0x0c,0x10,0x04,0x00,0x82,0x24,0xa2,0x4a,
- 0x08,0x22,0x88,0x89,0x22,0x82,0x28,0xa2,0x82,0xa8,0xa2,0x22,0x22,0x36,0x88,0x88,
- 0x10,0x08,0x40,0x00,0x02,0x28,0xa2,0x8a,0x24,0x1e,0x88,0x81,0x24,0x22,0xa8,0xa2,
- 0xf1,0xe8,0x22,0x4a,0x65,0x2a,0x51,0xa8,0x08,0x20,0x80,0x14,0xfe,0xdb,0x6f,0xb6,
- 0xbd,0xef,0x8e,0xf0,0x6f,0xb7,0x3e,0xf7,0xef,0x5f,0x75,0xd6,0x5a,0xe5,0x92,0xbb,
- 0xef,0xbe,0xfb,0xef,0x00,0x8a,0xbc,0x73,0xe2,0x02,0x01,0x20,0x0a,0x00,0x04,0x80,
- 0x03,0xe0,0x00,0x01,0x62,0x80,0x00,0x00,0x28,0x78,0x87,0xa2,0x8a,0x28,0xa2,0x8a,
- 0x2a,0x22,0x82,0x08,0x20,0x20,0x82,0x08,0x4a,0x68,0xa2,0x8a,0x28,0x92,0xca,0x28,
- 0xa2,0x88,0x84,0x26,0x8a,0x28,0xa2,0x8a,0x2a,0xa2,0x8a,0x28,0xa2,0x20,0x82,0x08,
- 0x8a,0x28,0xa2,0x8a,0x28,0x8c,0xca,0x69,0xa6,0x99,0xa8,0x9a,0x03,0xe3,0x0c,0x61,
- 0x26,0x00,0x70,0x86,0x08,0x71,0xc4,0x84,0x20,0x41,0x04,0x48,0xc5,0x98,0x59,0x56,
- 0x1c,0x71,0xc7,0x1c,0x00,0x80,0x00,0x02,0x40,0x00,0x11,0x00,0x00,0x20,0x07,0x20,
- 0x23,0xef,0x9c,0x11,0xc7,0x10,0x71,0xc7,0x08,0x08,0x08,0x08,0x7a,0x2f,0x1c,0xf3,
- 0xe8,0x1c,0x89,0xc6,0x22,0xfa,0x28,0x9c,0x81,0xc8,0x9c,0x21,0xc2,0x22,0x88,0x8f,
- 0x9c,0x09,0xc0,0x00,0x01,0xef,0x1c,0x79,0xc4,0x02,0x89,0xc9,0x22,0x72,0x28,0x9c,
- 0x80,0x28,0x1c,0x31,0xa2,0x14,0x88,0x2f,0x86,0x23,0x00,0x2a,0xdf,0x3c,0xe7,0xb6,
- 0x7f,0xe3,0xde,0x7d,0xe3,0x8e,0xde,0xf7,0xef,0xbe,0xed,0xce,0x99,0xe9,0xaa,0x78,
- 0xe3,0x8e,0x38,0xe3,0xc0,0x87,0x2a,0x88,0x82,0x12,0x00,0xc0,0x04,0x00,0x03,0x00,
- 0x00,0x00,0x00,0x01,0xa2,0x80,0x10,0x00,0x10,0x08,0xe0,0x9c,0x8a,0x28,0xa2,0x8a,
- 0x2b,0x9c,0xfb,0xef,0xbe,0x71,0xc7,0x1c,0xf2,0x27,0x1c,0x71,0xc7,0x21,0x71,0xc7,
- 0x1c,0x70,0x84,0x2c,0x79,0xe7,0x9e,0x79,0xe7,0x1c,0x71,0xc7,0x1c,0x71,0xc7,0x1c,
- 0x7a,0x27,0x1c,0x71,0xc7,0x0c,0x71,0xa6,0x9a,0x68,0x2f,0x02,0x03,0xe3,0x0c,0x40,
- 0xc5,0x00,0x10,0x84,0x08,0x41,0x44,0x84,0x20,0x42,0x02,0x7c,0xa4,0x94,0x49,0x15,
- 0x04,0x10,0x41,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x02,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x00,0x00,0x22,0x00,0x09,0x00,0x00,0x00,0x00,
- 0x80,0x20,0x00,0x00,0x00,0x00,0x02,0x20,0x00,0x00,0x00,0x14,0xff,0x3c,0xef,0xce,
- 0xbf,0xfb,0xde,0xfd,0xef,0xae,0xde,0xf7,0xef,0x7f,0x60,0xd6,0xda,0xed,0xba,0xbe,
- 0xfb,0xef,0xbe,0xfb,0xc0,0x02,0x38,0x00,0x00,0x0c,0x00,0x00,0x02,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x02,0x00,0x00,0x10,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,
- 0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x02,0x28,0x22,0x00,0x04,0x92,0x40,
- 0x24,0x80,0x70,0x84,0x08,0x41,0x23,0x04,0x38,0x43,0x8e,0x08,0x94,0x98,0x49,0x16,
- 0x1c,0x71,0xc7,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x06,0x00,0x00,0x00,0x00,
- 0x80,0x20,0x00,0x00,0x00,0x00,0x01,0xc0,0x00,0x00,0x00,0x2a,0x02,0xdb,0x6f,0xf6,
- 0xdf,0xe3,0xde,0xfd,0xef,0xb7,0x3e,0xf1,0xef,0x1c,0x7d,0xda,0xd9,0xed,0xba,0x78,
- 0xe3,0x8e,0x38,0xe3,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1c,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xc8,0x1c,
- 0x20,0x20,0x20,
- 0x20,0x20,0x20,0x20,0x20,0x32,0x35,0x36,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
- 0x20,0x20,0x31,0x33,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x31,0x31,
- 0x20,0x00,0x00,0x02,0x0a,0x00,0x06,0x06,0x00,0x02,0x0c,0x00,0x06,0x0c,0x00,0x04,
- 0x0d,0x00,0x06,0x12,0x00,0x04,0x0d,0x00,0x06,0x18,0x00,0x04,0x0d,0x00,0x06,0x1e,
- 0x00,0x03,0x0d,0x00,0x06,0x24,0x00,0x03,0x0d,0x00,0x06,0x2a,0x00,0x04,0x0a,0x00,
- 0x06,0x30,0x00,0x03,0x0d,0x00,0x06,0x36,0x00,0x04,0x0d,0x00,0x06,0x3c,0x00,0x04,
- 0x0d,0x00,0x06,0x42,0x00,0x04,0x0d,0x00,0x06,0x48,0x00,0x03,0x0d,0x00,0x06,0x4e,
- 0x00,0x04,0x0d,0x00,0x06,0x54,0x00,0x03,0x0d,0x00,0x06,0x5a,0x00,0x03,0x0d,0x00,
- 0x06,0x60,0x00,0x03,0x0d,0x00,0x06,0x66,0x00,0x03,0x0d,0x00,0x06,0x6c,0x00,0x03,
- 0x0d,0x00,0x06,0x72,0x00,0x03,0x0d,0x00,0x06,0x78,0x00,0x03,0x0d,0x00,0x06,0x7e,
- 0x00,0x03,0x0d,0x00,0x06,0x84,0x00,0x03,0x0d,0x00,0x06,0x8a,0x00,0x03,0x0d,0x00,
- 0x06,0x90,0x00,0x03,0x0d,0x00,0x06,0x96,0x00,0x03,0x0d,0x00,0x06,0x9c,0x00,0x03,
- 0x0d,0x00,0x06,0xa2,0x00,0x03,0x0d,0x00,0x06,0xa8,0x00,0x03,0x0d,0x00,0x06,0xae,
- 0x00,0x03,0x0d,0x00,0x06,0xb4,0x00,0x03,0x0d,0x00,0x06,0xba,0x00,0x03,0x0d,0x00,
- 0x06,0xc0,0x00,0x00,0x00,0x00,0x06,0xc6,0x00,0x02,0x0b,0x00,0x06,0xcc,0x00,0x02,
- 0x05,0x00,0x06,0xd2,0x00,0x03,0x0a,0x00,0x06,0xd8,0x00,0x01,0x0a,0x00,0x06,0xde,
- 0x00,0x02,0x0b,0x00,0x06,0xe4,0x00,0x02,0x0a,0x00,0x06,0xea,0x00,0x02,0x05,0x00,
- 0x06,0xf0,0x00,0x02,0x0b,0x00,0x06,0xf6,0x00,0x02,0x0b,0x00,0x06,0xfc,0x00,0x03,
- 0x0a,0x00,0x06,0x02,0x01,0x04,0x09,0x00,0x06,0x08,0x01,0x09,0x0c,0x00,0x06,0x0e,
- 0x01,0x06,0x07,0x00,0x06,0x14,0x01,0x09,0x0c,0x00,0x06,0x1a,0x01,0x02,0x0b,0x00,
- 0x06,0x20,0x01,0x02,0x0b,0x00,0x06,0x26,0x01,0x02,0x0b,0x00,0x06,0x2c,0x01,0x02,
- 0x0b,0x00,0x06,0x32,0x01,0x02,0x0b,0x00,0x06,0x38,0x01,0x02,0x0b,0x00,0x06,0x3e,
- 0x01,0x02,0x0b,0x00,0x06,0x44,0x01,0x02,0x0b,0x00,0x06,0x4a,0x01,0x02,0x0b,0x00,
- 0x06,0x50,0x01,0x02,0x0b,0x00,0x06,0x56,0x01,0x02,0x0b,0x00,0x06,0x5c,0x01,0x00,
- 0x0d,0x00,0x06,0x62,0x01,0x00,0x0d,0x00,0x06,0x68,0x01,0x02,0x0b,0x00,0x06,0x6e,
- 0x01,0x00,0x0d,0x00,0x06,0x74,0x01,0x02,0x0b,0x00,0x06,0x7a,0x01,0x02,0x0b,0x00,
- 0x06,0x80,0x01,0x02,0x0b,0x00,0x06,0x86,0x01,0x02,0x0b,0x00,0x06,0x8c,0x01,0x02,
- 0x0b,0x00,0x06,0x92,0x01,0x02,0x0b,0x00,0x06,0x98,0x01,0x02,0x0b,0x00,0x06,0x9e,
- 0x01,0x02,0x0b,0x00,0x06,0xa4,0x01,0x02,0x0b,0x00,0x06,0xaa,0x01,0x02,0x0b,0x00,
- 0x06,0xb0,0x01,0x02,0x0b,0x00,0x06,0xb6,0x01,0x02,0x0b,0x00,0x06,0xbc,0x01,0x02,
- 0x0b,0x00,0x06,0xc2,0x01,0x02,0x0b,0x00,0x06,0xc8,0x01,0x02,0x0b,0x00,0x06,0xce,
- 0x01,0x02,0x0b,0x00,0x06,0xd4,0x01,0x02,0x0b,0x00,0x06,0xda,0x01,0x02,0x0b,0x00,
- 0x06,0xe0,0x01,0x02,0x0b,0x00,0x06,0xe6,0x01,0x02,0x0c,0x00,0x06,0xec,0x01,0x02,
- 0x0b,0x00,0x06,0xf2,0x01,0x02,0x0b,0x00,0x06,0xf8,0x01,0x02,0x0b,0x00,0x06,0xfe,
- 0x01,0x02,0x0b,0x00,0x06,0x04,0x02,0x02,0x0b,0x00,0x06,0x0a,0x02,0x02,0x0b,0x00,
- 0x06,0x10,0x02,0x02,0x0b,0x00,0x06,0x16,0x02,0x02,0x0b,0x00,0x06,0x1c,0x02,0x02,
- 0x0b,0x00,0x06,0x22,0x02,0x02,0x0b,0x00,0x06,0x28,0x02,0x02,0x0b,0x00,0x06,0x2e,
- 0x02,0x02,0x0b,0x00,0x06,0x34,0x02,0x02,0x05,0x00,0x06,0x3a,0x02,0x0b,0x0c,0x00,
- 0x06,0x40,0x02,0x02,0x05,0x00,0x06,0x46,0x02,0x05,0x0b,0x00,0x06,0x4c,0x02,0x02,
- 0x0b,0x00,0x06,0x52,0x02,0x05,0x0b,0x00,0x06,0x58,0x02,0x02,0x0b,0x00,0x06,0x5e,
- 0x02,0x05,0x0b,0x00,0x06,0x64,0x02,0x02,0x0b,0x00,0x06,0x6a,0x02,0x05,0x0d,0x00,
- 0x06,0x70,0x02,0x02,0x0b,0x00,0x06,0x76,0x02,0x03,0x0b,0x00,0x06,0x7c,0x02,0x03,
- 0x0d,0x00,0x06,0x82,0x02,0x02,0x0b,0x00,0x06,0x88,0x02,0x02,0x0b,0x00,0x06,0x8e,
- 0x02,0x05,0x0b,0x00,0x06,0x94,0x02,0x05,0x0b,0x00,0x06,0x9a,0x02,0x05,0x0b,0x00,
- 0x06,0xa0,0x02,0x05,0x0d,0x00,0x06,0xa6,0x02,0x05,0x0d,0x00,0x06,0xac,0x02,0x05,
- 0x0b,0x00,0x06,0xb2,0x02,0x05,0x0b,0x00,0x06,0xb8,0x02,0x03,0x0b,0x00,0x06,0xbe,
- 0x02,0x05,0x0b,0x00,0x06,0xc4,0x02,0x05,0x0b,0x00,0x06,0xca,0x02,0x05,0x0b,0x00,
- 0x06,0xd0,0x02,0x05,0x0b,0x00,0x06,0xd6,0x02,0x05,0x0d,0x00,0x06,0xdc,0x02,0x05,
- 0x0b,0x00,0x06,0xe2,0x02,0x02,0x0b,0x00,0x06,0xe8,0x02,0x02,0x0b,0x00,0x06,0xee,
- 0x02,0x02,0x0b,0x00,0x06,0xf4,0x02,0x02,0x05,0x00,0x06,0xfa,0x02,0x00,0x0d,0x00,
- 0x06,0x00,0x03,0x00,0x0c,0x00,0x06,0x06,0x03,0x00,0x0d,0x00,0x06,0x0c,0x03,0x00,
- 0x0d,0x00,0x06,0x12,0x03,0x00,0x0d,0x00,0x06,0x18,0x03,0x00,0x0d,0x00,0x06,0x1e,
- 0x03,0x00,0x0d,0x00,0x06,0x24,0x03,0x00,0x0d,0x00,0x06,0x2a,0x03,0x00,0x0d,0x00,
- 0x06,0x30,0x03,0x00,0x0d,0x00,0x06,0x36,0x03,0x00,0x0d,0x00,0x06,0x3c,0x03,0x00,
- 0x0d,0x00,0x06,0x42,0x03,0x00,0x0d,0x00,0x06,0x48,0x03,0x00,0x0d,0x00,0x06,0x4e,
- 0x03,0x00,0x0d,0x00,0x06,0x54,0x03,0x00,0x0d,0x00,0x06,0x5a,0x03,0x00,0x0d,0x00,
- 0x06,0x60,0x03,0x00,0x0d,0x00,0x06,0x66,0x03,0x00,0x0d,0x00,0x06,0x6c,0x03,0x00,
- 0x0d,0x00,0x06,0x72,0x03,0x00,0x0d,0x00,0x06,0x78,0x03,0x00,0x0d,0x00,0x06,0x7e,
- 0x03,0x00,0x0d,0x00,0x06,0x84,0x03,0x00,0x0d,0x00,0x06,0x8a,0x03,0x00,0x0d,0x00,
- 0x06,0x90,0x03,0x00,0x0d,0x00,0x06,0x96,0x03,0x00,0x0d,0x00,0x06,0x9c,0x03,0x00,
- 0x0d,0x00,0x06,0xa2,0x03,0x00,0x0d,0x00,0x06,0xa8,0x03,0x00,0x0d,0x00,0x00,0xae,
- 0x03,0x00,0x0d,0x00,0x00,0xb4,0x03,0x00,0x0d,0x00,0x00,0xba,0x03,0x00,0x0d,0x00,
- 0x00,0xc0,0x03,0x01,0x0c,0x00,0x06,0xc6,0x03,0x02,0x0b,0x00,0x06,0xcc,0x03,0x03,
- 0x0c,0x00,0x06,0xd2,0x03,0x04,0x0c,0x00,0x06,0xd8,0x03,0x03,0x0b,0x00,0x06,0xde,
- 0x03,0x02,0x0b,0x00,0x06,0xe4,0x03,0x02,0x0b,0x00,0x06,0xea,0x03,0x01,0x0c,0x00,
- 0x06,0xf0,0x03,0x03,0x04,0x00,0x06,0xf6,0x03,0x02,0x0b,0x00,0x06,0xfc,0x03,0x01,
- 0x09,0x00,0x06,0x02,0x04,0x03,0x0c,0x00,0x06,0x08,0x04,0x05,0x09,0x00,0x06,0x0e,
- 0x04,0x06,0x08,0x00,0x06,0x14,0x04,0x02,0x0b,0x00,0x06,0x1a,0x04,0x01,0x02,0x00,
- 0x06,0x20,0x04,0x01,0x06,0x00,0x06,0x26,0x04,0x04,0x0a,0x00,0x06,0x2c,0x04,0x01,
- 0x06,0x00,0x06,0x32,0x04,0x01,0x06,0x00,0x06,0x38,0x04,0x00,0x03,0x00,0x06,0x3e,
- 0x04,0x05,0x0c,0x00,0x06,0x44,0x04,0x02,0x0b,0x00,0x06,0x4a,0x04,0x06,0x08,0x00,
- 0x06,0x50,0x04,0x0a,0x0d,0x00,0x06,0x56,0x04,0x01,0x06,0x00,0x06,0x5c,0x04,0x01,
- 0x07,0x00,0x06,0x62,0x04,0x03,0x0c,0x00,0x06,0x68,0x04,0x00,0x0b,0x00,0x06,0x6e,
- 0x04,0x00,0x0b,0x00,0x06,0x74,0x04,0x00,0x0b,0x00,0x06,0x7a,0x04,0x02,0x0b,0x00,
- 0x06,0x80,0x04,0x00,0x0b,0x00,0x06,0x86,0x04,0x00,0x0b,0x00,0x06,0x8c,0x04,0x00,
- 0x0b,0x00,0x06,0x92,0x04,0x00,0x0b,0x00,0x06,0x98,0x04,0x01,0x0b,0x00,0x06,0x9e,
- 0x04,0x01,0x0b,0x00,0x06,0xa4,0x04,0x03,0x0b,0x00,0x06,0xaa,0x04,0x02,0x0d,0x00,
- 0x06,0xb0,0x04,0x00,0x0b,0x00,0x06,0xb6,0x04,0x00,0x0b,0x00,0x06,0xbc,0x04,0x00,
- 0x0b,0x00,0x06,0xc2,0x04,0x01,0x0b,0x00,0x06,0xc8,0x04,0x00,0x0b,0x00,0x06,0xce,
- 0x04,0x00,0x0b,0x00,0x06,0xd4,0x04,0x00,0x0b,0x00,0x06,0xda,0x04,0x01,0x0b,0x00,
- 0x06,0xe0,0x04,0x02,0x0b,0x00,0x06,0xe6,0x04,0x00,0x0b,0x00,0x06,0xec,0x04,0x00,
- 0x0b,0x00,0x06,0xf2,0x04,0x00,0x0b,0x00,0x06,0xf8,0x04,0x00,0x0b,0x00,0x06,0xfe,
- 0x04,0x00,0x0b,0x00,0x06,0x04,0x05,0x01,0x0b,0x00,0x06,0x0a,0x05,0x05,0x0b,0x00,
- 0x06,0x10,0x05,0x01,0x0c,0x00,0x06,0x16,0x05,0x00,0x0b,0x00,0x06,0x1c,0x05,0x00,
- 0x0b,0x00,0x06,0x22,0x05,0x00,0x0b,0x00,0x06,0x28,0x05,0x01,0x0b,0x00,0x06,0x2e,
- 0x05,0x00,0x0b,0x00,0x06,0x34,0x05,0x01,0x0b,0x00,0x06,0x3a,0x05,0x01,0x0c,0x00,
- 0x06,0x40,0x05,0x02,0x0b,0x00,0x06,0x46,0x05,0x02,0x0b,0x00,0x06,0x4c,0x05,0x01,
- 0x0b,0x00,0x06,0x52,0x05,0x02,0x0b,0x00,0x06,0x58,0x05,0x03,0x0b,0x00,0x06,0x5e,
- 0x05,0x03,0x0b,0x00,0x06,0x64,0x05,0x05,0x0b,0x00,0x06,0x6a,0x05,0x05,0x0d,0x00,
- 0x06,0x70,0x05,0x02,0x0b,0x00,0x06,0x76,0x05,0x02,0x0b,0x00,0x06,0x7c,0x05,0x01,
- 0x0b,0x00,0x06,0x82,0x05,0x03,0x0b,0x00,0x06,0x88,0x05,0x02,0x0b,0x00,0x06,0x8e,
- 0x05,0x02,0x0b,0x00,0x06,0x94,0x05,0x01,0x0b,0x00,0x06,0x9a,0x05,0x03,0x0b,0x00,
- 0x06,0xa0,0x05,0x02,0x0b,0x00,0x06,0xa6,0x05,0x02,0x0b,0x00,0x06,0xac,0x05,0x02,
- 0x0b,0x00,0x06,0xb2,0x05,0x02,0x0b,0x00,0x06,0xb8,0x05,0x01,0x0b,0x00,0x06,0xbe,
- 0x05,0x02,0x0b,0x00,0x06,0xc4,0x05,0x03,0x0b,0x00,0x06,0xca,0x05,0x03,0x0b,0x00,
- 0x06,0xd0,0x05,0x04,0x0c,0x00,0x06,0xd6,0x05,0x02,0x0b,0x00,0x06,0xdc,0x05,0x02,
- 0x0b,0x00,0x06,0xe2,0x05,0x01,0x0b,0x00,0x06,0xe8,0x05,0x03,0x0b,0x00,0x06,0xee,
- 0x05,0x02,0x0d,0x00,0x06,0xf4,0x05,0x01,0x0d,0x00,0x06,0xfa,0x05,0x03,0x0d,0x00,
- 0x06,0x00,0x06,0x00,0x00,0x00,0x00,
-
-
-};
-
-int sizeofdefont = sizeof defontdata;
-
-void
-_unpackinfo(Fontchar *fc, uchar *p, int n)
-{
- int j;
-
- for(j=0; j<=n; j++){
- fc->x = p[0]|(p[1]<<8);
- fc->top = p[2];
- fc->bottom = p[3];
- fc->left = p[4];
- fc->width = p[5];
- fc++;
- p += 6;
- }
-}
--- a/sys/src/9/bitsy/devether.c
+++ /dev/null
@@ -1,594 +1,0 @@
-#include "u.h"
-#include "../port/lib.h"
-#include "mem.h"
-#include "dat.h"
-#include "fns.h"
-#include "io.h"
-#include "ureg.h"
-#include "../port/error.h"
-#include "../port/netif.h"
-
-#include "etherif.h"
-
-static volatile Ether *etherxx[MaxEther];
-
-static struct {
- char* type;
- int (*reset)(Ether*);
-} cards[MaxEther+1];
-
-void
-addethercard(char* t, int (*r)(Ether*))
-{
- static int ncard;
-
- if(ncard == MaxEther)
- panic("too many ether cards");
- cards[ncard].type = t;
- cards[ncard].reset = r;
- ncard++;
-}
-
-void
-etherpower(int on)
-{
- int i;
- Ether *ether;
- /* Power all ether cards on or off */
-
-iprint("etherpower %d\n", on);
- for (i = 0; i < MaxEther; i++){
- if ((ether = etherxx[i]) == nil)
- continue;
- if(on){
- if (ether->writer == 0){
- print("etherpower: already powered up\n");
- continue;
- }
- if (ether->power)
- ether->power(ether, on);
- wunlock(ether);
- /* Unlock when power restored */
- }else{
- if (ether->writer != 0){
- print("etherpower: already powered down\n");
- continue;
- }
- /* Keep locked until power goes back on */
- wlock(ether);
- if (ether->power)
- ether->power(ether, on);
- }
- }
-}
-
-int
-etherconfig(int on, char *spec, DevConf *cf)
-{
- Ether *ether;
- int n, ctlrno;
- char name[32], buf[128];
- char *p, *e;
-
- ctlrno = atoi(spec);
- sprint(name, "ether%d", ctlrno);
-
- if(on == 0)
- return -1;
-
- if(etherxx[ctlrno] != nil)
- return -1;
-
- ether = malloc(sizeof(Ether));
- if(ether == nil)
- panic("etherconfig");
- ether->DevConf = *cf;
-
- for(n = 0; cards[n].type; n++){
- if(strcmp(cards[n].type, ether->type) != 0)
- continue;
- if(cards[n].reset(ether))
- break;
-
- if(ether->mbps >= 100){
- netifinit(ether, name, Ntypes, 256*1024);
- if(ether->oq == 0)
- ether->oq = qopen(256*1024, Qmsg, 0, 0);
- }
- else{
- netifinit(ether, name, Ntypes, 65*1024);
- if(ether->oq == 0)
- ether->oq = qopen(65*1024, Qmsg, 0, 0);
- }
- if(ether->oq == 0)
- panic("etherreset %s", name);
- ether->alen = Eaddrlen;
- memmove(ether->addr, ether->ea, Eaddrlen);
- memset(ether->bcast, 0xFF, Eaddrlen);
- ether->mbps = 10;
- ether->minmtu = ETHERMINTU;
- ether->maxmtu = ETHERMAXTU;
-
- if(ether->interrupt != nil)
- intrenable(cf->itype, cf->intnum, ether->interrupt, ether, name);
-
- p = buf;
- e = buf+sizeof(buf);
- p = seprint(p, e, "#l%d: %s: %dMbps port 0x%luX",
- ctlrno, ether->type, ether->mbps, ether->ports[0].port);
- if(ether->mem)
- p = seprint(p, e, " addr 0x%luX", PADDR(ether->mem));
- if(ether->ports[0].size)
- p = seprint(p, e, " size 0x%X", ether->ports[0].size);
- p = seprint(p, e, ": %2.2ux%2.2ux%2.2ux%2.2ux%2.2ux%2.2ux",
- ether->ea[0], ether->ea[1], ether->ea[2],
- ether->ea[3], ether->ea[4], ether->ea[5]);
- seprint(p, e, "\n");
- print("%s", buf);
-
- etherxx[ctlrno] = ether;
- return 0;
- }
-
- if (ether->type)
- free(ether->type);
- free(ether);
- return -1;
-}
-
-Chan*
-etherattach(char* spec)
-{
- ulong ctlrno;
- char *p;
- Chan *chan;
- Ether *ether;
-
- ctlrno = 0;
- if(spec && *spec){
- ctlrno = strtoul(spec, &p, 0);
- if((ctlrno == 0 && p == spec) || *p || (ctlrno >= MaxEther))
- error(Ebadarg);
- }
- if((ether = etherxx[ctlrno]) == 0)
- error(Enodev);
- rlock(ether);
- if(waserror()) {
- runlock(ether);
- nexterror();
- }
- chan = devattach('l', spec);
- chan->dev = ctlrno;
- if(ether->attach)
- ether->attach(ether);
- poperror();
- runlock(ether);
- return chan;
-}
-
-static Walkqid*
-etherwalk(Chan* chan, Chan* nchan, char** name, int nname)
-{
- Walkqid *q;
- Ether *ether;
-
- ether = etherxx[chan->dev];
- rlock(ether);
- if(waserror()) {
- runlock(ether);
- nexterror();
- }
- q = netifwalk(ether, chan, nchan, name, nname);
- poperror();
- runlock(ether);
- return q;
-}
-
-static int
-etherstat(Chan* chan, uchar* dp, int n)
-{
- int s;
- Ether *ether;
-
- ether = etherxx[chan->dev];
- rlock(ether);
- if(waserror()) {
- runlock(ether);
- nexterror();
- }
- s = netifstat(ether, chan, dp, n);
- poperror();
- runlock(ether);
- return s;
-}
-
-static Chan*
-etheropen(Chan* chan, int omode)
-{
- Chan *c;
- Ether *ether;
-
- ether = etherxx[chan->dev];
- rlock(ether);
- if(waserror()) {
- runlock(ether);
- nexterror();
- }
- c = netifopen(ether, chan, omode);
- poperror();
- runlock(ether);
- return c;
-}
-
-static void
-ethercreate(Chan*, char*, int, ulong)
-{
-}
-
-static void
-etherclose(Chan* chan)
-{
- Ether *ether;
-
- ether = etherxx[chan->dev];
- rlock(ether);
- if(waserror()) {
- runlock(ether);
- nexterror();
- }
- netifclose(ether, chan);
- poperror();
- runlock(ether);
-}
-
-static long
-etherread(Chan* chan, void* buf, long n, vlong off)
-{
- Ether *ether;
- ulong offset = off;
- long r;
-
- ether = etherxx[chan->dev];
- rlock(ether);
- if(waserror()) {
- runlock(ether);
- nexterror();
- }
- if((chan->qid.type & QTDIR) == 0 && ether->ifstat){
- /*
- * With some controllers it is necessary to reach
- * into the chip to extract statistics.
- */
- if(NETTYPE(chan->qid.path) == Nifstatqid){
- r = ether->ifstat(ether, buf, n, offset);
- goto out;
- }
- if(NETTYPE(chan->qid.path) == Nstatqid)
- ether->ifstat(ether, buf, 0, offset);
- }
- r = netifread(ether, chan, buf, n, offset);
-out:
- poperror();
- runlock(ether);
- return r;
-}
-
-static Block*
-etherbread(Chan* chan, long n, ulong offset)
-{
- Block *b;
- Ether *ether;
-
- ether = etherxx[chan->dev];
- rlock(ether);
- if(waserror()) {
- runlock(ether);
- nexterror();
- }
- b = netifbread(ether, chan, n, offset);
- poperror();
- runlock(ether);
- return b;
-}
-
-static int
-etherwstat(Chan* chan, uchar* dp, int n)
-{
- Ether *ether;
- int r;
-
- ether = etherxx[chan->dev];
- rlock(ether);
- if(waserror()) {
- runlock(ether);
- nexterror();
- }
- r = netifwstat(ether, chan, dp, n);
- poperror();
- runlock(ether);
- return r;
-}
-
-static void
-etherrtrace(Netfile* f, Etherpkt* pkt, int len)
-{
- int i, n;
- Block *bp;
-
- if(qwindow(f->in) <= 0)
- return;
- if(len > 58)
- n = 58;
- else
- n = len;
- bp = iallocb(64);
- if(bp == nil)
- return;
- memmove(bp->wp, pkt->d, n);
- i = TK2MS(MACHP(0)->ticks);
- bp->wp[58] = len>>8;
- bp->wp[59] = len;
- bp->wp[60] = i>>24;
- bp->wp[61] = i>>16;
- bp->wp[62] = i>>8;
- bp->wp[63] = i;
- bp->wp += 64;
- qpass(f->in, bp);
-}
-
-Block*
-etheriq(Ether* ether, Block* bp, int fromwire)
-{
- Etherpkt *pkt;
- ushort type;
- int len, multi, tome, fromme;
- Netfile **ep, *f, **fp, *fx;
- Block *xbp;
-
- ether->inpackets++;
-
- pkt = (Etherpkt*)bp->rp;
- len = BLEN(bp);
- type = (pkt->type[0]<<8)|pkt->type[1];
- fx = 0;
- ep = ðer->f[Ntypes];
-
- multi = pkt->d[0] & 1;
- /* check for valid multicast addresses */
- if(multi && memcmp(pkt->d, ether->bcast, sizeof(pkt->d)) && ether->prom == 0){
- if(!activemulti(ether, pkt->d, sizeof(pkt->d))){
- if(fromwire){
- freeb(bp);
- bp = 0;
- }
- return bp;
- }
- }
-
- /* is it for me? */
- tome = memcmp(pkt->d, ether->ea, sizeof(pkt->d)) == 0;
- fromme = memcmp(pkt->s, ether->ea, sizeof(pkt->s)) == 0;
-
- /*
- * Multiplex the packet to all the connections which want it.
- * If the packet is not to be used subsequently (fromwire != 0),
- * attempt to simply pass it into one of the connections, thereby
- * saving a copy of the data (usual case hopefully).
- */
- for(fp = ether->f; fp < ep; fp++){
- if(f = *fp)
- if(f->type == type || f->type < 0)
- if(tome || multi || f->prom){
- /* Don't want to hear bridged packets */
- if(f->bridge && !fromwire && !fromme)
- continue;
- if(!f->headersonly){
- if(fromwire && fx == 0)
- fx = f;
- else if(xbp = iallocb(len)){
- memmove(xbp->wp, pkt, len);
- xbp->wp += len;
- qpass(f->in, xbp);
- }
- else
- ether->soverflows++;
- }
- else
- etherrtrace(f, pkt, len);
- }
- }
-
- if(fx){
- if(qpass(fx->in, bp) < 0)
- ether->soverflows++;
- return 0;
- }
- if(fromwire){
- freeb(bp);
- return 0;
- }
-
- return bp;
-}
-
-static int
-etheroq(Ether* ether, Block* bp)
-{
- int len, loopback;
- Etherpkt *pkt;
-
- ether->outpackets++;
-
- /*
- * Check if the packet has to be placed back onto the input queue,
- * i.e. if it's a loopback or broadcast packet or the interface is
- * in promiscuous mode.
- * If it's a loopback packet indicate to etheriq that the data isn't
- * needed and return, etheriq will pass-on or free the block.
- * To enable bridging to work, only packets that were originated
- * by this interface are fed back.
- */
- pkt = (Etherpkt*)bp->rp;
- len = BLEN(bp);
- loopback = memcmp(pkt->d, ether->ea, sizeof(pkt->d)) == 0;
- if(loopback || memcmp(pkt->d, ether->bcast, sizeof(pkt->d)) == 0 || ether->prom)
- if(etheriq(ether, bp, loopback) == 0)
- return len;
-
- qbwrite(ether->oq, bp);
- if(ether->transmit != nil)
- ether->transmit(ether);
- return len;
-}
-
-static long
-etherwrite(Chan* chan, void* buf, long n, vlong)
-{
- Ether *ether;
- Block *bp;
- long l;
-
- ether = etherxx[chan->dev];
- rlock(ether);
- if(waserror()) {
- runlock(ether);
- nexterror();
- }
- if(NETTYPE(chan->qid.path) != Ndataqid) {
- l = netifwrite(ether, chan, buf, n);
- if(l >= 0)
- goto out;
- if(n == sizeof("nonblocking")-1 && strncmp((char*)buf, "nonblocking", n) == 0){
- qnoblock(ether->oq, 1);
- goto out;
- }
- if(ether->ctl!=nil){
- l = ether->ctl(ether,buf,n);
- goto out;
- }
- error(Ebadctl);
- }
-
- if(n > ether->maxmtu)
- error(Etoobig);
- if(n < ether->minmtu)
- error(Etoosmall);
- bp = allocb(n);
- memmove(bp->rp, buf, n);
- memmove(bp->rp+Eaddrlen, ether->ea, Eaddrlen);
- bp->wp += n;
-
- l = etheroq(ether, bp);
-out:
- poperror();
- runlock(ether);
- return l;
-}
-
-static long
-etherbwrite(Chan* chan, Block* bp, ulong)
-{
- Ether *ether;
- long n;
-
- n = BLEN(bp);
- if(NETTYPE(chan->qid.path) != Ndataqid){
- if(waserror()) {
- freeb(bp);
- nexterror();
- }
- n = etherwrite(chan, bp->rp, n, 0);
- poperror();
- freeb(bp);
- return n;
- }
- ether = etherxx[chan->dev];
- rlock(ether);
- if(waserror()) {
- runlock(ether);
- nexterror();
- }
- if(n > ether->maxmtu){
- freeb(bp);
- error(Etoobig);
- }
- if(n < ether->minmtu){
- freeb(bp);
- error(Etoosmall);
- }
- n = etheroq(ether, bp);
- poperror();
- runlock(ether);
- return n;
-}
-
-int
-parseether(uchar *to, char *from)
-{
- char nip[4];
- char *p;
- int i;
-
- p = from;
- for(i = 0; i < 6; i++){
- if(*p == 0)
- return -1;
- nip[0] = *p++;
- if(*p == 0)
- return -1;
- nip[1] = *p++;
- nip[2] = 0;
- to[i] = strtoul(nip, 0, 16);
- if(*p == ':')
- p++;
- }
- return 0;
-}
-
-static void
-etherreset(void)
-{
-}
-
-#define POLY 0xedb88320
-
-/* really slow 32 bit crc for ethers */
-ulong
-ethercrc(uchar *p, int len)
-{
- int i, j;
- ulong crc, b;
-
- crc = 0xffffffff;
- for(i = 0; i < len; i++){
- b = *p++;
- for(j = 0; j < 8; j++){
- crc = (crc>>1) ^ (((crc^b) & 1) ? POLY : 0);
- b >>= 1;
- }
- }
- return crc;
-}
-
-Dev etherdevtab = {
- 'l',
- "ether",
-
- etherreset,
- devinit,
- devshutdown,
- etherattach,
- etherwalk,
- etherstat,
- etheropen,
- ethercreate,
- etherclose,
- etherread,
- etherbread,
- etherwrite,
- etherbwrite,
- devremove,
- etherwstat,
- etherpower,
- etherconfig,
-};
--- a/sys/src/9/bitsy/devflash.c
+++ /dev/null
@@ -1,876 +1,0 @@
-#include "u.h"
-#include "../port/lib.h"
-#include "mem.h"
-#include "dat.h"
-#include "fns.h"
-#include "io.h"
-#include "../port/error.h"
-
-/*
- * on the bitsy, all 32 bit accesses to flash are mapped to two 16 bit
- * accesses, one to the low half of the chip and the other to the high
- * half. Therefore for all command accesses, ushort indices in the
- * manuals turn into ulong indices in our code. Also, by copying all
- * 16 bit commands to both halves of a 32 bit command, we erase 2
- * sectors for each request erase request.
- */
-
-#define mirror(x) (((x)<<16)|(x))
-
-/* this defines a contiguous set of erase blocks of one size */
-typedef struct FlashRegion FlashRegion;
-struct FlashRegion
-{
- ulong addr; /* start of region */
- ulong end; /* end of region + 1 */
- ulong n; /* number of blocks */
- ulong size; /* size of each block */
-};
-
-/* this defines a particular access algorithm */
-typedef struct FlashAlg FlashAlg;
-struct FlashAlg
-{
- int id;
- char *name;
- void (*identify)(void); /* identify device */
- void (*erase)(ulong); /* erase a region */
- void (*write)(void*, long, ulong); /* write a region */
-};
-
-static void ise_id(void);
-static void ise_erase(ulong);
-static void ise_write(void*, long, ulong);
-
-static void afs_id(void);
-static void afs_erase(ulong);
-static void afs_write(void*, long, ulong);
-
-static ulong blockstart(ulong);
-static ulong blockend(ulong);
-
-FlashAlg falg[] =
-{
- { 1, "Intel/Sharp Extended", ise_id, ise_erase, ise_write },
- { 2, "AMD/Fujitsu Standard", afs_id, afs_erase, afs_write },
-};
-
-struct
-{
- RWlock;
- ulong *p;
- ushort algid; /* access algorithm */
- FlashAlg *alg;
- ushort manid; /* manufacturer id */
- ushort devid; /* device id */
- ulong size; /* size in bytes */
- int wbsize; /* size of write buffer */
- ulong nr; /* number of regions */
- uchar bootprotect;
- FlashRegion r[32];
-} flash;
-
-enum
-{
- Maxwchunk= 1024, /* maximum chunk written by one call to falg->write */
-};
-
-/*
- * common flash interface
- */
-static uchar
-cfigetc(int off)
-{
- uchar rv;
-
- flash.p[0x55] = mirror(0x98);
- rv = flash.p[off];
- flash.p[0x55] = mirror(0xFF);
- return rv;
-}
-
-static ushort
-cfigets(int off)
-{
- return (cfigetc(off+1)<<8)|cfigetc(off);
-}
-
-static ulong
-cfigetl(int off)
-{
- return (cfigetc(off+3)<<24)|(cfigetc(off+2)<<16)|
- (cfigetc(off+1)<<8)|cfigetc(off);
-}
-
-static void
-cfiquery(void)
-{
- uchar q, r, y;
- ulong x, addr;
-
- q = cfigetc(0x10);
- r = cfigetc(0x11);
- y = cfigetc(0x12);
- if(q != 'Q' || r != 'R' || y != 'Y'){
- print("cfi query failed: %ux %ux %ux\n", q, r, y);
- return;
- }
- flash.algid = cfigetc(0x13);
- flash.size = 1<<(cfigetc(0x27)+1);
- flash.wbsize = 1<<(cfigetc(0x2a)+1);
- flash.nr = cfigetc(0x2c);
- if(flash.nr > nelem(flash.r)){
- print("cfi reports > %d regions\n", nelem(flash.r));
- flash.nr = nelem(flash.r);
- }
- addr = 0;
- for(q = 0; q < flash.nr; q++){
- x = cfigetl(q+0x2d);
- flash.r[q].size = 2*256*(x>>16);
- flash.r[q].n = (x&0xffff)+1;
- flash.r[q].addr = addr;
- addr += flash.r[q].size*flash.r[q].n;
- flash.r[q].end = addr;
- }
-}
-
-/*
- * flash device interface
- */
-
-enum
-{
- Qtopdir,
- Q2nddir,
- Qfctl,
- Qfdata,
-
- Maxpart= 8,
-};
-
-
-typedef struct FPart FPart;
-struct FPart
-{
- char *name;
- char *ctlname;
- ulong start;
- ulong end;
-};
-static FPart part[Maxpart];
-
-#define FQID(p,q) ((p)<<8|(q))
-#define FTYPE(q) ((q) & 0xff)
-#define FPART(q) (&part[(q) >>8])
-
-static int
-gen(Chan *c, char*, Dirtab*, int, int i, Dir *dp)
-{
- Qid q;
- FPart *fp;
-
- q.vers = 0;
-
- /* top level directory contains the name of the network */
- if(c->qid.path == Qtopdir){
- switch(i){
- case DEVDOTDOT:
- q.path = Qtopdir;
- q.type = QTDIR;
- devdir(c, q, "#F", 0, eve, DMDIR|0555, dp);
- break;
- case 0:
- q.path = Q2nddir;
- q.type = QTDIR;
- devdir(c, q, "flash", 0, eve, DMDIR|0555, dp);
- break;
- default:
- return -1;
- }
- return 1;
- }
-
- /* second level contains all partitions and their control files */
- switch(i) {
- case DEVDOTDOT:
- q.path = Qtopdir;
- q.type = QTDIR;
- devdir(c, q, "#F", 0, eve, DMDIR|0555, dp);
- break;
- default:
- if(i >= 2*Maxpart)
- return -1;
- fp = &part[i>>1];
- if(fp->name == nil)
- return 0;
- if(i & 1){
- q.path = FQID(i>>1, Qfdata);
- q.type = QTFILE;
- devdir(c, q, fp->name, fp->end-fp->start, eve, 0660, dp);
- } else {
- q.path = FQID(i>>1, Qfctl);
- q.type = QTFILE;
- devdir(c, q, fp->ctlname, 0, eve, 0660, dp);
- }
- break;
- }
- return 1;
-}
-
-static FPart*
-findpart(char *name)
-{
- int i;
-
- for(i = 0; i < Maxpart; i++)
- if(part[i].name != nil && strcmp(name, part[i].name) == 0)
- break;
- if(i >= Maxpart)
- return nil;
- return &part[i];
-}
-
-static void
-addpart(FPart *fp, char *name, ulong start, ulong end)
-{
- int i;
- char ctlname[64];
-
- if(fp == nil){
- if(start >= flash.size || end > flash.size)
- error(Ebadarg);
- } else {
- start += fp->start;
- end += fp->start;
- if(start >= fp->end || end > fp->end)
- error(Ebadarg);
- }
- if(blockstart(start) != start)
- error("must start on erase boundary");
- if(blockstart(end) != end && end != flash.size)
- error("must end on erase boundary");
-
- fp = findpart(name);
- if(fp != nil)
- error(Eexist);
- for(i = 0; i < Maxpart; i++)
- if(part[i].name == nil)
- break;
- if(i == Maxpart)
- error("no more partitions");
- fp = &part[i];
- kstrdup(&fp->name, name);
- snprint(ctlname, sizeof ctlname, "%sctl", name);
- kstrdup(&fp->ctlname, ctlname);
- fp->start = start;
- fp->end = end;
-}
-
-static void
-rempart(FPart *fp)
-{
- char *p, *cp;
-
- p = fp->name;
- fp->name = nil;
- cp = fp->ctlname;
- fp->ctlname = nil;
- free(p);
- free(cp);
-}
-
-void
-flashinit(void)
-{
- int i;
-
- flash.p = (ulong*)FLASHZERO;
- cfiquery();
- for(i = 0; i < nelem(falg); i++)
- if(flash.algid == falg[i].id){
- flash.alg = &falg[i];
- (*flash.alg->identify)();
- break;
- }
- flash.bootprotect = 1;
-
- addpart(nil, "flash", 0, flash.size);
-}
-
-static Chan*
-flashattach(char* spec)
-{
- return devattach('F', spec);
-}
-
-static Walkqid*
-flashwalk(Chan *c, Chan *nc, char **name, int nname)
-{
- return devwalk(c, nc, name, nname, nil, 0, gen);
-}
-
-static int
-flashstat(Chan *c, uchar *db, int n)
-{
- return devstat(c, db, n, nil, 0, gen);
-}
-
-static Chan*
-flashopen(Chan* c, int omode)
-{
- omode = openmode(omode);
- if(strcmp(up->user, eve)!=0)
- error(Eperm);
- return devopen(c, omode, nil, 0, gen);
-}
-
-static void
-flashclose(Chan*)
-{
-}
-
-static long
-flashctlread(FPart *fp, void* a, long n, vlong off)
-{
- char *buf, *p, *e;
- int i;
- ulong addr, end;
-
- buf = smalloc(1024);
- e = buf + 1024;
- p = seprint(buf, e, "0x%-9lux 0x%-9x 0x%-9ux 0x%-9ux\n", fp->end-fp->start,
- flash.wbsize, flash.manid, flash.devid);
- addr = fp->start;
- for(i = 0; i < flash.nr && addr < fp->end; i++)
- if(flash.r[i].addr <= addr && flash.r[i].end > addr){
- if(fp->end <= flash.r[i].end)
- end = fp->end;
- else
- end = flash.r[i].end;
- p = seprint(p, e, "0x%-9lux 0x%-9lux 0x%-9lux\n", addr,
- (end-addr)/flash.r[i].size, flash.r[i].size);
- addr = end;
- }
- n = readstr(off, a, n, buf);
- free(buf);
- return n;
-}
-
-static long
-flashdataread(FPart *fp, void* a, long n, vlong off)
-{
- rlock(&flash);
- if(waserror()){
- runlock(&flash);
- nexterror();
- }
- if(fp->name == nil)
- error("partition vanished");
- if(!iseve())
- error(Eperm);
- off += fp->start;
- if(off >= fp->end)
- n = 0;
- if(off+n >= fp->end)
- n = fp->end - off;
- if(n > 0)
- memmove(a, ((uchar*)FLASHZERO)+off, n);
- runlock(&flash);
- poperror();
-
- return n;
-}
-
-static long
-flashread(Chan* c, void* a, long n, vlong off)
-{
- int t;
-
- if(c->qid.type == QTDIR)
- return devdirread(c, a, n, nil, 0, gen);
- t = FTYPE(c->qid.path);
- switch(t){
- default:
- error(Eperm);
- case Qfctl:
- n = flashctlread(FPART(c->qid.path), a, n, off);
- break;
- case Qfdata:
- n = flashdataread(FPART(c->qid.path), a, n, off);
- break;
- }
- return n;
-}
-
-static void
-bootprotect(ulong addr)
-{
- FlashRegion *r;
-
- if(flash.bootprotect == 0)
- return;
- if(flash.nr == 0)
- error("writing over boot loader disallowed");
- r = flash.r;
- if(addr >= r->addr && addr < r->addr + r->size)
- error("writing over boot loader disallowed");
-}
-
-static ulong
-blockstart(ulong addr)
-{
- FlashRegion *r, *e;
- ulong x;
-
- r = flash.r;
- for(e = &flash.r[flash.nr]; r < e; r++)
- if(addr >= r->addr && addr < r->end){
- x = addr - r->addr;
- x /= r->size;
- return r->addr + x*r->size;
- }
-
- return (ulong)-1;
-}
-
-static ulong
-blockend(ulong addr)
-{
- FlashRegion *r, *e;
- ulong x;
-
- r = flash.r;
- for(e = &flash.r[flash.nr]; r < e; r++)
- if(addr >= r->addr && addr < r->end){
- x = addr - r->addr;
- x /= r->size;
- return r->addr + (x+1)*r->size;
- }
-
- return (ulong)-1;
-}
-
-static long
-flashctlwrite(FPart *fp, char *p, long n)
-{
- Cmdbuf *cmd;
- ulong off;
-
- if(fp == nil)
- panic("flashctlwrite");
-
- cmd = parsecmd(p, n);
- wlock(&flash);
- if(waserror()){
- wunlock(&flash);
- nexterror();
- }
- if(strcmp(cmd->f[0], "erase") == 0){
- switch(cmd->nf){
- case 2:
- /* erase a single block in the partition */
- off = atoi(cmd->f[1]);
- off += fp->start;
- if(off >= fp->end)
- error("region not in partition");
- if(off != blockstart(off))
- error("erase must be a block boundary");
- bootprotect(off);
- (*flash.alg->erase)(off);
- break;
- case 1:
- /* erase the whole partition */
- bootprotect(fp->start);
- for(off = fp->start; off < fp->end; off = blockend(off))
- (*flash.alg->erase)(off);
- break;
- default:
- error(Ebadarg);
- }
- } else if(strcmp(cmd->f[0], "add") == 0){
- if(cmd->nf != 4)
- error(Ebadarg);
- addpart(fp, cmd->f[1], strtoul(cmd->f[2], nil, 0), strtoul(cmd->f[3], nil, 0));
- } else if(strcmp(cmd->f[0], "remove") == 0){
- rempart(fp);
- } else if(strcmp(cmd->f[0], "protectboot") == 0){
- if(cmd->nf == 0 || strcmp(cmd->f[1], "off") != 0)
- flash.bootprotect = 1;
- else
- flash.bootprotect = 0;
- } else
- error(Ebadarg);
- poperror();
- wunlock(&flash);
- free(cmd);
-
- return n;
-}
-
-static long
-flashdatawrite(FPart *fp, uchar *p, long n, long off)
-{
- uchar *end;
- int m;
- int on;
- long ooff;
- uchar *buf;
-
- if(fp == nil)
- panic("flashctlwrite");
-
- buf = nil;
- wlock(&flash);
- if(waserror()){
- wunlock(&flash);
- if(buf != nil)
- free(buf);
- nexterror();
- }
-
- if(fp->name == nil)
- error("partition vanished");
- if(!iseve())
- error(Eperm);
-
- /* can't cross partition boundaries */
- off += fp->start;
- if(off >= fp->end || off+n > fp->end || n <= 0)
- error(Ebadarg);
-
- /* make sure we're not writing the boot sector */
- bootprotect(off);
-
- on = n;
-
- /*
- * get the data into kernel memory to avoid faults during writing.
- * if write is not on a quad boundary or not a multiple of 4 bytes,
- * extend with data already in flash.
- */
- buf = smalloc(n+8);
- m = off & 3;
- if(m){
- *(ulong*)buf = flash.p[(off)>>2];
- n += m;
- off -= m;
- }
- if(n & 3){
- n -= n & 3;
- *(ulong*)(&buf[n]) = flash.p[(off+n)>>2];
- n += 4;
- }
- memmove(&buf[m], p, on);
-
- /* (*flash.alg->write) can't cross blocks */
- ooff = off;
- p = buf;
- for(end = p + n; p < end; p += m){
- m = blockend(off) - off;
- if(m > end - p)
- m = end - p;
- if(m > Maxwchunk)
- m = Maxwchunk;
- (*flash.alg->write)(p, m, off);
- off += m;
- }
-
- /* make sure write succeeded */
- if(memcmp(buf, &flash.p[ooff>>2], n) != 0)
- error("written bytes don't match");
-
- wunlock(&flash);
- free(buf);
- poperror();
-
- return on;
-}
-
-static long
-flashwrite(Chan* c, void* a, long n, vlong off)
-{
- int t;
-
- if(c->qid.type == QTDIR)
- error(Eperm);
-
- if(!iseve())
- error(Eperm);
-
- t = FTYPE(c->qid.path);
- switch(t){
- default:
- panic("flashwrite");
- case Qfctl:
- n = flashctlwrite(FPART(c->qid.path), a, n);
- break;
- case Qfdata:
- n = flashdatawrite(FPART(c->qid.path), a, n, off);
- break;
- }
- return n;
-}
-
-Dev flashdevtab = {
- 'F',
- "flash",
-
- devreset,
- flashinit,
- devshutdown,
- flashattach,
- flashwalk,
- flashstat,
- flashopen,
- devcreate,
- flashclose,
- flashread,
- devbread,
- flashwrite,
- devbwrite,
- devremove,
- devwstat,
-};
-
-enum
-{
- /* status register */
- ISEs_lockerr= 1<<1,
- ISEs_powererr= 1<<3,
- ISEs_progerr= 1<<4,
- ISEs_eraseerr= 1<<5,
- ISEs_ready= 1<<7,
- ISEs_err= (ISEs_lockerr|ISEs_powererr|ISEs_progerr|ISEs_eraseerr),
-
- /* extended status register */
- ISExs_bufavail= 1<<7,
-};
-
-
-
-/* intel/sharp extended command set */
-static void
-ise_reset(void)
-{
- flash.p[0x55] = mirror(0xff); /* reset */
-}
-static void
-ise_id(void)
-{
- ise_reset();
- flash.p[0x555] = mirror(0x90); /* uncover vendor info */
- flash.manid = flash.p[00];
- flash.devid = flash.p[01];
- ise_reset();
-}
-static void
-ise_clearerror(void)
-{
- flash.p[0x100] = mirror(0x50);
-
-}
-static void
-ise_error(int bank, ulong status)
-{
- char err[64];
-
- if(status & (ISEs_lockerr)){
- sprint(err, "flash%d: block locked %lux", bank, status);
- error(err);
- }
- if(status & (ISEs_powererr)){
- sprint(err, "flash%d: low prog voltage %lux", bank, status);
- error(err);
- }
- if(status & (ISEs_progerr|ISEs_eraseerr)){
- sprint(err, "flash%d: i/o error %lux", bank, status);
- error(err);
- }
-}
-static void
-ise_erase(ulong addr)
-{
- ulong start;
- ulong x;
-
- addr >>= 2; /* convert to ulong offset */
-
- flashprogpower(1);
- flash.p[addr] = mirror(0x20);
- flash.p[addr] = mirror(0xd0);
- start = m->ticks;
- do {
- x = flash.p[addr];
- if((x & mirror(ISEs_ready)) == mirror(ISEs_ready))
- break;
- } while(TK2MS(m->ticks-start) < 1500);
- flashprogpower(0);
-
- ise_clearerror();
- ise_error(0, x);
- ise_error(1, x>>16);
-
- ise_reset();
-}
-/*
- * the flash spec claimes writing goes faster if we use
- * the write buffer. We fill the write buffer and then
- * issue the write request. After the write request,
- * subsequent reads will yield the status register.
- *
- * returns the status, even on timeouts.
- *
- * NOTE: I tried starting back to back buffered writes
- * without reading the status in between, as the
- * flowchart in the intel data sheet suggests.
- * However, it always responded with an illegal
- * command sequence, so I must be missing something.
- * If someone learns better, please email me, though
- * I doubt it will be much faster. - [email protected]
- */
-static int
-ise_wbwrite(ulong *p, int n, ulong off, ulong baddr, ulong *status)
-{
- ulong x, start;
- int i;
- int s;
-
- /* put flash into write buffer mode */
- start = m->ticks;
- for(;;) {
- s = splhi();
- /* request write buffer mode */
- flash.p[baddr] = mirror(0xe8);
-
- /* look at extended status reg for status */
- if((flash.p[baddr] & mirror(1<<7)) == mirror(1<<7))
- break;
- splx(s);
-
- /* didn't work, keep trying for 2 secs */
- if(TK2MS(m->ticks-start) > 2000){
- /* set up to read status */
- flash.p[baddr] = mirror(0x70);
- *status = flash.p[baddr];
- pprint("write buffered cmd timed out\n");
- return -1;
- }
- }
-
- /* fill write buffer */
- flash.p[baddr] = mirror(n-1);
- for(i = 0; i < n; i++)
- flash.p[off+i] = *p++;
-
- /* program from buffer */
- flash.p[baddr] = mirror(0xd0);
- splx(s);
-
- /* wait till the programming is done */
- start = m->ticks;
- for(;;) {
- x = *status = flash.p[baddr]; /* read status register */
- if((x & mirror(ISEs_ready)) == mirror(ISEs_ready))
- break;
- if(TK2MS(m->ticks-start) > 2000){
- pprint("read status timed out\n");
- return -1;
- }
- }
- if(x & mirror(ISEs_err))
- return -1;
-
- return n;
-}
-static void
-ise_write(void *a, long n, ulong off)
-{
- ulong *p, *end;
- int i, wbsize;
- ulong x, baddr;
-
- /* everything in terms of ulongs */
- wbsize = flash.wbsize>>2;
- baddr = blockstart(off);
- off >>= 2;
- n >>= 2;
- p = a;
- baddr >>= 2;
-
- /* first see if write will succeed */
- for(i = 0; i < n; i++)
- if((p[i] & flash.p[off+i]) != p[i])
- error("flash needs erase");
-
- if(waserror()){
- ise_reset();
- flashprogpower(0);
- nexterror();
- }
- flashprogpower(1);
-
- /*
- * use the first write to reach
- * a write buffer boundary. the intel maunal
- * says writes startng at wb boundaries
- * maximize speed.
- */
- i = wbsize - (off & (wbsize-1));
- for(end = p + n; p < end;){
- if(i > end - p)
- i = end - p;
-
- if(ise_wbwrite(p, i, off, baddr, &x) < 0)
- break;
-
- off += i;
- p += i;
- i = wbsize;
- }
-
- ise_clearerror();
- ise_error(0, x);
- ise_error(1, x>>16);
-
- ise_reset();
- flashprogpower(0);
- poperror();
-}
-
-/* amd/fujitsu standard command set
- * I don't have an amd chipset to work with
- * so I'm loathe to write this yet. If someone
- * else does, please send it to me and I'll
- * incorporate it -- [email protected]
- */
-static void
-afs_reset(void)
-{
- flash.p[0x55] = mirror(0xf0); /* reset */
-}
-static void
-afs_id(void)
-{
- afs_reset();
- flash.p[0x55] = mirror(0xf0); /* reset */
- flash.p[0x555] = mirror(0xaa); /* query vendor block */
- flash.p[0x2aa] = mirror(0x55);
- flash.p[0x555] = mirror(0x90);
- flash.manid = flash.p[00];
- afs_reset();
- flash.p[0x555] = mirror(0xaa); /* query vendor block */
- flash.p[0x2aa] = mirror(0x55);
- flash.p[0x555] = mirror(0x90);
- flash.devid = flash.p[01];
- afs_reset();
-}
-static void
-afs_erase(ulong)
-{
- error("amd/fujistsu erase not implemented");
-}
-static void
-afs_write(void*, long, ulong)
-{
- error("amd/fujistsu write not implemented");
-}
--- a/sys/src/9/bitsy/devpcmcia.c
+++ /dev/null
@@ -1,713 +1,0 @@
-#include "u.h"
-#include "../port/lib.h"
-#include "mem.h"
-#include "dat.h"
-#include "fns.h"
-#include "../port/error.h"
-#include "io.h"
-
-/*
- * BUG: insertion events are detected by polling.
- * Should look into the compaq docs to see if
- * there's an interrupt for card insertion
- * there's probably one.
- */
-
-static PCMslot slot[2];
-int nslot = 2;
-
-struct {
- Ref;
- Rendez event; // where to wait for card events
- int evreader; // there's a reader for events
-} pcmcia;
-
-enum
-{
- Qdir,
- Qmem,
- Qattr,
- Qctl,
- Qevs,
-
- Nents = 3,
-};
-
-enum
-{
- /*
- * configuration registers - they start at an offset in attribute
- * memory found in the CIS.
- */
- Rconfig= 0,
- Creset= (1<<7), /* reset device */
- Clevel= (1<<6), /* level sensitive interrupt line */
-};
-
-static void increfp(PCMslot*);
-static void decrefp(PCMslot*);
-static void slotmap(int, ulong, ulong, ulong);
-static void slottiming(int, int, int, int, int);
-static void slotinfo(Ureg*, void*);
-
-#define TYPE(c) (((ulong)c->qid.path)&0xff)
-#define PATH(s,t) (((s)<<8)|(t))
-
-static PCMslot*
-slotof(Chan *c)
-{
- ulong x;
-
- x = c->qid.path;
- return slot + ((x>>8)&0xff);
-}
-
-static int
-pcmgen(Chan *c, char *, Dirtab * , int, int i, Dir *dp)
-{
- int slotno;
- Qid qid;
- long len;
- PCMslot *sp;
-
- if(i == DEVDOTDOT){
- mkqid(&qid, Qdir, 0, QTDIR);
- devdir(c, qid, "#y", 0, eve, 0555, dp);
- return 1;
- }
-
- if(i >= Nents*nslot + 1)
- return -1;
- if(i == Nents*nslot){
- len = 0;
- qid.path = PATH(0, Qevs);
- snprint(up->genbuf, sizeof up->genbuf, "pcmevs");
- goto found;
- }
-
- slotno = i/Nents;
- sp = slot + slotno;
- len = 0;
- switch(i%Nents){
- case 0:
- qid.path = PATH(slotno, Qmem);
- snprint(up->genbuf, sizeof up->genbuf, "pcm%dmem", slotno);
- len = sp->memlen;
- break;
- case 1:
- qid.path = PATH(slotno, Qattr);
- snprint(up->genbuf, sizeof up->genbuf, "pcm%dattr", slotno);
- len = sp->memlen;
- break;
- case 2:
- qid.path = PATH(slotno, Qctl);
- snprint(up->genbuf, sizeof up->genbuf, "pcm%dctl", slotno);
- break;
- }
-found:
- qid.vers = 0;
- qid.type = QTFILE;
- devdir(c, qid, up->genbuf, len, eve, 0660, dp);
- return 1;
-}
-
-static int
-bitno(ulong x)
-{
- int i;
-
- for(i = 0; i < 8*sizeof(x); i++)
- if((1<<i) & x)
- break;
- return i;
-}
-
-/*
- * set up the cards, default timing is 300 ns
- */
-static void
-pcmciareset(void)
-{
- /* staticly map the whole area */
- slotmap(0, PHYSPCM0REGS, PYHSPCM0ATTR, PYHSPCM0MEM);
- slotmap(1, PHYSPCM1REGS, PYHSPCM1ATTR, PYHSPCM1MEM);
-
- /* set timing to the default, 300 */
- slottiming(0, 300, 300, 300, 0);
- slottiming(1, 300, 300, 300, 0);
-
- /* if there's no pcmcia sleave, no interrupts */
- if(gpioregs->level & GPIO_OPT_IND_i)
- return;
-
- /* sleave there, interrupt on card removal */
- intrenable(GPIOrising, bitno(GPIO_CARD_IND1_i), slotinfo, nil, "pcmcia slot1 status");
- intrenable(GPIOrising, bitno(GPIO_CARD_IND0_i), slotinfo, nil, "pcmcia slot0 status");
-}
-
-static Chan*
-pcmciaattach(char *spec)
-{
- return devattach('y', spec);
-}
-
-static Walkqid*
-pcmciawalk(Chan *c, Chan *nc, char **name, int nname)
-{
- return devwalk(c, nc, name, nname, 0, 0, pcmgen);
-}
-
-static int
-pcmciastat(Chan *c, uchar *db, int n)
-{
- return devstat(c, db, n, 0, 0, pcmgen);
-}
-
-static Chan*
-pcmciaopen(Chan *c, int omode)
-{
- PCMslot *slotp;
-
- if(c->qid.type & QTDIR){
- if(omode != OREAD)
- error(Eperm);
- } else {
- slotp = slotof(c);
- increfp(slotp);
- }
- c->mode = openmode(omode);
- c->flag |= COPEN;
- c->offset = 0;
- return c;
-}
-
-static void
-pcmciaclose(Chan *c)
-{
- if(c->flag & COPEN)
- if((c->qid.type & QTDIR) == 0)
- decrefp(slotof(c));
-}
-
-/* a memmove using only bytes */
-static void
-memmoveb(uchar *to, uchar *from, int n)
-{
- while(n-- > 0)
- *to++ = *from++;
-}
-
-/* a memmove using only shorts & bytes */
-static void
-memmoves(uchar *to, uchar *from, int n)
-{
- ushort *t, *f;
-
- if((((ulong)to) & 1) || (((ulong)from) & 1) || (n & 1)){
- while(n-- > 0)
- *to++ = *from++;
- } else {
- n = n/2;
- t = (ushort*)to;
- f = (ushort*)from;
- while(n-- > 0)
- *t++ = *f++;
- }
-}
-
-static long
-pcmread(void *a, long n, ulong off, PCMslot *sp, uchar *start, ulong len)
-{
- rlock(sp);
- if(waserror()){
- runlock(sp);
- nexterror();
- }
- if(off > len)
- return 0;
- if(off + n > len)
- n = len - off;
- memmoveb(a, start+off, n);
- runlock(sp);
- poperror();
- return n;
-}
-
-static long
-pcmctlread(void *a, long n, ulong off, PCMslot *sp)
-{
- char *p, *buf, *e;
-
- buf = p = malloc(READSTR);
- if(waserror()){
- free(buf);
- nexterror();
- }
- e = p + READSTR;
-
- buf[0] = 0;
- if(sp->occupied){
- p = seprint(p, e, "occupied\n");
- if(sp->verstr[0])
- p = seprint(p, e, "version %s\n", sp->verstr);
- }
- USED(p);
-
- n = readstr(off, a, n, buf);
- free(buf);
- poperror();
- return n;
-}
-
-static int
-inserted(void *)
-{
- if (slot[0].inserted)
- return 1;
- if (slot[1].inserted)
- return 2;
- return 0;
-}
-
-static long
-pcmevsread(void *a, long n, ulong off)
-{
- int i;
- char *buf = nil;
- char *e;
-
- if (pcmcia.evreader)
- error("At most one reader");
- off = 0;
- pcmcia.evreader++;
- if (waserror()){
- free(buf);
- pcmcia.evreader--;
- nexterror();
- }
- while((i = inserted(nil)) == 0){
- slotinfo(nil, nil);
- tsleep(&pcmcia.event, inserted, nil, 500);
- }
- pcmcia.evreader--;
- slot[i-1].inserted = 0;
- buf = malloc(READSTR);
- e = buf + READSTR;
- buf[0] = 0;
- seprint(buf, e, "#y/pcm%dctl\n", i-1);
- n = readstr(off, a, n, buf);
- free(buf);
- poperror();
- return n;
-}
-
-static long
-pcmciaread(Chan *c, void *a, long n, vlong off)
-{
- PCMslot *sp;
- ulong offset = off;
-
- sp = slotof(c);
-
- switch(TYPE(c)){
- case Qdir:
- return devdirread(c, a, n, 0, 0, pcmgen);
- case Qmem:
- if(!sp->occupied)
- error(Eio);
- return pcmread(a, n, offset, sp, sp->mem, 64*OneMeg);
- case Qattr:
- if(!sp->occupied)
- error(Eio);
- return pcmread(a, n, offset, sp, sp->attr, OneMeg);
- case Qevs:
- return pcmevsread(a, n, offset);
- case Qctl:
- return pcmctlread(a, n, offset, sp);
- }
- error(Ebadarg);
- return -1; /* not reached */
-}
-
-static long
-pcmwrite(void *a, long n, ulong off, PCMslot *sp, uchar *start, ulong len)
-{
- rlock(sp);
- if(waserror()){
- runlock(sp);
- nexterror();
- }
- if(off > len)
- error(Eio);
- if(off + n > len)
- error(Eio);
- memmoveb(start+off, a, n);
- poperror();
- runlock(sp);
- return n;
-}
-
-static long
-pcmctlwrite(char *p, long n, ulong, PCMslot *sp)
-{
- Cmdbuf *cmd;
- uchar *cp;
- int index, i, dtx;
- Rune r;
- DevConf cf;
- Devport port;
-
- cmd = parsecmd(p, n);
- if(strcmp(cmd->f[0], "configure") == 0){
- wlock(sp);
- if(waserror()){
- wunlock(sp);
- nexterror();
- }
-
- /* see if driver exists and is configurable */
- if(cmd->nf < 3)
- error(Ebadarg);
- p = cmd->f[1];
- if(*p++ != '#')
- error(Ebadarg);
- p += chartorune(&r, p);
- dtx = devno(r, 1);
- if(dtx < 0)
- error("no such device type");
- if(devtab[dtx]->config == nil)
- error("not a dynamicly configurable device");
-
- /* set pcmcia card configuration */
- index = 0;
- if(sp->def != nil)
- index = sp->def->index;
- if(cmd->nf > 3){
- i = atoi(cmd->f[3]);
- if(i < 0 || i >= sp->nctab)
- error("bad configuration index");
- index = i;
- }
- if(sp->cfg[0].cpresent & (1<<Rconfig)){
- cp = sp->attr;
- cp += sp->cfg[0].caddr + Rconfig;
- *cp = index;
- }
-
- /* configure device */
- memset(&cf, 0, sizeof cf);
- kstrdup(&cf.type, cmd->f[2]);
- cf.mem = (ulong)sp->mem;
- cf.ports = &port;
- cf.ports[0].port = (ulong)sp->regs;
- cf.ports[0].size = 0;
- cf.nports = 1;
- cf.itype = GPIOfalling;
- cf.intnum = bitno(sp == slot ? GPIO_CARD_IRQ0_i : GPIO_CARD_IRQ1_i);
- if(devtab[dtx]->config(1, p, &cf) < 0)
- error("couldn't configure device");
- sp->dev = devtab[dtx];
- free(cf.type);
- wunlock(sp);
- poperror();
-
- /* don't let the power turn off */
- increfp(sp);
- }else if(strcmp(cmd->f[0], "remove") == 0){
- /* see if driver exists and is configurable */
- if(cmd->nf != 2)
- error(Ebadarg);
- p = cmd->f[1];
- if(*p++ != '#')
- error(Ebadarg);
- p += chartorune(&r, p);
- dtx = devno(r, 1);
- if(dtx < 0)
- error("no such device type");
- if(devtab[dtx]->config == nil)
- error("not a dynamicly configurable device");
- if(devtab[dtx]->config(0, p, nil) < 0)
- error("couldn't unconfigure device");
-
- /* let the power turn off */
- decrefp(sp);
- }
- free(cmd);
-
- return 0;
-}
-
-static long
-pcmciawrite(Chan *c, void *a, long n, vlong off)
-{
- PCMslot *sp;
- ulong offset = off;
-
- sp = slotof(c);
-
- switch(TYPE(c)){
- case Qmem:
- if(!sp->occupied)
- error(Eio);
- return pcmwrite(a, n, offset, sp, sp->mem, 64*OneMeg);
- case Qattr:
- if(!sp->occupied)
- error(Eio);
- return pcmwrite(a, n, offset, sp, sp->attr, OneMeg);
- case Qevs:
- break;
- case Qctl:
- if(!sp->occupied)
- error(Eio);
- return pcmctlwrite(a, n, offset, sp);
- }
- error(Ebadarg);
- return -1; /* not reached */
-}
-
-/*
- * power up/down pcmcia
- */
-void
-pcmciapower(int on)
-{
- PCMslot *sp;
-
- /* if there's no pcmcia sleave, no interrupts */
-iprint("pcmciapower %d\n", on);
-
- if (on){
- /* set timing to the default, 300 */
- slottiming(0, 300, 300, 300, 0);
- slottiming(1, 300, 300, 300, 0);
-
- /* if there's no pcmcia sleave, no interrupts */
- if(gpioregs->level & GPIO_OPT_IND_i){
- iprint("pcmciapower: no sleeve\n");
- return;
- }
-
- for (sp = slot; sp < slot + nslot; sp++){
- if (sp->dev){
- increfp(sp);
- iprint("pcmciapower: %s\n", sp->verstr);
- delay(10000);
- if (sp->dev->power)
- sp->dev->power(on);
- }
- }
- }else{
- if(gpioregs->level & GPIO_OPT_IND_i){
- iprint("pcmciapower: no sleeve\n");
- return;
- }
-
- for (sp = slot; sp < slot + nslot; sp++){
- if (sp->dev){
- if (sp->dev->power)
- sp->dev->power(on);
- decrefp(sp);
- }
- sp->occupied = 0;
- sp->cisread = 0;
- }
- egpiobits(EGPIO_exp_nvram_power|EGPIO_exp_full_power, 0);
- }
-}
-
-Dev pcmciadevtab = {
- 'y',
- "pcmcia",
-
- pcmciareset,
- devinit,
- devshutdown,
- pcmciaattach,
- pcmciawalk,
- pcmciastat,
- pcmciaopen,
- devcreate,
- pcmciaclose,
- pcmciaread,
- devbread,
- pcmciawrite,
- devbwrite,
- devremove,
- devwstat,
- pcmciapower,
-};
-
-/* see what's there */
-static void
-slotinfo(Ureg*, void*)
-{
- ulong x = gpioregs->level;
-
- if(x & GPIO_OPT_IND_i){
- /* no expansion pack */
- slot[0].occupied = slot[0].inserted = 0;
- slot[1].occupied = slot[1].inserted = 0;
- } else {
- if(x & GPIO_CARD_IND0_i){
- slot[0].occupied = slot[0].inserted = 0;
- slot[0].cisread = 0;
- } else {
- if(slot[0].occupied == 0){
- slot[0].inserted = 1;
- slot[0].cisread = 0;
- }
- slot[0].occupied = 1;
- }
- if(x & GPIO_CARD_IND1_i){
- slot[1].occupied = slot[1].inserted = 0;
- slot[1].cisread = 0;
- } else {
- if(slot[1].occupied == 0){
- slot[1].inserted = 1;
- slot[1].cisread = 0;
- }
- slot[1].occupied = 1;
- }
- if (inserted(nil))
- wakeup(&pcmcia.event);
- }
-}
-
-/* use reference card to turn cards on and off */
-static void
-increfp(PCMslot *sp)
-{
- wlock(sp);
- if(waserror()){
- wunlock(sp);
- nexterror();
- }
-
-iprint("increfp %ld\n", sp - slot);
- if(incref(&pcmcia) == 1){
-iprint("increfp full power\n");
- egpiobits(EGPIO_exp_nvram_power|EGPIO_exp_full_power, 1);
- delay(200);
- egpiobits(EGPIO_pcmcia_reset, 1);
- delay(100);
- egpiobits(EGPIO_pcmcia_reset, 0);
- delay(500);
- }
- incref(&sp->ref);
- slotinfo(nil, nil);
- if(sp->occupied && sp->cisread == 0) {
- pcmcisread(sp);
- }
-
- wunlock(sp);
- poperror();
-}
-
-static void
-decrefp(PCMslot *sp)
-{
-iprint("decrefp %ld\n", sp - slot);
- decref(&sp->ref);
- if(decref(&pcmcia) == 0){
-iprint("increfp power down\n");
- egpiobits(EGPIO_exp_nvram_power|EGPIO_exp_full_power, 0);
- }
-}
-
-/*
- * the regions are staticly mapped
- */
-static void
-slotmap(int slotno, ulong regs, ulong attr, ulong mem)
-{
- PCMslot *sp;
-
- sp = &slot[slotno];
- sp->slotno = slotno;
- sp->memlen = 64*OneMeg;
- sp->verstr[0] = 0;
-
- sp->mem = mapmem(mem, 64*OneMeg, 0);
- sp->memmap.ca = 0;
- sp->memmap.cea = 64*MB;
- sp->memmap.isa = (ulong)mem;
- sp->memmap.len = 64*OneMeg;
- sp->memmap.attr = 0;
-
- sp->attr = mapmem(attr, OneMeg, 0);
- sp->attrmap.ca = 0;
- sp->attrmap.cea = MB;
- sp->attrmap.isa = (ulong)attr;
- sp->attrmap.len = OneMeg;
- sp->attrmap.attr = 1;
-
- sp->regs = mapspecial(regs, 32*1024);
-}
-
-PCMmap*
-pcmmap(int slotno, ulong, int, int attr)
-{
- if(slotno > nslot)
- panic("pcmmap");
- if(attr)
- return &slot[slotno].attrmap;
- else
- return &slot[slotno].memmap;
-}
-
-void
-pcmunmap(int, PCMmap*)
-{
-}
-
-/*
- * setup card timings
- * times are in ns
- * count = ceiling[access-time/(2*3*T)] - 1, where T is a processor cycle
- *
- */
-static int
-ns2count(int ns)
-{
- ulong y;
-
- /* get 100 times cycle time */
- y = 100000000/(conf.hz/1000);
-
- /* get 10 times ns/(cycle*6) */
- y = (1000*ns)/(6*y);
-
- /* round up */
- y += 9;
- y /= 10;
-
- /* subtract 1 */
- return y-1;
-}
-static void
-slottiming(int slotno, int tio, int tattr, int tmem, int fast)
-{
- ulong x;
-
- x = 0;
- if(fast)
- x |= 1<<MECR_fast0;
- x |= ns2count(tio) << MECR_io0;
- x |= ns2count(tattr) << MECR_attr0;
- x |= ns2count(tmem) << MECR_mem0;
- if(slotno == 0){
- x |= memconfregs->mecr & 0xffff0000;
- } else {
- x <<= 16;
- x |= memconfregs->mecr & 0xffff;
- }
- memconfregs->mecr = x;
-}
-
-/* For compat with ../pc devices. Don't use it for the bitsy
- */
-int
-pcmspecial(char*, ISAConf*)
-{
- return -1;
-}
--- a/sys/src/9/bitsy/devpenmouse.c
+++ /dev/null
@@ -1,510 +1,0 @@
-#include "u.h"
-#include "../port/lib.h"
-#include "mem.h"
-#include "dat.h"
-#include "fns.h"
-#include "../port/error.h"
-
-#define Image IMAGE
-#include <draw.h>
-#include <memdraw.h>
-#include <cursor.h>
-#include "screen.h"
-#include <ctype.h>
-
-typedef struct Mouseinfo Mouseinfo;
-typedef struct Mousestate Mousestate;
-typedef struct Calibration Calibration;
-
-struct Calibration
-{
- long scalex;
- long scaley;
- long transx;
- long transy;
-} calibration = {
- -16435,
- 23275,
- 253,
- -23
-};
-
-/* The pen goes down, tracks some and goes up again. The pen alone can
- * only simulate a one-button mouse.
- * To simulate a more-button (five, in this case) mouse, we use the four
- * keys along the the bottom of the iPaq as modifiers.
- * When one (or more) of the modifier keys is (are) down, a pen-down event
- * causes the corresponding bottons to go down. If no modifier key is
- * depressed, a pen-down event is translated into a button-one down event.
- * Releasing the modifier keys has no direct effect. The pen-up event is
- * the one that triggers mouse-up events.
- */
-struct Mousestate
-{
- Point xy; /* mouse.xy */
- int buttons; /* mouse.buttons */
- int modifiers; /* state of physical buttons 2, 3, 4, 5 */
- ulong counter; /* increments every update */
- ulong msec; /* time of last event */
-};
-
-struct Mouseinfo
-{
- Lock;
- Mousestate;
- ulong lastcounter; /* value when /dev/mouse read */
- ulong resize;
- ulong lastresize;
- Rendez r;
- Ref;
- QLock;
- int open;
- int inopen;
- Mousestate queue[16]; /* circular buffer of click events */
- int ri; /* read index into queue */
- int wi; /* write index into queue */
- uchar qfull; /* queue is full */
-};
-
-Mouseinfo mouse;
-int mouseshifted;
-
-int penmousechanged(void*);
-static void penmousetrack(int b, int x, int y);
-
-enum{
- Qdir,
- Qmouse,
- Qmousein,
- Qmousectl,
-};
-
-static Dirtab mousedir[]={
- ".", {Qdir, 0, QTDIR}, 0, DMDIR|0555,
- "mouse", {Qmouse}, 0, 0666,
- "mousein", {Qmousein}, 0, 0220,
- "mousectl", {Qmousectl}, 0, 0660,
-};
-
-enum
-{
- CMcalibrate,
- CMswap,
-};
-
-static Cmdtab penmousecmd[] =
-{
- CMcalibrate, "calibrate", 0,
- CMswap, "swap", 1,
-};
-
-static uchar buttonmap[8] = {
- 0, 1, 2, 3, 4, 5, 6, 7,
-};
-static int mouseswap;
-
-extern Memimage* gscreen;
-
-void
-penbutton(int up, int b) {
- // button 5 (side button) immediately causes an event
- // when the pen is down (button 1), other buttons also
- // cause events, allowing chording with button 1
- if ((b & 0x20) || (mouse.buttons & 0x1)) {
- if (up)
- mouse.buttons &= ~b;
- else
- mouse.buttons |= b;
- penmousetrack(mouse.buttons, -1, -1);
- } else {
- if (up)
- mouse.modifiers &= ~b;
- else
- mouse.modifiers |= b;
- }
-}
-
-void
-pentrackxy(int x, int y) {
-
- if (x == -1) {
- /* pen up. associate with button 1 through 5 up */
- mouse.buttons &= ~0x1f;
- } else {
- x = ((x*calibration.scalex)>>16) + calibration.transx;
- y = ((y*calibration.scaley)>>16) + calibration.transy;
- if ((mouse.buttons & 0x1f) == 0) {
- if (mouse.modifiers)
- mouse.buttons |= mouse.modifiers;
- else
- mouse.buttons |= 0x1;
- }
- }
- penmousetrack(mouse.buttons, x, y);
-}
-
-static void
-penmousereset(void)
-{
- if(!conf.monitor)
- return;
-}
-
-static void
-penmouseinit(void)
-{
- if(!conf.monitor)
- return;
-}
-
-static Chan*
-penmouseattach(char *spec)
-{
- if(!conf.monitor)
- error(Egreg);
- return devattach('m', spec);
-}
-
-static Walkqid*
-penmousewalk(Chan *c, Chan *nc, char **name, int nname)
-{
- return devwalk(c, nc, name, nname, mousedir, nelem(mousedir), devgen);
-}
-
-static int
-penmousestat(Chan *c, uchar *db, int n)
-{
- return devstat(c, db, n, mousedir, nelem(mousedir), devgen);
-}
-
-static Chan*
-penmouseopen(Chan *c, int omode)
-{
- switch((ulong)c->qid.path){
- case Qdir:
- if(omode != OREAD)
- error(Eperm);
- break;
- case Qmouse:
- lock(&mouse);
- if(mouse.open){
- unlock(&mouse);
- error(Einuse);
- }
- mouse.open = 1;
- mouse.ref++;
- unlock(&mouse);
- break;
- case Qmousein:
- /* error("disabled"); */
- lock(&mouse);
- if(mouse.inopen){
- unlock(&mouse);
- error(Einuse);
- }
- mouse.inopen = 1;
- unlock(&mouse);
- break;
- default:
- incref(&mouse);
- }
- c->mode = openmode(omode);
- c->flag |= COPEN;
- c->offset = 0;
- return c;
-}
-
-static Chan*
-penmousecreate(Chan*, char*, int, ulong)
-{
- if(!conf.monitor)
- error(Egreg);
- error(Eperm);
- return 0;
-}
-
-static void
-penmouseclose(Chan *c)
-{
- if(c->qid.path != Qdir && (c->flag&COPEN)){
- lock(&mouse);
- if(c->qid.path == Qmouse)
- mouse.open = 0;
- else if(c->qid.path == Qmousein){
- mouse.inopen = 0;
- unlock(&mouse);
- return;
- }
- --mouse.ref;
- unlock(&mouse);
- }
-}
-
-static long
-penmouseread(Chan *c, void *va, long n, vlong)
-{
- char buf[4*12+1];
- static int map[8] = {0, 4, 2, 6, 1, 5, 3, 7 };
- Mousestate m;
-
- switch((ulong)c->qid.path){
- case Qdir:
- return devdirread(c, va, n, mousedir, nelem(mousedir), devgen);
-
- case Qmousectl:
- sprint(buf, "c%11ld %11ld %11ld %11ld",
- calibration.scalex, calibration.scaley,
- calibration.transx, calibration.transy);
- if(n > 1+4*12)
- n = 1+4*12;
- memmove(va, buf, n);
- return n;
-
- case Qmouse:
- while(penmousechanged(0) == 0)
- sleep(&mouse.r, penmousechanged, 0);
-
- mouse.qfull = 0;
-
- /*
- * No lock of the indices is necessary here, because ri is only
- * updated by us, and there is only one mouse reader
- * at a time. I suppose that more than one process
- * could try to read the fd at one time, but such behavior
- * is degenerate and already violates the calling
- * conventions for sleep above.
- */
- if(mouse.ri != mouse.wi) {
- m = mouse.queue[mouse.ri];
- if(++mouse.ri == nelem(mouse.queue))
- mouse.ri = 0;
- } else {
- m = mouse.Mousestate;
- }
- sprint(buf, "m%11d %11d %11d %11lud",
- m.xy.x, m.xy.y,
- m.buttons,
- m.msec);
- mouse.lastcounter = m.counter;
- if(n > 1+4*12)
- n = 1+4*12;
- if(mouse.lastresize != mouse.resize){
- mouse.lastresize = mouse.resize;
- buf[0] = 'r';
- }
- memmove(va, buf, n);
- return n;
- }
- return 0;
-}
-
-static void
-setbuttonmap(char* map)
-{
- int i, x, one, two, three;
-
- one = two = three = 0;
- for(i = 0; i < 3; i++){
- if(map[i] == 0)
- error(Ebadarg);
- if(map[i] == '1'){
- if(one)
- error(Ebadarg);
- one = 1<<i;
- }
- else if(map[i] == '2'){
- if(two)
- error(Ebadarg);
- two = 1<<i;
- }
- else if(map[i] == '3'){
- if(three)
- error(Ebadarg);
- three = 1<<i;
- }
- else
- error(Ebadarg);
- }
- if(map[i])
- error(Ebadarg);
-
- memset(buttonmap, 0, 8);
- for(i = 0; i < 8; i++){
- x = 0;
- if(i & 1)
- x |= one;
- if(i & 2)
- x |= two;
- if(i & 4)
- x |= three;
- buttonmap[x] = i;
- }
-}
-
-static long
-penmousewrite(Chan *c, void *va, long n, vlong)
-{
- char *p;
- Point pt;
- Cmdbuf *cb;
- Cmdtab *ct;
- char buf[64];
- int b;
-
- p = va;
- switch((ulong)c->qid.path){
- case Qdir:
- error(Eisdir);
-
- case Qmousectl:
- cb = parsecmd(va, n);
- if(waserror()){
- free(cb);
- nexterror();
- }
- ct = lookupcmd(cb, penmousecmd, nelem(penmousecmd));
- switch(ct->index){
- case CMswap:
- if(mouseswap)
- setbuttonmap("123");
- else
- setbuttonmap("321");
- mouseswap ^= 1;
- break;
- case CMcalibrate:
- if (cb->nf == 1) {
- calibration.scalex = 1<<16;
- calibration.scaley = 1<<16;
- calibration.transx = 0;
- calibration.transy = 0;
- } else if (cb->nf == 5) {
- if ((!isdigit(*cb->f[1]) && *cb->f[1] != '-')
- || (!isdigit(*cb->f[2]) && *cb->f[2] != '-')
- || (!isdigit(*cb->f[3]) && *cb->f[3] != '-')
- || (!isdigit(*cb->f[4]) && *cb->f[4] != '-'))
- error("bad syntax in control file message");
- calibration.scalex = strtol(cb->f[1], nil, 0);
- calibration.scaley = strtol(cb->f[2], nil, 0);
- calibration.transx = strtol(cb->f[3], nil, 0);
- calibration.transy = strtol(cb->f[4], nil, 0);
- } else
- cmderror(cb, Ecmdargs);
- break;
- }
- free(cb);
- poperror();
- return n;
-
- case Qmousein:
- if(n > sizeof buf-1)
- n = sizeof buf -1;
- memmove(buf, va, n);
- buf[n] = 0;
- p = 0;
- pt.x = strtol(buf+1, &p, 0);
- if(p == 0)
- error(Eshort);
- pt.y = strtol(p, &p, 0);
- if(p == 0)
- error(Eshort);
- b = strtol(p, &p, 0);
- penmousetrack(b, pt.x, pt.y);
- return n;
-
- case Qmouse:
- if(n > sizeof buf-1)
- n = sizeof buf -1;
- memmove(buf, va, n);
- buf[n] = 0;
- p = 0;
- pt.x = strtoul(buf+1, &p, 0);
- if(p == 0)
- error(Eshort);
- pt.y = strtoul(p, 0, 0);
- qlock(&mouse);
- if(ptinrect(pt, gscreen->r))
- penmousetrack(mouse.buttons, pt.x, pt.y);
- qunlock(&mouse);
- return n;
- }
-
- error(Egreg);
- return -1;
-}
-
-Dev penmousedevtab = {
- 'm',
- "penmouse",
-
- penmousereset,
- penmouseinit,
- devshutdown,
- penmouseattach,
- penmousewalk,
- penmousestat,
- penmouseopen,
- penmousecreate,
- penmouseclose,
- penmouseread,
- devbread,
- penmousewrite,
- devbwrite,
- devremove,
- devwstat,
-};
-
-/*
- * called at interrupt level to update the structure and
- * awaken any waiting procs.
- */
-static void
-penmousetrack(int b, int x, int y)
-{
- int lastb;
-
- if (x >= 0)
- mouse.xy = Pt(x, y);
- lastb = mouse.buttons;
- mouse.buttons = b;
- mouse.counter++;
- mouse.msec = TK2MS(MACHP(0)->ticks);
-
- /*
- * if the queue fills, we discard the entire queue and don't
- * queue any more events until a reader polls the mouse.
- */
- if(!mouse.qfull && lastb != b) { /* add to ring */
- mouse.queue[mouse.wi] = mouse.Mousestate;
- if(++mouse.wi == nelem(mouse.queue))
- mouse.wi = 0;
- if(mouse.wi == mouse.ri)
- mouse.qfull = 1;
- }
- wakeup(&mouse.r);
- drawactive(1);
- resetsuspendtimer();
-}
-
-int
-penmousechanged(void*)
-{
- return mouse.lastcounter != mouse.counter ||
- mouse.lastresize != mouse.resize;
-}
-
-Point
-penmousexy(void)
-{
- return mouse.xy;
-}
-
-/*
- * notify reader that screen has been resized (ha!)
- */
-void
-mouseresize(void)
-{
- mouse.resize++;
- wakeup(&mouse.r);
-}
-
--- a/sys/src/9/bitsy/devuda1341.c
+++ /dev/null
@@ -1,1401 +1,0 @@
-/*
- * SAC/UDA 1341 Audio driver for the Bitsy
- *
- * The Philips UDA 1341 sound chip is accessed through the Serial Audio
- * Controller (SAC) of the StrongARM SA-1110. This is much more a SAC
- * controller than a UDA controller, but we have a devsac.c already.
- *
- * The code morphs Nicolas Pitre's <[email protected]> Linux controller
- * and Ken's Soundblaster controller.
- *
- * The interface should be identical to that of devaudio.c
- */
-#include "u.h"
-#include "../port/lib.h"
-#include "mem.h"
-#include "dat.h"
-#include "fns.h"
-#include "../port/error.h"
-#include "io.h"
-#include "sa1110dma.h"
-
-static int debug = 0;
-
-/*
- * GPIO based L3 bus support.
- *
- * This provides control of Philips L3 type devices.
- * GPIO lines are used for clock, data and mode pins.
- *
- * Note: The L3 pins are shared with I2C devices. This should not present
- * any problems as long as an I2C start sequence is not generated. This is
- * defined as a 1->0 transition on the data lines when the clock is high.
- * It is critical this code only allow data transitions when the clock
- * is low. This is always legal in L3.
- *
- * The IIC interface requires the clock and data pin to be LOW when idle. We
- * must make sure we leave them in this state.
- *
- * It appears the read data is generated on the falling edge of the clock
- * and should be held stable during the clock high time.
- */
-
-/*
- * L3 setup and hold times (expressed in µs)
- */
-enum {
- L3_AcquireTime = 1,
- L3_ReleaseTime = 1,
- L3_DataSetupTime = (190+999)/1000, /* 190 ns */
- L3_DataHoldTime = ( 30+999)/1000,
- L3_ModeSetupTime = (190+999)/1000,
- L3_ModeHoldTime = (190+999)/1000,
- L3_ClockHighTime = (100+999)/1000,
- L3_ClockLowTime = (100+999)/1000,
- L3_HaltTime = (190+999)/1000,
-};
-
-/* UDA 1341 Registers */
-enum {
- /* Status0 register */
- UdaStatusDC = 0, /* 1 bit */
- UdaStatusIF = 1, /* 3 bits */
- UdaStatusSC = 4, /* 2 bits */
- UdaStatusRST = 6, /* 1 bit */
-};
-
-enum {
- /* Status1 register */
- UdaStatusPC = 0, /* 2 bits */
- UdaStatusDS = 2, /* 1 bit */
- UdaStatusPDA = 3, /* 1 bit */
- UdaStatusPAD = 4, /* 1 bit */
- UdaStatusIGS = 5, /* 1 bit */
- UdaStatusOGS = 6, /* 1 bit */
-};
-
-/*
- * UDA1341 L3 address and command types
- */
-
-enum {
- UDA1341_DATA0 = 0,
- UDA1341_DATA1,
- UDA1341_STATUS,
- UDA1341_L3Addr = 0x14,
-};
-
-typedef struct AQueue AQueue;
-typedef struct Buf Buf;
-typedef struct IOstate IOstate;
-
-enum
-{
- Qdir = 0,
- Qaudio,
- Qvolume,
- Qstatus,
- Qstats,
-
- Fmono = 1,
- Fin = 2,
- Fout = 4,
-
- Aclosed = 0,
- Aread,
- Awrite,
-
- Vaudio = 0,
- Vmic,
- Vtreb,
- Vbass,
- Vspeed,
- Vbufsize,
- Vfilter,
- Vinvert,
- Nvol,
-
- Bufsize = 4* 1024, /* 46 ms each */
- Nbuf = 10, /* 1.5 seconds total */
-
- Speed = 44100,
- Ncmd = 50, /* max volume command words */
-};
-
-enum {
- Flushbuf = 0xe0000000,
-};
-
-/* System Clock -- according to the manual, it seems that when the UDA is
- configured in non MSB/I2S mode, it uses a divisor of 256 to the 12.288MHz
- clock. The other rates are only supported in MSB mode, which should be
- implemented at some point */
-enum {
- SC512FS = 0 << 2,
- SC384FS = 1 << 2,
- SC256FS = 2 << 2,
- CLOCKMASK = 3 << 2,
-};
-
-/* Format */
-enum {
- LSB16 = 1 << 1,
- LSB18 = 2 << 1,
- LSB20 = 3 << 1,
- MSB = 4 << 1,
- MSB16 = 5 << 1,
- MSB18 = 6 << 1,
- MSB20 = 7 << 1,
-};
-
-Dirtab
-audiodir[] =
-{
- ".", {Qdir, 0, QTDIR}, 0, DMDIR|0555,
- "audio", {Qaudio}, 0, 0666,
- "volume", {Qvolume}, 0, 0666,
- "audiostatus", {Qstatus}, 0, 0444,
- "audiostats", {Qstats}, 0, 0444,
-};
-
-struct Buf
-{
- uchar* virt;
- ulong phys;
- uint nbytes;
-};
-
-struct IOstate
-{
- QLock;
- Lock ilock;
- Rendez vous;
- Chan *chan; /* chan of open */
- int dma; /* dma chan, alloc on open, free on close */
- int bufinit; /* boolean, if buffers allocated */
- Buf buf[Nbuf]; /* buffers and queues */
- volatile Buf *current; /* next dma to finish */
- volatile Buf *next; /* next candidate for dma */
- volatile Buf *filling; /* buffer being filled */
-/* to have defines just like linux — there's a real operating system */
-#define emptying filling
-};
-
-static struct
-{
- QLock;
- int amode; /* Aclosed/Aread/Awrite for /audio */
- int intr; /* boolean an interrupt has happened */
- int rivol[Nvol]; /* right/left input/output volumes */
- int livol[Nvol];
- int rovol[Nvol];
- int lovol[Nvol];
- ulong totcount; /* how many bytes processed since open */
- vlong tottime; /* time at which totcount bytes were processed */
- IOstate i;
- IOstate o;
-} audio;
-
-int zerodma; /* dma buffer used for sending zero */
-
-typedef struct Iostats Iostats;
-struct Iostats {
- ulong totaldma;
- ulong idledma;
- ulong faildma;
- ulong samedma;
- ulong empties;
-};
-
-static struct
-{
- ulong bytes;
- Iostats rx, tx;
-} iostats;
-
-static void setaudio(int in, int out, int left, int right, int value);
-static void setspeed(int in, int out, int left, int right, int value);
-static void setbufsize(int in, int out, int left, int right, int value);
-
-static struct
-{
- char* name;
- int flag;
- int ilval; /* initial values */
- int irval;
- void (*setval)(int, int, int, int, int);
-} volumes[] =
-{
-[Vaudio] {"audio", Fout|Fmono, 80, 80, setaudio },
-[Vmic] {"mic", Fin|Fmono, 0, 0, nil },
-[Vtreb] {"treb", Fout|Fmono, 50, 50, nil },
-[Vbass] {"bass", Fout|Fmono, 50, 50, nil },
-[Vspeed] {"speed", Fin|Fout|Fmono, Speed, Speed, setspeed },
-[Vbufsize] {"bufsize", Fin|Fout|Fmono, Bufsize, Bufsize, setbufsize },
-[Vfilter] {"filter", Fout|Fmono, 0, 0, nil },
-[Vinvert] {"invert", Fin|Fout|Fmono, 0, 0, nil },
-[Nvol] {0}
-};
-
-static void setreg(char *name, int val, int n);
-
-/*
- * Grab control of the IIC/L3 shared pins
- */
-static void
-L3_acquirepins(void)
-{
- gpioregs->set = (GPIO_L3_MODE_o | GPIO_L3_SCLK_o | GPIO_L3_SDA_io);
- gpioregs->direction |= (GPIO_L3_MODE_o | GPIO_L3_SCLK_o | GPIO_L3_SDA_io);
- microdelay(L3_AcquireTime);
-}
-
-/*
- * Release control of the IIC/L3 shared pins
- */
-static void
-L3_releasepins(void)
-{
- gpioregs->direction &= ~(GPIO_L3_MODE_o | GPIO_L3_SCLK_o | GPIO_L3_SDA_io);
- microdelay(L3_ReleaseTime);
-}
-
-/*
- * Initialize the interface
- */
-static void
-L3_init(void)
-{
- gpioregs->altfunc &= ~(GPIO_L3_SDA_io | GPIO_L3_SCLK_o | GPIO_L3_MODE_o);
- L3_releasepins();
-}
-
-/*
- * Get a bit. The clock is high on entry and on exit. Data is read after
- * the clock low time has expired.
- */
-static int
-L3_getbit(void)
-{
- int data;
-
- gpioregs->clear = GPIO_L3_SCLK_o;
- microdelay(L3_ClockLowTime);
-
- data = (gpioregs->level & GPIO_L3_SDA_io) ? 1 : 0;
-
- gpioregs->set = GPIO_L3_SCLK_o;
- microdelay(L3_ClockHighTime);
-
- return data;
-}
-
-/*
- * Send a bit. The clock is high on entry and on exit. Data is sent only
- * when the clock is low (I2C compatibility).
- */
-static void
-L3_sendbit(int bit)
-{
- gpioregs->clear = GPIO_L3_SCLK_o;
-
- if (bit & 1)
- gpioregs->set = GPIO_L3_SDA_io;
- else
- gpioregs->clear = GPIO_L3_SDA_io;
-
- /* Assumes L3_DataSetupTime < L3_ClockLowTime */
- microdelay(L3_ClockLowTime);
-
- gpioregs->set = GPIO_L3_SCLK_o;
- microdelay(L3_ClockHighTime);
-}
-
-/*
- * Send a byte. The mode line is set or pulsed based on the mode sequence
- * count. The mode line is high on entry and exit. The mod line is pulsed
- * before the second data byte and before ech byte thereafter.
- */
-static void
-L3_sendbyte(char data, int mode)
-{
- int i;
-
- switch(mode) {
- case 0: /* Address mode */
- gpioregs->clear = GPIO_L3_MODE_o;
- break;
- case 1: /* First data byte */
- break;
- default: /* Subsequent bytes */
- gpioregs->clear = GPIO_L3_MODE_o;
- microdelay(L3_HaltTime);
- gpioregs->set = GPIO_L3_MODE_o;
- break;
- }
-
- microdelay(L3_ModeSetupTime);
-
- for (i = 0; i < 8; i++)
- L3_sendbit(data >> i);
-
- if (mode == 0) /* Address mode */
- gpioregs->set = GPIO_L3_MODE_o;
-
- microdelay(L3_ModeHoldTime);
-}
-
-/*
- * Get a byte. The mode line is set or pulsed based on the mode sequence
- * count. The mode line is high on entry and exit. The mod line is pulsed
- * before the second data byte and before each byte thereafter. This
- * function is never valid with mode == 0 (address cycle) as the address
- * is always sent on the bus, not read.
- */
-static char
-L3_getbyte(int mode)
-{
- char data = 0;
- int i;
-
- switch(mode) {
- case 0: /* Address mode - never valid */
- break;
- case 1: /* First data byte */
- break;
- default: /* Subsequent bytes */
- gpioregs->clear = GPIO_L3_MODE_o;
- microdelay(L3_HaltTime);
- gpioregs->set = GPIO_L3_MODE_o;
- break;
- }
-
- microdelay(L3_ModeSetupTime);
-
- for (i = 0; i < 8; i++)
- data |= (L3_getbit() << i);
-
- microdelay(L3_ModeHoldTime);
-
- return data;
-}
-
-/*
- * Write data to a device on the L3 bus. The address is passed as well as
- * the data and length. The length written is returned. The register space
- * is encoded in the address (low two bits are set and device address is
- * in the upper 6 bits).
- */
-static int
-L3_write(uchar addr, uchar *data, int len)
-{
- int mode = 0;
- int bytes = len;
-
- L3_acquirepins();
- L3_sendbyte(addr, mode++);
- while(len--)
- L3_sendbyte(*data++, mode++);
- L3_releasepins();
- return bytes;
-}
-
-/*
- * Read data from a device on the L3 bus. The address is passed as well as
- * the data and length. The length read is returned. The register space
- * is encoded in the address (low two bits are set and device address is
- * in the upper 6 bits).
-
- * Commented out, not used
-static int
-L3_read(uchar addr, uchar *data, int len)
-{
- int mode = 0;
- int bytes = len;
-
- L3_acquirepins();
- L3_sendbyte(addr, mode++);
- gpioregs->direction &= ~(GPIO_L3_SDA_io);
- while(len--)
- *data++ = L3_getbyte(mode++);
- L3_releasepins();
- return bytes;
-}
- */
-
-void
-audiomute(int on)
-{
- egpiobits(EGPIO_audio_mute, on);
-}
-
-static char Emode[] = "illegal open mode";
-static char Evolume[] = "illegal volume specifier";
-
-static void
-bufinit(IOstate *b)
-{
- int i;
-
- if (debug) print("bufinit\n");
- for (i = 0; i < Nbuf; i++) {
- b->buf[i].virt = xalloc(Bufsize);
- b->buf[i].phys = PADDR(b->buf[i].virt);
- memset(b->buf[i].virt, 0xAA, Bufsize);
- }
- b->bufinit = 1;
-};
-
-static void
-setempty(IOstate *b)
-{
- int i;
-
- if (debug) print("setempty\n");
- for (i = 0; i < Nbuf; i++) {
- b->buf[i].nbytes = 0;
- }
- b->filling = b->buf;
- b->current = b->buf;
- b->next = b->buf;
-}
-
-static int
-audioqnotempty(void *x)
-{
- IOstate *s = x;
-
- return dmaidle(s->dma) || s->emptying != s->current;
-}
-
-static int
-audioqnotfull(void *x)
-{
- IOstate *s = x;
-
- return dmaidle(s->dma) || s->filling != s->current;
-}
-
-SSPregs *sspregs;
-MCPregs *mcpregs;
-
-static void
-audioinit(void)
-{
- /* Turn MCP operations off */
- mcpregs = mapspecial(MCPREGS, sizeof(MCPregs));
- mcpregs->status &= ~(1<<16);
-
- sspregs = mapspecial(SSPREGS, sizeof(SSPregs));
-
-}
-
-uchar status0[1] = {0x02};
-uchar status1[1] = {0x80};
-uchar data00[1] = {0x00}; /* volume control, bits 0 – 5 */
-uchar data01[1] = {0x40};
-uchar data02[1] = {0x80};
-uchar data0e0[2] = {0xc0, 0xe0};
-uchar data0e1[2] = {0xc1, 0xe0};
-uchar data0e2[2] = {0xc2, 0xf2};
-/* there is no data0e3 */
-uchar data0e4[2] = {0xc4, 0xe0};
-uchar data0e5[2] = {0xc5, 0xe0};
-uchar data0e6[2] = {0xc6, 0xe3};
-
-static void
-enable(void)
-{
- uchar data[1];
-
- L3_init();
-
- /* Setup the uarts */
- ppcregs->assignment &= ~(1<<18);
-
- sspregs->control0 = 0;
- sspregs->control0 = 0x031f; /* 16 bits, TI frames, serial clock rate 3 */
- sspregs->control1 = 0x0020; /* ext clock */
- sspregs->control0 = 0x039f; /* enable */
-
- /* Enable the audio power */
- audioicpower(1);
- egpiobits(EGPIO_codec_reset, 1);
-
- setspeed(0, 0, 0, 0, volumes[Vspeed].ilval);
-
- data[0] = status0[0] | 1 << UdaStatusRST;
- L3_write(UDA1341_L3Addr | UDA1341_STATUS, data, 1 );
- gpioregs->clear = EGPIO_codec_reset;
- gpioregs->set = EGPIO_codec_reset;
- /* write uda 1341 status[0] */
- data[0] = status0[0];
- L3_write(UDA1341_L3Addr | UDA1341_STATUS, data, 1);
-
- if (debug)
- print("enable: status0 = 0x%2.2ux\n", data[0]);
-
- L3_write(UDA1341_L3Addr | UDA1341_STATUS, status1, 1);
- L3_write(UDA1341_L3Addr | UDA1341_DATA0, data02, 1);
- L3_write(UDA1341_L3Addr | UDA1341_DATA0, data0e2, 2);
- L3_write(UDA1341_L3Addr | UDA1341_DATA0, data0e6, 2 );
-
- if (debug) {
- print("enable: status0 = 0x%2.2ux\n", data[0]);
- print("enable: status1 = 0x%2.2ux\n", status1[0]);
- print("enable: data02 = 0x%2.2ux\n", data02[0]);
- print("enable: data0e2 = 0x%4.4ux\n", data0e2[0] | data0e2[1]<<8);
- print("enable: data0e4 = 0x%4.4ux\n", data0e4[0] | data0e4[1]<<8);
- print("enable: data0e6 = 0x%4.4ux\n", data0e6[0] | data0e6[1]<<8);
- print("enable: sspregs->control0 = 0x%lux\n", sspregs->control0);
- print("enable: sspregs->control1 = 0x%lux\n", sspregs->control1);
- }
-}
-
-static void
-resetlevel(void)
-{
- int i;
-
- for(i=0; volumes[i].name; i++) {
- audio.lovol[i] = volumes[i].ilval;
- audio.rovol[i] = volumes[i].irval;
- audio.livol[i] = volumes[i].ilval;
- audio.rivol[i] = volumes[i].irval;
- }
-}
-
-static void
-mxvolume(void) {
- int *left, *right;
-
- setspeed(0, 0, 0, 0, volumes[Vspeed].ilval);
- if (!dmaidle(audio.i.dma) || !dmaidle(audio.o.dma))
- L3_write(UDA1341_L3Addr | UDA1341_STATUS, status0, 1);
-
- if(audio.amode & Aread){
- left = audio.livol;
- right = audio.rivol;
- if (left[Vmic]+right[Vmic] == 0) {
- /* Turn on automatic gain control (AGC) */
- data0e4[1] |= 0x10;
- L3_write(UDA1341_L3Addr | UDA1341_DATA0, data0e4, 2 );
- } else {
- int v;
- /* Turn on manual gain control */
- v = ((left[Vmic]+right[Vmic])*0x7f/200)&0x7f;
- data0e4[1] &= ~0x13;
- data0e5[1] &= ~0x1f;
- data0e4[1] |= v & 0x3;
- data0e5[0] |= (v & 0x7c)<<6;
- data0e5[1] |= (v & 0x7c)>>2;
- L3_write(UDA1341_L3Addr | UDA1341_DATA0, data0e4, 2 );
- L3_write(UDA1341_L3Addr | UDA1341_DATA0, data0e5, 2 );
- }
- if (left[Vinvert]+right[Vinvert] == 0)
- status1[0] &= ~0x04;
- else
- status1[0] |= 0x04;
- L3_write(UDA1341_L3Addr | UDA1341_STATUS, status1, 1);
- if (debug) {
- print("mxvolume: status1 = 0x%2.2ux\n", status1[0]);
- print("mxvolume: data0e4 = 0x%4.4ux\n", data0e4[0]|data0e4[0]<<8);
- print("mxvolume: data0e5 = 0x%4.4ux\n", data0e5[0]|data0e5[0]<<8);
- }
- }
- if(audio.amode & Awrite){
- left = audio.lovol;
- right = audio.rovol;
- data00[0] &= ~0x3f;
- data00[0] |= ((200-left[Vaudio]-right[Vaudio])*0x3f/200)&0x3f;
- if (left[Vtreb]+right[Vtreb] <= 100
- && left[Vbass]+right[Vbass] <= 100)
- /* settings neutral */
- data02[0] &= ~0x03;
- else {
- data02[0] |= 0x03;
- data01[0] &= ~0x3f;
- data01[0] |= ((left[Vtreb]+right[Vtreb]-100)*0x3/100)&0x03;
- data01[0] |= (((left[Vbass]+right[Vbass]-100)*0xf/100)&0xf)<<2;
- }
- if (left[Vfilter]+right[Vfilter] == 0)
- data02[0] &= ~0x10;
- else
- data02[0]|= 0x10;
- if (left[Vinvert]+right[Vinvert] == 0)
- status1[0] &= ~0x10;
- else
- status1[0] |= 0x10;
- L3_write(UDA1341_L3Addr | UDA1341_STATUS, status1, 1);
- L3_write(UDA1341_L3Addr | UDA1341_DATA0, data00, 1);
- L3_write(UDA1341_L3Addr | UDA1341_DATA0, data01, 1);
- L3_write(UDA1341_L3Addr | UDA1341_DATA0, data02, 1);
- if (debug) {
- print("mxvolume: status1 = 0x%2.2ux\n", status1[0]);
- print("mxvolume: data00 = 0x%2.2ux\n", data00[0]);
- print("mxvolume: data01 = 0x%2.2ux\n", data01[0]);
- print("mxvolume: data02 = 0x%2.2ux\n", data02[0]);
- }
- }
-}
-
-static void
-setreg(char *name, int val, int n)
-{
- uchar x[2];
- int i;
-
- x[0] = val;
- x[1] = val>>8;
-
- if(strcmp(name, "pause") == 0){
- for(i = 0; i < n; i++)
- microdelay(val);
- return;
- }
-
- switch(n){
- case 1:
- case 2:
- break;
- default:
- error("setreg");
- }
-
- if(strcmp(name, "status") == 0){
- L3_write(UDA1341_L3Addr | UDA1341_STATUS, x, n);
- } else if(strcmp(name, "data0") == 0){
- L3_write(UDA1341_L3Addr | UDA1341_DATA0, x, n);
- } else if(strcmp(name, "data1") == 0){
- L3_write(UDA1341_L3Addr | UDA1341_DATA1, x, n);
- } else
- error("setreg");
-}
-
-static void
-outenable(void) {
- /* turn on DAC, set output gain switch */
- audioamppower(1);
- audiomute(0);
- status1[0] |= 0x41;
- L3_write(UDA1341_L3Addr | UDA1341_STATUS, status1, 1);
- /* set volume */
- data00[0] |= 0xf;
- L3_write(UDA1341_L3Addr | UDA1341_DATA0, data00, 1);
- if (debug) {
- print("outenable: status1 = 0x%2.2ux\n", status1[0]);
- print("outenable: data00 = 0x%2.2ux\n", data00[0]);
- }
-}
-
-static void
-outdisable(void) {
- dmastop(audio.o.dma);
- /* turn off DAC, clear output gain switch */
- audiomute(1);
- status1[0] &= ~0x41;
- L3_write(UDA1341_L3Addr | UDA1341_STATUS, status1, 1);
- if (debug) {
- print("outdisable: status1 = 0x%2.2ux\n", status1[0]);
- }
- audioamppower(0);
-}
-
-static void
-inenable(void) {
- /* turn on ADC, set input gain switch */
- status1[0] |= 0x22;
- L3_write(UDA1341_L3Addr | UDA1341_STATUS, status1, 1);
- if (debug) {
- print("inenable: status1 = 0x%2.2ux\n", status1[0]);
- }
-}
-
-static void
-indisable(void) {
- dmastop(audio.i.dma);
- /* turn off ADC, clear input gain switch */
- status1[0] &= ~0x22;
- L3_write(UDA1341_L3Addr | UDA1341_STATUS, status1, 1);
- if (debug) {
- print("indisable: status1 = 0x%2.2ux\n", status1[0]);
- }
-}
-
-static void
-sendaudio(IOstate *s) {
- /* interrupt routine calls this too */
- int n;
-
- if (debug > 1) print("#A: sendaudio\n");
- ilock(&s->ilock);
- if ((audio.amode & Aread) && s->next == s->filling && dmaidle(s->dma)) {
- // send an empty buffer to provide an input clock
- zerodma |= dmastart(s->dma, Flushbuf, volumes[Vbufsize].ilval) & 0xff;
- if (zerodma == 0)
- if (debug) print("emptyfail\n");
- iostats.tx.empties++;
- iunlock(&s->ilock);
- return;
- }
- while (s->next != s->filling) {
- s->next->nbytes &= ~0x3; /* must be a multiple of 4 */
- if(s->next->nbytes) {
- if ((n = dmastart(s->dma, s->next->phys, s->next->nbytes)) == 0) {
- iostats.tx.faildma++;
- break;
- }
- iostats.tx.totaldma++;
- switch (n >> 8) {
- case 1:
- iostats.tx.idledma++;
- break;
- case 3:
- iostats.tx.faildma++;
- break;
- }
- if (debug) {
- if (debug > 1)
- print("dmastart @%p\n", s->next);
- else
- iprint("+");
- }
- s->next->nbytes = 0;
- }
- s->next++;
- if (s->next == &s->buf[Nbuf])
- s->next = &s->buf[0];
- }
- iunlock(&s->ilock);
-}
-
-static void
-recvaudio(IOstate *s) {
- /* interrupt routine calls this too */
- int n;
-
- if (debug > 1) print("#A: recvaudio\n");
- ilock(&s->ilock);
- while (s->next != s->emptying) {
- assert(s->next->nbytes == 0);
- if ((n = dmastart(s->dma, s->next->phys, volumes[Vbufsize].ilval)) == 0) {
- iostats.rx.faildma++;
- break;
- }
- iostats.rx.totaldma++;
- switch (n >> 8) {
- case 1:
- iostats.rx.idledma++;
- break;
- case 3:
- iostats.rx.faildma++;
- break;
- }
- if (debug) {
- if (debug > 1)
- print("dmastart @%p\n", s->next);
- else
- iprint("+");
- }
- s->next++;
- if (s->next == &s->buf[Nbuf])
- s->next = &s->buf[0];
- }
- iunlock(&s->ilock);
-}
-
-void
-audiopower(int flag) {
- IOstate *s;
-
- if (debug) {
- iprint("audiopower %d\n", flag);
- }
- if (flag) {
- /* power on only when necessary */
- if (audio.amode) {
- audioamppower(1);
- audioicpower(1);
- egpiobits(EGPIO_codec_reset, 1);
- enable();
- if (audio.amode & Aread) {
- inenable();
- s = &audio.i;
- dmareset(s->dma, 1, 0, 4, 2, SSPRecvDMA, Port4SSP);
- recvaudio(s);
- }
- if (audio.amode & Awrite) {
- outenable();
- s = &audio.o;
- dmareset(s->dma, 0, 0, 4, 2, SSPXmitDMA, Port4SSP);
- sendaudio(s);
- }
- mxvolume();
- }
- } else {
- /* power off */
- if (audio.amode & Aread)
- indisable();
- if (audio.amode & Awrite)
- outdisable();
- egpiobits(EGPIO_codec_reset, 0);
- audioamppower(0);
- audioicpower(0);
- }
-}
-
-static void
-audiointr(void *x, ulong ndma) {
- IOstate *s = x;
-
- if (debug) {
- if (debug > 1)
- iprint("#A: audio interrupt @%p\n", s->current);
- else
- iprint("-");
- }
- if (s == &audio.i || (ndma & ~zerodma)) {
- /* A dma, not of a zero buffer completed, update current
- * Only interrupt routine touches s->current
- */
- s->current->nbytes = (s == &audio.i)? volumes[Vbufsize].ilval: 0;
- s->current++;
- if (s->current == &s->buf[Nbuf])
- s->current = &s->buf[0];
- }
- if (ndma) {
- if (s == &audio.o) {
- zerodma &= ~ndma;
- sendaudio(s);
- } else if (s == &audio.i)
- recvaudio(s);
- }
- wakeup(&s->vous);
-}
-
-static Chan*
-audioattach(char *param)
-{
- return devattach('A', param);
-}
-
-static Walkqid*
-audiowalk(Chan *c, Chan *nc, char **name, int nname)
-{
- return devwalk(c, nc, name, nname, audiodir, nelem(audiodir), devgen);
-}
-
-static int
-audiostat(Chan *c, uchar *db, int n)
-{
- return devstat(c, db, n, audiodir, nelem(audiodir), devgen);
-}
-
-static Chan*
-audioopen(Chan *c, int mode)
-{
- IOstate *s;
- int omode = mode;
-
- switch((ulong)c->qid.path) {
- default:
- error(Eperm);
- break;
-
- case Qstatus:
- case Qstats:
- if((omode&7) != OREAD)
- error(Eperm);
- case Qvolume:
- case Qdir:
- break;
-
- case Qaudio:
- omode = (omode & 0x7) + 1;
- if (omode & ~(Aread | Awrite))
- error(Ebadarg);
- qlock(&audio);
- if(audio.amode & omode){
- qunlock(&audio);
- error(Einuse);
- }
- enable();
- memset(&iostats, 0, sizeof(iostats));
- if (omode & Aread) {
- inenable();
- s = &audio.i;
- if(s->bufinit == 0)
- bufinit(s);
- setempty(s);
- s->emptying = &s->buf[Nbuf-1];
- s->chan = c;
- s->dma = dmaalloc(1, 0, 4, 2, SSPRecvDMA, Port4SSP, audiointr, (void*)s);
- audio.amode |= Aread;
- }
- if (omode & (Aread|Awrite) && (audio.amode & Awrite) == 0) {
- s = &audio.o;
- if(s->bufinit == 0)
- bufinit(s);
- setempty(s);
- s->chan = c;
- s->dma = dmaalloc(0, 0, 4, 2, SSPXmitDMA, Port4SSP, audiointr, (void*)s);
- }
- if (omode & Awrite) {
- audio.amode |= Awrite;
- outenable();
- }
- mxvolume();
- if (audio.amode & Aread)
- sendaudio(&audio.o);
- qunlock(&audio);
-
- if (debug) print("open done\n");
- break;
- }
- c = devopen(c, mode, audiodir, nelem(audiodir), devgen);
- c->mode = openmode(mode);
- c->flag |= COPEN;
- c->offset = 0;
-
- return c;
-}
-
-static void
-audioclose(Chan *c)
-{
- IOstate *s;
-
- switch((ulong)c->qid.path) {
- default:
- error(Eperm);
- break;
-
- case Qdir:
- case Qvolume:
- case Qstatus:
- case Qstats:
- break;
-
- case Qaudio:
- if (debug > 1) print("#A: close\n");
- if(c->flag & COPEN) {
- qlock(&audio);
- if (audio.i.chan == c) {
- /* closing the read end */
- audio.amode &= ~Aread;
- s = &audio.i;
- qlock(s);
- indisable();
- setempty(s);
- dmafree(s->dma);
- qunlock(s);
- if ((audio.amode & Awrite) == 0) {
- s = &audio.o;
- qlock(s);
- while(waserror())
- ;
- dmawait(s->dma);
- poperror();
- outdisable();
- setempty(s);
- dmafree(s->dma);
- qunlock(s);
- }
- }
- if (audio.o.chan == c) {
- /* closing the write end */
- audio.amode &= ~Awrite;
- s = &audio.o;
- qlock(s);
- if (s->filling->nbytes) {
- /* send remaining partial buffer */
- s->filling++;
- if (s->filling == &s->buf[Nbuf])
- s->filling = &s->buf[0];
- sendaudio(s);
- }
- while(waserror())
- ;
- dmawait(s->dma);
- poperror();
- outdisable();
- setempty(s);
- if ((audio.amode & Aread) == 0)
- dmafree(s->dma);
- qunlock(s);
- }
- if (audio.amode == 0) {
- /* turn audio off */
- egpiobits(EGPIO_codec_reset, 0);
- audioicpower(0);
- }
- qunlock(&audio);
- }
- break;
- }
-}
-
-static long
-audioread(Chan *c, void *v, long n, vlong off)
-{
- int liv, riv, lov, rov;
- long m, n0;
- char buf[300];
- int j;
- ulong offset = off;
- char *p;
- IOstate *s;
-
- n0 = n;
- p = v;
- switch((ulong)c->qid.path) {
- default:
- error(Eperm);
- break;
-
- case Qdir:
- return devdirread(c, p, n, audiodir, nelem(audiodir), devgen);
-
- case Qaudio:
- if (debug > 1) print("#A: read %ld\n", n);
- if((audio.amode & Aread) == 0)
- error(Emode);
- s = &audio.i;
- qlock(s);
- if(waserror()){
- qunlock(s);
- nexterror();
- }
- while(n > 0) {
- if(s->emptying->nbytes == 0) {
- if (debug > 1) print("#A: emptied @%p\n", s->emptying);
- recvaudio(s);
- s->emptying++;
- if (s->emptying == &s->buf[Nbuf])
- s->emptying = s->buf;
- }
- /* wait if dma in progress */
- while (!dmaidle(s->dma) && s->emptying == s->current) {
- if (debug > 1) print("#A: sleep\n");
- sleep(&s->vous, audioqnotempty, s);
- }
-
- m = (s->emptying->nbytes > n)? n: s->emptying->nbytes;
- memmove(p, s->emptying->virt + volumes[Vbufsize].ilval -
- s->emptying->nbytes, m);
-
- s->emptying->nbytes -= m;
- n -= m;
- p += m;
- }
- poperror();
- qunlock(s);
- break;
-
- case Qstatus:
- buf[0] = 0;
- snprint(buf, sizeof(buf), "bytes %lud\ntime %lld\n",
- audio.totcount, audio.tottime);
- return readstr(offset, p, n, buf);
-
- case Qstats:
- buf[0] = 0;
- snprint(buf, sizeof(buf),
- "bytes %lud\nRX dmas %lud, while idle %lud, while busy %lud, "
- "out-of-order %lud, empty dmas %lud\n"
- "TX dmas %lud, while idle %lud, while busy %lud, "
- "out-of-order %lud, empty dmas %lud\n",
- iostats.bytes, iostats.rx.totaldma, iostats.rx.idledma,
- iostats.rx.faildma, iostats.rx.samedma, iostats.rx.empties,
- iostats.tx.totaldma, iostats.tx.idledma,
- iostats.tx.faildma, iostats.tx.samedma, iostats.tx.empties);
-
- return readstr(offset, p, n, buf);
-
- case Qvolume:
- j = 0;
- buf[0] = 0;
- for(m=0; volumes[m].name; m++){
- if (m == Vaudio) {
- liv = audio.livol[m];
- riv = audio.rivol[m];
- lov = audio.lovol[m];
- rov = audio.rovol[m];
- }
- else {
- lov = liv = volumes[m].ilval;
- rov = riv = volumes[m].irval;
- }
-
- j += snprint(buf+j, sizeof(buf)-j, "%s", volumes[m].name);
- if((volumes[m].flag & Fmono) || liv==riv && lov==rov){
- if((volumes[m].flag&(Fin|Fout))==(Fin|Fout) && liv==lov)
- j += snprint(buf+j, sizeof(buf)-j, " %d", liv);
- else{
- if(volumes[m].flag & Fin)
- j += snprint(buf+j, sizeof(buf)-j,
- " in %d", liv);
- if(volumes[m].flag & Fout)
- j += snprint(buf+j, sizeof(buf)-j,
- " out %d", lov);
- }
- }else{
- if((volumes[m].flag&(Fin|Fout))==(Fin|Fout) &&
- liv==lov && riv==rov)
- j += snprint(buf+j, sizeof(buf)-j,
- " left %d right %d",
- liv, riv);
- else{
- if(volumes[m].flag & Fin)
- j += snprint(buf+j, sizeof(buf)-j,
- " in left %d right %d",
- liv, riv);
- if(volumes[m].flag & Fout)
- j += snprint(buf+j, sizeof(buf)-j,
- " out left %d right %d",
- lov, rov);
- }
- }
- j += snprint(buf+j, sizeof(buf)-j, "\n");
- }
- return readstr(offset, p, n, buf);
- }
- return n0-n;
-}
-
-static void
-setaudio(int in, int out, int left, int right, int value)
-{
- if (value < 0 || value > 100)
- error(Evolume);
- if(left && out)
- audio.lovol[Vaudio] = value;
- if(left && in)
- audio.livol[Vaudio] = value;
- if(right && out)
- audio.rovol[Vaudio] = value;
- if(right && in)
- audio.rivol[Vaudio] = value;
-}
-
-static void
-setspeed(int, int, int, int, int speed)
-{
- uchar clock;
-
- /* external clock configured for 44100 samples/sec */
- switch (speed) {
- case 32000:
- /* 00 */
- gpioregs->clear = GPIO_CLK_SET0_o|GPIO_CLK_SET1_o;
- clock = SC384FS; /* Only works in MSB mode! */
- break;
- case 48000:
- /* 00 */
- gpioregs->clear = GPIO_CLK_SET0_o|GPIO_CLK_SET1_o;
- clock = SC256FS;
- break;
- default:
- speed = 44100;
- case 44100:
- /* 01 */
- gpioregs->set = GPIO_CLK_SET0_o;
- gpioregs->clear = GPIO_CLK_SET1_o;
- clock = SC256FS;
- break;
- case 8000:
- /* 10 */
- gpioregs->set = GPIO_CLK_SET1_o;
- gpioregs->clear = GPIO_CLK_SET0_o;
- clock = SC512FS; /* Only works in MSB mode! */
- break;
- case 16000:
- /* 10 */
- gpioregs->set = GPIO_CLK_SET1_o;
- gpioregs->clear = GPIO_CLK_SET0_o;
- clock = SC256FS;
- break;
- case 11025:
- /* 11 */
- gpioregs->set = GPIO_CLK_SET0_o|GPIO_CLK_SET1_o;
- clock = SC512FS; /* Only works in MSB mode! */
- break;
- case 22050:
- /* 11 */
- gpioregs->set = GPIO_CLK_SET0_o|GPIO_CLK_SET1_o;
- clock = SC256FS;
- break;
- }
-
- /* Wait for the UDA1341 to wake up */
- delay(100);
-
- /* Reset the chip */
- status0[0] &= ~CLOCKMASK;
-
- status0[0] |=clock;
- volumes[Vspeed].ilval = speed;
-}
-
-static void
-setbufsize(int, int, int, int, int value)
-{
- if ((value % 8) != 0 || value < 8 || value >= Bufsize)
- error(Ebadarg);
- volumes[Vbufsize].ilval = value;
-}
-
-static long
-audiowrite(Chan *c, void *vp, long n, vlong)
-{
- long m, n0;
- int i, v, left, right, in, out;
- char *p;
- IOstate *a;
- Cmdbuf *cb;
-
- p = vp;
- n0 = n;
- switch((ulong)c->qid.path) {
- default:
- error(Eperm);
- break;
-
- case Qvolume:
- v = Vaudio;
- left = 1;
- right = 1;
- in = 1;
- out = 1;
- cb = parsecmd(p, n);
- if(waserror()){
- free(cb);
- nexterror();
- }
-
- for(i = 0; i < cb->nf; i++){
- /*
- * a number is volume
- */
- if(cb->f[i][0] >= '0' && cb->f[i][0] <= '9') {
- m = strtoul(cb->f[i], 0, 10);
- if (volumes[v].setval)
- volumes[v].setval(in, out, left, right, m);
- goto cont0;
- }
-
- for(m=0; volumes[m].name; m++) {
- if(strcmp(cb->f[i], volumes[m].name) == 0) {
- v = m;
- in = 1;
- out = 1;
- left = 1;
- right = 1;
- goto cont0;
- }
- }
-
- if(strcmp(cb->f[i], "reset") == 0) {
- resetlevel();
- goto cont0;
- }
- if(strcmp(cb->f[i], "debug") == 0) {
- debug = debug?0:1;
- goto cont0;
- }
- if(strcmp(cb->f[i], "in") == 0) {
- in = 1;
- out = 0;
- goto cont0;
- }
- if(strcmp(cb->f[i], "out") == 0) {
- in = 0;
- out = 1;
- goto cont0;
- }
- if(strcmp(cb->f[i], "left") == 0) {
- left = 1;
- right = 0;
- goto cont0;
- }
- if(strcmp(cb->f[i], "right") == 0) {
- left = 0;
- right = 1;
- goto cont0;
- }
- if(strcmp(cb->f[i], "reg") == 0) {
- if(cb->nf < 3)
- error(Evolume);
- setreg(cb->f[1], strtol(cb->f[2], 0, 0),
- cb->nf == 4 ? strtol(cb->f[3], 0, 0):1);
- return n0;
- }
- error(Evolume);
- break;
- cont0:;
- }
- mxvolume();
- poperror();
- free(cb);
- break;
-
- case Qaudio:
- if (debug > 1) print("#A: write %ld\n", n);
- if((audio.amode & Awrite) == 0)
- error(Emode);
- a = &audio.o;
- qlock(a);
- if(waserror()){
- qunlock(a);
- nexterror();
- }
- while(n > 0) {
- /* wait if dma in progress */
- while (!dmaidle(a->dma) && !zerodma && a->filling == a->current) {
- if (debug > 1) print("#A: sleep\n");
- sleep(&a->vous, audioqnotfull, a);
- }
- m = volumes[Vbufsize].ilval - a->filling->nbytes;
- if(m > n)
- m = n;
- memmove(a->filling->virt + a->filling->nbytes, p, m);
-
- a->filling->nbytes += m;
- n -= m;
- p += m;
- if(a->filling->nbytes >= volumes[Vbufsize].ilval) {
- if (debug > 1) print("#A: filled @%p\n", a->filling);
- a->filling++;
- if (a->filling == &a->buf[Nbuf])
- a->filling = a->buf;
- sendaudio(a);
- }
- }
- poperror();
- qunlock(a);
- break;
- }
- return n0 - n;
-}
-
-Dev uda1341devtab = {
- 'A',
- "audio",
-
- devreset,
- audioinit,
- devshutdown,
- audioattach,
- audiowalk,
- audiostat,
- audioopen,
- devcreate,
- audioclose,
- audioread,
- devbread,
- audiowrite,
- devbwrite,
- devremove,
- devwstat,
- audiopower,
-};
--- a/sys/src/9/bitsy/devµc.c
+++ /dev/null
@@ -1,407 +1,0 @@
-#include "u.h"
-#include "../port/lib.h"
-#include "mem.h"
-#include "dat.h"
-#include "fns.h"
-#include "io.h"
-#include "../port/error.h"
-
-enum{
- Qdir,
- Qbacklight,
- Qbattery,
- Qbuttons,
- Qcruft,
- Qled,
- Qversion,
- Qpower,
-
- /* command types */
- BLversion= 0,
- BLbuttons= 2, /* button events */
- BLtouch= 3, /* read touch screen events */
- BLled= 8, /* turn LED on/off */
- BLbattery= 9, /* read battery status */
- BLbacklight= 0xd, /* backlight control */
-
- SOF= 0x2, /* start of frame */
-};
-
-Dirtab µcdir[]={
- ".", { Qdir, 0, QTDIR }, 0, DMDIR|0755,
- "backlight", { Qbacklight, 0 }, 0, 0664,
- "battery", { Qbattery, 0 }, 0, 0664,
- "buttons", { Qbuttons, 0 }, 0, 0664,
- "cruft", { Qcruft, 0 }, 0, 0664,
- "led", { Qled, 0 }, 0, 0664,
- "version", { Qversion, 0 }, 0, 0664,
- "power", { Qpower, 0 }, 0, 0600,
-};
-
-static struct µcontroller
-{
- /* message being rcvd */
- int state;
- uchar buf[16+4];
- uchar n;
-
- /* for messages that require acks */
- QLock;
- Rendez r;
-
- /* battery */
- uchar acstatus;
- uchar voltage;
- ushort batstatus;
- uchar batchem;
-
- /* version string */
- char version[16+2];
-} ctlr;
-
-extern int landscape;
-
-int
-µcputc(Queue*, int ch)
-{
- int i, len, b, up;
- uchar cksum;
- uchar *p;
- static int samseq;
- static int touching; /* guard against something we call going spllo() */
- static int buttoning; /* guard against something we call going spllo() */
-
- if(ctlr.n > sizeof(ctlr.buf))
- panic("µcputc");
-
- ctlr.buf[ctlr.n++] = (uchar)ch;
-
- for(;;){
- /* message hasn't started yet? */
- if(ctlr.buf[0] != SOF){
- p = memchr(ctlr.buf, SOF, ctlr.n);
- if(p == nil){
- ctlr.n = 0;
- break;
- } else {
- ctlr.n -= p-ctlr.buf;
- memmove(ctlr.buf, p, ctlr.n);
- }
- }
-
- /* whole msg? */
- len = ctlr.buf[1] & 0xf;
- if(ctlr.n < 3 || ctlr.n < len+3)
- break;
-
- /* check the sum */
- ctlr.buf[0] = ~SOF; /* make sure we process this msg exactly once */
- cksum = 0;
- for(i = 1; i < len+2; i++)
- cksum += ctlr.buf[i];
- if(ctlr.buf[len+2] != cksum)
- continue;
-
- /* parse resulting message */
- p = ctlr.buf+2;
- switch(ctlr.buf[1] >> 4){
- case BLversion:
- strncpy(ctlr.version, (char*)p, len);
- ctlr.version[len] = '0';
- strcat(ctlr.version, "\n");
- wakeup(&ctlr.r);
- break;
- case BLbuttons:
- if(len < 1 || buttoning)
- break;
- buttoning = 1;
- b = p[0] & 0x7f;
- up = p[0] & 0x80;
-
- if(b <= 5){
- /* like mouse buttons */
- if(--b == 0)
- b = 5;
- penbutton(up, 1<<b);
- }
- buttoning = 0;
- break;
- case BLtouch:
- if(touching)
- break;
- touching = 1;
- if(len == 4) {
- if (samseq++ > 10){
- if (landscape)
- pentrackxy((p[0]<<8)|p[1], (p[2]<<8)|p[3]);
- else
- pentrackxy((p[2]<<8)|p[3], (p[0]<<8)|p[1]);
- }
- } else {
- samseq = 0;
- pentrackxy(-1, -1);
- }
- touching = 0;
- break;
- case BLled:
- wakeup(&ctlr.r);
- break;
- case BLbattery:
- if(len >= 5){
- ctlr.acstatus = p[0];
- ctlr.voltage = (p[3]<<8)|p[2];
- ctlr.batstatus = p[4];
- ctlr.batchem = p[1];
- }
- wakeup(&ctlr.r);
- break;
- case BLbacklight:
- wakeup(&ctlr.r);
- break;
- default:
- print("unknown µc message: %ux", ctlr.buf[1] >> 4);
- for(i = 0; i < len; i++)
- print(" %ux", p[i]);
- print("\n");
- break;
- }
-
- /* remove the message */
- ctlr.n -= len+3;
- memmove(ctlr.buf, &ctlr.buf[len+3], ctlr.n);
- }
- return 0;
-}
-
-static void
-_sendmsg(uchar id, uchar *data, int len)
-{
- uchar buf[20];
- uchar cksum;
- uchar c;
- uchar *p = buf;
- int i;
-
- /* create the message */
- if(sizeof(buf) < len+4)
- return;
- cksum = (id<<4) | len;
- *p++ = SOF;
- *p++ = cksum;
- for(i = 0; i < len; i++){
- c = data[i];
- cksum += c;
- *p++ = c;
- }
- *p++ = cksum;
-
- /* send the message - there should be a more generic way to do this */
- serialµcputs(buf, p-buf);
-}
-
-/* the tsleep takes care of lost acks */
-static void
-sendmsgwithack(uchar id, uchar *data, int len)
-{
- if(waserror()){
- qunlock(&ctlr);
- nexterror();
- }
- qlock(&ctlr);
- _sendmsg(id, data, len);
- tsleep(&ctlr.r, return0, 0, 100);
- qunlock(&ctlr);
- poperror();
-}
-
-static void
-sendmsg(uchar id, uchar *data, int len)
-{
- if(waserror()){
- qunlock(&ctlr);
- nexterror();
- }
- qlock(&ctlr);
- _sendmsg(id, data, len);
- qunlock(&ctlr);
- poperror();
-}
-
-void
-µcinit(void)
-{
-}
-
-static Chan*
-µcattach(char* spec)
-{
- return devattach('r', spec);
-}
-
-static Walkqid*
-µcwalk(Chan *c, Chan *nc, char **name, int nname)
-{
- return devwalk(c, nc, name, nname, µcdir, nelem(µcdir), devgen);
-}
-
-static int
-µcstat(Chan *c, uchar *dp, int n)
-{
- return devstat(c, dp, n, µcdir, nelem(µcdir), devgen);
-}
-
-static Chan*
-µcopen(Chan* c, int omode)
-{
- omode = openmode(omode);
- if(!iseve())
- error(Eperm);
- return devopen(c, omode, µcdir, nelem(µcdir), devgen);
-}
-
-static void
-µcclose(Chan*)
-{
-}
-
-char*
-acstatus(int x)
-{
- if(x)
- return "attached";
- else
- return "detached";
-}
-
-char*
-batstatus(int x)
-{
- switch(x){
- case 1: return "high";
- case 2: return "low";
- case 4: return "critical";
- case 8: return "charging";
- case 0x80: return "none";
- }
- return "ok";
-}
-
-static long
-µcread(Chan* c, void* a, long n, vlong off)
-{
- char buf[64];
-
- if(c->qid.path == Qdir)
- return devdirread(c, a, n, µcdir, nelem(µcdir), devgen);
-
- switch((ulong)c->qid.path){
- case Qbattery:
- sendmsgwithack(BLbattery, nil, 0); /* send a battery request */
- sprint(buf, "voltage: %d\nac: %s\nstatus: %s\n", ctlr.voltage,
- acstatus(ctlr.acstatus),
- batstatus(ctlr.batstatus));
- return readstr(off, a, n, buf);
- case Qversion:
- sendmsgwithack(BLversion, nil, 0); /* send a battery request */
- return readstr(off, a, n, ctlr.version);
- }
- error(Ebadarg);
- return 0;
-}
-
-#define PUTBCD(n,o) bcdclock[o] = (n % 10) | (((n / 10) % 10)<<4)
-
-static uchar lightdata[16];
-
-static long
-µcwrite(Chan* c, void* a, long n, vlong)
-{
- Cmdbuf *cmd;
- uchar data[16];
- char str[64];
- int i, j;
- ulong l;
- Rune r;
- extern ulong resumeaddr[];
- extern void power_resume(void);
-
- if(c->qid.path == Qpower){
- if(!iseve())
- error(Eperm);
- if(strncmp(a, "suspend", 7) == 0)
- *resumeaddr = (ulong)power_resume;
- else if(strncmp(a, "halt", 4) == 0)
- *resumeaddr = 0;
- else if(strncmp(a, "wakeup", 6) == 0){
- cmd = parsecmd(a, n);
- if (cmd->nf != 2)
- error(Ebadarg);
- l = strtoul(cmd->f[1], 0, 0);
- rtcalarm(l);
- return n;
- } else
- error(Ebadarg);
- deepsleep();
- return n;
- }
-
- cmd = parsecmd(a, n);
- if(cmd->nf > 15)
- error(Ebadarg);
- for(i = 0; i < cmd->nf; i++)
- data[i] = strtol(cmd->f[i], 0, 0);
-
- switch((ulong)c->qid.path){
- case Qled:
- sendmsgwithack(BLled, data, cmd->nf);
- break;
- case Qbacklight:
- memmove(lightdata, data, 16);
- sendmsgwithack(BLbacklight, data, cmd->nf);
- break;
- case Qcruft:
-// lcdtweak(cmd);
- break;
- default:
- error(Ebadarg);
- }
- return n;
-}
-
-void
-µcpower(int on)
-{
- uchar data[16];
- if (on == 0)
- return;
- /* maybe dangerous, not holding the lock */
- if (lightdata[0] == 0){
- data[0]= 2;
- data[1]= 1;
- data[2]= 0;
- } else
- memmove(data, lightdata, 16);
- _sendmsg(0xd, data, 3);
- wakeup(&ctlr.r);
-}
-
-Dev µcdevtab = {
- 'r',
- "µc",
-
- devreset,
- µcinit,
- devshutdown,
- µcattach,
- µcwalk,
- µcstat,
- µcopen,
- devcreate,
- µcclose,
- µcread,
- devbread,
- µcwrite,
- devbwrite,
- devremove,
- devwstat,
-};
--- a/sys/src/9/bitsy/etherif.h
+++ /dev/null
@@ -1,39 +1,0 @@
-enum {
- MaxEther = 24,
- Ntypes = 8,
-};
-
-typedef struct Ether Ether;
-struct Ether {
- DevConf;
-
- int ctlrno;
- int tbdf; /* type+busno+devno+funcno */
- int minmtu;
- int maxmtu;
- uchar ea[Eaddrlen];
- int encry;
-
- void (*attach)(Ether*); /* filled in by reset routine */
- void (*detach)(Ether*);
- void (*transmit)(Ether*);
- void (*interrupt)(Ureg*, void*);
- long (*ifstat)(Ether*, void*, long, ulong);
- long (*ctl)(Ether*, void*, long); /* custom ctl messages */
- void (*power)(Ether*, int); /* power on/off */
- void (*shutdown)(Ether*); /* shutdown hardware before reboot */
- void *ctlr;
-
- Queue* oq;
-
- Netif;
-};
-
-extern Block* etheriq(Ether*, Block*, int);
-extern void addethercard(char*, int(*)(Ether*));
-extern ulong ethercrc(uchar*, int);
-
-#define NEXT(x, l) (((x)+1)%(l))
-#define PREV(x, l) (((x) == 0) ? (l)-1: (x)-1)
-#define HOWMANY(x, y) (((x)+((y)-1))/(y))
-#define ROUNDUP(x, y) (HOWMANY((x), (y))*(y))
--- a/sys/src/9/bitsy/etherwavelan.c
+++ /dev/null
@@ -1,49 +1,0 @@
-/* Bitsy pcmcia code for wavelan.c */
-
-#include "u.h"
-#include "../port/lib.h"
-#include "mem.h"
-#include "dat.h"
-#include "fns.h"
-#include "io.h"
-#include "../port/error.h"
-#include "../port/netif.h"
-#include "etherif.h"
-#include "../pc/wavelan.h"
-
-static int
-wavelanpcmciareset(Ether *ether)
-{
- Ctlr *ctlr;
-
- if((ctlr = malloc(sizeof(Ctlr))) == nil)
- return -1;
-
- ilock(ctlr);
- ctlr->ctlrno = ether->ctlrno;
-
- if (ether->ports == nil){
- ether->ports = malloc(sizeof(Devport));
- ether->ports[0].port = 0;
- ether->ports[0].size = 0;
- ether->nports= 1;
- }
- if (ether->ports[0].port==0)
- ether->ports[0].port=WDfltIOB;
- ctlr->iob = ether->ports[0].port;
-
- if(wavelanreset(ether, ctlr) < 0){
- iunlock(ctlr);
- free(ctlr);
- ether->ctlr = nil;
- return -1;
- }
- iunlock(ctlr);
- return 0;
-}
-
-void
-etherwavelanlink(void)
-{
- addethercard("wavelan", wavelanpcmciareset);
-}
--- a/sys/src/9/bitsy/fns.h
+++ /dev/null
@@ -1,121 +1,0 @@
-#include "../port/portfns.h"
-
-void audiopower(int);
-void audioamppower(int);
-void audioicpower(int);
-void cacheflush(void);
-void cachewb(void);
-void cachewbaddr(void*);
-void cachewbregion(ulong, int);
-ulong cankaddr(ulong);
-void dcacheinvalidate(void);
-int cistrcmp(char*, char*);
-int cistrncmp(char*, char*, int);
-void clockinit(void);
-ulong clockpower(int);
-int cmpswap(long*, long, long);
-#define coherence()
-#define cycles(x) do{}while(0)
-#define dcflush(a, b)
-void delay(int);
-void µcpower(int);
-void deepsleep(void);
-void dmainit(void);
-void doze(void);
-void egpiobits(ulong, int);
-void evenaddr(ulong);
-ulong findva(ulong, ulong, ulong);
-void flashprogpower(int);
-void flushmmu(void);
-int fpiarm(Ureg *ur);
-char* getconf(char*);
-ulong getcpuid(void);
-ulong getfar(void);
-ulong getfsr(void);
-ulong getcontrol(void);
-ulong getdac(void);
-ulong getttb(void);
-void* getlink(void);
-#define getpgcolor(a) 0
-ulong getsp(void);
-void icacheinvalidate(void);
-void idle(void);
-void idlehands(void);
-uchar inb(ulong);
-ushort ins(ulong);
-void inss(ulong, void*, int);
-ulong inl(ulong);
-void intrdisable(int, int, void (*)(Ureg*, void*), void*, char*);
-void intrenable(int, int, void (*)(Ureg*, void*), void*, char*);
-void irpower(int);
-#define kexit(a)
-#define kmapinval()
-void lcdpower(int);
-void links(void);
-void* mapmem(ulong, int, int);
-void mappedIvecEnable(void);
-void mappedIvecDisable(void);
-void* mapspecial(ulong, int);
-void meminit(void);
-void mmuinit(void);
-void mmuenable(void);
-void mmudisable(void);
-void mmuinvalidate(void);
-void mmuinvalidateaddr(ulong);
-void mmurestart(void);
-ulong mmu_kaddr(ulong);
-ulong mmu_paddr(ulong);
-int µcputc(Queue*, int);
-void noted(Ureg*, ulong);
-int notify(Ureg*);
-void outb(ulong, uchar);
-void outs(ulong, ushort);
-void outss(ulong, void*, int);
-void outl(ulong, ulong);
-void pcmciapower(int);
-void pcmcisread(PCMslot*);
-int pcmcistuple(int, int, int, void*, int);
-PCMmap* pcmmap(int, ulong, int, int);
-void pcmunmap(int, PCMmap*);
-void penbutton(int, int);
-void pentrackxy(int x, int y);
-void power_down(void);
-void powerinit(void);
-void powerkproc(void*);
-#define procrestore(p)
-void procsave(Proc*);
-void procsetup(Proc*);
-void procfork(Proc*);
-void putdac(ulong);
-void putttb(ulong);
-void putpid(ulong);
-void resetsuspendtimer(void);
-void rs232power(int);
-void rtcalarm(ulong);
-void sa1110_uartsetup(int);
-void screeninit(void);
-void screenpower(int);
-void serialµcputs(uchar *str, int n);
-void setr13(int, ulong*);
-uchar* tarlookup(uchar*, char*, int*);
-void timersinit(void);
-void timeradd(Timer*);
-void timerdel(Timer*);
-void timerset(Tval);
-void touser(void*);
-void trapdump(char *tag);
-void trapinit(void);
-void trapresume(void);
-int tas(void*);
-void uartpower(int);
-int uartstageoutput(Uart*);
-void uartkick(void*);
-void uartrecv(Uart*, char);
-#define userureg(ur) (((ur)->psr & PsrMask) == PsrMusr)
-void vectors(void);
-void vtable(void);
-void wbflush(void);
-#define KADDR(a) (void*)mmu_kaddr((ulong)(a))
-#define PADDR(a) mmu_paddr((ulong)(a))
-
-#define waserror() (up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
--- a/sys/src/9/bitsy/fpi.c
+++ /dev/null
@@ -1,300 +1,0 @@
-/*
- * Floating Point Interpreter.
- * shamelessly stolen from an original by ark.
- */
-#include "fpi.h"
-
-void
-fpiround(Internal *i)
-{
- unsigned long guard;
-
- guard = i->l & GuardMask;
- i->l &= ~GuardMask;
- if(guard > (LsBit>>1) || (guard == (LsBit>>1) && (i->l & LsBit))){
- i->l += LsBit;
- if(i->l & CarryBit){
- i->l &= ~CarryBit;
- i->h++;
- if(i->h & CarryBit){
- if (i->h & 0x01)
- i->l |= CarryBit;
- i->l >>= 1;
- i->h >>= 1;
- i->e++;
- }
- }
- }
-}
-
-static void
-matchexponents(Internal *x, Internal *y)
-{
- int count;
-
- count = y->e - x->e;
- x->e = y->e;
- if(count >= 2*FractBits){
- x->l = x->l || x->h;
- x->h = 0;
- return;
- }
- if(count >= FractBits){
- count -= FractBits;
- x->l = x->h|(x->l != 0);
- x->h = 0;
- }
- while(count > 0){
- count--;
- if(x->h & 0x01)
- x->l |= CarryBit;
- if(x->l & 0x01)
- x->l |= 2;
- x->l >>= 1;
- x->h >>= 1;
- }
-}
-
-static void
-shift(Internal *i)
-{
- i->e--;
- i->h <<= 1;
- i->l <<= 1;
- if(i->l & CarryBit){
- i->l &= ~CarryBit;
- i->h |= 0x01;
- }
-}
-
-static void
-normalise(Internal *i)
-{
- while((i->h & HiddenBit) == 0)
- shift(i);
-}
-
-static void
-renormalise(Internal *i)
-{
- if(i->e < -2 * FractBits)
- i->e = -2 * FractBits;
- while(i->e < 1){
- i->e++;
- if(i->h & 0x01)
- i->l |= CarryBit;
- i->h >>= 1;
- i->l = (i->l>>1)|(i->l & 0x01);
- }
- if(i->e >= ExpInfinity)
- SetInfinity(i);
-}
-
-void
-fpinormalise(Internal *x)
-{
- if(!IsWeird(x) && !IsZero(x))
- normalise(x);
-}
-
-void
-fpiadd(Internal *x, Internal *y, Internal *i)
-{
- Internal *t;
-
- i->s = x->s;
- if(IsWeird(x) || IsWeird(y)){
- if(IsNaN(x) || IsNaN(y))
- SetQNaN(i);
- else
- SetInfinity(i);
- return;
- }
- if(x->e > y->e){
- t = x;
- x = y;
- y = t;
- }
- matchexponents(x, y);
- i->e = x->e;
- i->h = x->h + y->h;
- i->l = x->l + y->l;
- if(i->l & CarryBit){
- i->h++;
- i->l &= ~CarryBit;
- }
- if(i->h & (HiddenBit<<1)){
- if(i->h & 0x01)
- i->l |= CarryBit;
- i->l = (i->l>>1)|(i->l & 0x01);
- i->h >>= 1;
- i->e++;
- }
- if(IsWeird(i))
- SetInfinity(i);
-}
-
-void
-fpisub(Internal *x, Internal *y, Internal *i)
-{
- Internal *t;
-
- if(y->e < x->e
- || (y->e == x->e && (y->h < x->h || (y->h == x->h && y->l < x->l)))){
- t = x;
- x = y;
- y = t;
- }
- i->s = y->s;
- if(IsNaN(y)){
- SetQNaN(i);
- return;
- }
- if(IsInfinity(y)){
- if(IsInfinity(x))
- SetQNaN(i);
- else
- SetInfinity(i);
- return;
- }
- matchexponents(x, y);
- i->e = y->e;
- i->h = y->h - x->h;
- i->l = y->l - x->l;
- if(i->l < 0){
- i->l += CarryBit;
- i->h--;
- }
- if(i->h == 0 && i->l == 0)
- SetZero(i);
- else while(i->e > 1 && (i->h & HiddenBit) == 0)
- shift(i);
-}
-
-#define CHUNK (FractBits/2)
-#define CMASK ((1<<CHUNK)-1)
-#define HI(x) ((short)((x)>>CHUNK) & CMASK)
-#define LO(x) ((short)(x) & CMASK)
-#define SPILL(x) ((x)>>CHUNK)
-#define M(x, y) ((long)a[x]*(long)b[y])
-#define C(h, l) (((long)((h) & CMASK)<<CHUNK)|((l) & CMASK))
-
-void
-fpimul(Internal *x, Internal *y, Internal *i)
-{
- long a[4], b[4], c[7], f[4];
-
- i->s = x->s^y->s;
- if(IsWeird(x) || IsWeird(y)){
- if(IsNaN(x) || IsNaN(y) || IsZero(x) || IsZero(y))
- SetQNaN(i);
- else
- SetInfinity(i);
- return;
- }
- else if(IsZero(x) || IsZero(y)){
- SetZero(i);
- return;
- }
- normalise(x);
- normalise(y);
- i->e = x->e + y->e - (ExpBias - 1);
-
- a[0] = HI(x->h); b[0] = HI(y->h);
- a[1] = LO(x->h); b[1] = LO(y->h);
- a[2] = HI(x->l); b[2] = HI(y->l);
- a[3] = LO(x->l); b[3] = LO(y->l);
-
- c[6] = M(3, 3);
- c[5] = M(2, 3) + M(3, 2) + SPILL(c[6]);
- c[4] = M(1, 3) + M(2, 2) + M(3, 1) + SPILL(c[5]);
- c[3] = M(0, 3) + M(1, 2) + M(2, 1) + M(3, 0) + SPILL(c[4]);
- c[2] = M(0, 2) + M(1, 1) + M(2, 0) + SPILL(c[3]);
- c[1] = M(0, 1) + M(1, 0) + SPILL(c[2]);
- c[0] = M(0, 0) + SPILL(c[1]);
-
- f[0] = c[0];
- f[1] = C(c[1], c[2]);
- f[2] = C(c[3], c[4]);
- f[3] = C(c[5], c[6]);
-
- if((f[0] & HiddenBit) == 0){
- f[0] <<= 1;
- f[1] <<= 1;
- f[2] <<= 1;
- f[3] <<= 1;
- if(f[1] & CarryBit){
- f[0] |= 1;
- f[1] &= ~CarryBit;
- }
- if(f[2] & CarryBit){
- f[1] |= 1;
- f[2] &= ~CarryBit;
- }
- if(f[3] & CarryBit){
- f[2] |= 1;
- f[3] &= ~CarryBit;
- }
- i->e--;
- }
- i->h = f[0];
- i->l = f[1];
- if(f[2] || f[3])
- i->l |= 1;
- renormalise(i);
-}
-
-void
-fpidiv(Internal *x, Internal *y, Internal *i)
-{
- i->s = x->s^y->s;
- if(IsNaN(x) || IsNaN(y)
- || (IsInfinity(x) && IsInfinity(y)) || (IsZero(x) && IsZero(y))){
- SetQNaN(i);
- return;
- }
- else if(IsZero(x) || IsInfinity(y)){
- SetInfinity(i);
- return;
- }
- else if(IsInfinity(x) || IsZero(y)){
- SetZero(i);
- return;
- }
- normalise(x);
- normalise(y);
- i->h = 0;
- i->l = 0;
- i->e = y->e - x->e + (ExpBias + 2*FractBits - 1);
- do{
- if(y->h > x->h || (y->h == x->h && y->l >= x->l)){
- i->l |= 0x01;
- y->h -= x->h;
- y->l -= x->l;
- if(y->l < 0){
- y->l += CarryBit;
- y->h--;
- }
- }
- shift(y);
- shift(i);
- }while ((i->h & HiddenBit) == 0);
- if(y->h || y->l)
- i->l |= 0x01;
- renormalise(i);
-}
-
-int
-fpicmp(Internal *x, Internal *y)
-{
- if(IsNaN(x) && IsNaN(y))
- return 0;
- if(IsInfinity(x) && IsInfinity(y))
- return y->s - x->s;
- if(x->e == y->e && x->h == y->h && x->l == y->l)
- return y->s - x->s;
- if(x->e < y->e
- || (x->e == y->e && (x->h < y->h || (x->h == y->h && x->l < y->l))))
- return y->s ? 1: -1;
- return x->s ? -1: 1;
-}
--- a/sys/src/9/bitsy/fpi.h
+++ /dev/null
@@ -1,61 +1,0 @@
-typedef long Word;
-typedef unsigned long Single;
-typedef struct {
- unsigned long l;
- unsigned long h;
-} Double;
-
-enum {
- FractBits = 28,
- CarryBit = 0x10000000,
- HiddenBit = 0x08000000,
- MsBit = HiddenBit,
- NGuardBits = 3,
- GuardMask = 0x07,
- LsBit = (1<<NGuardBits),
-
- SingleExpBias = 127,
- SingleExpMax = 255,
- DoubleExpBias = 1023,
- DoubleExpMax = 2047,
-
- ExpBias = DoubleExpBias,
- ExpInfinity = DoubleExpMax,
-};
-
-typedef struct {
- unsigned char s;
- short e;
- long l; /* 0000FFFFFFFFFFFFFFFFFFFFFFFFFGGG */
- long h; /* 0000HFFFFFFFFFFFFFFFFFFFFFFFFFFF */
-} Internal;
-
-#define IsWeird(n) ((n)->e >= ExpInfinity)
-#define IsInfinity(n) (IsWeird(n) && (n)->h == HiddenBit && (n)->l == 0)
-#define SetInfinity(n) ((n)->e = ExpInfinity, (n)->h = HiddenBit, (n)->l = 0)
-#define IsNaN(n) (IsWeird(n) && (((n)->h & ~HiddenBit) || (n)->l))
-#define SetQNaN(n) ((n)->s = 0, (n)->e = ExpInfinity, \
- (n)->h = HiddenBit|(LsBit<<1), (n)->l = 0)
-#define IsZero(n) ((n)->e == 1 && (n)->h == 0 && (n)->l == 0)
-#define SetZero(n) ((n)->e = 1, (n)->h = 0, (n)->l = 0)
-
-/*
- * fpi.c
- */
-extern void fpiround(Internal *);
-extern void fpiadd(Internal *, Internal *, Internal *);
-extern void fpisub(Internal *, Internal *, Internal *);
-extern void fpimul(Internal *, Internal *, Internal *);
-extern void fpidiv(Internal *, Internal *, Internal *);
-extern int fpicmp(Internal *, Internal *);
-extern void fpinormalise(Internal*);
-
-/*
- * fpimem.c
- */
-extern void fpis2i(Internal *, void *);
-extern void fpid2i(Internal *, void *);
-extern void fpiw2i(Internal *, void *);
-extern void fpii2s(void *, Internal *);
-extern void fpii2d(void *, Internal *);
-extern void fpii2w(Word *, Internal *);
--- a/sys/src/9/bitsy/fpiarm.c
+++ /dev/null
@@ -1,570 +1,0 @@
-/*
- * this doesn't attempt to implement ARM floating-point properties
- * that aren't visible in the Inferno environment.
- * all arithmetic is done in double precision.
- * the FP trap status isn't updated.
- */
-#include <u.h>
-#include "../port/lib.h"
-#include "mem.h"
-#include "dat.h"
-#include "fns.h"
-#include "io.h"
-
-#include <ureg.h>
-
-#include "fpi.h"
-
-/* undef this if correct kernel r13 isn't in Ureg;
- * check calculation in fpiarm below
- */
-
-
-#define REG(ur, x) (*(long*)(((char*)(ur))+roff[(x)]))
-#define FR(ufp, x) (*(Internal*)(ufp)->regs[(x)&7])
-
-typedef struct FP2 FP2;
-typedef struct FP1 FP1;
-
-struct FP2 {
- char* name;
- void (*f)(Internal, Internal, Internal*);
-};
-
-struct FP1 {
- char* name;
- void (*f)(Internal*, Internal*);
-};
-
-enum {
- N = 1<<31,
- Z = 1<<30,
- C = 1<<29,
- V = 1<<28,
- REGPC = 15,
-};
-
-int fpemudebug = 0;
-
-#undef OFR
-#define OFR(X) ((ulong)&((Ureg*)0)->X)
-
-static int roff[] = {
- OFR(r0), OFR(r1), OFR(r2), OFR(r3),
- OFR(r4), OFR(r5), OFR(r6), OFR(r7),
- OFR(r8), OFR(r9), OFR(r10), OFR(r11),
- OFR(r12), OFR(r13), OFR(r14), OFR(pc),
-};
-
-static Internal fpconst[8] = { /* indexed by op&7 */
- /* s, e, l, h */
- {0, 0x1, 0x00000000, 0x00000000}, /* 0.0 */
- {0, 0x3FF, 0x00000000, 0x08000000}, /* 1.0 */
- {0, 0x400, 0x00000000, 0x08000000}, /* 2.0 */
- {0, 0x400, 0x00000000, 0x0C000000}, /* 3.0 */
- {0, 0x401, 0x00000000, 0x08000000}, /* 4.0 */
- {0, 0x401, 0x00000000, 0x0A000000}, /* 5.0 */
- {0, 0x3FE, 0x00000000, 0x08000000}, /* 0.5 */
- {0, 0x402, 0x00000000, 0x0A000000}, /* 10.0 */
-};
-
-/*
- * arm binary operations
- */
-
-static void
-fadd(Internal m, Internal n, Internal *d)
-{
- (m.s == n.s? fpiadd: fpisub)(&m, &n, d);
-}
-
-static void
-fsub(Internal m, Internal n, Internal *d)
-{
- m.s ^= 1;
- (m.s == n.s? fpiadd: fpisub)(&m, &n, d);
-}
-
-static void
-fsubr(Internal m, Internal n, Internal *d)
-{
- n.s ^= 1;
- (n.s == m.s? fpiadd: fpisub)(&n, &m, d);
-}
-
-static void
-fmul(Internal m, Internal n, Internal *d)
-{
- fpimul(&m, &n, d);
-}
-
-static void
-fdiv(Internal m, Internal n, Internal *d)
-{
- fpidiv(&m, &n, d);
-}
-
-static void
-fdivr(Internal m, Internal n, Internal *d)
-{
- fpidiv(&n, &m, d);
-}
-
-/*
- * arm unary operations
- */
-
-static void
-fmov(Internal *m, Internal *d)
-{
- *d = *m;
-}
-
-static void
-fmovn(Internal *m, Internal *d)
-{
- *d = *m;
- d->s ^= 1;
-}
-
-static void
-fabsf(Internal *m, Internal *d)
-{
- *d = *m;
- d->s = 0;
-}
-
-static void
-frnd(Internal *m, Internal *d)
-{
- short e;
-
- (m->s? fsub: fadd)(fpconst[6], *m, d);
- if(IsWeird(d))
- return;
- fpiround(d);
- e = (d->e - ExpBias) + 1;
- if(e <= 0)
- SetZero(d);
- else if(e > FractBits){
- if(e < 2*FractBits)
- d->l &= ~((1<<(2*FractBits - e))-1);
- }else{
- d->l = 0;
- if(e < FractBits)
- d->h &= ~((1<<(FractBits-e))-1);
- }
-}
-
-static FP1 optab1[16] = { /* Fd := OP Fm */
-[0] {"MOVF", fmov},
-[1] {"NEGF", fmovn},
-[2] {"ABSF", fabsf},
-[3] {"RNDF", frnd},
-[4] {"SQTF", /*fsqt*/0},
-/* LOG, LGN, EXP, SIN, COS, TAN, ASN, ACS, ATN all `deprecated' */
-/* URD and NRM aren't implemented */
-};
-
-static FP2 optab2[16] = { /* Fd := Fn OP Fm */
-[0] {"ADDF", fadd},
-[1] {"MULF", fmul},
-[2] {"SUBF", fsub},
-[3] {"RSUBF", fsubr},
-[4] {"DIVF", fdiv},
-[5] {"RDIVF", fdivr},
-/* POW, RPW deprecated */
-[8] {"REMF", /*frem*/0},
-[9] {"FMF", fmul}, /* fast multiply */
-[10] {"FDV", fdiv}, /* fast divide */
-[11] {"FRD", fdivr}, /* fast reverse divide */
-/* POL deprecated */
-};
-
-static ulong
-fcmp(Internal *n, Internal *m)
-{
- int i;
- Internal rm, rn;
-
- if(IsWeird(m) || IsWeird(n)){
- /* BUG: should trap if not masked */
- return V|C;
- }
- rn = *n;
- rm = *m;
- fpiround(&rn);
- fpiround(&rm);
- i = fpicmp(&rn, &rm);
- if(i > 0)
- return C;
- else if(i == 0)
- return C|Z;
- else
- return N;
-}
-
-static void
-fld(void (*f)(Internal*, void*), int d, ulong ea, int n, FPsave *ufp)
-{
- void *mem;
-
- mem = (void*)ea;
- (*f)(&FR(ufp, d), mem);
- if(fpemudebug)
- print("MOV%c #%lux, F%d\n", n==8? 'D': 'F', ea, d);
-}
-
-static void
-fst(void (*f)(void*, Internal*), ulong ea, int s, int n, FPsave *ufp)
-{
- Internal tmp;
- void *mem;
-
- mem = (void*)ea;
- tmp = FR(ufp, s);
- if(fpemudebug)
- print("MOV%c F%d,#%lux\n", n==8? 'D': 'F', s, ea);
- (*f)(mem, &tmp);
-}
-
-static int
-condok(int cc, int c)
-{
- switch(c){
- case 0: /* Z set */
- return cc&Z;
- case 1: /* Z clear */
- return (cc&Z) == 0;
- case 2: /* C set */
- return cc&C;
- case 3: /* C clear */
- return (cc&C) == 0;
- case 4: /* N set */
- return cc&N;
- case 5: /* N clear */
- return (cc&N) == 0;
- case 6: /* V set */
- return cc&V;
- case 7: /* V clear */
- return (cc&V) == 0;
- case 8: /* C set and Z clear */
- return cc&C && (cc&Z) == 0;
- case 9: /* C clear or Z set */
- return (cc&C) == 0 || cc&Z;
- case 10: /* N set and V set, or N clear and V clear */
- return (~cc&(N|V))==0 || (cc&(N|V)) == 0;
- case 11: /* N set and V clear, or N clear and V set */
- return (cc&(N|V))==N || (cc&(N|V))==V;
- case 12: /* Z clear, and either N set and V set or N clear and V clear */
- return (cc&Z) == 0 && ((~cc&(N|V))==0 || (cc&(N|V))==0);
- case 13: /* Z set, or N set and V clear or N clear and V set */
- return (cc&Z) || (cc&(N|V))==N || (cc&(N|V))==V;
- case 14: /* always */
- return 1;
- case 15: /* never (reserved) */
- return 0;
- }
- return 0; /* not reached */
-}
-
-static void
-unimp(ulong pc, ulong op)
-{
- char buf[60];
-
- snprint(buf, sizeof(buf), "sys: fp: pc=%lux unimp fp 0x%.8lux", pc, op);
- if(fpemudebug)
- print("FPE: %s\n", buf);
- error(buf);
- /* no return */
-}
-
-static void
-fpemu(ulong pc, ulong op, Ureg *ur, FPsave *ufp)
-{
- int rn, rd, tag, o;
- long off;
- ulong ea;
- Internal tmp, *fm, *fn;
-
- /* note: would update fault status here if we noted numeric exceptions */
-
- /*
- * LDF, STF; 10.1.1
- */
- if(((op>>25)&7) == 6){
- if(op & (1<<22))
- unimp(pc, op); /* packed or extended */
- rn = (op>>16)&0xF;
- off = (op&0xFF)<<2;
- if((op & (1<<23)) == 0)
- off = -off;
- ea = REG(ur, rn);
- if(rn == REGPC)
- ea += 8;
- if(op & (1<<24))
- ea += off;
- rd = (op>>12)&7;
- if(op & (1<<20)){
- if(op & (1<<15))
- fld(fpid2i, rd, ea, 8, ufp);
- else
- fld(fpis2i, rd, ea, 4, ufp);
- }else{
- if(op & (1<<15))
- fst(fpii2d, ea, rd, 8, ufp);
- else
- fst(fpii2s, ea, rd, 4, ufp);
- }
- if((op & (1<<24)) == 0)
- ea += off;
- if(op & (1<<21))
- REG(ur, rn) = ea;
- return;
- }
-
- /*
- * CPRT/transfer, 10.3
- */
- if(op & (1<<4)){
- rd = (op>>12) & 0xF;
-
- /*
- * compare, 10.3.1
- */
- if(rd == 15 && op & (1<<20)){
- rn = (op>>16)&7;
- fn = &FR(ufp, rn);
- if(op & (1<<3)){
- fm = &fpconst[op&7];
- tag = 'C';
- }else{
- fm = &FR(ufp, op&7);
- tag = 'F';
- }
- switch((op>>21)&7){
- default:
- unimp(pc, op);
- case 4: /* CMF: Fn :: Fm */
- case 6: /* CMFE: Fn :: Fm (with exception) */
- ur->psr &= ~(N|C|Z|V);
- ur->psr |= fcmp(fn, fm);
- break;
- case 5: /* CNF: Fn :: -Fm */
- case 7: /* CNFE: Fn :: -Fm (with exception) */
- tmp = *fm;
- tmp.s ^= 1;
- ur->psr &= ~(N|C|Z|V);
- ur->psr |= fcmp(fn, &tmp);
- break;
- }
- if(fpemudebug)
- print("CMPF %c%d,F%ld =%lux\n", tag, rn, op&7, ur->psr>>28);
- return;
- }
-
- /*
- * other transfer, 10.3
- */
- switch((op>>20)&0xF){
- default:
- unimp(pc, op);
- case 0: /* FLT */
- rn = (op>>16) & 7;
- fpiw2i(&FR(ufp, rn), ®(ur, rd));
- if(fpemudebug)
- print("MOVW[FD] R%d, F%d\n", rd, rn);
- break;
- case 1: /* FIX */
- if(op & (1<<3))
- unimp(pc, op);
- rn = op & 7;
- tmp = FR(ufp, rn);
- fpii2w(®(ur, rd), &tmp);
- if(fpemudebug)
- print("MOV[FD]W F%d, R%d =%ld\n", rn, rd, REG(ur, rd));
- break;
- case 2: /* FPSR := Rd */
- ufp->status = REG(ur, rd);
- if(fpemudebug)
- print("MOVW R%d, FPSR\n", rd);
- break;
- case 3: /* Rd := FPSR */
- REG(ur, rd) = ufp->status;
- if(fpemudebug)
- print("MOVW FPSR, R%d\n", rd);
- break;
- case 4: /* FPCR := Rd */
- ufp->control = REG(ur, rd);
- if(fpemudebug)
- print("MOVW R%d, FPCR\n", rd);
- break;
- case 5: /* Rd := FPCR */
- REG(ur, rd) = ufp->control;
- if(fpemudebug)
- print("MOVW FPCR, R%d\n", rd);
- break;
- }
- return;
- }
-
- /*
- * arithmetic
- */
-
- if(op & (1<<3)){ /* constant */
- fm = &fpconst[op&7];
- tag = 'C';
- }else{
- fm = &FR(ufp, op&7);
- tag = 'F';
- }
- rd = (op>>12)&7;
- o = (op>>20)&0xF;
- if(op & (1<<15)){ /* monadic */
- FP1 *fp;
- fp = &optab1[o];
- if(fp->f == nil)
- unimp(pc, op);
- if(fpemudebug)
- print("%s %c%ld,F%d\n", fp->name, tag, op&7, rd);
- (*fp->f)(fm, &FR(ufp, rd));
- } else {
- FP2 *fp;
- fp = &optab2[o];
- if(fp->f == nil)
- unimp(pc, op);
- rn = (op>>16)&7;
- if(fpemudebug)
- print("%s %c%ld,F%d,F%d\n", fp->name, tag, op&7, rn, rd);
- (*fp->f)(*fm, FR(ufp, rn), &FR(ufp, rd));
- }
-}
-
-void
-casemu(ulong pc, ulong op, Ureg *ur)
-{
- ulong *rp, ro, rn, *rd;
-
- USED(pc);
-
- rp = (ulong*)ur;
- ro = rp[op>>16 & 0x7];
- rn = rp[op>>0 & 0x7];
- rd = rp + (op>>12 & 0x7);
- rp = (ulong*)*rd;
- validaddr((ulong)rp, 4, 1);
- splhi();
- if(*rd = (*rp == ro))
- *rp = rn;
- spllo();
-}
-
-int ldrexvalid;
-
-void
-ldrex(ulong pc, ulong op, Ureg *ur)
-{
- ulong *rp, *rd, *addr;
-
- USED(pc);
-
- rp = (ulong*)ur;
- rd = rp + (op>>16 & 0x7);
- addr = (ulong*)*rd;
- validaddr((ulong)addr, 4, 0);
- ldrexvalid = 1;
- rp[op>>12 & 0x7] = *addr;
- if(fpemudebug)
- print("ldrex, r%ld = [r%ld]@0x%8.8p = 0x%8.8lux",
- op>>12 & 0x7, op>>16 & 0x7, addr, rp[op>>12 & 0x7]);
-}
-
-void
-strex(ulong pc, ulong op, Ureg *ur)
-{
- ulong *rp, rn, *rd, *addr;
-
- USED(pc);
-
- rp = (ulong*)ur;
- rd = rp + (op>>16 & 0x7);
- rn = rp[op>>0 & 0x7];
- addr = (ulong*)*rd;
- validaddr((ulong)addr, 4, 1);
- splhi();
- if(ldrexvalid){
- if(fpemudebug)
- print("strex valid, [r%ld]@0x%8.8p = r%ld = 0x%8.8lux",
- op>>16 & 0x7, addr, op>>0 & 0x7, rn);
- *addr = rn;
- ldrexvalid = 0;
- rp[op>>12 & 0x7] = 0;
- }else{
- if(fpemudebug)
- print("strex invalid, r%ld = 1", op>>16 & 0x7);
- rp[op>>12 & 0x7] = 1;
- }
- spllo();
-}
-
-struct {
- ulong opc;
- ulong mask;
- void (*f)(ulong, ulong, Ureg*);
-} specialopc[] = {
- { 0x01900f9f, 0x0ff00fff, ldrex },
- { 0x01800f90, 0x0ff00ff0, strex },
- { 0x0ed00100, 0x0ef08100, casemu },
- { 0x00000000, 0x00000000, nil }
-};
-
-
-/*
- * returns the number of FP instructions emulated
- */
-int
-fpiarm(Ureg *ur)
-{
- ulong op, o;
- FPsave *ufp;
- int i, n;
-
- if (up == nil)
- panic("fpiarm not in a process");
- ufp = &up->fpsave;
- /* because all the state is in the proc structure,
- * it need not be saved/restored
- */
- if(up->fpstate != FPactive) {
-// assert(sizeof(Internal) == sizeof(ufp->regs[0]));
- up->fpstate = FPactive;
- ufp->control = 0;
- ufp->status = (0x01<<28)|(1<<12); /* software emulation, alternative C flag */
- for(n = 0; n < 8; n++)
- FR(ufp, n) = fpconst[0];
- }
- for(n=0; ;n++){
- if(fpemudebug)
- print("0x%8.8lux ", ur->pc);
- validaddr(ur->pc, 4, 0);
- op = *(ulong*)(ur->pc);
- o = (op>>24) & 0xF;
- if(condok(ur->psr, op>>28)){
- for(i = 0; specialopc[i].f; i++)
- if((op & specialopc[i].mask) == specialopc[i].opc)
- break;
- if(specialopc[i].f)
- specialopc[i].f(ur->pc, op, ur);
- else if((op & 0xF00) != 0x100 || o != 0xE && (o&~1) != 0xC)
- break;
- else
- fpemu(ur->pc, op, ur, ufp);
- }else if((op & 0xF00) != 0x100 || o != 0xE && (o&~1) != 0xC)
- break;
- ur->pc += 4;
- }
- if(fpemudebug) print("\n");
- return n;
-}
--- a/sys/src/9/bitsy/fpimem.c
+++ /dev/null
@@ -1,136 +1,0 @@
-#include "fpi.h"
-
-/*
- * the following routines depend on memory format, not the machine
- */
-
-void
-fpis2i(Internal *i, void *v)
-{
- Single *s = v;
-
- i->s = (*s & 0x80000000) ? 1: 0;
- if((*s & ~0x80000000) == 0){
- SetZero(i);
- return;
- }
- i->e = ((*s>>23) & 0x00FF) - SingleExpBias + ExpBias;
- i->h = (*s & 0x007FFFFF)<<(1+NGuardBits);
- i->l = 0;
- if(i->e)
- i->h |= HiddenBit;
- else
- i->e++;
-}
-
-void
-fpid2i(Internal *i, void *v)
-{
- Double *d = v;
-
- i->s = (d->h & 0x80000000) ? 1: 0;
- i->e = (d->h>>20) & 0x07FF;
- i->h = ((d->h & 0x000FFFFF)<<(4+NGuardBits))|((d->l>>25) & 0x7F);
- i->l = (d->l & 0x01FFFFFF)<<NGuardBits;
- if(i->e)
- i->h |= HiddenBit;
- else
- i->e++;
-}
-
-void
-fpiw2i(Internal *i, void *v)
-{
- Word w, word = *(Word*)v;
- short e;
-
- if(word < 0){
- i->s = 1;
- word = -word;
- }
- else
- i->s = 0;
- if(word == 0){
- SetZero(i);
- return;
- }
- if(word > 0){
- for (e = 0, w = word; w; w >>= 1, e++)
- ;
- } else
- e = 32;
- if(e > FractBits){
- i->h = word>>(e - FractBits);
- i->l = (word & ((1<<(e - FractBits)) - 1))<<(2*FractBits - e);
- }
- else {
- i->h = word<<(FractBits - e);
- i->l = 0;
- }
- i->e = (e - 1) + ExpBias;
-}
-
-void
-fpii2s(void *v, Internal *i)
-{
- short e;
- Single *s = (Single*)v;
-
- fpiround(i);
- if(i->h & HiddenBit)
- i->h &= ~HiddenBit;
- else
- i->e--;
- *s = i->s ? 0x80000000: 0;
- e = i->e;
- if(e < ExpBias){
- if(e <= (ExpBias - SingleExpBias))
- return;
- e = SingleExpBias - (ExpBias - e);
- }
- else if(e >= (ExpBias + (SingleExpMax-SingleExpBias))){
- *s |= SingleExpMax<<23;
- return;
- }
- else
- e = SingleExpBias + (e - ExpBias);
- *s |= (e<<23)|(i->h>>(1+NGuardBits));
-}
-
-void
-fpii2d(void *v, Internal *i)
-{
- Double *d = (Double*)v;
-
- fpiround(i);
- if(i->h & HiddenBit)
- i->h &= ~HiddenBit;
- else
- i->e--;
- i->l = ((i->h & GuardMask)<<25)|(i->l>>NGuardBits);
- i->h >>= NGuardBits;
- d->h = i->s ? 0x80000000: 0;
- d->h |= (i->e<<20)|((i->h & 0x00FFFFFF)>>4);
- d->l = (i->h<<28)|i->l;
-}
-
-void
-fpii2w(Word *word, Internal *i)
-{
- Word w;
- short e;
-
- fpiround(i);
- e = (i->e - ExpBias) + 1;
- if(e <= 0)
- w = 0;
- else if(e > 31)
- w = 0x7FFFFFFF;
- else if(e > FractBits)
- w = (i->h<<(e - FractBits))|(i->l>>(2*FractBits - e));
- else
- w = i->h>>(FractBits-e);
- if(i->s)
- w = -w;
- *word = w;
-}
--- a/sys/src/9/bitsy/gamma.c
+++ /dev/null
@@ -1,51 +1,0 @@
-#include <u.h>
-#include <libc.h>
-#include <stdio.h>
-
-double gamma = 1.6;
-
-int
-remap5(int i)
-{
- double v;
-
- v = (double)i/31.0;
- return 31.0*pow(v, gamma);
-}
-
-int
-remap6(int i)
-{
- double v;
-
- v = (double)i/63.0;
- return 63.0*pow(v, gamma);
-}
-
-int
-remap(int i)
-{
- int r, g, b;
-
- b = i & 0x1F;
- g = (i>>5) & 0x3F;
- r = (i>>11) & 0x1F;
- return (remap5(r)<<11) | (remap6(g)<<5) | (remap5(b)<<0);
-}
-
-void
-main(void)
-{
- int i;
-
- printf("/* gamma = %.2f */\n", gamma);
- printf("ushort gamma[65536] = {\n");
- for(i=0; i<65536; i++){
- if((i%8) == 0)
- printf("\t");
- printf("0x%.4x, ", remap(i));
- if((i%8) == 7)
- printf("\n");
- }
- printf("};\n");
-}
--- a/sys/src/9/bitsy/gamma.h
+++ /dev/null
@@ -1,8195 +1,0 @@
-/* gamma = 1.60 */
-ushort gamma[65536] = {
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002,
- 0x0003, 0x0004, 0x0005, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x000a, 0x000b, 0x000c, 0x000e, 0x000f, 0x0010, 0x0011, 0x0013,
- 0x0014, 0x0015, 0x0017, 0x0018, 0x001a, 0x001b, 0x001d, 0x001f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002,
- 0x0003, 0x0004, 0x0005, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x000a, 0x000b, 0x000c, 0x000e, 0x000f, 0x0010, 0x0011, 0x0013,
- 0x0014, 0x0015, 0x0017, 0x0018, 0x001a, 0x001b, 0x001d, 0x001f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002,
- 0x0003, 0x0004, 0x0005, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x000a, 0x000b, 0x000c, 0x000e, 0x000f, 0x0010, 0x0011, 0x0013,
- 0x0014, 0x0015, 0x0017, 0x0018, 0x001a, 0x001b, 0x001d, 0x001f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002,
- 0x0003, 0x0004, 0x0005, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x000a, 0x000b, 0x000c, 0x000e, 0x000f, 0x0010, 0x0011, 0x0013,
- 0x0014, 0x0015, 0x0017, 0x0018, 0x001a, 0x001b, 0x001d, 0x001f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002,
- 0x0003, 0x0004, 0x0005, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x000a, 0x000b, 0x000c, 0x000e, 0x000f, 0x0010, 0x0011, 0x0013,
- 0x0014, 0x0015, 0x0017, 0x0018, 0x001a, 0x001b, 0x001d, 0x001f,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x0021, 0x0021, 0x0022, 0x0022,
- 0x0023, 0x0024, 0x0025, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029,
- 0x002a, 0x002b, 0x002c, 0x002e, 0x002f, 0x0030, 0x0031, 0x0033,
- 0x0034, 0x0035, 0x0037, 0x0038, 0x003a, 0x003b, 0x003d, 0x003f,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x0021, 0x0021, 0x0022, 0x0022,
- 0x0023, 0x0024, 0x0025, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029,
- 0x002a, 0x002b, 0x002c, 0x002e, 0x002f, 0x0030, 0x0031, 0x0033,
- 0x0034, 0x0035, 0x0037, 0x0038, 0x003a, 0x003b, 0x003d, 0x003f,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x0021, 0x0021, 0x0022, 0x0022,
- 0x0023, 0x0024, 0x0025, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029,
- 0x002a, 0x002b, 0x002c, 0x002e, 0x002f, 0x0030, 0x0031, 0x0033,
- 0x0034, 0x0035, 0x0037, 0x0038, 0x003a, 0x003b, 0x003d, 0x003f,
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0041, 0x0041, 0x0042, 0x0042,
- 0x0043, 0x0044, 0x0045, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049,
- 0x004a, 0x004b, 0x004c, 0x004e, 0x004f, 0x0050, 0x0051, 0x0053,
- 0x0054, 0x0055, 0x0057, 0x0058, 0x005a, 0x005b, 0x005d, 0x005f,
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0041, 0x0041, 0x0042, 0x0042,
- 0x0043, 0x0044, 0x0045, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049,
- 0x004a, 0x004b, 0x004c, 0x004e, 0x004f, 0x0050, 0x0051, 0x0053,
- 0x0054, 0x0055, 0x0057, 0x0058, 0x005a, 0x005b, 0x005d, 0x005f,
- 0x0060, 0x0060, 0x0060, 0x0060, 0x0061, 0x0061, 0x0062, 0x0062,
- 0x0063, 0x0064, 0x0065, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069,
- 0x006a, 0x006b, 0x006c, 0x006e, 0x006f, 0x0070, 0x0071, 0x0073,
- 0x0074, 0x0075, 0x0077, 0x0078, 0x007a, 0x007b, 0x007d, 0x007f,
- 0x0060, 0x0060, 0x0060, 0x0060, 0x0061, 0x0061, 0x0062, 0x0062,
- 0x0063, 0x0064, 0x0065, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069,
- 0x006a, 0x006b, 0x006c, 0x006e, 0x006f, 0x0070, 0x0071, 0x0073,
- 0x0074, 0x0075, 0x0077, 0x0078, 0x007a, 0x007b, 0x007d, 0x007f,
- 0x0080, 0x0080, 0x0080, 0x0080, 0x0081, 0x0081, 0x0082, 0x0082,
- 0x0083, 0x0084, 0x0085, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089,
- 0x008a, 0x008b, 0x008c, 0x008e, 0x008f, 0x0090, 0x0091, 0x0093,
- 0x0094, 0x0095, 0x0097, 0x0098, 0x009a, 0x009b, 0x009d, 0x009f,
- 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a1, 0x00a1, 0x00a2, 0x00a2,
- 0x00a3, 0x00a4, 0x00a5, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9,
- 0x00aa, 0x00ab, 0x00ac, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b3,
- 0x00b4, 0x00b5, 0x00b7, 0x00b8, 0x00ba, 0x00bb, 0x00bd, 0x00bf,
- 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a1, 0x00a1, 0x00a2, 0x00a2,
- 0x00a3, 0x00a4, 0x00a5, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9,
- 0x00aa, 0x00ab, 0x00ac, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b3,
- 0x00b4, 0x00b5, 0x00b7, 0x00b8, 0x00ba, 0x00bb, 0x00bd, 0x00bf,
- 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c1, 0x00c1, 0x00c2, 0x00c2,
- 0x00c3, 0x00c4, 0x00c5, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9,
- 0x00ca, 0x00cb, 0x00cc, 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d3,
- 0x00d4, 0x00d5, 0x00d7, 0x00d8, 0x00da, 0x00db, 0x00dd, 0x00df,
- 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e1, 0x00e1, 0x00e2, 0x00e2,
- 0x00e3, 0x00e4, 0x00e5, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9,
- 0x00ea, 0x00eb, 0x00ec, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f3,
- 0x00f4, 0x00f5, 0x00f7, 0x00f8, 0x00fa, 0x00fb, 0x00fd, 0x00ff,
- 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e1, 0x00e1, 0x00e2, 0x00e2,
- 0x00e3, 0x00e4, 0x00e5, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9,
- 0x00ea, 0x00eb, 0x00ec, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f3,
- 0x00f4, 0x00f5, 0x00f7, 0x00f8, 0x00fa, 0x00fb, 0x00fd, 0x00ff,
- 0x0100, 0x0100, 0x0100, 0x0100, 0x0101, 0x0101, 0x0102, 0x0102,
- 0x0103, 0x0104, 0x0105, 0x0105, 0x0106, 0x0107, 0x0108, 0x0109,
- 0x010a, 0x010b, 0x010c, 0x010e, 0x010f, 0x0110, 0x0111, 0x0113,
- 0x0114, 0x0115, 0x0117, 0x0118, 0x011a, 0x011b, 0x011d, 0x011f,
- 0x0120, 0x0120, 0x0120, 0x0120, 0x0121, 0x0121, 0x0122, 0x0122,
- 0x0123, 0x0124, 0x0125, 0x0125, 0x0126, 0x0127, 0x0128, 0x0129,
- 0x012a, 0x012b, 0x012c, 0x012e, 0x012f, 0x0130, 0x0131, 0x0133,
- 0x0134, 0x0135, 0x0137, 0x0138, 0x013a, 0x013b, 0x013d, 0x013f,
- 0x0140, 0x0140, 0x0140, 0x0140, 0x0141, 0x0141, 0x0142, 0x0142,
- 0x0143, 0x0144, 0x0145, 0x0145, 0x0146, 0x0147, 0x0148, 0x0149,
- 0x014a, 0x014b, 0x014c, 0x014e, 0x014f, 0x0150, 0x0151, 0x0153,
- 0x0154, 0x0155, 0x0157, 0x0158, 0x015a, 0x015b, 0x015d, 0x015f,
- 0x0140, 0x0140, 0x0140, 0x0140, 0x0141, 0x0141, 0x0142, 0x0142,
- 0x0143, 0x0144, 0x0145, 0x0145, 0x0146, 0x0147, 0x0148, 0x0149,
- 0x014a, 0x014b, 0x014c, 0x014e, 0x014f, 0x0150, 0x0151, 0x0153,
- 0x0154, 0x0155, 0x0157, 0x0158, 0x015a, 0x015b, 0x015d, 0x015f,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0161, 0x0161, 0x0162, 0x0162,
- 0x0163, 0x0164, 0x0165, 0x0165, 0x0166, 0x0167, 0x0168, 0x0169,
- 0x016a, 0x016b, 0x016c, 0x016e, 0x016f, 0x0170, 0x0171, 0x0173,
- 0x0174, 0x0175, 0x0177, 0x0178, 0x017a, 0x017b, 0x017d, 0x017f,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0181, 0x0181, 0x0182, 0x0182,
- 0x0183, 0x0184, 0x0185, 0x0185, 0x0186, 0x0187, 0x0188, 0x0189,
- 0x018a, 0x018b, 0x018c, 0x018e, 0x018f, 0x0190, 0x0191, 0x0193,
- 0x0194, 0x0195, 0x0197, 0x0198, 0x019a, 0x019b, 0x019d, 0x019f,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a1, 0x01a1, 0x01a2, 0x01a2,
- 0x01a3, 0x01a4, 0x01a5, 0x01a5, 0x01a6, 0x01a7, 0x01a8, 0x01a9,
- 0x01aa, 0x01ab, 0x01ac, 0x01ae, 0x01af, 0x01b0, 0x01b1, 0x01b3,
- 0x01b4, 0x01b5, 0x01b7, 0x01b8, 0x01ba, 0x01bb, 0x01bd, 0x01bf,
- 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c1, 0x01c1, 0x01c2, 0x01c2,
- 0x01c3, 0x01c4, 0x01c5, 0x01c5, 0x01c6, 0x01c7, 0x01c8, 0x01c9,
- 0x01ca, 0x01cb, 0x01cc, 0x01ce, 0x01cf, 0x01d0, 0x01d1, 0x01d3,
- 0x01d4, 0x01d5, 0x01d7, 0x01d8, 0x01da, 0x01db, 0x01dd, 0x01df,
- 0x01e0, 0x01e0, 0x01e0, 0x01e0, 0x01e1, 0x01e1, 0x01e2, 0x01e2,
- 0x01e3, 0x01e4, 0x01e5, 0x01e5, 0x01e6, 0x01e7, 0x01e8, 0x01e9,
- 0x01ea, 0x01eb, 0x01ec, 0x01ee, 0x01ef, 0x01f0, 0x01f1, 0x01f3,
- 0x01f4, 0x01f5, 0x01f7, 0x01f8, 0x01fa, 0x01fb, 0x01fd, 0x01ff,
- 0x0200, 0x0200, 0x0200, 0x0200, 0x0201, 0x0201, 0x0202, 0x0202,
- 0x0203, 0x0204, 0x0205, 0x0205, 0x0206, 0x0207, 0x0208, 0x0209,
- 0x020a, 0x020b, 0x020c, 0x020e, 0x020f, 0x0210, 0x0211, 0x0213,
- 0x0214, 0x0215, 0x0217, 0x0218, 0x021a, 0x021b, 0x021d, 0x021f,
- 0x0220, 0x0220, 0x0220, 0x0220, 0x0221, 0x0221, 0x0222, 0x0222,
- 0x0223, 0x0224, 0x0225, 0x0225, 0x0226, 0x0227, 0x0228, 0x0229,
- 0x022a, 0x022b, 0x022c, 0x022e, 0x022f, 0x0230, 0x0231, 0x0233,
- 0x0234, 0x0235, 0x0237, 0x0238, 0x023a, 0x023b, 0x023d, 0x023f,
- 0x0240, 0x0240, 0x0240, 0x0240, 0x0241, 0x0241, 0x0242, 0x0242,
- 0x0243, 0x0244, 0x0245, 0x0245, 0x0246, 0x0247, 0x0248, 0x0249,
- 0x024a, 0x024b, 0x024c, 0x024e, 0x024f, 0x0250, 0x0251, 0x0253,
- 0x0254, 0x0255, 0x0257, 0x0258, 0x025a, 0x025b, 0x025d, 0x025f,
- 0x0260, 0x0260, 0x0260, 0x0260, 0x0261, 0x0261, 0x0262, 0x0262,
- 0x0263, 0x0264, 0x0265, 0x0265, 0x0266, 0x0267, 0x0268, 0x0269,
- 0x026a, 0x026b, 0x026c, 0x026e, 0x026f, 0x0270, 0x0271, 0x0273,
- 0x0274, 0x0275, 0x0277, 0x0278, 0x027a, 0x027b, 0x027d, 0x027f,
- 0x0280, 0x0280, 0x0280, 0x0280, 0x0281, 0x0281, 0x0282, 0x0282,
- 0x0283, 0x0284, 0x0285, 0x0285, 0x0286, 0x0287, 0x0288, 0x0289,
- 0x028a, 0x028b, 0x028c, 0x028e, 0x028f, 0x0290, 0x0291, 0x0293,
- 0x0294, 0x0295, 0x0297, 0x0298, 0x029a, 0x029b, 0x029d, 0x029f,
- 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a1, 0x02a1, 0x02a2, 0x02a2,
- 0x02a3, 0x02a4, 0x02a5, 0x02a5, 0x02a6, 0x02a7, 0x02a8, 0x02a9,
- 0x02aa, 0x02ab, 0x02ac, 0x02ae, 0x02af, 0x02b0, 0x02b1, 0x02b3,
- 0x02b4, 0x02b5, 0x02b7, 0x02b8, 0x02ba, 0x02bb, 0x02bd, 0x02bf,
- 0x02c0, 0x02c0, 0x02c0, 0x02c0, 0x02c1, 0x02c1, 0x02c2, 0x02c2,
- 0x02c3, 0x02c4, 0x02c5, 0x02c5, 0x02c6, 0x02c7, 0x02c8, 0x02c9,
- 0x02ca, 0x02cb, 0x02cc, 0x02ce, 0x02cf, 0x02d0, 0x02d1, 0x02d3,
- 0x02d4, 0x02d5, 0x02d7, 0x02d8, 0x02da, 0x02db, 0x02dd, 0x02df,
- 0x02e0, 0x02e0, 0x02e0, 0x02e0, 0x02e1, 0x02e1, 0x02e2, 0x02e2,
- 0x02e3, 0x02e4, 0x02e5, 0x02e5, 0x02e6, 0x02e7, 0x02e8, 0x02e9,
- 0x02ea, 0x02eb, 0x02ec, 0x02ee, 0x02ef, 0x02f0, 0x02f1, 0x02f3,
- 0x02f4, 0x02f5, 0x02f7, 0x02f8, 0x02fa, 0x02fb, 0x02fd, 0x02ff,
- 0x0300, 0x0300, 0x0300, 0x0300, 0x0301, 0x0301, 0x0302, 0x0302,
- 0x0303, 0x0304, 0x0305, 0x0305, 0x0306, 0x0307, 0x0308, 0x0309,
- 0x030a, 0x030b, 0x030c, 0x030e, 0x030f, 0x0310, 0x0311, 0x0313,
- 0x0314, 0x0315, 0x0317, 0x0318, 0x031a, 0x031b, 0x031d, 0x031f,
- 0x0320, 0x0320, 0x0320, 0x0320, 0x0321, 0x0321, 0x0322, 0x0322,
- 0x0323, 0x0324, 0x0325, 0x0325, 0x0326, 0x0327, 0x0328, 0x0329,
- 0x032a, 0x032b, 0x032c, 0x032e, 0x032f, 0x0330, 0x0331, 0x0333,
- 0x0334, 0x0335, 0x0337, 0x0338, 0x033a, 0x033b, 0x033d, 0x033f,
- 0x0340, 0x0340, 0x0340, 0x0340, 0x0341, 0x0341, 0x0342, 0x0342,
- 0x0343, 0x0344, 0x0345, 0x0345, 0x0346, 0x0347, 0x0348, 0x0349,
- 0x034a, 0x034b, 0x034c, 0x034e, 0x034f, 0x0350, 0x0351, 0x0353,
- 0x0354, 0x0355, 0x0357, 0x0358, 0x035a, 0x035b, 0x035d, 0x035f,
- 0x0380, 0x0380, 0x0380, 0x0380, 0x0381, 0x0381, 0x0382, 0x0382,
- 0x0383, 0x0384, 0x0385, 0x0385, 0x0386, 0x0387, 0x0388, 0x0389,
- 0x038a, 0x038b, 0x038c, 0x038e, 0x038f, 0x0390, 0x0391, 0x0393,
- 0x0394, 0x0395, 0x0397, 0x0398, 0x039a, 0x039b, 0x039d, 0x039f,
- 0x03a0, 0x03a0, 0x03a0, 0x03a0, 0x03a1, 0x03a1, 0x03a2, 0x03a2,
- 0x03a3, 0x03a4, 0x03a5, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
- 0x03aa, 0x03ab, 0x03ac, 0x03ae, 0x03af, 0x03b0, 0x03b1, 0x03b3,
- 0x03b4, 0x03b5, 0x03b7, 0x03b8, 0x03ba, 0x03bb, 0x03bd, 0x03bf,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c1, 0x03c1, 0x03c2, 0x03c2,
- 0x03c3, 0x03c4, 0x03c5, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
- 0x03ca, 0x03cb, 0x03cc, 0x03ce, 0x03cf, 0x03d0, 0x03d1, 0x03d3,
- 0x03d4, 0x03d5, 0x03d7, 0x03d8, 0x03da, 0x03db, 0x03dd, 0x03df,
- 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e1, 0x03e1, 0x03e2, 0x03e2,
- 0x03e3, 0x03e4, 0x03e5, 0x03e5, 0x03e6, 0x03e7, 0x03e8, 0x03e9,
- 0x03ea, 0x03eb, 0x03ec, 0x03ee, 0x03ef, 0x03f0, 0x03f1, 0x03f3,
- 0x03f4, 0x03f5, 0x03f7, 0x03f8, 0x03fa, 0x03fb, 0x03fd, 0x03ff,
- 0x0400, 0x0400, 0x0400, 0x0400, 0x0401, 0x0401, 0x0402, 0x0402,
- 0x0403, 0x0404, 0x0405, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409,
- 0x040a, 0x040b, 0x040c, 0x040e, 0x040f, 0x0410, 0x0411, 0x0413,
- 0x0414, 0x0415, 0x0417, 0x0418, 0x041a, 0x041b, 0x041d, 0x041f,
- 0x0440, 0x0440, 0x0440, 0x0440, 0x0441, 0x0441, 0x0442, 0x0442,
- 0x0443, 0x0444, 0x0445, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449,
- 0x044a, 0x044b, 0x044c, 0x044e, 0x044f, 0x0450, 0x0451, 0x0453,
- 0x0454, 0x0455, 0x0457, 0x0458, 0x045a, 0x045b, 0x045d, 0x045f,
- 0x0460, 0x0460, 0x0460, 0x0460, 0x0461, 0x0461, 0x0462, 0x0462,
- 0x0463, 0x0464, 0x0465, 0x0465, 0x0466, 0x0467, 0x0468, 0x0469,
- 0x046a, 0x046b, 0x046c, 0x046e, 0x046f, 0x0470, 0x0471, 0x0473,
- 0x0474, 0x0475, 0x0477, 0x0478, 0x047a, 0x047b, 0x047d, 0x047f,
- 0x0480, 0x0480, 0x0480, 0x0480, 0x0481, 0x0481, 0x0482, 0x0482,
- 0x0483, 0x0484, 0x0485, 0x0485, 0x0486, 0x0487, 0x0488, 0x0489,
- 0x048a, 0x048b, 0x048c, 0x048e, 0x048f, 0x0490, 0x0491, 0x0493,
- 0x0494, 0x0495, 0x0497, 0x0498, 0x049a, 0x049b, 0x049d, 0x049f,
- 0x04c0, 0x04c0, 0x04c0, 0x04c0, 0x04c1, 0x04c1, 0x04c2, 0x04c2,
- 0x04c3, 0x04c4, 0x04c5, 0x04c5, 0x04c6, 0x04c7, 0x04c8, 0x04c9,
- 0x04ca, 0x04cb, 0x04cc, 0x04ce, 0x04cf, 0x04d0, 0x04d1, 0x04d3,
- 0x04d4, 0x04d5, 0x04d7, 0x04d8, 0x04da, 0x04db, 0x04dd, 0x04df,
- 0x04e0, 0x04e0, 0x04e0, 0x04e0, 0x04e1, 0x04e1, 0x04e2, 0x04e2,
- 0x04e3, 0x04e4, 0x04e5, 0x04e5, 0x04e6, 0x04e7, 0x04e8, 0x04e9,
- 0x04ea, 0x04eb, 0x04ec, 0x04ee, 0x04ef, 0x04f0, 0x04f1, 0x04f3,
- 0x04f4, 0x04f5, 0x04f7, 0x04f8, 0x04fa, 0x04fb, 0x04fd, 0x04ff,
- 0x0500, 0x0500, 0x0500, 0x0500, 0x0501, 0x0501, 0x0502, 0x0502,
- 0x0503, 0x0504, 0x0505, 0x0505, 0x0506, 0x0507, 0x0508, 0x0509,
- 0x050a, 0x050b, 0x050c, 0x050e, 0x050f, 0x0510, 0x0511, 0x0513,
- 0x0514, 0x0515, 0x0517, 0x0518, 0x051a, 0x051b, 0x051d, 0x051f,
- 0x0540, 0x0540, 0x0540, 0x0540, 0x0541, 0x0541, 0x0542, 0x0542,
- 0x0543, 0x0544, 0x0545, 0x0545, 0x0546, 0x0547, 0x0548, 0x0549,
- 0x054a, 0x054b, 0x054c, 0x054e, 0x054f, 0x0550, 0x0551, 0x0553,
- 0x0554, 0x0555, 0x0557, 0x0558, 0x055a, 0x055b, 0x055d, 0x055f,
- 0x0560, 0x0560, 0x0560, 0x0560, 0x0561, 0x0561, 0x0562, 0x0562,
- 0x0563, 0x0564, 0x0565, 0x0565, 0x0566, 0x0567, 0x0568, 0x0569,
- 0x056a, 0x056b, 0x056c, 0x056e, 0x056f, 0x0570, 0x0571, 0x0573,
- 0x0574, 0x0575, 0x0577, 0x0578, 0x057a, 0x057b, 0x057d, 0x057f,
- 0x0580, 0x0580, 0x0580, 0x0580, 0x0581, 0x0581, 0x0582, 0x0582,
- 0x0583, 0x0584, 0x0585, 0x0585, 0x0586, 0x0587, 0x0588, 0x0589,
- 0x058a, 0x058b, 0x058c, 0x058e, 0x058f, 0x0590, 0x0591, 0x0593,
- 0x0594, 0x0595, 0x0597, 0x0598, 0x059a, 0x059b, 0x059d, 0x059f,
- 0x05c0, 0x05c0, 0x05c0, 0x05c0, 0x05c1, 0x05c1, 0x05c2, 0x05c2,
- 0x05c3, 0x05c4, 0x05c5, 0x05c5, 0x05c6, 0x05c7, 0x05c8, 0x05c9,
- 0x05ca, 0x05cb, 0x05cc, 0x05ce, 0x05cf, 0x05d0, 0x05d1, 0x05d3,
- 0x05d4, 0x05d5, 0x05d7, 0x05d8, 0x05da, 0x05db, 0x05dd, 0x05df,
- 0x05e0, 0x05e0, 0x05e0, 0x05e0, 0x05e1, 0x05e1, 0x05e2, 0x05e2,
- 0x05e3, 0x05e4, 0x05e5, 0x05e5, 0x05e6, 0x05e7, 0x05e8, 0x05e9,
- 0x05ea, 0x05eb, 0x05ec, 0x05ee, 0x05ef, 0x05f0, 0x05f1, 0x05f3,
- 0x05f4, 0x05f5, 0x05f7, 0x05f8, 0x05fa, 0x05fb, 0x05fd, 0x05ff,
- 0x0620, 0x0620, 0x0620, 0x0620, 0x0621, 0x0621, 0x0622, 0x0622,
- 0x0623, 0x0624, 0x0625, 0x0625, 0x0626, 0x0627, 0x0628, 0x0629,
- 0x062a, 0x062b, 0x062c, 0x062e, 0x062f, 0x0630, 0x0631, 0x0633,
- 0x0634, 0x0635, 0x0637, 0x0638, 0x063a, 0x063b, 0x063d, 0x063f,
- 0x0640, 0x0640, 0x0640, 0x0640, 0x0641, 0x0641, 0x0642, 0x0642,
- 0x0643, 0x0644, 0x0645, 0x0645, 0x0646, 0x0647, 0x0648, 0x0649,
- 0x064a, 0x064b, 0x064c, 0x064e, 0x064f, 0x0650, 0x0651, 0x0653,
- 0x0654, 0x0655, 0x0657, 0x0658, 0x065a, 0x065b, 0x065d, 0x065f,
- 0x0680, 0x0680, 0x0680, 0x0680, 0x0681, 0x0681, 0x0682, 0x0682,
- 0x0683, 0x0684, 0x0685, 0x0685, 0x0686, 0x0687, 0x0688, 0x0689,
- 0x068a, 0x068b, 0x068c, 0x068e, 0x068f, 0x0690, 0x0691, 0x0693,
- 0x0694, 0x0695, 0x0697, 0x0698, 0x069a, 0x069b, 0x069d, 0x069f,
- 0x06a0, 0x06a0, 0x06a0, 0x06a0, 0x06a1, 0x06a1, 0x06a2, 0x06a2,
- 0x06a3, 0x06a4, 0x06a5, 0x06a5, 0x06a6, 0x06a7, 0x06a8, 0x06a9,
- 0x06aa, 0x06ab, 0x06ac, 0x06ae, 0x06af, 0x06b0, 0x06b1, 0x06b3,
- 0x06b4, 0x06b5, 0x06b7, 0x06b8, 0x06ba, 0x06bb, 0x06bd, 0x06bf,
- 0x06e0, 0x06e0, 0x06e0, 0x06e0, 0x06e1, 0x06e1, 0x06e2, 0x06e2,
- 0x06e3, 0x06e4, 0x06e5, 0x06e5, 0x06e6, 0x06e7, 0x06e8, 0x06e9,
- 0x06ea, 0x06eb, 0x06ec, 0x06ee, 0x06ef, 0x06f0, 0x06f1, 0x06f3,
- 0x06f4, 0x06f5, 0x06f7, 0x06f8, 0x06fa, 0x06fb, 0x06fd, 0x06ff,
- 0x0700, 0x0700, 0x0700, 0x0700, 0x0701, 0x0701, 0x0702, 0x0702,
- 0x0703, 0x0704, 0x0705, 0x0705, 0x0706, 0x0707, 0x0708, 0x0709,
- 0x070a, 0x070b, 0x070c, 0x070e, 0x070f, 0x0710, 0x0711, 0x0713,
- 0x0714, 0x0715, 0x0717, 0x0718, 0x071a, 0x071b, 0x071d, 0x071f,
- 0x0740, 0x0740, 0x0740, 0x0740, 0x0741, 0x0741, 0x0742, 0x0742,
- 0x0743, 0x0744, 0x0745, 0x0745, 0x0746, 0x0747, 0x0748, 0x0749,
- 0x074a, 0x074b, 0x074c, 0x074e, 0x074f, 0x0750, 0x0751, 0x0753,
- 0x0754, 0x0755, 0x0757, 0x0758, 0x075a, 0x075b, 0x075d, 0x075f,
- 0x0760, 0x0760, 0x0760, 0x0760, 0x0761, 0x0761, 0x0762, 0x0762,
- 0x0763, 0x0764, 0x0765, 0x0765, 0x0766, 0x0767, 0x0768, 0x0769,
- 0x076a, 0x076b, 0x076c, 0x076e, 0x076f, 0x0770, 0x0771, 0x0773,
- 0x0774, 0x0775, 0x0777, 0x0778, 0x077a, 0x077b, 0x077d, 0x077f,
- 0x07a0, 0x07a0, 0x07a0, 0x07a0, 0x07a1, 0x07a1, 0x07a2, 0x07a2,
- 0x07a3, 0x07a4, 0x07a5, 0x07a5, 0x07a6, 0x07a7, 0x07a8, 0x07a9,
- 0x07aa, 0x07ab, 0x07ac, 0x07ae, 0x07af, 0x07b0, 0x07b1, 0x07b3,
- 0x07b4, 0x07b5, 0x07b7, 0x07b8, 0x07ba, 0x07bb, 0x07bd, 0x07bf,
- 0x07e0, 0x07e0, 0x07e0, 0x07e0, 0x07e1, 0x07e1, 0x07e2, 0x07e2,
- 0x07e3, 0x07e4, 0x07e5, 0x07e5, 0x07e6, 0x07e7, 0x07e8, 0x07e9,
- 0x07ea, 0x07eb, 0x07ec, 0x07ee, 0x07ef, 0x07f0, 0x07f1, 0x07f3,
- 0x07f4, 0x07f5, 0x07f7, 0x07f8, 0x07fa, 0x07fb, 0x07fd, 0x07ff,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002,
- 0x0003, 0x0004, 0x0005, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x000a, 0x000b, 0x000c, 0x000e, 0x000f, 0x0010, 0x0011, 0x0013,
- 0x0014, 0x0015, 0x0017, 0x0018, 0x001a, 0x001b, 0x001d, 0x001f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002,
- 0x0003, 0x0004, 0x0005, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x000a, 0x000b, 0x000c, 0x000e, 0x000f, 0x0010, 0x0011, 0x0013,
- 0x0014, 0x0015, 0x0017, 0x0018, 0x001a, 0x001b, 0x001d, 0x001f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002,
- 0x0003, 0x0004, 0x0005, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x000a, 0x000b, 0x000c, 0x000e, 0x000f, 0x0010, 0x0011, 0x0013,
- 0x0014, 0x0015, 0x0017, 0x0018, 0x001a, 0x001b, 0x001d, 0x001f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002,
- 0x0003, 0x0004, 0x0005, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x000a, 0x000b, 0x000c, 0x000e, 0x000f, 0x0010, 0x0011, 0x0013,
- 0x0014, 0x0015, 0x0017, 0x0018, 0x001a, 0x001b, 0x001d, 0x001f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002,
- 0x0003, 0x0004, 0x0005, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x000a, 0x000b, 0x000c, 0x000e, 0x000f, 0x0010, 0x0011, 0x0013,
- 0x0014, 0x0015, 0x0017, 0x0018, 0x001a, 0x001b, 0x001d, 0x001f,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x0021, 0x0021, 0x0022, 0x0022,
- 0x0023, 0x0024, 0x0025, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029,
- 0x002a, 0x002b, 0x002c, 0x002e, 0x002f, 0x0030, 0x0031, 0x0033,
- 0x0034, 0x0035, 0x0037, 0x0038, 0x003a, 0x003b, 0x003d, 0x003f,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x0021, 0x0021, 0x0022, 0x0022,
- 0x0023, 0x0024, 0x0025, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029,
- 0x002a, 0x002b, 0x002c, 0x002e, 0x002f, 0x0030, 0x0031, 0x0033,
- 0x0034, 0x0035, 0x0037, 0x0038, 0x003a, 0x003b, 0x003d, 0x003f,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x0021, 0x0021, 0x0022, 0x0022,
- 0x0023, 0x0024, 0x0025, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029,
- 0x002a, 0x002b, 0x002c, 0x002e, 0x002f, 0x0030, 0x0031, 0x0033,
- 0x0034, 0x0035, 0x0037, 0x0038, 0x003a, 0x003b, 0x003d, 0x003f,
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0041, 0x0041, 0x0042, 0x0042,
- 0x0043, 0x0044, 0x0045, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049,
- 0x004a, 0x004b, 0x004c, 0x004e, 0x004f, 0x0050, 0x0051, 0x0053,
- 0x0054, 0x0055, 0x0057, 0x0058, 0x005a, 0x005b, 0x005d, 0x005f,
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0041, 0x0041, 0x0042, 0x0042,
- 0x0043, 0x0044, 0x0045, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049,
- 0x004a, 0x004b, 0x004c, 0x004e, 0x004f, 0x0050, 0x0051, 0x0053,
- 0x0054, 0x0055, 0x0057, 0x0058, 0x005a, 0x005b, 0x005d, 0x005f,
- 0x0060, 0x0060, 0x0060, 0x0060, 0x0061, 0x0061, 0x0062, 0x0062,
- 0x0063, 0x0064, 0x0065, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069,
- 0x006a, 0x006b, 0x006c, 0x006e, 0x006f, 0x0070, 0x0071, 0x0073,
- 0x0074, 0x0075, 0x0077, 0x0078, 0x007a, 0x007b, 0x007d, 0x007f,
- 0x0060, 0x0060, 0x0060, 0x0060, 0x0061, 0x0061, 0x0062, 0x0062,
- 0x0063, 0x0064, 0x0065, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069,
- 0x006a, 0x006b, 0x006c, 0x006e, 0x006f, 0x0070, 0x0071, 0x0073,
- 0x0074, 0x0075, 0x0077, 0x0078, 0x007a, 0x007b, 0x007d, 0x007f,
- 0x0080, 0x0080, 0x0080, 0x0080, 0x0081, 0x0081, 0x0082, 0x0082,
- 0x0083, 0x0084, 0x0085, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089,
- 0x008a, 0x008b, 0x008c, 0x008e, 0x008f, 0x0090, 0x0091, 0x0093,
- 0x0094, 0x0095, 0x0097, 0x0098, 0x009a, 0x009b, 0x009d, 0x009f,
- 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a1, 0x00a1, 0x00a2, 0x00a2,
- 0x00a3, 0x00a4, 0x00a5, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9,
- 0x00aa, 0x00ab, 0x00ac, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b3,
- 0x00b4, 0x00b5, 0x00b7, 0x00b8, 0x00ba, 0x00bb, 0x00bd, 0x00bf,
- 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a1, 0x00a1, 0x00a2, 0x00a2,
- 0x00a3, 0x00a4, 0x00a5, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9,
- 0x00aa, 0x00ab, 0x00ac, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b3,
- 0x00b4, 0x00b5, 0x00b7, 0x00b8, 0x00ba, 0x00bb, 0x00bd, 0x00bf,
- 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c1, 0x00c1, 0x00c2, 0x00c2,
- 0x00c3, 0x00c4, 0x00c5, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9,
- 0x00ca, 0x00cb, 0x00cc, 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d3,
- 0x00d4, 0x00d5, 0x00d7, 0x00d8, 0x00da, 0x00db, 0x00dd, 0x00df,
- 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e1, 0x00e1, 0x00e2, 0x00e2,
- 0x00e3, 0x00e4, 0x00e5, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9,
- 0x00ea, 0x00eb, 0x00ec, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f3,
- 0x00f4, 0x00f5, 0x00f7, 0x00f8, 0x00fa, 0x00fb, 0x00fd, 0x00ff,
- 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e1, 0x00e1, 0x00e2, 0x00e2,
- 0x00e3, 0x00e4, 0x00e5, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9,
- 0x00ea, 0x00eb, 0x00ec, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f3,
- 0x00f4, 0x00f5, 0x00f7, 0x00f8, 0x00fa, 0x00fb, 0x00fd, 0x00ff,
- 0x0100, 0x0100, 0x0100, 0x0100, 0x0101, 0x0101, 0x0102, 0x0102,
- 0x0103, 0x0104, 0x0105, 0x0105, 0x0106, 0x0107, 0x0108, 0x0109,
- 0x010a, 0x010b, 0x010c, 0x010e, 0x010f, 0x0110, 0x0111, 0x0113,
- 0x0114, 0x0115, 0x0117, 0x0118, 0x011a, 0x011b, 0x011d, 0x011f,
- 0x0120, 0x0120, 0x0120, 0x0120, 0x0121, 0x0121, 0x0122, 0x0122,
- 0x0123, 0x0124, 0x0125, 0x0125, 0x0126, 0x0127, 0x0128, 0x0129,
- 0x012a, 0x012b, 0x012c, 0x012e, 0x012f, 0x0130, 0x0131, 0x0133,
- 0x0134, 0x0135, 0x0137, 0x0138, 0x013a, 0x013b, 0x013d, 0x013f,
- 0x0140, 0x0140, 0x0140, 0x0140, 0x0141, 0x0141, 0x0142, 0x0142,
- 0x0143, 0x0144, 0x0145, 0x0145, 0x0146, 0x0147, 0x0148, 0x0149,
- 0x014a, 0x014b, 0x014c, 0x014e, 0x014f, 0x0150, 0x0151, 0x0153,
- 0x0154, 0x0155, 0x0157, 0x0158, 0x015a, 0x015b, 0x015d, 0x015f,
- 0x0140, 0x0140, 0x0140, 0x0140, 0x0141, 0x0141, 0x0142, 0x0142,
- 0x0143, 0x0144, 0x0145, 0x0145, 0x0146, 0x0147, 0x0148, 0x0149,
- 0x014a, 0x014b, 0x014c, 0x014e, 0x014f, 0x0150, 0x0151, 0x0153,
- 0x0154, 0x0155, 0x0157, 0x0158, 0x015a, 0x015b, 0x015d, 0x015f,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0161, 0x0161, 0x0162, 0x0162,
- 0x0163, 0x0164, 0x0165, 0x0165, 0x0166, 0x0167, 0x0168, 0x0169,
- 0x016a, 0x016b, 0x016c, 0x016e, 0x016f, 0x0170, 0x0171, 0x0173,
- 0x0174, 0x0175, 0x0177, 0x0178, 0x017a, 0x017b, 0x017d, 0x017f,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0181, 0x0181, 0x0182, 0x0182,
- 0x0183, 0x0184, 0x0185, 0x0185, 0x0186, 0x0187, 0x0188, 0x0189,
- 0x018a, 0x018b, 0x018c, 0x018e, 0x018f, 0x0190, 0x0191, 0x0193,
- 0x0194, 0x0195, 0x0197, 0x0198, 0x019a, 0x019b, 0x019d, 0x019f,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a1, 0x01a1, 0x01a2, 0x01a2,
- 0x01a3, 0x01a4, 0x01a5, 0x01a5, 0x01a6, 0x01a7, 0x01a8, 0x01a9,
- 0x01aa, 0x01ab, 0x01ac, 0x01ae, 0x01af, 0x01b0, 0x01b1, 0x01b3,
- 0x01b4, 0x01b5, 0x01b7, 0x01b8, 0x01ba, 0x01bb, 0x01bd, 0x01bf,
- 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c1, 0x01c1, 0x01c2, 0x01c2,
- 0x01c3, 0x01c4, 0x01c5, 0x01c5, 0x01c6, 0x01c7, 0x01c8, 0x01c9,
- 0x01ca, 0x01cb, 0x01cc, 0x01ce, 0x01cf, 0x01d0, 0x01d1, 0x01d3,
- 0x01d4, 0x01d5, 0x01d7, 0x01d8, 0x01da, 0x01db, 0x01dd, 0x01df,
- 0x01e0, 0x01e0, 0x01e0, 0x01e0, 0x01e1, 0x01e1, 0x01e2, 0x01e2,
- 0x01e3, 0x01e4, 0x01e5, 0x01e5, 0x01e6, 0x01e7, 0x01e8, 0x01e9,
- 0x01ea, 0x01eb, 0x01ec, 0x01ee, 0x01ef, 0x01f0, 0x01f1, 0x01f3,
- 0x01f4, 0x01f5, 0x01f7, 0x01f8, 0x01fa, 0x01fb, 0x01fd, 0x01ff,
- 0x0200, 0x0200, 0x0200, 0x0200, 0x0201, 0x0201, 0x0202, 0x0202,
- 0x0203, 0x0204, 0x0205, 0x0205, 0x0206, 0x0207, 0x0208, 0x0209,
- 0x020a, 0x020b, 0x020c, 0x020e, 0x020f, 0x0210, 0x0211, 0x0213,
- 0x0214, 0x0215, 0x0217, 0x0218, 0x021a, 0x021b, 0x021d, 0x021f,
- 0x0220, 0x0220, 0x0220, 0x0220, 0x0221, 0x0221, 0x0222, 0x0222,
- 0x0223, 0x0224, 0x0225, 0x0225, 0x0226, 0x0227, 0x0228, 0x0229,
- 0x022a, 0x022b, 0x022c, 0x022e, 0x022f, 0x0230, 0x0231, 0x0233,
- 0x0234, 0x0235, 0x0237, 0x0238, 0x023a, 0x023b, 0x023d, 0x023f,
- 0x0240, 0x0240, 0x0240, 0x0240, 0x0241, 0x0241, 0x0242, 0x0242,
- 0x0243, 0x0244, 0x0245, 0x0245, 0x0246, 0x0247, 0x0248, 0x0249,
- 0x024a, 0x024b, 0x024c, 0x024e, 0x024f, 0x0250, 0x0251, 0x0253,
- 0x0254, 0x0255, 0x0257, 0x0258, 0x025a, 0x025b, 0x025d, 0x025f,
- 0x0260, 0x0260, 0x0260, 0x0260, 0x0261, 0x0261, 0x0262, 0x0262,
- 0x0263, 0x0264, 0x0265, 0x0265, 0x0266, 0x0267, 0x0268, 0x0269,
- 0x026a, 0x026b, 0x026c, 0x026e, 0x026f, 0x0270, 0x0271, 0x0273,
- 0x0274, 0x0275, 0x0277, 0x0278, 0x027a, 0x027b, 0x027d, 0x027f,
- 0x0280, 0x0280, 0x0280, 0x0280, 0x0281, 0x0281, 0x0282, 0x0282,
- 0x0283, 0x0284, 0x0285, 0x0285, 0x0286, 0x0287, 0x0288, 0x0289,
- 0x028a, 0x028b, 0x028c, 0x028e, 0x028f, 0x0290, 0x0291, 0x0293,
- 0x0294, 0x0295, 0x0297, 0x0298, 0x029a, 0x029b, 0x029d, 0x029f,
- 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a1, 0x02a1, 0x02a2, 0x02a2,
- 0x02a3, 0x02a4, 0x02a5, 0x02a5, 0x02a6, 0x02a7, 0x02a8, 0x02a9,
- 0x02aa, 0x02ab, 0x02ac, 0x02ae, 0x02af, 0x02b0, 0x02b1, 0x02b3,
- 0x02b4, 0x02b5, 0x02b7, 0x02b8, 0x02ba, 0x02bb, 0x02bd, 0x02bf,
- 0x02c0, 0x02c0, 0x02c0, 0x02c0, 0x02c1, 0x02c1, 0x02c2, 0x02c2,
- 0x02c3, 0x02c4, 0x02c5, 0x02c5, 0x02c6, 0x02c7, 0x02c8, 0x02c9,
- 0x02ca, 0x02cb, 0x02cc, 0x02ce, 0x02cf, 0x02d0, 0x02d1, 0x02d3,
- 0x02d4, 0x02d5, 0x02d7, 0x02d8, 0x02da, 0x02db, 0x02dd, 0x02df,
- 0x02e0, 0x02e0, 0x02e0, 0x02e0, 0x02e1, 0x02e1, 0x02e2, 0x02e2,
- 0x02e3, 0x02e4, 0x02e5, 0x02e5, 0x02e6, 0x02e7, 0x02e8, 0x02e9,
- 0x02ea, 0x02eb, 0x02ec, 0x02ee, 0x02ef, 0x02f0, 0x02f1, 0x02f3,
- 0x02f4, 0x02f5, 0x02f7, 0x02f8, 0x02fa, 0x02fb, 0x02fd, 0x02ff,
- 0x0300, 0x0300, 0x0300, 0x0300, 0x0301, 0x0301, 0x0302, 0x0302,
- 0x0303, 0x0304, 0x0305, 0x0305, 0x0306, 0x0307, 0x0308, 0x0309,
- 0x030a, 0x030b, 0x030c, 0x030e, 0x030f, 0x0310, 0x0311, 0x0313,
- 0x0314, 0x0315, 0x0317, 0x0318, 0x031a, 0x031b, 0x031d, 0x031f,
- 0x0320, 0x0320, 0x0320, 0x0320, 0x0321, 0x0321, 0x0322, 0x0322,
- 0x0323, 0x0324, 0x0325, 0x0325, 0x0326, 0x0327, 0x0328, 0x0329,
- 0x032a, 0x032b, 0x032c, 0x032e, 0x032f, 0x0330, 0x0331, 0x0333,
- 0x0334, 0x0335, 0x0337, 0x0338, 0x033a, 0x033b, 0x033d, 0x033f,
- 0x0340, 0x0340, 0x0340, 0x0340, 0x0341, 0x0341, 0x0342, 0x0342,
- 0x0343, 0x0344, 0x0345, 0x0345, 0x0346, 0x0347, 0x0348, 0x0349,
- 0x034a, 0x034b, 0x034c, 0x034e, 0x034f, 0x0350, 0x0351, 0x0353,
- 0x0354, 0x0355, 0x0357, 0x0358, 0x035a, 0x035b, 0x035d, 0x035f,
- 0x0380, 0x0380, 0x0380, 0x0380, 0x0381, 0x0381, 0x0382, 0x0382,
- 0x0383, 0x0384, 0x0385, 0x0385, 0x0386, 0x0387, 0x0388, 0x0389,
- 0x038a, 0x038b, 0x038c, 0x038e, 0x038f, 0x0390, 0x0391, 0x0393,
- 0x0394, 0x0395, 0x0397, 0x0398, 0x039a, 0x039b, 0x039d, 0x039f,
- 0x03a0, 0x03a0, 0x03a0, 0x03a0, 0x03a1, 0x03a1, 0x03a2, 0x03a2,
- 0x03a3, 0x03a4, 0x03a5, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
- 0x03aa, 0x03ab, 0x03ac, 0x03ae, 0x03af, 0x03b0, 0x03b1, 0x03b3,
- 0x03b4, 0x03b5, 0x03b7, 0x03b8, 0x03ba, 0x03bb, 0x03bd, 0x03bf,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c1, 0x03c1, 0x03c2, 0x03c2,
- 0x03c3, 0x03c4, 0x03c5, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
- 0x03ca, 0x03cb, 0x03cc, 0x03ce, 0x03cf, 0x03d0, 0x03d1, 0x03d3,
- 0x03d4, 0x03d5, 0x03d7, 0x03d8, 0x03da, 0x03db, 0x03dd, 0x03df,
- 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e1, 0x03e1, 0x03e2, 0x03e2,
- 0x03e3, 0x03e4, 0x03e5, 0x03e5, 0x03e6, 0x03e7, 0x03e8, 0x03e9,
- 0x03ea, 0x03eb, 0x03ec, 0x03ee, 0x03ef, 0x03f0, 0x03f1, 0x03f3,
- 0x03f4, 0x03f5, 0x03f7, 0x03f8, 0x03fa, 0x03fb, 0x03fd, 0x03ff,
- 0x0400, 0x0400, 0x0400, 0x0400, 0x0401, 0x0401, 0x0402, 0x0402,
- 0x0403, 0x0404, 0x0405, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409,
- 0x040a, 0x040b, 0x040c, 0x040e, 0x040f, 0x0410, 0x0411, 0x0413,
- 0x0414, 0x0415, 0x0417, 0x0418, 0x041a, 0x041b, 0x041d, 0x041f,
- 0x0440, 0x0440, 0x0440, 0x0440, 0x0441, 0x0441, 0x0442, 0x0442,
- 0x0443, 0x0444, 0x0445, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449,
- 0x044a, 0x044b, 0x044c, 0x044e, 0x044f, 0x0450, 0x0451, 0x0453,
- 0x0454, 0x0455, 0x0457, 0x0458, 0x045a, 0x045b, 0x045d, 0x045f,
- 0x0460, 0x0460, 0x0460, 0x0460, 0x0461, 0x0461, 0x0462, 0x0462,
- 0x0463, 0x0464, 0x0465, 0x0465, 0x0466, 0x0467, 0x0468, 0x0469,
- 0x046a, 0x046b, 0x046c, 0x046e, 0x046f, 0x0470, 0x0471, 0x0473,
- 0x0474, 0x0475, 0x0477, 0x0478, 0x047a, 0x047b, 0x047d, 0x047f,
- 0x0480, 0x0480, 0x0480, 0x0480, 0x0481, 0x0481, 0x0482, 0x0482,
- 0x0483, 0x0484, 0x0485, 0x0485, 0x0486, 0x0487, 0x0488, 0x0489,
- 0x048a, 0x048b, 0x048c, 0x048e, 0x048f, 0x0490, 0x0491, 0x0493,
- 0x0494, 0x0495, 0x0497, 0x0498, 0x049a, 0x049b, 0x049d, 0x049f,
- 0x04c0, 0x04c0, 0x04c0, 0x04c0, 0x04c1, 0x04c1, 0x04c2, 0x04c2,
- 0x04c3, 0x04c4, 0x04c5, 0x04c5, 0x04c6, 0x04c7, 0x04c8, 0x04c9,
- 0x04ca, 0x04cb, 0x04cc, 0x04ce, 0x04cf, 0x04d0, 0x04d1, 0x04d3,
- 0x04d4, 0x04d5, 0x04d7, 0x04d8, 0x04da, 0x04db, 0x04dd, 0x04df,
- 0x04e0, 0x04e0, 0x04e0, 0x04e0, 0x04e1, 0x04e1, 0x04e2, 0x04e2,
- 0x04e3, 0x04e4, 0x04e5, 0x04e5, 0x04e6, 0x04e7, 0x04e8, 0x04e9,
- 0x04ea, 0x04eb, 0x04ec, 0x04ee, 0x04ef, 0x04f0, 0x04f1, 0x04f3,
- 0x04f4, 0x04f5, 0x04f7, 0x04f8, 0x04fa, 0x04fb, 0x04fd, 0x04ff,
- 0x0500, 0x0500, 0x0500, 0x0500, 0x0501, 0x0501, 0x0502, 0x0502,
- 0x0503, 0x0504, 0x0505, 0x0505, 0x0506, 0x0507, 0x0508, 0x0509,
- 0x050a, 0x050b, 0x050c, 0x050e, 0x050f, 0x0510, 0x0511, 0x0513,
- 0x0514, 0x0515, 0x0517, 0x0518, 0x051a, 0x051b, 0x051d, 0x051f,
- 0x0540, 0x0540, 0x0540, 0x0540, 0x0541, 0x0541, 0x0542, 0x0542,
- 0x0543, 0x0544, 0x0545, 0x0545, 0x0546, 0x0547, 0x0548, 0x0549,
- 0x054a, 0x054b, 0x054c, 0x054e, 0x054f, 0x0550, 0x0551, 0x0553,
- 0x0554, 0x0555, 0x0557, 0x0558, 0x055a, 0x055b, 0x055d, 0x055f,
- 0x0560, 0x0560, 0x0560, 0x0560, 0x0561, 0x0561, 0x0562, 0x0562,
- 0x0563, 0x0564, 0x0565, 0x0565, 0x0566, 0x0567, 0x0568, 0x0569,
- 0x056a, 0x056b, 0x056c, 0x056e, 0x056f, 0x0570, 0x0571, 0x0573,
- 0x0574, 0x0575, 0x0577, 0x0578, 0x057a, 0x057b, 0x057d, 0x057f,
- 0x0580, 0x0580, 0x0580, 0x0580, 0x0581, 0x0581, 0x0582, 0x0582,
- 0x0583, 0x0584, 0x0585, 0x0585, 0x0586, 0x0587, 0x0588, 0x0589,
- 0x058a, 0x058b, 0x058c, 0x058e, 0x058f, 0x0590, 0x0591, 0x0593,
- 0x0594, 0x0595, 0x0597, 0x0598, 0x059a, 0x059b, 0x059d, 0x059f,
- 0x05c0, 0x05c0, 0x05c0, 0x05c0, 0x05c1, 0x05c1, 0x05c2, 0x05c2,
- 0x05c3, 0x05c4, 0x05c5, 0x05c5, 0x05c6, 0x05c7, 0x05c8, 0x05c9,
- 0x05ca, 0x05cb, 0x05cc, 0x05ce, 0x05cf, 0x05d0, 0x05d1, 0x05d3,
- 0x05d4, 0x05d5, 0x05d7, 0x05d8, 0x05da, 0x05db, 0x05dd, 0x05df,
- 0x05e0, 0x05e0, 0x05e0, 0x05e0, 0x05e1, 0x05e1, 0x05e2, 0x05e2,
- 0x05e3, 0x05e4, 0x05e5, 0x05e5, 0x05e6, 0x05e7, 0x05e8, 0x05e9,
- 0x05ea, 0x05eb, 0x05ec, 0x05ee, 0x05ef, 0x05f0, 0x05f1, 0x05f3,
- 0x05f4, 0x05f5, 0x05f7, 0x05f8, 0x05fa, 0x05fb, 0x05fd, 0x05ff,
- 0x0620, 0x0620, 0x0620, 0x0620, 0x0621, 0x0621, 0x0622, 0x0622,
- 0x0623, 0x0624, 0x0625, 0x0625, 0x0626, 0x0627, 0x0628, 0x0629,
- 0x062a, 0x062b, 0x062c, 0x062e, 0x062f, 0x0630, 0x0631, 0x0633,
- 0x0634, 0x0635, 0x0637, 0x0638, 0x063a, 0x063b, 0x063d, 0x063f,
- 0x0640, 0x0640, 0x0640, 0x0640, 0x0641, 0x0641, 0x0642, 0x0642,
- 0x0643, 0x0644, 0x0645, 0x0645, 0x0646, 0x0647, 0x0648, 0x0649,
- 0x064a, 0x064b, 0x064c, 0x064e, 0x064f, 0x0650, 0x0651, 0x0653,
- 0x0654, 0x0655, 0x0657, 0x0658, 0x065a, 0x065b, 0x065d, 0x065f,
- 0x0680, 0x0680, 0x0680, 0x0680, 0x0681, 0x0681, 0x0682, 0x0682,
- 0x0683, 0x0684, 0x0685, 0x0685, 0x0686, 0x0687, 0x0688, 0x0689,
- 0x068a, 0x068b, 0x068c, 0x068e, 0x068f, 0x0690, 0x0691, 0x0693,
- 0x0694, 0x0695, 0x0697, 0x0698, 0x069a, 0x069b, 0x069d, 0x069f,
- 0x06a0, 0x06a0, 0x06a0, 0x06a0, 0x06a1, 0x06a1, 0x06a2, 0x06a2,
- 0x06a3, 0x06a4, 0x06a5, 0x06a5, 0x06a6, 0x06a7, 0x06a8, 0x06a9,
- 0x06aa, 0x06ab, 0x06ac, 0x06ae, 0x06af, 0x06b0, 0x06b1, 0x06b3,
- 0x06b4, 0x06b5, 0x06b7, 0x06b8, 0x06ba, 0x06bb, 0x06bd, 0x06bf,
- 0x06e0, 0x06e0, 0x06e0, 0x06e0, 0x06e1, 0x06e1, 0x06e2, 0x06e2,
- 0x06e3, 0x06e4, 0x06e5, 0x06e5, 0x06e6, 0x06e7, 0x06e8, 0x06e9,
- 0x06ea, 0x06eb, 0x06ec, 0x06ee, 0x06ef, 0x06f0, 0x06f1, 0x06f3,
- 0x06f4, 0x06f5, 0x06f7, 0x06f8, 0x06fa, 0x06fb, 0x06fd, 0x06ff,
- 0x0700, 0x0700, 0x0700, 0x0700, 0x0701, 0x0701, 0x0702, 0x0702,
- 0x0703, 0x0704, 0x0705, 0x0705, 0x0706, 0x0707, 0x0708, 0x0709,
- 0x070a, 0x070b, 0x070c, 0x070e, 0x070f, 0x0710, 0x0711, 0x0713,
- 0x0714, 0x0715, 0x0717, 0x0718, 0x071a, 0x071b, 0x071d, 0x071f,
- 0x0740, 0x0740, 0x0740, 0x0740, 0x0741, 0x0741, 0x0742, 0x0742,
- 0x0743, 0x0744, 0x0745, 0x0745, 0x0746, 0x0747, 0x0748, 0x0749,
- 0x074a, 0x074b, 0x074c, 0x074e, 0x074f, 0x0750, 0x0751, 0x0753,
- 0x0754, 0x0755, 0x0757, 0x0758, 0x075a, 0x075b, 0x075d, 0x075f,
- 0x0760, 0x0760, 0x0760, 0x0760, 0x0761, 0x0761, 0x0762, 0x0762,
- 0x0763, 0x0764, 0x0765, 0x0765, 0x0766, 0x0767, 0x0768, 0x0769,
- 0x076a, 0x076b, 0x076c, 0x076e, 0x076f, 0x0770, 0x0771, 0x0773,
- 0x0774, 0x0775, 0x0777, 0x0778, 0x077a, 0x077b, 0x077d, 0x077f,
- 0x07a0, 0x07a0, 0x07a0, 0x07a0, 0x07a1, 0x07a1, 0x07a2, 0x07a2,
- 0x07a3, 0x07a4, 0x07a5, 0x07a5, 0x07a6, 0x07a7, 0x07a8, 0x07a9,
- 0x07aa, 0x07ab, 0x07ac, 0x07ae, 0x07af, 0x07b0, 0x07b1, 0x07b3,
- 0x07b4, 0x07b5, 0x07b7, 0x07b8, 0x07ba, 0x07bb, 0x07bd, 0x07bf,
- 0x07e0, 0x07e0, 0x07e0, 0x07e0, 0x07e1, 0x07e1, 0x07e2, 0x07e2,
- 0x07e3, 0x07e4, 0x07e5, 0x07e5, 0x07e6, 0x07e7, 0x07e8, 0x07e9,
- 0x07ea, 0x07eb, 0x07ec, 0x07ee, 0x07ef, 0x07f0, 0x07f1, 0x07f3,
- 0x07f4, 0x07f5, 0x07f7, 0x07f8, 0x07fa, 0x07fb, 0x07fd, 0x07ff,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002,
- 0x0003, 0x0004, 0x0005, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x000a, 0x000b, 0x000c, 0x000e, 0x000f, 0x0010, 0x0011, 0x0013,
- 0x0014, 0x0015, 0x0017, 0x0018, 0x001a, 0x001b, 0x001d, 0x001f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002,
- 0x0003, 0x0004, 0x0005, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x000a, 0x000b, 0x000c, 0x000e, 0x000f, 0x0010, 0x0011, 0x0013,
- 0x0014, 0x0015, 0x0017, 0x0018, 0x001a, 0x001b, 0x001d, 0x001f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002,
- 0x0003, 0x0004, 0x0005, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x000a, 0x000b, 0x000c, 0x000e, 0x000f, 0x0010, 0x0011, 0x0013,
- 0x0014, 0x0015, 0x0017, 0x0018, 0x001a, 0x001b, 0x001d, 0x001f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002,
- 0x0003, 0x0004, 0x0005, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x000a, 0x000b, 0x000c, 0x000e, 0x000f, 0x0010, 0x0011, 0x0013,
- 0x0014, 0x0015, 0x0017, 0x0018, 0x001a, 0x001b, 0x001d, 0x001f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002,
- 0x0003, 0x0004, 0x0005, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x000a, 0x000b, 0x000c, 0x000e, 0x000f, 0x0010, 0x0011, 0x0013,
- 0x0014, 0x0015, 0x0017, 0x0018, 0x001a, 0x001b, 0x001d, 0x001f,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x0021, 0x0021, 0x0022, 0x0022,
- 0x0023, 0x0024, 0x0025, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029,
- 0x002a, 0x002b, 0x002c, 0x002e, 0x002f, 0x0030, 0x0031, 0x0033,
- 0x0034, 0x0035, 0x0037, 0x0038, 0x003a, 0x003b, 0x003d, 0x003f,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x0021, 0x0021, 0x0022, 0x0022,
- 0x0023, 0x0024, 0x0025, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029,
- 0x002a, 0x002b, 0x002c, 0x002e, 0x002f, 0x0030, 0x0031, 0x0033,
- 0x0034, 0x0035, 0x0037, 0x0038, 0x003a, 0x003b, 0x003d, 0x003f,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x0021, 0x0021, 0x0022, 0x0022,
- 0x0023, 0x0024, 0x0025, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029,
- 0x002a, 0x002b, 0x002c, 0x002e, 0x002f, 0x0030, 0x0031, 0x0033,
- 0x0034, 0x0035, 0x0037, 0x0038, 0x003a, 0x003b, 0x003d, 0x003f,
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0041, 0x0041, 0x0042, 0x0042,
- 0x0043, 0x0044, 0x0045, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049,
- 0x004a, 0x004b, 0x004c, 0x004e, 0x004f, 0x0050, 0x0051, 0x0053,
- 0x0054, 0x0055, 0x0057, 0x0058, 0x005a, 0x005b, 0x005d, 0x005f,
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0041, 0x0041, 0x0042, 0x0042,
- 0x0043, 0x0044, 0x0045, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049,
- 0x004a, 0x004b, 0x004c, 0x004e, 0x004f, 0x0050, 0x0051, 0x0053,
- 0x0054, 0x0055, 0x0057, 0x0058, 0x005a, 0x005b, 0x005d, 0x005f,
- 0x0060, 0x0060, 0x0060, 0x0060, 0x0061, 0x0061, 0x0062, 0x0062,
- 0x0063, 0x0064, 0x0065, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069,
- 0x006a, 0x006b, 0x006c, 0x006e, 0x006f, 0x0070, 0x0071, 0x0073,
- 0x0074, 0x0075, 0x0077, 0x0078, 0x007a, 0x007b, 0x007d, 0x007f,
- 0x0060, 0x0060, 0x0060, 0x0060, 0x0061, 0x0061, 0x0062, 0x0062,
- 0x0063, 0x0064, 0x0065, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069,
- 0x006a, 0x006b, 0x006c, 0x006e, 0x006f, 0x0070, 0x0071, 0x0073,
- 0x0074, 0x0075, 0x0077, 0x0078, 0x007a, 0x007b, 0x007d, 0x007f,
- 0x0080, 0x0080, 0x0080, 0x0080, 0x0081, 0x0081, 0x0082, 0x0082,
- 0x0083, 0x0084, 0x0085, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089,
- 0x008a, 0x008b, 0x008c, 0x008e, 0x008f, 0x0090, 0x0091, 0x0093,
- 0x0094, 0x0095, 0x0097, 0x0098, 0x009a, 0x009b, 0x009d, 0x009f,
- 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a1, 0x00a1, 0x00a2, 0x00a2,
- 0x00a3, 0x00a4, 0x00a5, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9,
- 0x00aa, 0x00ab, 0x00ac, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b3,
- 0x00b4, 0x00b5, 0x00b7, 0x00b8, 0x00ba, 0x00bb, 0x00bd, 0x00bf,
- 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a1, 0x00a1, 0x00a2, 0x00a2,
- 0x00a3, 0x00a4, 0x00a5, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9,
- 0x00aa, 0x00ab, 0x00ac, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b3,
- 0x00b4, 0x00b5, 0x00b7, 0x00b8, 0x00ba, 0x00bb, 0x00bd, 0x00bf,
- 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c1, 0x00c1, 0x00c2, 0x00c2,
- 0x00c3, 0x00c4, 0x00c5, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9,
- 0x00ca, 0x00cb, 0x00cc, 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d3,
- 0x00d4, 0x00d5, 0x00d7, 0x00d8, 0x00da, 0x00db, 0x00dd, 0x00df,
- 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e1, 0x00e1, 0x00e2, 0x00e2,
- 0x00e3, 0x00e4, 0x00e5, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9,
- 0x00ea, 0x00eb, 0x00ec, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f3,
- 0x00f4, 0x00f5, 0x00f7, 0x00f8, 0x00fa, 0x00fb, 0x00fd, 0x00ff,
- 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e1, 0x00e1, 0x00e2, 0x00e2,
- 0x00e3, 0x00e4, 0x00e5, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9,
- 0x00ea, 0x00eb, 0x00ec, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f3,
- 0x00f4, 0x00f5, 0x00f7, 0x00f8, 0x00fa, 0x00fb, 0x00fd, 0x00ff,
- 0x0100, 0x0100, 0x0100, 0x0100, 0x0101, 0x0101, 0x0102, 0x0102,
- 0x0103, 0x0104, 0x0105, 0x0105, 0x0106, 0x0107, 0x0108, 0x0109,
- 0x010a, 0x010b, 0x010c, 0x010e, 0x010f, 0x0110, 0x0111, 0x0113,
- 0x0114, 0x0115, 0x0117, 0x0118, 0x011a, 0x011b, 0x011d, 0x011f,
- 0x0120, 0x0120, 0x0120, 0x0120, 0x0121, 0x0121, 0x0122, 0x0122,
- 0x0123, 0x0124, 0x0125, 0x0125, 0x0126, 0x0127, 0x0128, 0x0129,
- 0x012a, 0x012b, 0x012c, 0x012e, 0x012f, 0x0130, 0x0131, 0x0133,
- 0x0134, 0x0135, 0x0137, 0x0138, 0x013a, 0x013b, 0x013d, 0x013f,
- 0x0140, 0x0140, 0x0140, 0x0140, 0x0141, 0x0141, 0x0142, 0x0142,
- 0x0143, 0x0144, 0x0145, 0x0145, 0x0146, 0x0147, 0x0148, 0x0149,
- 0x014a, 0x014b, 0x014c, 0x014e, 0x014f, 0x0150, 0x0151, 0x0153,
- 0x0154, 0x0155, 0x0157, 0x0158, 0x015a, 0x015b, 0x015d, 0x015f,
- 0x0140, 0x0140, 0x0140, 0x0140, 0x0141, 0x0141, 0x0142, 0x0142,
- 0x0143, 0x0144, 0x0145, 0x0145, 0x0146, 0x0147, 0x0148, 0x0149,
- 0x014a, 0x014b, 0x014c, 0x014e, 0x014f, 0x0150, 0x0151, 0x0153,
- 0x0154, 0x0155, 0x0157, 0x0158, 0x015a, 0x015b, 0x015d, 0x015f,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0161, 0x0161, 0x0162, 0x0162,
- 0x0163, 0x0164, 0x0165, 0x0165, 0x0166, 0x0167, 0x0168, 0x0169,
- 0x016a, 0x016b, 0x016c, 0x016e, 0x016f, 0x0170, 0x0171, 0x0173,
- 0x0174, 0x0175, 0x0177, 0x0178, 0x017a, 0x017b, 0x017d, 0x017f,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0181, 0x0181, 0x0182, 0x0182,
- 0x0183, 0x0184, 0x0185, 0x0185, 0x0186, 0x0187, 0x0188, 0x0189,
- 0x018a, 0x018b, 0x018c, 0x018e, 0x018f, 0x0190, 0x0191, 0x0193,
- 0x0194, 0x0195, 0x0197, 0x0198, 0x019a, 0x019b, 0x019d, 0x019f,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a1, 0x01a1, 0x01a2, 0x01a2,
- 0x01a3, 0x01a4, 0x01a5, 0x01a5, 0x01a6, 0x01a7, 0x01a8, 0x01a9,
- 0x01aa, 0x01ab, 0x01ac, 0x01ae, 0x01af, 0x01b0, 0x01b1, 0x01b3,
- 0x01b4, 0x01b5, 0x01b7, 0x01b8, 0x01ba, 0x01bb, 0x01bd, 0x01bf,
- 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c1, 0x01c1, 0x01c2, 0x01c2,
- 0x01c3, 0x01c4, 0x01c5, 0x01c5, 0x01c6, 0x01c7, 0x01c8, 0x01c9,
- 0x01ca, 0x01cb, 0x01cc, 0x01ce, 0x01cf, 0x01d0, 0x01d1, 0x01d3,
- 0x01d4, 0x01d5, 0x01d7, 0x01d8, 0x01da, 0x01db, 0x01dd, 0x01df,
- 0x01e0, 0x01e0, 0x01e0, 0x01e0, 0x01e1, 0x01e1, 0x01e2, 0x01e2,
- 0x01e3, 0x01e4, 0x01e5, 0x01e5, 0x01e6, 0x01e7, 0x01e8, 0x01e9,
- 0x01ea, 0x01eb, 0x01ec, 0x01ee, 0x01ef, 0x01f0, 0x01f1, 0x01f3,
- 0x01f4, 0x01f5, 0x01f7, 0x01f8, 0x01fa, 0x01fb, 0x01fd, 0x01ff,
- 0x0200, 0x0200, 0x0200, 0x0200, 0x0201, 0x0201, 0x0202, 0x0202,
- 0x0203, 0x0204, 0x0205, 0x0205, 0x0206, 0x0207, 0x0208, 0x0209,
- 0x020a, 0x020b, 0x020c, 0x020e, 0x020f, 0x0210, 0x0211, 0x0213,
- 0x0214, 0x0215, 0x0217, 0x0218, 0x021a, 0x021b, 0x021d, 0x021f,
- 0x0220, 0x0220, 0x0220, 0x0220, 0x0221, 0x0221, 0x0222, 0x0222,
- 0x0223, 0x0224, 0x0225, 0x0225, 0x0226, 0x0227, 0x0228, 0x0229,
- 0x022a, 0x022b, 0x022c, 0x022e, 0x022f, 0x0230, 0x0231, 0x0233,
- 0x0234, 0x0235, 0x0237, 0x0238, 0x023a, 0x023b, 0x023d, 0x023f,
- 0x0240, 0x0240, 0x0240, 0x0240, 0x0241, 0x0241, 0x0242, 0x0242,
- 0x0243, 0x0244, 0x0245, 0x0245, 0x0246, 0x0247, 0x0248, 0x0249,
- 0x024a, 0x024b, 0x024c, 0x024e, 0x024f, 0x0250, 0x0251, 0x0253,
- 0x0254, 0x0255, 0x0257, 0x0258, 0x025a, 0x025b, 0x025d, 0x025f,
- 0x0260, 0x0260, 0x0260, 0x0260, 0x0261, 0x0261, 0x0262, 0x0262,
- 0x0263, 0x0264, 0x0265, 0x0265, 0x0266, 0x0267, 0x0268, 0x0269,
- 0x026a, 0x026b, 0x026c, 0x026e, 0x026f, 0x0270, 0x0271, 0x0273,
- 0x0274, 0x0275, 0x0277, 0x0278, 0x027a, 0x027b, 0x027d, 0x027f,
- 0x0280, 0x0280, 0x0280, 0x0280, 0x0281, 0x0281, 0x0282, 0x0282,
- 0x0283, 0x0284, 0x0285, 0x0285, 0x0286, 0x0287, 0x0288, 0x0289,
- 0x028a, 0x028b, 0x028c, 0x028e, 0x028f, 0x0290, 0x0291, 0x0293,
- 0x0294, 0x0295, 0x0297, 0x0298, 0x029a, 0x029b, 0x029d, 0x029f,
- 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a1, 0x02a1, 0x02a2, 0x02a2,
- 0x02a3, 0x02a4, 0x02a5, 0x02a5, 0x02a6, 0x02a7, 0x02a8, 0x02a9,
- 0x02aa, 0x02ab, 0x02ac, 0x02ae, 0x02af, 0x02b0, 0x02b1, 0x02b3,
- 0x02b4, 0x02b5, 0x02b7, 0x02b8, 0x02ba, 0x02bb, 0x02bd, 0x02bf,
- 0x02c0, 0x02c0, 0x02c0, 0x02c0, 0x02c1, 0x02c1, 0x02c2, 0x02c2,
- 0x02c3, 0x02c4, 0x02c5, 0x02c5, 0x02c6, 0x02c7, 0x02c8, 0x02c9,
- 0x02ca, 0x02cb, 0x02cc, 0x02ce, 0x02cf, 0x02d0, 0x02d1, 0x02d3,
- 0x02d4, 0x02d5, 0x02d7, 0x02d8, 0x02da, 0x02db, 0x02dd, 0x02df,
- 0x02e0, 0x02e0, 0x02e0, 0x02e0, 0x02e1, 0x02e1, 0x02e2, 0x02e2,
- 0x02e3, 0x02e4, 0x02e5, 0x02e5, 0x02e6, 0x02e7, 0x02e8, 0x02e9,
- 0x02ea, 0x02eb, 0x02ec, 0x02ee, 0x02ef, 0x02f0, 0x02f1, 0x02f3,
- 0x02f4, 0x02f5, 0x02f7, 0x02f8, 0x02fa, 0x02fb, 0x02fd, 0x02ff,
- 0x0300, 0x0300, 0x0300, 0x0300, 0x0301, 0x0301, 0x0302, 0x0302,
- 0x0303, 0x0304, 0x0305, 0x0305, 0x0306, 0x0307, 0x0308, 0x0309,
- 0x030a, 0x030b, 0x030c, 0x030e, 0x030f, 0x0310, 0x0311, 0x0313,
- 0x0314, 0x0315, 0x0317, 0x0318, 0x031a, 0x031b, 0x031d, 0x031f,
- 0x0320, 0x0320, 0x0320, 0x0320, 0x0321, 0x0321, 0x0322, 0x0322,
- 0x0323, 0x0324, 0x0325, 0x0325, 0x0326, 0x0327, 0x0328, 0x0329,
- 0x032a, 0x032b, 0x032c, 0x032e, 0x032f, 0x0330, 0x0331, 0x0333,
- 0x0334, 0x0335, 0x0337, 0x0338, 0x033a, 0x033b, 0x033d, 0x033f,
- 0x0340, 0x0340, 0x0340, 0x0340, 0x0341, 0x0341, 0x0342, 0x0342,
- 0x0343, 0x0344, 0x0345, 0x0345, 0x0346, 0x0347, 0x0348, 0x0349,
- 0x034a, 0x034b, 0x034c, 0x034e, 0x034f, 0x0350, 0x0351, 0x0353,
- 0x0354, 0x0355, 0x0357, 0x0358, 0x035a, 0x035b, 0x035d, 0x035f,
- 0x0380, 0x0380, 0x0380, 0x0380, 0x0381, 0x0381, 0x0382, 0x0382,
- 0x0383, 0x0384, 0x0385, 0x0385, 0x0386, 0x0387, 0x0388, 0x0389,
- 0x038a, 0x038b, 0x038c, 0x038e, 0x038f, 0x0390, 0x0391, 0x0393,
- 0x0394, 0x0395, 0x0397, 0x0398, 0x039a, 0x039b, 0x039d, 0x039f,
- 0x03a0, 0x03a0, 0x03a0, 0x03a0, 0x03a1, 0x03a1, 0x03a2, 0x03a2,
- 0x03a3, 0x03a4, 0x03a5, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
- 0x03aa, 0x03ab, 0x03ac, 0x03ae, 0x03af, 0x03b0, 0x03b1, 0x03b3,
- 0x03b4, 0x03b5, 0x03b7, 0x03b8, 0x03ba, 0x03bb, 0x03bd, 0x03bf,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c1, 0x03c1, 0x03c2, 0x03c2,
- 0x03c3, 0x03c4, 0x03c5, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
- 0x03ca, 0x03cb, 0x03cc, 0x03ce, 0x03cf, 0x03d0, 0x03d1, 0x03d3,
- 0x03d4, 0x03d5, 0x03d7, 0x03d8, 0x03da, 0x03db, 0x03dd, 0x03df,
- 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e1, 0x03e1, 0x03e2, 0x03e2,
- 0x03e3, 0x03e4, 0x03e5, 0x03e5, 0x03e6, 0x03e7, 0x03e8, 0x03e9,
- 0x03ea, 0x03eb, 0x03ec, 0x03ee, 0x03ef, 0x03f0, 0x03f1, 0x03f3,
- 0x03f4, 0x03f5, 0x03f7, 0x03f8, 0x03fa, 0x03fb, 0x03fd, 0x03ff,
- 0x0400, 0x0400, 0x0400, 0x0400, 0x0401, 0x0401, 0x0402, 0x0402,
- 0x0403, 0x0404, 0x0405, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409,
- 0x040a, 0x040b, 0x040c, 0x040e, 0x040f, 0x0410, 0x0411, 0x0413,
- 0x0414, 0x0415, 0x0417, 0x0418, 0x041a, 0x041b, 0x041d, 0x041f,
- 0x0440, 0x0440, 0x0440, 0x0440, 0x0441, 0x0441, 0x0442, 0x0442,
- 0x0443, 0x0444, 0x0445, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449,
- 0x044a, 0x044b, 0x044c, 0x044e, 0x044f, 0x0450, 0x0451, 0x0453,
- 0x0454, 0x0455, 0x0457, 0x0458, 0x045a, 0x045b, 0x045d, 0x045f,
- 0x0460, 0x0460, 0x0460, 0x0460, 0x0461, 0x0461, 0x0462, 0x0462,
- 0x0463, 0x0464, 0x0465, 0x0465, 0x0466, 0x0467, 0x0468, 0x0469,
- 0x046a, 0x046b, 0x046c, 0x046e, 0x046f, 0x0470, 0x0471, 0x0473,
- 0x0474, 0x0475, 0x0477, 0x0478, 0x047a, 0x047b, 0x047d, 0x047f,
- 0x0480, 0x0480, 0x0480, 0x0480, 0x0481, 0x0481, 0x0482, 0x0482,
- 0x0483, 0x0484, 0x0485, 0x0485, 0x0486, 0x0487, 0x0488, 0x0489,
- 0x048a, 0x048b, 0x048c, 0x048e, 0x048f, 0x0490, 0x0491, 0x0493,
- 0x0494, 0x0495, 0x0497, 0x0498, 0x049a, 0x049b, 0x049d, 0x049f,
- 0x04c0, 0x04c0, 0x04c0, 0x04c0, 0x04c1, 0x04c1, 0x04c2, 0x04c2,
- 0x04c3, 0x04c4, 0x04c5, 0x04c5, 0x04c6, 0x04c7, 0x04c8, 0x04c9,
- 0x04ca, 0x04cb, 0x04cc, 0x04ce, 0x04cf, 0x04d0, 0x04d1, 0x04d3,
- 0x04d4, 0x04d5, 0x04d7, 0x04d8, 0x04da, 0x04db, 0x04dd, 0x04df,
- 0x04e0, 0x04e0, 0x04e0, 0x04e0, 0x04e1, 0x04e1, 0x04e2, 0x04e2,
- 0x04e3, 0x04e4, 0x04e5, 0x04e5, 0x04e6, 0x04e7, 0x04e8, 0x04e9,
- 0x04ea, 0x04eb, 0x04ec, 0x04ee, 0x04ef, 0x04f0, 0x04f1, 0x04f3,
- 0x04f4, 0x04f5, 0x04f7, 0x04f8, 0x04fa, 0x04fb, 0x04fd, 0x04ff,
- 0x0500, 0x0500, 0x0500, 0x0500, 0x0501, 0x0501, 0x0502, 0x0502,
- 0x0503, 0x0504, 0x0505, 0x0505, 0x0506, 0x0507, 0x0508, 0x0509,
- 0x050a, 0x050b, 0x050c, 0x050e, 0x050f, 0x0510, 0x0511, 0x0513,
- 0x0514, 0x0515, 0x0517, 0x0518, 0x051a, 0x051b, 0x051d, 0x051f,
- 0x0540, 0x0540, 0x0540, 0x0540, 0x0541, 0x0541, 0x0542, 0x0542,
- 0x0543, 0x0544, 0x0545, 0x0545, 0x0546, 0x0547, 0x0548, 0x0549,
- 0x054a, 0x054b, 0x054c, 0x054e, 0x054f, 0x0550, 0x0551, 0x0553,
- 0x0554, 0x0555, 0x0557, 0x0558, 0x055a, 0x055b, 0x055d, 0x055f,
- 0x0560, 0x0560, 0x0560, 0x0560, 0x0561, 0x0561, 0x0562, 0x0562,
- 0x0563, 0x0564, 0x0565, 0x0565, 0x0566, 0x0567, 0x0568, 0x0569,
- 0x056a, 0x056b, 0x056c, 0x056e, 0x056f, 0x0570, 0x0571, 0x0573,
- 0x0574, 0x0575, 0x0577, 0x0578, 0x057a, 0x057b, 0x057d, 0x057f,
- 0x0580, 0x0580, 0x0580, 0x0580, 0x0581, 0x0581, 0x0582, 0x0582,
- 0x0583, 0x0584, 0x0585, 0x0585, 0x0586, 0x0587, 0x0588, 0x0589,
- 0x058a, 0x058b, 0x058c, 0x058e, 0x058f, 0x0590, 0x0591, 0x0593,
- 0x0594, 0x0595, 0x0597, 0x0598, 0x059a, 0x059b, 0x059d, 0x059f,
- 0x05c0, 0x05c0, 0x05c0, 0x05c0, 0x05c1, 0x05c1, 0x05c2, 0x05c2,
- 0x05c3, 0x05c4, 0x05c5, 0x05c5, 0x05c6, 0x05c7, 0x05c8, 0x05c9,
- 0x05ca, 0x05cb, 0x05cc, 0x05ce, 0x05cf, 0x05d0, 0x05d1, 0x05d3,
- 0x05d4, 0x05d5, 0x05d7, 0x05d8, 0x05da, 0x05db, 0x05dd, 0x05df,
- 0x05e0, 0x05e0, 0x05e0, 0x05e0, 0x05e1, 0x05e1, 0x05e2, 0x05e2,
- 0x05e3, 0x05e4, 0x05e5, 0x05e5, 0x05e6, 0x05e7, 0x05e8, 0x05e9,
- 0x05ea, 0x05eb, 0x05ec, 0x05ee, 0x05ef, 0x05f0, 0x05f1, 0x05f3,
- 0x05f4, 0x05f5, 0x05f7, 0x05f8, 0x05fa, 0x05fb, 0x05fd, 0x05ff,
- 0x0620, 0x0620, 0x0620, 0x0620, 0x0621, 0x0621, 0x0622, 0x0622,
- 0x0623, 0x0624, 0x0625, 0x0625, 0x0626, 0x0627, 0x0628, 0x0629,
- 0x062a, 0x062b, 0x062c, 0x062e, 0x062f, 0x0630, 0x0631, 0x0633,
- 0x0634, 0x0635, 0x0637, 0x0638, 0x063a, 0x063b, 0x063d, 0x063f,
- 0x0640, 0x0640, 0x0640, 0x0640, 0x0641, 0x0641, 0x0642, 0x0642,
- 0x0643, 0x0644, 0x0645, 0x0645, 0x0646, 0x0647, 0x0648, 0x0649,
- 0x064a, 0x064b, 0x064c, 0x064e, 0x064f, 0x0650, 0x0651, 0x0653,
- 0x0654, 0x0655, 0x0657, 0x0658, 0x065a, 0x065b, 0x065d, 0x065f,
- 0x0680, 0x0680, 0x0680, 0x0680, 0x0681, 0x0681, 0x0682, 0x0682,
- 0x0683, 0x0684, 0x0685, 0x0685, 0x0686, 0x0687, 0x0688, 0x0689,
- 0x068a, 0x068b, 0x068c, 0x068e, 0x068f, 0x0690, 0x0691, 0x0693,
- 0x0694, 0x0695, 0x0697, 0x0698, 0x069a, 0x069b, 0x069d, 0x069f,
- 0x06a0, 0x06a0, 0x06a0, 0x06a0, 0x06a1, 0x06a1, 0x06a2, 0x06a2,
- 0x06a3, 0x06a4, 0x06a5, 0x06a5, 0x06a6, 0x06a7, 0x06a8, 0x06a9,
- 0x06aa, 0x06ab, 0x06ac, 0x06ae, 0x06af, 0x06b0, 0x06b1, 0x06b3,
- 0x06b4, 0x06b5, 0x06b7, 0x06b8, 0x06ba, 0x06bb, 0x06bd, 0x06bf,
- 0x06e0, 0x06e0, 0x06e0, 0x06e0, 0x06e1, 0x06e1, 0x06e2, 0x06e2,
- 0x06e3, 0x06e4, 0x06e5, 0x06e5, 0x06e6, 0x06e7, 0x06e8, 0x06e9,
- 0x06ea, 0x06eb, 0x06ec, 0x06ee, 0x06ef, 0x06f0, 0x06f1, 0x06f3,
- 0x06f4, 0x06f5, 0x06f7, 0x06f8, 0x06fa, 0x06fb, 0x06fd, 0x06ff,
- 0x0700, 0x0700, 0x0700, 0x0700, 0x0701, 0x0701, 0x0702, 0x0702,
- 0x0703, 0x0704, 0x0705, 0x0705, 0x0706, 0x0707, 0x0708, 0x0709,
- 0x070a, 0x070b, 0x070c, 0x070e, 0x070f, 0x0710, 0x0711, 0x0713,
- 0x0714, 0x0715, 0x0717, 0x0718, 0x071a, 0x071b, 0x071d, 0x071f,
- 0x0740, 0x0740, 0x0740, 0x0740, 0x0741, 0x0741, 0x0742, 0x0742,
- 0x0743, 0x0744, 0x0745, 0x0745, 0x0746, 0x0747, 0x0748, 0x0749,
- 0x074a, 0x074b, 0x074c, 0x074e, 0x074f, 0x0750, 0x0751, 0x0753,
- 0x0754, 0x0755, 0x0757, 0x0758, 0x075a, 0x075b, 0x075d, 0x075f,
- 0x0760, 0x0760, 0x0760, 0x0760, 0x0761, 0x0761, 0x0762, 0x0762,
- 0x0763, 0x0764, 0x0765, 0x0765, 0x0766, 0x0767, 0x0768, 0x0769,
- 0x076a, 0x076b, 0x076c, 0x076e, 0x076f, 0x0770, 0x0771, 0x0773,
- 0x0774, 0x0775, 0x0777, 0x0778, 0x077a, 0x077b, 0x077d, 0x077f,
- 0x07a0, 0x07a0, 0x07a0, 0x07a0, 0x07a1, 0x07a1, 0x07a2, 0x07a2,
- 0x07a3, 0x07a4, 0x07a5, 0x07a5, 0x07a6, 0x07a7, 0x07a8, 0x07a9,
- 0x07aa, 0x07ab, 0x07ac, 0x07ae, 0x07af, 0x07b0, 0x07b1, 0x07b3,
- 0x07b4, 0x07b5, 0x07b7, 0x07b8, 0x07ba, 0x07bb, 0x07bd, 0x07bf,
- 0x07e0, 0x07e0, 0x07e0, 0x07e0, 0x07e1, 0x07e1, 0x07e2, 0x07e2,
- 0x07e3, 0x07e4, 0x07e5, 0x07e5, 0x07e6, 0x07e7, 0x07e8, 0x07e9,
- 0x07ea, 0x07eb, 0x07ec, 0x07ee, 0x07ef, 0x07f0, 0x07f1, 0x07f3,
- 0x07f4, 0x07f5, 0x07f7, 0x07f8, 0x07fa, 0x07fb, 0x07fd, 0x07ff,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002,
- 0x0003, 0x0004, 0x0005, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x000a, 0x000b, 0x000c, 0x000e, 0x000f, 0x0010, 0x0011, 0x0013,
- 0x0014, 0x0015, 0x0017, 0x0018, 0x001a, 0x001b, 0x001d, 0x001f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002,
- 0x0003, 0x0004, 0x0005, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x000a, 0x000b, 0x000c, 0x000e, 0x000f, 0x0010, 0x0011, 0x0013,
- 0x0014, 0x0015, 0x0017, 0x0018, 0x001a, 0x001b, 0x001d, 0x001f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002,
- 0x0003, 0x0004, 0x0005, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x000a, 0x000b, 0x000c, 0x000e, 0x000f, 0x0010, 0x0011, 0x0013,
- 0x0014, 0x0015, 0x0017, 0x0018, 0x001a, 0x001b, 0x001d, 0x001f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002,
- 0x0003, 0x0004, 0x0005, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x000a, 0x000b, 0x000c, 0x000e, 0x000f, 0x0010, 0x0011, 0x0013,
- 0x0014, 0x0015, 0x0017, 0x0018, 0x001a, 0x001b, 0x001d, 0x001f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0002,
- 0x0003, 0x0004, 0x0005, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009,
- 0x000a, 0x000b, 0x000c, 0x000e, 0x000f, 0x0010, 0x0011, 0x0013,
- 0x0014, 0x0015, 0x0017, 0x0018, 0x001a, 0x001b, 0x001d, 0x001f,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x0021, 0x0021, 0x0022, 0x0022,
- 0x0023, 0x0024, 0x0025, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029,
- 0x002a, 0x002b, 0x002c, 0x002e, 0x002f, 0x0030, 0x0031, 0x0033,
- 0x0034, 0x0035, 0x0037, 0x0038, 0x003a, 0x003b, 0x003d, 0x003f,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x0021, 0x0021, 0x0022, 0x0022,
- 0x0023, 0x0024, 0x0025, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029,
- 0x002a, 0x002b, 0x002c, 0x002e, 0x002f, 0x0030, 0x0031, 0x0033,
- 0x0034, 0x0035, 0x0037, 0x0038, 0x003a, 0x003b, 0x003d, 0x003f,
- 0x0020, 0x0020, 0x0020, 0x0020, 0x0021, 0x0021, 0x0022, 0x0022,
- 0x0023, 0x0024, 0x0025, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029,
- 0x002a, 0x002b, 0x002c, 0x002e, 0x002f, 0x0030, 0x0031, 0x0033,
- 0x0034, 0x0035, 0x0037, 0x0038, 0x003a, 0x003b, 0x003d, 0x003f,
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0041, 0x0041, 0x0042, 0x0042,
- 0x0043, 0x0044, 0x0045, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049,
- 0x004a, 0x004b, 0x004c, 0x004e, 0x004f, 0x0050, 0x0051, 0x0053,
- 0x0054, 0x0055, 0x0057, 0x0058, 0x005a, 0x005b, 0x005d, 0x005f,
- 0x0040, 0x0040, 0x0040, 0x0040, 0x0041, 0x0041, 0x0042, 0x0042,
- 0x0043, 0x0044, 0x0045, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049,
- 0x004a, 0x004b, 0x004c, 0x004e, 0x004f, 0x0050, 0x0051, 0x0053,
- 0x0054, 0x0055, 0x0057, 0x0058, 0x005a, 0x005b, 0x005d, 0x005f,
- 0x0060, 0x0060, 0x0060, 0x0060, 0x0061, 0x0061, 0x0062, 0x0062,
- 0x0063, 0x0064, 0x0065, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069,
- 0x006a, 0x006b, 0x006c, 0x006e, 0x006f, 0x0070, 0x0071, 0x0073,
- 0x0074, 0x0075, 0x0077, 0x0078, 0x007a, 0x007b, 0x007d, 0x007f,
- 0x0060, 0x0060, 0x0060, 0x0060, 0x0061, 0x0061, 0x0062, 0x0062,
- 0x0063, 0x0064, 0x0065, 0x0065, 0x0066, 0x0067, 0x0068, 0x0069,
- 0x006a, 0x006b, 0x006c, 0x006e, 0x006f, 0x0070, 0x0071, 0x0073,
- 0x0074, 0x0075, 0x0077, 0x0078, 0x007a, 0x007b, 0x007d, 0x007f,
- 0x0080, 0x0080, 0x0080, 0x0080, 0x0081, 0x0081, 0x0082, 0x0082,
- 0x0083, 0x0084, 0x0085, 0x0085, 0x0086, 0x0087, 0x0088, 0x0089,
- 0x008a, 0x008b, 0x008c, 0x008e, 0x008f, 0x0090, 0x0091, 0x0093,
- 0x0094, 0x0095, 0x0097, 0x0098, 0x009a, 0x009b, 0x009d, 0x009f,
- 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a1, 0x00a1, 0x00a2, 0x00a2,
- 0x00a3, 0x00a4, 0x00a5, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9,
- 0x00aa, 0x00ab, 0x00ac, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b3,
- 0x00b4, 0x00b5, 0x00b7, 0x00b8, 0x00ba, 0x00bb, 0x00bd, 0x00bf,
- 0x00a0, 0x00a0, 0x00a0, 0x00a0, 0x00a1, 0x00a1, 0x00a2, 0x00a2,
- 0x00a3, 0x00a4, 0x00a5, 0x00a5, 0x00a6, 0x00a7, 0x00a8, 0x00a9,
- 0x00aa, 0x00ab, 0x00ac, 0x00ae, 0x00af, 0x00b0, 0x00b1, 0x00b3,
- 0x00b4, 0x00b5, 0x00b7, 0x00b8, 0x00ba, 0x00bb, 0x00bd, 0x00bf,
- 0x00c0, 0x00c0, 0x00c0, 0x00c0, 0x00c1, 0x00c1, 0x00c2, 0x00c2,
- 0x00c3, 0x00c4, 0x00c5, 0x00c5, 0x00c6, 0x00c7, 0x00c8, 0x00c9,
- 0x00ca, 0x00cb, 0x00cc, 0x00ce, 0x00cf, 0x00d0, 0x00d1, 0x00d3,
- 0x00d4, 0x00d5, 0x00d7, 0x00d8, 0x00da, 0x00db, 0x00dd, 0x00df,
- 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e1, 0x00e1, 0x00e2, 0x00e2,
- 0x00e3, 0x00e4, 0x00e5, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9,
- 0x00ea, 0x00eb, 0x00ec, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f3,
- 0x00f4, 0x00f5, 0x00f7, 0x00f8, 0x00fa, 0x00fb, 0x00fd, 0x00ff,
- 0x00e0, 0x00e0, 0x00e0, 0x00e0, 0x00e1, 0x00e1, 0x00e2, 0x00e2,
- 0x00e3, 0x00e4, 0x00e5, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9,
- 0x00ea, 0x00eb, 0x00ec, 0x00ee, 0x00ef, 0x00f0, 0x00f1, 0x00f3,
- 0x00f4, 0x00f5, 0x00f7, 0x00f8, 0x00fa, 0x00fb, 0x00fd, 0x00ff,
- 0x0100, 0x0100, 0x0100, 0x0100, 0x0101, 0x0101, 0x0102, 0x0102,
- 0x0103, 0x0104, 0x0105, 0x0105, 0x0106, 0x0107, 0x0108, 0x0109,
- 0x010a, 0x010b, 0x010c, 0x010e, 0x010f, 0x0110, 0x0111, 0x0113,
- 0x0114, 0x0115, 0x0117, 0x0118, 0x011a, 0x011b, 0x011d, 0x011f,
- 0x0120, 0x0120, 0x0120, 0x0120, 0x0121, 0x0121, 0x0122, 0x0122,
- 0x0123, 0x0124, 0x0125, 0x0125, 0x0126, 0x0127, 0x0128, 0x0129,
- 0x012a, 0x012b, 0x012c, 0x012e, 0x012f, 0x0130, 0x0131, 0x0133,
- 0x0134, 0x0135, 0x0137, 0x0138, 0x013a, 0x013b, 0x013d, 0x013f,
- 0x0140, 0x0140, 0x0140, 0x0140, 0x0141, 0x0141, 0x0142, 0x0142,
- 0x0143, 0x0144, 0x0145, 0x0145, 0x0146, 0x0147, 0x0148, 0x0149,
- 0x014a, 0x014b, 0x014c, 0x014e, 0x014f, 0x0150, 0x0151, 0x0153,
- 0x0154, 0x0155, 0x0157, 0x0158, 0x015a, 0x015b, 0x015d, 0x015f,
- 0x0140, 0x0140, 0x0140, 0x0140, 0x0141, 0x0141, 0x0142, 0x0142,
- 0x0143, 0x0144, 0x0145, 0x0145, 0x0146, 0x0147, 0x0148, 0x0149,
- 0x014a, 0x014b, 0x014c, 0x014e, 0x014f, 0x0150, 0x0151, 0x0153,
- 0x0154, 0x0155, 0x0157, 0x0158, 0x015a, 0x015b, 0x015d, 0x015f,
- 0x0160, 0x0160, 0x0160, 0x0160, 0x0161, 0x0161, 0x0162, 0x0162,
- 0x0163, 0x0164, 0x0165, 0x0165, 0x0166, 0x0167, 0x0168, 0x0169,
- 0x016a, 0x016b, 0x016c, 0x016e, 0x016f, 0x0170, 0x0171, 0x0173,
- 0x0174, 0x0175, 0x0177, 0x0178, 0x017a, 0x017b, 0x017d, 0x017f,
- 0x0180, 0x0180, 0x0180, 0x0180, 0x0181, 0x0181, 0x0182, 0x0182,
- 0x0183, 0x0184, 0x0185, 0x0185, 0x0186, 0x0187, 0x0188, 0x0189,
- 0x018a, 0x018b, 0x018c, 0x018e, 0x018f, 0x0190, 0x0191, 0x0193,
- 0x0194, 0x0195, 0x0197, 0x0198, 0x019a, 0x019b, 0x019d, 0x019f,
- 0x01a0, 0x01a0, 0x01a0, 0x01a0, 0x01a1, 0x01a1, 0x01a2, 0x01a2,
- 0x01a3, 0x01a4, 0x01a5, 0x01a5, 0x01a6, 0x01a7, 0x01a8, 0x01a9,
- 0x01aa, 0x01ab, 0x01ac, 0x01ae, 0x01af, 0x01b0, 0x01b1, 0x01b3,
- 0x01b4, 0x01b5, 0x01b7, 0x01b8, 0x01ba, 0x01bb, 0x01bd, 0x01bf,
- 0x01c0, 0x01c0, 0x01c0, 0x01c0, 0x01c1, 0x01c1, 0x01c2, 0x01c2,
- 0x01c3, 0x01c4, 0x01c5, 0x01c5, 0x01c6, 0x01c7, 0x01c8, 0x01c9,
- 0x01ca, 0x01cb, 0x01cc, 0x01ce, 0x01cf, 0x01d0, 0x01d1, 0x01d3,
- 0x01d4, 0x01d5, 0x01d7, 0x01d8, 0x01da, 0x01db, 0x01dd, 0x01df,
- 0x01e0, 0x01e0, 0x01e0, 0x01e0, 0x01e1, 0x01e1, 0x01e2, 0x01e2,
- 0x01e3, 0x01e4, 0x01e5, 0x01e5, 0x01e6, 0x01e7, 0x01e8, 0x01e9,
- 0x01ea, 0x01eb, 0x01ec, 0x01ee, 0x01ef, 0x01f0, 0x01f1, 0x01f3,
- 0x01f4, 0x01f5, 0x01f7, 0x01f8, 0x01fa, 0x01fb, 0x01fd, 0x01ff,
- 0x0200, 0x0200, 0x0200, 0x0200, 0x0201, 0x0201, 0x0202, 0x0202,
- 0x0203, 0x0204, 0x0205, 0x0205, 0x0206, 0x0207, 0x0208, 0x0209,
- 0x020a, 0x020b, 0x020c, 0x020e, 0x020f, 0x0210, 0x0211, 0x0213,
- 0x0214, 0x0215, 0x0217, 0x0218, 0x021a, 0x021b, 0x021d, 0x021f,
- 0x0220, 0x0220, 0x0220, 0x0220, 0x0221, 0x0221, 0x0222, 0x0222,
- 0x0223, 0x0224, 0x0225, 0x0225, 0x0226, 0x0227, 0x0228, 0x0229,
- 0x022a, 0x022b, 0x022c, 0x022e, 0x022f, 0x0230, 0x0231, 0x0233,
- 0x0234, 0x0235, 0x0237, 0x0238, 0x023a, 0x023b, 0x023d, 0x023f,
- 0x0240, 0x0240, 0x0240, 0x0240, 0x0241, 0x0241, 0x0242, 0x0242,
- 0x0243, 0x0244, 0x0245, 0x0245, 0x0246, 0x0247, 0x0248, 0x0249,
- 0x024a, 0x024b, 0x024c, 0x024e, 0x024f, 0x0250, 0x0251, 0x0253,
- 0x0254, 0x0255, 0x0257, 0x0258, 0x025a, 0x025b, 0x025d, 0x025f,
- 0x0260, 0x0260, 0x0260, 0x0260, 0x0261, 0x0261, 0x0262, 0x0262,
- 0x0263, 0x0264, 0x0265, 0x0265, 0x0266, 0x0267, 0x0268, 0x0269,
- 0x026a, 0x026b, 0x026c, 0x026e, 0x026f, 0x0270, 0x0271, 0x0273,
- 0x0274, 0x0275, 0x0277, 0x0278, 0x027a, 0x027b, 0x027d, 0x027f,
- 0x0280, 0x0280, 0x0280, 0x0280, 0x0281, 0x0281, 0x0282, 0x0282,
- 0x0283, 0x0284, 0x0285, 0x0285, 0x0286, 0x0287, 0x0288, 0x0289,
- 0x028a, 0x028b, 0x028c, 0x028e, 0x028f, 0x0290, 0x0291, 0x0293,
- 0x0294, 0x0295, 0x0297, 0x0298, 0x029a, 0x029b, 0x029d, 0x029f,
- 0x02a0, 0x02a0, 0x02a0, 0x02a0, 0x02a1, 0x02a1, 0x02a2, 0x02a2,
- 0x02a3, 0x02a4, 0x02a5, 0x02a5, 0x02a6, 0x02a7, 0x02a8, 0x02a9,
- 0x02aa, 0x02ab, 0x02ac, 0x02ae, 0x02af, 0x02b0, 0x02b1, 0x02b3,
- 0x02b4, 0x02b5, 0x02b7, 0x02b8, 0x02ba, 0x02bb, 0x02bd, 0x02bf,
- 0x02c0, 0x02c0, 0x02c0, 0x02c0, 0x02c1, 0x02c1, 0x02c2, 0x02c2,
- 0x02c3, 0x02c4, 0x02c5, 0x02c5, 0x02c6, 0x02c7, 0x02c8, 0x02c9,
- 0x02ca, 0x02cb, 0x02cc, 0x02ce, 0x02cf, 0x02d0, 0x02d1, 0x02d3,
- 0x02d4, 0x02d5, 0x02d7, 0x02d8, 0x02da, 0x02db, 0x02dd, 0x02df,
- 0x02e0, 0x02e0, 0x02e0, 0x02e0, 0x02e1, 0x02e1, 0x02e2, 0x02e2,
- 0x02e3, 0x02e4, 0x02e5, 0x02e5, 0x02e6, 0x02e7, 0x02e8, 0x02e9,
- 0x02ea, 0x02eb, 0x02ec, 0x02ee, 0x02ef, 0x02f0, 0x02f1, 0x02f3,
- 0x02f4, 0x02f5, 0x02f7, 0x02f8, 0x02fa, 0x02fb, 0x02fd, 0x02ff,
- 0x0300, 0x0300, 0x0300, 0x0300, 0x0301, 0x0301, 0x0302, 0x0302,
- 0x0303, 0x0304, 0x0305, 0x0305, 0x0306, 0x0307, 0x0308, 0x0309,
- 0x030a, 0x030b, 0x030c, 0x030e, 0x030f, 0x0310, 0x0311, 0x0313,
- 0x0314, 0x0315, 0x0317, 0x0318, 0x031a, 0x031b, 0x031d, 0x031f,
- 0x0320, 0x0320, 0x0320, 0x0320, 0x0321, 0x0321, 0x0322, 0x0322,
- 0x0323, 0x0324, 0x0325, 0x0325, 0x0326, 0x0327, 0x0328, 0x0329,
- 0x032a, 0x032b, 0x032c, 0x032e, 0x032f, 0x0330, 0x0331, 0x0333,
- 0x0334, 0x0335, 0x0337, 0x0338, 0x033a, 0x033b, 0x033d, 0x033f,
- 0x0340, 0x0340, 0x0340, 0x0340, 0x0341, 0x0341, 0x0342, 0x0342,
- 0x0343, 0x0344, 0x0345, 0x0345, 0x0346, 0x0347, 0x0348, 0x0349,
- 0x034a, 0x034b, 0x034c, 0x034e, 0x034f, 0x0350, 0x0351, 0x0353,
- 0x0354, 0x0355, 0x0357, 0x0358, 0x035a, 0x035b, 0x035d, 0x035f,
- 0x0380, 0x0380, 0x0380, 0x0380, 0x0381, 0x0381, 0x0382, 0x0382,
- 0x0383, 0x0384, 0x0385, 0x0385, 0x0386, 0x0387, 0x0388, 0x0389,
- 0x038a, 0x038b, 0x038c, 0x038e, 0x038f, 0x0390, 0x0391, 0x0393,
- 0x0394, 0x0395, 0x0397, 0x0398, 0x039a, 0x039b, 0x039d, 0x039f,
- 0x03a0, 0x03a0, 0x03a0, 0x03a0, 0x03a1, 0x03a1, 0x03a2, 0x03a2,
- 0x03a3, 0x03a4, 0x03a5, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
- 0x03aa, 0x03ab, 0x03ac, 0x03ae, 0x03af, 0x03b0, 0x03b1, 0x03b3,
- 0x03b4, 0x03b5, 0x03b7, 0x03b8, 0x03ba, 0x03bb, 0x03bd, 0x03bf,
- 0x03c0, 0x03c0, 0x03c0, 0x03c0, 0x03c1, 0x03c1, 0x03c2, 0x03c2,
- 0x03c3, 0x03c4, 0x03c5, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
- 0x03ca, 0x03cb, 0x03cc, 0x03ce, 0x03cf, 0x03d0, 0x03d1, 0x03d3,
- 0x03d4, 0x03d5, 0x03d7, 0x03d8, 0x03da, 0x03db, 0x03dd, 0x03df,
- 0x03e0, 0x03e0, 0x03e0, 0x03e0, 0x03e1, 0x03e1, 0x03e2, 0x03e2,
- 0x03e3, 0x03e4, 0x03e5, 0x03e5, 0x03e6, 0x03e7, 0x03e8, 0x03e9,
- 0x03ea, 0x03eb, 0x03ec, 0x03ee, 0x03ef, 0x03f0, 0x03f1, 0x03f3,
- 0x03f4, 0x03f5, 0x03f7, 0x03f8, 0x03fa, 0x03fb, 0x03fd, 0x03ff,
- 0x0400, 0x0400, 0x0400, 0x0400, 0x0401, 0x0401, 0x0402, 0x0402,
- 0x0403, 0x0404, 0x0405, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409,
- 0x040a, 0x040b, 0x040c, 0x040e, 0x040f, 0x0410, 0x0411, 0x0413,
- 0x0414, 0x0415, 0x0417, 0x0418, 0x041a, 0x041b, 0x041d, 0x041f,
- 0x0440, 0x0440, 0x0440, 0x0440, 0x0441, 0x0441, 0x0442, 0x0442,
- 0x0443, 0x0444, 0x0445, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449,
- 0x044a, 0x044b, 0x044c, 0x044e, 0x044f, 0x0450, 0x0451, 0x0453,
- 0x0454, 0x0455, 0x0457, 0x0458, 0x045a, 0x045b, 0x045d, 0x045f,
- 0x0460, 0x0460, 0x0460, 0x0460, 0x0461, 0x0461, 0x0462, 0x0462,
- 0x0463, 0x0464, 0x0465, 0x0465, 0x0466, 0x0467, 0x0468, 0x0469,
- 0x046a, 0x046b, 0x046c, 0x046e, 0x046f, 0x0470, 0x0471, 0x0473,
- 0x0474, 0x0475, 0x0477, 0x0478, 0x047a, 0x047b, 0x047d, 0x047f,
- 0x0480, 0x0480, 0x0480, 0x0480, 0x0481, 0x0481, 0x0482, 0x0482,
- 0x0483, 0x0484, 0x0485, 0x0485, 0x0486, 0x0487, 0x0488, 0x0489,
- 0x048a, 0x048b, 0x048c, 0x048e, 0x048f, 0x0490, 0x0491, 0x0493,
- 0x0494, 0x0495, 0x0497, 0x0498, 0x049a, 0x049b, 0x049d, 0x049f,
- 0x04c0, 0x04c0, 0x04c0, 0x04c0, 0x04c1, 0x04c1, 0x04c2, 0x04c2,
- 0x04c3, 0x04c4, 0x04c5, 0x04c5, 0x04c6, 0x04c7, 0x04c8, 0x04c9,
- 0x04ca, 0x04cb, 0x04cc, 0x04ce, 0x04cf, 0x04d0, 0x04d1, 0x04d3,
- 0x04d4, 0x04d5, 0x04d7, 0x04d8, 0x04da, 0x04db, 0x04dd, 0x04df,
- 0x04e0, 0x04e0, 0x04e0, 0x04e0, 0x04e1, 0x04e1, 0x04e2, 0x04e2,
- 0x04e3, 0x04e4, 0x04e5, 0x04e5, 0x04e6, 0x04e7, 0x04e8, 0x04e9,
- 0x04ea, 0x04eb, 0x04ec, 0x04ee, 0x04ef, 0x04f0, 0x04f1, 0x04f3,
- 0x04f4, 0x04f5, 0x04f7, 0x04f8, 0x04fa, 0x04fb, 0x04fd, 0x04ff,
- 0x0500, 0x0500, 0x0500, 0x0500, 0x0501, 0x0501, 0x0502, 0x0502,
- 0x0503, 0x0504, 0x0505, 0x0505, 0x0506, 0x0507, 0x0508, 0x0509,
- 0x050a, 0x050b, 0x050c, 0x050e, 0x050f, 0x0510, 0x0511, 0x0513,
- 0x0514, 0x0515, 0x0517, 0x0518, 0x051a, 0x051b, 0x051d, 0x051f,
- 0x0540, 0x0540, 0x0540, 0x0540, 0x0541, 0x0541, 0x0542, 0x0542,
- 0x0543, 0x0544, 0x0545, 0x0545, 0x0546, 0x0547, 0x0548, 0x0549,
- 0x054a, 0x054b, 0x054c, 0x054e, 0x054f, 0x0550, 0x0551, 0x0553,
- 0x0554, 0x0555, 0x0557, 0x0558, 0x055a, 0x055b, 0x055d, 0x055f,
- 0x0560, 0x0560, 0x0560, 0x0560, 0x0561, 0x0561, 0x0562, 0x0562,
- 0x0563, 0x0564, 0x0565, 0x0565, 0x0566, 0x0567, 0x0568, 0x0569,
- 0x056a, 0x056b, 0x056c, 0x056e, 0x056f, 0x0570, 0x0571, 0x0573,
- 0x0574, 0x0575, 0x0577, 0x0578, 0x057a, 0x057b, 0x057d, 0x057f,
- 0x0580, 0x0580, 0x0580, 0x0580, 0x0581, 0x0581, 0x0582, 0x0582,
- 0x0583, 0x0584, 0x0585, 0x0585, 0x0586, 0x0587, 0x0588, 0x0589,
- 0x058a, 0x058b, 0x058c, 0x058e, 0x058f, 0x0590, 0x0591, 0x0593,
- 0x0594, 0x0595, 0x0597, 0x0598, 0x059a, 0x059b, 0x059d, 0x059f,
- 0x05c0, 0x05c0, 0x05c0, 0x05c0, 0x05c1, 0x05c1, 0x05c2, 0x05c2,
- 0x05c3, 0x05c4, 0x05c5, 0x05c5, 0x05c6, 0x05c7, 0x05c8, 0x05c9,
- 0x05ca, 0x05cb, 0x05cc, 0x05ce, 0x05cf, 0x05d0, 0x05d1, 0x05d3,
- 0x05d4, 0x05d5, 0x05d7, 0x05d8, 0x05da, 0x05db, 0x05dd, 0x05df,
- 0x05e0, 0x05e0, 0x05e0, 0x05e0, 0x05e1, 0x05e1, 0x05e2, 0x05e2,
- 0x05e3, 0x05e4, 0x05e5, 0x05e5, 0x05e6, 0x05e7, 0x05e8, 0x05e9,
- 0x05ea, 0x05eb, 0x05ec, 0x05ee, 0x05ef, 0x05f0, 0x05f1, 0x05f3,
- 0x05f4, 0x05f5, 0x05f7, 0x05f8, 0x05fa, 0x05fb, 0x05fd, 0x05ff,
- 0x0620, 0x0620, 0x0620, 0x0620, 0x0621, 0x0621, 0x0622, 0x0622,
- 0x0623, 0x0624, 0x0625, 0x0625, 0x0626, 0x0627, 0x0628, 0x0629,
- 0x062a, 0x062b, 0x062c, 0x062e, 0x062f, 0x0630, 0x0631, 0x0633,
- 0x0634, 0x0635, 0x0637, 0x0638, 0x063a, 0x063b, 0x063d, 0x063f,
- 0x0640, 0x0640, 0x0640, 0x0640, 0x0641, 0x0641, 0x0642, 0x0642,
- 0x0643, 0x0644, 0x0645, 0x0645, 0x0646, 0x0647, 0x0648, 0x0649,
- 0x064a, 0x064b, 0x064c, 0x064e, 0x064f, 0x0650, 0x0651, 0x0653,
- 0x0654, 0x0655, 0x0657, 0x0658, 0x065a, 0x065b, 0x065d, 0x065f,
- 0x0680, 0x0680, 0x0680, 0x0680, 0x0681, 0x0681, 0x0682, 0x0682,
- 0x0683, 0x0684, 0x0685, 0x0685, 0x0686, 0x0687, 0x0688, 0x0689,
- 0x068a, 0x068b, 0x068c, 0x068e, 0x068f, 0x0690, 0x0691, 0x0693,
- 0x0694, 0x0695, 0x0697, 0x0698, 0x069a, 0x069b, 0x069d, 0x069f,
- 0x06a0, 0x06a0, 0x06a0, 0x06a0, 0x06a1, 0x06a1, 0x06a2, 0x06a2,
- 0x06a3, 0x06a4, 0x06a5, 0x06a5, 0x06a6, 0x06a7, 0x06a8, 0x06a9,
- 0x06aa, 0x06ab, 0x06ac, 0x06ae, 0x06af, 0x06b0, 0x06b1, 0x06b3,
- 0x06b4, 0x06b5, 0x06b7, 0x06b8, 0x06ba, 0x06bb, 0x06bd, 0x06bf,
- 0x06e0, 0x06e0, 0x06e0, 0x06e0, 0x06e1, 0x06e1, 0x06e2, 0x06e2,
- 0x06e3, 0x06e4, 0x06e5, 0x06e5, 0x06e6, 0x06e7, 0x06e8, 0x06e9,
- 0x06ea, 0x06eb, 0x06ec, 0x06ee, 0x06ef, 0x06f0, 0x06f1, 0x06f3,
- 0x06f4, 0x06f5, 0x06f7, 0x06f8, 0x06fa, 0x06fb, 0x06fd, 0x06ff,
- 0x0700, 0x0700, 0x0700, 0x0700, 0x0701, 0x0701, 0x0702, 0x0702,
- 0x0703, 0x0704, 0x0705, 0x0705, 0x0706, 0x0707, 0x0708, 0x0709,
- 0x070a, 0x070b, 0x070c, 0x070e, 0x070f, 0x0710, 0x0711, 0x0713,
- 0x0714, 0x0715, 0x0717, 0x0718, 0x071a, 0x071b, 0x071d, 0x071f,
- 0x0740, 0x0740, 0x0740, 0x0740, 0x0741, 0x0741, 0x0742, 0x0742,
- 0x0743, 0x0744, 0x0745, 0x0745, 0x0746, 0x0747, 0x0748, 0x0749,
- 0x074a, 0x074b, 0x074c, 0x074e, 0x074f, 0x0750, 0x0751, 0x0753,
- 0x0754, 0x0755, 0x0757, 0x0758, 0x075a, 0x075b, 0x075d, 0x075f,
- 0x0760, 0x0760, 0x0760, 0x0760, 0x0761, 0x0761, 0x0762, 0x0762,
- 0x0763, 0x0764, 0x0765, 0x0765, 0x0766, 0x0767, 0x0768, 0x0769,
- 0x076a, 0x076b, 0x076c, 0x076e, 0x076f, 0x0770, 0x0771, 0x0773,
- 0x0774, 0x0775, 0x0777, 0x0778, 0x077a, 0x077b, 0x077d, 0x077f,
- 0x07a0, 0x07a0, 0x07a0, 0x07a0, 0x07a1, 0x07a1, 0x07a2, 0x07a2,
- 0x07a3, 0x07a4, 0x07a5, 0x07a5, 0x07a6, 0x07a7, 0x07a8, 0x07a9,
- 0x07aa, 0x07ab, 0x07ac, 0x07ae, 0x07af, 0x07b0, 0x07b1, 0x07b3,
- 0x07b4, 0x07b5, 0x07b7, 0x07b8, 0x07ba, 0x07bb, 0x07bd, 0x07bf,
- 0x07e0, 0x07e0, 0x07e0, 0x07e0, 0x07e1, 0x07e1, 0x07e2, 0x07e2,
- 0x07e3, 0x07e4, 0x07e5, 0x07e5, 0x07e6, 0x07e7, 0x07e8, 0x07e9,
- 0x07ea, 0x07eb, 0x07ec, 0x07ee, 0x07ef, 0x07f0, 0x07f1, 0x07f3,
- 0x07f4, 0x07f5, 0x07f7, 0x07f8, 0x07fa, 0x07fb, 0x07fd, 0x07ff,
- 0x0800, 0x0800, 0x0800, 0x0800, 0x0801, 0x0801, 0x0802, 0x0802,
- 0x0803, 0x0804, 0x0805, 0x0805, 0x0806, 0x0807, 0x0808, 0x0809,
- 0x080a, 0x080b, 0x080c, 0x080e, 0x080f, 0x0810, 0x0811, 0x0813,
- 0x0814, 0x0815, 0x0817, 0x0818, 0x081a, 0x081b, 0x081d, 0x081f,
- 0x0800, 0x0800, 0x0800, 0x0800, 0x0801, 0x0801, 0x0802, 0x0802,
- 0x0803, 0x0804, 0x0805, 0x0805, 0x0806, 0x0807, 0x0808, 0x0809,
- 0x080a, 0x080b, 0x080c, 0x080e, 0x080f, 0x0810, 0x0811, 0x0813,
- 0x0814, 0x0815, 0x0817, 0x0818, 0x081a, 0x081b, 0x081d, 0x081f,
- 0x0800, 0x0800, 0x0800, 0x0800, 0x0801, 0x0801, 0x0802, 0x0802,
- 0x0803, 0x0804, 0x0805, 0x0805, 0x0806, 0x0807, 0x0808, 0x0809,
- 0x080a, 0x080b, 0x080c, 0x080e, 0x080f, 0x0810, 0x0811, 0x0813,
- 0x0814, 0x0815, 0x0817, 0x0818, 0x081a, 0x081b, 0x081d, 0x081f,
- 0x0800, 0x0800, 0x0800, 0x0800, 0x0801, 0x0801, 0x0802, 0x0802,
- 0x0803, 0x0804, 0x0805, 0x0805, 0x0806, 0x0807, 0x0808, 0x0809,
- 0x080a, 0x080b, 0x080c, 0x080e, 0x080f, 0x0810, 0x0811, 0x0813,
- 0x0814, 0x0815, 0x0817, 0x0818, 0x081a, 0x081b, 0x081d, 0x081f,
- 0x0800, 0x0800, 0x0800, 0x0800, 0x0801, 0x0801, 0x0802, 0x0802,
- 0x0803, 0x0804, 0x0805, 0x0805, 0x0806, 0x0807, 0x0808, 0x0809,
- 0x080a, 0x080b, 0x080c, 0x080e, 0x080f, 0x0810, 0x0811, 0x0813,
- 0x0814, 0x0815, 0x0817, 0x0818, 0x081a, 0x081b, 0x081d, 0x081f,
- 0x0820, 0x0820, 0x0820, 0x0820, 0x0821, 0x0821, 0x0822, 0x0822,
- 0x0823, 0x0824, 0x0825, 0x0825, 0x0826, 0x0827, 0x0828, 0x0829,
- 0x082a, 0x082b, 0x082c, 0x082e, 0x082f, 0x0830, 0x0831, 0x0833,
- 0x0834, 0x0835, 0x0837, 0x0838, 0x083a, 0x083b, 0x083d, 0x083f,
- 0x0820, 0x0820, 0x0820, 0x0820, 0x0821, 0x0821, 0x0822, 0x0822,
- 0x0823, 0x0824, 0x0825, 0x0825, 0x0826, 0x0827, 0x0828, 0x0829,
- 0x082a, 0x082b, 0x082c, 0x082e, 0x082f, 0x0830, 0x0831, 0x0833,
- 0x0834, 0x0835, 0x0837, 0x0838, 0x083a, 0x083b, 0x083d, 0x083f,
- 0x0820, 0x0820, 0x0820, 0x0820, 0x0821, 0x0821, 0x0822, 0x0822,
- 0x0823, 0x0824, 0x0825, 0x0825, 0x0826, 0x0827, 0x0828, 0x0829,
- 0x082a, 0x082b, 0x082c, 0x082e, 0x082f, 0x0830, 0x0831, 0x0833,
- 0x0834, 0x0835, 0x0837, 0x0838, 0x083a, 0x083b, 0x083d, 0x083f,
- 0x0840, 0x0840, 0x0840, 0x0840, 0x0841, 0x0841, 0x0842, 0x0842,
- 0x0843, 0x0844, 0x0845, 0x0845, 0x0846, 0x0847, 0x0848, 0x0849,
- 0x084a, 0x084b, 0x084c, 0x084e, 0x084f, 0x0850, 0x0851, 0x0853,
- 0x0854, 0x0855, 0x0857, 0x0858, 0x085a, 0x085b, 0x085d, 0x085f,
- 0x0840, 0x0840, 0x0840, 0x0840, 0x0841, 0x0841, 0x0842, 0x0842,
- 0x0843, 0x0844, 0x0845, 0x0845, 0x0846, 0x0847, 0x0848, 0x0849,
- 0x084a, 0x084b, 0x084c, 0x084e, 0x084f, 0x0850, 0x0851, 0x0853,
- 0x0854, 0x0855, 0x0857, 0x0858, 0x085a, 0x085b, 0x085d, 0x085f,
- 0x0860, 0x0860, 0x0860, 0x0860, 0x0861, 0x0861, 0x0862, 0x0862,
- 0x0863, 0x0864, 0x0865, 0x0865, 0x0866, 0x0867, 0x0868, 0x0869,
- 0x086a, 0x086b, 0x086c, 0x086e, 0x086f, 0x0870, 0x0871, 0x0873,
- 0x0874, 0x0875, 0x0877, 0x0878, 0x087a, 0x087b, 0x087d, 0x087f,
- 0x0860, 0x0860, 0x0860, 0x0860, 0x0861, 0x0861, 0x0862, 0x0862,
- 0x0863, 0x0864, 0x0865, 0x0865, 0x0866, 0x0867, 0x0868, 0x0869,
- 0x086a, 0x086b, 0x086c, 0x086e, 0x086f, 0x0870, 0x0871, 0x0873,
- 0x0874, 0x0875, 0x0877, 0x0878, 0x087a, 0x087b, 0x087d, 0x087f,
- 0x0880, 0x0880, 0x0880, 0x0880, 0x0881, 0x0881, 0x0882, 0x0882,
- 0x0883, 0x0884, 0x0885, 0x0885, 0x0886, 0x0887, 0x0888, 0x0889,
- 0x088a, 0x088b, 0x088c, 0x088e, 0x088f, 0x0890, 0x0891, 0x0893,
- 0x0894, 0x0895, 0x0897, 0x0898, 0x089a, 0x089b, 0x089d, 0x089f,
- 0x08a0, 0x08a0, 0x08a0, 0x08a0, 0x08a1, 0x08a1, 0x08a2, 0x08a2,
- 0x08a3, 0x08a4, 0x08a5, 0x08a5, 0x08a6, 0x08a7, 0x08a8, 0x08a9,
- 0x08aa, 0x08ab, 0x08ac, 0x08ae, 0x08af, 0x08b0, 0x08b1, 0x08b3,
- 0x08b4, 0x08b5, 0x08b7, 0x08b8, 0x08ba, 0x08bb, 0x08bd, 0x08bf,
- 0x08a0, 0x08a0, 0x08a0, 0x08a0, 0x08a1, 0x08a1, 0x08a2, 0x08a2,
- 0x08a3, 0x08a4, 0x08a5, 0x08a5, 0x08a6, 0x08a7, 0x08a8, 0x08a9,
- 0x08aa, 0x08ab, 0x08ac, 0x08ae, 0x08af, 0x08b0, 0x08b1, 0x08b3,
- 0x08b4, 0x08b5, 0x08b7, 0x08b8, 0x08ba, 0x08bb, 0x08bd, 0x08bf,
- 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c1, 0x08c1, 0x08c2, 0x08c2,
- 0x08c3, 0x08c4, 0x08c5, 0x08c5, 0x08c6, 0x08c7, 0x08c8, 0x08c9,
- 0x08ca, 0x08cb, 0x08cc, 0x08ce, 0x08cf, 0x08d0, 0x08d1, 0x08d3,
- 0x08d4, 0x08d5, 0x08d7, 0x08d8, 0x08da, 0x08db, 0x08dd, 0x08df,
- 0x08e0, 0x08e0, 0x08e0, 0x08e0, 0x08e1, 0x08e1, 0x08e2, 0x08e2,
- 0x08e3, 0x08e4, 0x08e5, 0x08e5, 0x08e6, 0x08e7, 0x08e8, 0x08e9,
- 0x08ea, 0x08eb, 0x08ec, 0x08ee, 0x08ef, 0x08f0, 0x08f1, 0x08f3,
- 0x08f4, 0x08f5, 0x08f7, 0x08f8, 0x08fa, 0x08fb, 0x08fd, 0x08ff,
- 0x08e0, 0x08e0, 0x08e0, 0x08e0, 0x08e1, 0x08e1, 0x08e2, 0x08e2,
- 0x08e3, 0x08e4, 0x08e5, 0x08e5, 0x08e6, 0x08e7, 0x08e8, 0x08e9,
- 0x08ea, 0x08eb, 0x08ec, 0x08ee, 0x08ef, 0x08f0, 0x08f1, 0x08f3,
- 0x08f4, 0x08f5, 0x08f7, 0x08f8, 0x08fa, 0x08fb, 0x08fd, 0x08ff,
- 0x0900, 0x0900, 0x0900, 0x0900, 0x0901, 0x0901, 0x0902, 0x0902,
- 0x0903, 0x0904, 0x0905, 0x0905, 0x0906, 0x0907, 0x0908, 0x0909,
- 0x090a, 0x090b, 0x090c, 0x090e, 0x090f, 0x0910, 0x0911, 0x0913,
- 0x0914, 0x0915, 0x0917, 0x0918, 0x091a, 0x091b, 0x091d, 0x091f,
- 0x0920, 0x0920, 0x0920, 0x0920, 0x0921, 0x0921, 0x0922, 0x0922,
- 0x0923, 0x0924, 0x0925, 0x0925, 0x0926, 0x0927, 0x0928, 0x0929,
- 0x092a, 0x092b, 0x092c, 0x092e, 0x092f, 0x0930, 0x0931, 0x0933,
- 0x0934, 0x0935, 0x0937, 0x0938, 0x093a, 0x093b, 0x093d, 0x093f,
- 0x0940, 0x0940, 0x0940, 0x0940, 0x0941, 0x0941, 0x0942, 0x0942,
- 0x0943, 0x0944, 0x0945, 0x0945, 0x0946, 0x0947, 0x0948, 0x0949,
- 0x094a, 0x094b, 0x094c, 0x094e, 0x094f, 0x0950, 0x0951, 0x0953,
- 0x0954, 0x0955, 0x0957, 0x0958, 0x095a, 0x095b, 0x095d, 0x095f,
- 0x0940, 0x0940, 0x0940, 0x0940, 0x0941, 0x0941, 0x0942, 0x0942,
- 0x0943, 0x0944, 0x0945, 0x0945, 0x0946, 0x0947, 0x0948, 0x0949,
- 0x094a, 0x094b, 0x094c, 0x094e, 0x094f, 0x0950, 0x0951, 0x0953,
- 0x0954, 0x0955, 0x0957, 0x0958, 0x095a, 0x095b, 0x095d, 0x095f,
- 0x0960, 0x0960, 0x0960, 0x0960, 0x0961, 0x0961, 0x0962, 0x0962,
- 0x0963, 0x0964, 0x0965, 0x0965, 0x0966, 0x0967, 0x0968, 0x0969,
- 0x096a, 0x096b, 0x096c, 0x096e, 0x096f, 0x0970, 0x0971, 0x0973,
- 0x0974, 0x0975, 0x0977, 0x0978, 0x097a, 0x097b, 0x097d, 0x097f,
- 0x0980, 0x0980, 0x0980, 0x0980, 0x0981, 0x0981, 0x0982, 0x0982,
- 0x0983, 0x0984, 0x0985, 0x0985, 0x0986, 0x0987, 0x0988, 0x0989,
- 0x098a, 0x098b, 0x098c, 0x098e, 0x098f, 0x0990, 0x0991, 0x0993,
- 0x0994, 0x0995, 0x0997, 0x0998, 0x099a, 0x099b, 0x099d, 0x099f,
- 0x09a0, 0x09a0, 0x09a0, 0x09a0, 0x09a1, 0x09a1, 0x09a2, 0x09a2,
- 0x09a3, 0x09a4, 0x09a5, 0x09a5, 0x09a6, 0x09a7, 0x09a8, 0x09a9,
- 0x09aa, 0x09ab, 0x09ac, 0x09ae, 0x09af, 0x09b0, 0x09b1, 0x09b3,
- 0x09b4, 0x09b5, 0x09b7, 0x09b8, 0x09ba, 0x09bb, 0x09bd, 0x09bf,
- 0x09c0, 0x09c0, 0x09c0, 0x09c0, 0x09c1, 0x09c1, 0x09c2, 0x09c2,
- 0x09c3, 0x09c4, 0x09c5, 0x09c5, 0x09c6, 0x09c7, 0x09c8, 0x09c9,
- 0x09ca, 0x09cb, 0x09cc, 0x09ce, 0x09cf, 0x09d0, 0x09d1, 0x09d3,
- 0x09d4, 0x09d5, 0x09d7, 0x09d8, 0x09da, 0x09db, 0x09dd, 0x09df,
- 0x09e0, 0x09e0, 0x09e0, 0x09e0, 0x09e1, 0x09e1, 0x09e2, 0x09e2,
- 0x09e3, 0x09e4, 0x09e5, 0x09e5, 0x09e6, 0x09e7, 0x09e8, 0x09e9,
- 0x09ea, 0x09eb, 0x09ec, 0x09ee, 0x09ef, 0x09f0, 0x09f1, 0x09f3,
- 0x09f4, 0x09f5, 0x09f7, 0x09f8, 0x09fa, 0x09fb, 0x09fd, 0x09ff,
- 0x0a00, 0x0a00, 0x0a00, 0x0a00, 0x0a01, 0x0a01, 0x0a02, 0x0a02,
- 0x0a03, 0x0a04, 0x0a05, 0x0a05, 0x0a06, 0x0a07, 0x0a08, 0x0a09,
- 0x0a0a, 0x0a0b, 0x0a0c, 0x0a0e, 0x0a0f, 0x0a10, 0x0a11, 0x0a13,
- 0x0a14, 0x0a15, 0x0a17, 0x0a18, 0x0a1a, 0x0a1b, 0x0a1d, 0x0a1f,
- 0x0a20, 0x0a20, 0x0a20, 0x0a20, 0x0a21, 0x0a21, 0x0a22, 0x0a22,
- 0x0a23, 0x0a24, 0x0a25, 0x0a25, 0x0a26, 0x0a27, 0x0a28, 0x0a29,
- 0x0a2a, 0x0a2b, 0x0a2c, 0x0a2e, 0x0a2f, 0x0a30, 0x0a31, 0x0a33,
- 0x0a34, 0x0a35, 0x0a37, 0x0a38, 0x0a3a, 0x0a3b, 0x0a3d, 0x0a3f,
- 0x0a40, 0x0a40, 0x0a40, 0x0a40, 0x0a41, 0x0a41, 0x0a42, 0x0a42,
- 0x0a43, 0x0a44, 0x0a45, 0x0a45, 0x0a46, 0x0a47, 0x0a48, 0x0a49,
- 0x0a4a, 0x0a4b, 0x0a4c, 0x0a4e, 0x0a4f, 0x0a50, 0x0a51, 0x0a53,
- 0x0a54, 0x0a55, 0x0a57, 0x0a58, 0x0a5a, 0x0a5b, 0x0a5d, 0x0a5f,
- 0x0a60, 0x0a60, 0x0a60, 0x0a60, 0x0a61, 0x0a61, 0x0a62, 0x0a62,
- 0x0a63, 0x0a64, 0x0a65, 0x0a65, 0x0a66, 0x0a67, 0x0a68, 0x0a69,
- 0x0a6a, 0x0a6b, 0x0a6c, 0x0a6e, 0x0a6f, 0x0a70, 0x0a71, 0x0a73,
- 0x0a74, 0x0a75, 0x0a77, 0x0a78, 0x0a7a, 0x0a7b, 0x0a7d, 0x0a7f,
- 0x0a80, 0x0a80, 0x0a80, 0x0a80, 0x0a81, 0x0a81, 0x0a82, 0x0a82,
- 0x0a83, 0x0a84, 0x0a85, 0x0a85, 0x0a86, 0x0a87, 0x0a88, 0x0a89,
- 0x0a8a, 0x0a8b, 0x0a8c, 0x0a8e, 0x0a8f, 0x0a90, 0x0a91, 0x0a93,
- 0x0a94, 0x0a95, 0x0a97, 0x0a98, 0x0a9a, 0x0a9b, 0x0a9d, 0x0a9f,
- 0x0aa0, 0x0aa0, 0x0aa0, 0x0aa0, 0x0aa1, 0x0aa1, 0x0aa2, 0x0aa2,
- 0x0aa3, 0x0aa4, 0x0aa5, 0x0aa5, 0x0aa6, 0x0aa7, 0x0aa8, 0x0aa9,
- 0x0aaa, 0x0aab, 0x0aac, 0x0aae, 0x0aaf, 0x0ab0, 0x0ab1, 0x0ab3,
- 0x0ab4, 0x0ab5, 0x0ab7, 0x0ab8, 0x0aba, 0x0abb, 0x0abd, 0x0abf,
- 0x0ac0, 0x0ac0, 0x0ac0, 0x0ac0, 0x0ac1, 0x0ac1, 0x0ac2, 0x0ac2,
- 0x0ac3, 0x0ac4, 0x0ac5, 0x0ac5, 0x0ac6, 0x0ac7, 0x0ac8, 0x0ac9,
- 0x0aca, 0x0acb, 0x0acc, 0x0ace, 0x0acf, 0x0ad0, 0x0ad1, 0x0ad3,
- 0x0ad4, 0x0ad5, 0x0ad7, 0x0ad8, 0x0ada, 0x0adb, 0x0add, 0x0adf,
- 0x0ae0, 0x0ae0, 0x0ae0, 0x0ae0, 0x0ae1, 0x0ae1, 0x0ae2, 0x0ae2,
- 0x0ae3, 0x0ae4, 0x0ae5, 0x0ae5, 0x0ae6, 0x0ae7, 0x0ae8, 0x0ae9,
- 0x0aea, 0x0aeb, 0x0aec, 0x0aee, 0x0aef, 0x0af0, 0x0af1, 0x0af3,
- 0x0af4, 0x0af5, 0x0af7, 0x0af8, 0x0afa, 0x0afb, 0x0afd, 0x0aff,
- 0x0b00, 0x0b00, 0x0b00, 0x0b00, 0x0b01, 0x0b01, 0x0b02, 0x0b02,
- 0x0b03, 0x0b04, 0x0b05, 0x0b05, 0x0b06, 0x0b07, 0x0b08, 0x0b09,
- 0x0b0a, 0x0b0b, 0x0b0c, 0x0b0e, 0x0b0f, 0x0b10, 0x0b11, 0x0b13,
- 0x0b14, 0x0b15, 0x0b17, 0x0b18, 0x0b1a, 0x0b1b, 0x0b1d, 0x0b1f,
- 0x0b20, 0x0b20, 0x0b20, 0x0b20, 0x0b21, 0x0b21, 0x0b22, 0x0b22,
- 0x0b23, 0x0b24, 0x0b25, 0x0b25, 0x0b26, 0x0b27, 0x0b28, 0x0b29,
- 0x0b2a, 0x0b2b, 0x0b2c, 0x0b2e, 0x0b2f, 0x0b30, 0x0b31, 0x0b33,
- 0x0b34, 0x0b35, 0x0b37, 0x0b38, 0x0b3a, 0x0b3b, 0x0b3d, 0x0b3f,
- 0x0b40, 0x0b40, 0x0b40, 0x0b40, 0x0b41, 0x0b41, 0x0b42, 0x0b42,
- 0x0b43, 0x0b44, 0x0b45, 0x0b45, 0x0b46, 0x0b47, 0x0b48, 0x0b49,
- 0x0b4a, 0x0b4b, 0x0b4c, 0x0b4e, 0x0b4f, 0x0b50, 0x0b51, 0x0b53,
- 0x0b54, 0x0b55, 0x0b57, 0x0b58, 0x0b5a, 0x0b5b, 0x0b5d, 0x0b5f,
- 0x0b80, 0x0b80, 0x0b80, 0x0b80, 0x0b81, 0x0b81, 0x0b82, 0x0b82,
- 0x0b83, 0x0b84, 0x0b85, 0x0b85, 0x0b86, 0x0b87, 0x0b88, 0x0b89,
- 0x0b8a, 0x0b8b, 0x0b8c, 0x0b8e, 0x0b8f, 0x0b90, 0x0b91, 0x0b93,
- 0x0b94, 0x0b95, 0x0b97, 0x0b98, 0x0b9a, 0x0b9b, 0x0b9d, 0x0b9f,
- 0x0ba0, 0x0ba0, 0x0ba0, 0x0ba0, 0x0ba1, 0x0ba1, 0x0ba2, 0x0ba2,
- 0x0ba3, 0x0ba4, 0x0ba5, 0x0ba5, 0x0ba6, 0x0ba7, 0x0ba8, 0x0ba9,
- 0x0baa, 0x0bab, 0x0bac, 0x0bae, 0x0baf, 0x0bb0, 0x0bb1, 0x0bb3,
- 0x0bb4, 0x0bb5, 0x0bb7, 0x0bb8, 0x0bba, 0x0bbb, 0x0bbd, 0x0bbf,
- 0x0bc0, 0x0bc0, 0x0bc0, 0x0bc0, 0x0bc1, 0x0bc1, 0x0bc2, 0x0bc2,
- 0x0bc3, 0x0bc4, 0x0bc5, 0x0bc5, 0x0bc6, 0x0bc7, 0x0bc8, 0x0bc9,
- 0x0bca, 0x0bcb, 0x0bcc, 0x0bce, 0x0bcf, 0x0bd0, 0x0bd1, 0x0bd3,
- 0x0bd4, 0x0bd5, 0x0bd7, 0x0bd8, 0x0bda, 0x0bdb, 0x0bdd, 0x0bdf,
- 0x0be0, 0x0be0, 0x0be0, 0x0be0, 0x0be1, 0x0be1, 0x0be2, 0x0be2,
- 0x0be3, 0x0be4, 0x0be5, 0x0be5, 0x0be6, 0x0be7, 0x0be8, 0x0be9,
- 0x0bea, 0x0beb, 0x0bec, 0x0bee, 0x0bef, 0x0bf0, 0x0bf1, 0x0bf3,
- 0x0bf4, 0x0bf5, 0x0bf7, 0x0bf8, 0x0bfa, 0x0bfb, 0x0bfd, 0x0bff,
- 0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x0c01, 0x0c01, 0x0c02, 0x0c02,
- 0x0c03, 0x0c04, 0x0c05, 0x0c05, 0x0c06, 0x0c07, 0x0c08, 0x0c09,
- 0x0c0a, 0x0c0b, 0x0c0c, 0x0c0e, 0x0c0f, 0x0c10, 0x0c11, 0x0c13,
- 0x0c14, 0x0c15, 0x0c17, 0x0c18, 0x0c1a, 0x0c1b, 0x0c1d, 0x0c1f,
- 0x0c40, 0x0c40, 0x0c40, 0x0c40, 0x0c41, 0x0c41, 0x0c42, 0x0c42,
- 0x0c43, 0x0c44, 0x0c45, 0x0c45, 0x0c46, 0x0c47, 0x0c48, 0x0c49,
- 0x0c4a, 0x0c4b, 0x0c4c, 0x0c4e, 0x0c4f, 0x0c50, 0x0c51, 0x0c53,
- 0x0c54, 0x0c55, 0x0c57, 0x0c58, 0x0c5a, 0x0c5b, 0x0c5d, 0x0c5f,
- 0x0c60, 0x0c60, 0x0c60, 0x0c60, 0x0c61, 0x0c61, 0x0c62, 0x0c62,
- 0x0c63, 0x0c64, 0x0c65, 0x0c65, 0x0c66, 0x0c67, 0x0c68, 0x0c69,
- 0x0c6a, 0x0c6b, 0x0c6c, 0x0c6e, 0x0c6f, 0x0c70, 0x0c71, 0x0c73,
- 0x0c74, 0x0c75, 0x0c77, 0x0c78, 0x0c7a, 0x0c7b, 0x0c7d, 0x0c7f,
- 0x0c80, 0x0c80, 0x0c80, 0x0c80, 0x0c81, 0x0c81, 0x0c82, 0x0c82,
- 0x0c83, 0x0c84, 0x0c85, 0x0c85, 0x0c86, 0x0c87, 0x0c88, 0x0c89,
- 0x0c8a, 0x0c8b, 0x0c8c, 0x0c8e, 0x0c8f, 0x0c90, 0x0c91, 0x0c93,
- 0x0c94, 0x0c95, 0x0c97, 0x0c98, 0x0c9a, 0x0c9b, 0x0c9d, 0x0c9f,
- 0x0cc0, 0x0cc0, 0x0cc0, 0x0cc0, 0x0cc1, 0x0cc1, 0x0cc2, 0x0cc2,
- 0x0cc3, 0x0cc4, 0x0cc5, 0x0cc5, 0x0cc6, 0x0cc7, 0x0cc8, 0x0cc9,
- 0x0cca, 0x0ccb, 0x0ccc, 0x0cce, 0x0ccf, 0x0cd0, 0x0cd1, 0x0cd3,
- 0x0cd4, 0x0cd5, 0x0cd7, 0x0cd8, 0x0cda, 0x0cdb, 0x0cdd, 0x0cdf,
- 0x0ce0, 0x0ce0, 0x0ce0, 0x0ce0, 0x0ce1, 0x0ce1, 0x0ce2, 0x0ce2,
- 0x0ce3, 0x0ce4, 0x0ce5, 0x0ce5, 0x0ce6, 0x0ce7, 0x0ce8, 0x0ce9,
- 0x0cea, 0x0ceb, 0x0cec, 0x0cee, 0x0cef, 0x0cf0, 0x0cf1, 0x0cf3,
- 0x0cf4, 0x0cf5, 0x0cf7, 0x0cf8, 0x0cfa, 0x0cfb, 0x0cfd, 0x0cff,
- 0x0d00, 0x0d00, 0x0d00, 0x0d00, 0x0d01, 0x0d01, 0x0d02, 0x0d02,
- 0x0d03, 0x0d04, 0x0d05, 0x0d05, 0x0d06, 0x0d07, 0x0d08, 0x0d09,
- 0x0d0a, 0x0d0b, 0x0d0c, 0x0d0e, 0x0d0f, 0x0d10, 0x0d11, 0x0d13,
- 0x0d14, 0x0d15, 0x0d17, 0x0d18, 0x0d1a, 0x0d1b, 0x0d1d, 0x0d1f,
- 0x0d40, 0x0d40, 0x0d40, 0x0d40, 0x0d41, 0x0d41, 0x0d42, 0x0d42,
- 0x0d43, 0x0d44, 0x0d45, 0x0d45, 0x0d46, 0x0d47, 0x0d48, 0x0d49,
- 0x0d4a, 0x0d4b, 0x0d4c, 0x0d4e, 0x0d4f, 0x0d50, 0x0d51, 0x0d53,
- 0x0d54, 0x0d55, 0x0d57, 0x0d58, 0x0d5a, 0x0d5b, 0x0d5d, 0x0d5f,
- 0x0d60, 0x0d60, 0x0d60, 0x0d60, 0x0d61, 0x0d61, 0x0d62, 0x0d62,
- 0x0d63, 0x0d64, 0x0d65, 0x0d65, 0x0d66, 0x0d67, 0x0d68, 0x0d69,
- 0x0d6a, 0x0d6b, 0x0d6c, 0x0d6e, 0x0d6f, 0x0d70, 0x0d71, 0x0d73,
- 0x0d74, 0x0d75, 0x0d77, 0x0d78, 0x0d7a, 0x0d7b, 0x0d7d, 0x0d7f,
- 0x0d80, 0x0d80, 0x0d80, 0x0d80, 0x0d81, 0x0d81, 0x0d82, 0x0d82,
- 0x0d83, 0x0d84, 0x0d85, 0x0d85, 0x0d86, 0x0d87, 0x0d88, 0x0d89,
- 0x0d8a, 0x0d8b, 0x0d8c, 0x0d8e, 0x0d8f, 0x0d90, 0x0d91, 0x0d93,
- 0x0d94, 0x0d95, 0x0d97, 0x0d98, 0x0d9a, 0x0d9b, 0x0d9d, 0x0d9f,
- 0x0dc0, 0x0dc0, 0x0dc0, 0x0dc0, 0x0dc1, 0x0dc1, 0x0dc2, 0x0dc2,
- 0x0dc3, 0x0dc4, 0x0dc5, 0x0dc5, 0x0dc6, 0x0dc7, 0x0dc8, 0x0dc9,
- 0x0dca, 0x0dcb, 0x0dcc, 0x0dce, 0x0dcf, 0x0dd0, 0x0dd1, 0x0dd3,
- 0x0dd4, 0x0dd5, 0x0dd7, 0x0dd8, 0x0dda, 0x0ddb, 0x0ddd, 0x0ddf,
- 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de1, 0x0de1, 0x0de2, 0x0de2,
- 0x0de3, 0x0de4, 0x0de5, 0x0de5, 0x0de6, 0x0de7, 0x0de8, 0x0de9,
- 0x0dea, 0x0deb, 0x0dec, 0x0dee, 0x0def, 0x0df0, 0x0df1, 0x0df3,
- 0x0df4, 0x0df5, 0x0df7, 0x0df8, 0x0dfa, 0x0dfb, 0x0dfd, 0x0dff,
- 0x0e20, 0x0e20, 0x0e20, 0x0e20, 0x0e21, 0x0e21, 0x0e22, 0x0e22,
- 0x0e23, 0x0e24, 0x0e25, 0x0e25, 0x0e26, 0x0e27, 0x0e28, 0x0e29,
- 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2e, 0x0e2f, 0x0e30, 0x0e31, 0x0e33,
- 0x0e34, 0x0e35, 0x0e37, 0x0e38, 0x0e3a, 0x0e3b, 0x0e3d, 0x0e3f,
- 0x0e40, 0x0e40, 0x0e40, 0x0e40, 0x0e41, 0x0e41, 0x0e42, 0x0e42,
- 0x0e43, 0x0e44, 0x0e45, 0x0e45, 0x0e46, 0x0e47, 0x0e48, 0x0e49,
- 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4e, 0x0e4f, 0x0e50, 0x0e51, 0x0e53,
- 0x0e54, 0x0e55, 0x0e57, 0x0e58, 0x0e5a, 0x0e5b, 0x0e5d, 0x0e5f,
- 0x0e80, 0x0e80, 0x0e80, 0x0e80, 0x0e81, 0x0e81, 0x0e82, 0x0e82,
- 0x0e83, 0x0e84, 0x0e85, 0x0e85, 0x0e86, 0x0e87, 0x0e88, 0x0e89,
- 0x0e8a, 0x0e8b, 0x0e8c, 0x0e8e, 0x0e8f, 0x0e90, 0x0e91, 0x0e93,
- 0x0e94, 0x0e95, 0x0e97, 0x0e98, 0x0e9a, 0x0e9b, 0x0e9d, 0x0e9f,
- 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea1, 0x0ea1, 0x0ea2, 0x0ea2,
- 0x0ea3, 0x0ea4, 0x0ea5, 0x0ea5, 0x0ea6, 0x0ea7, 0x0ea8, 0x0ea9,
- 0x0eaa, 0x0eab, 0x0eac, 0x0eae, 0x0eaf, 0x0eb0, 0x0eb1, 0x0eb3,
- 0x0eb4, 0x0eb5, 0x0eb7, 0x0eb8, 0x0eba, 0x0ebb, 0x0ebd, 0x0ebf,
- 0x0ee0, 0x0ee0, 0x0ee0, 0x0ee0, 0x0ee1, 0x0ee1, 0x0ee2, 0x0ee2,
- 0x0ee3, 0x0ee4, 0x0ee5, 0x0ee5, 0x0ee6, 0x0ee7, 0x0ee8, 0x0ee9,
- 0x0eea, 0x0eeb, 0x0eec, 0x0eee, 0x0eef, 0x0ef0, 0x0ef1, 0x0ef3,
- 0x0ef4, 0x0ef5, 0x0ef7, 0x0ef8, 0x0efa, 0x0efb, 0x0efd, 0x0eff,
- 0x0f00, 0x0f00, 0x0f00, 0x0f00, 0x0f01, 0x0f01, 0x0f02, 0x0f02,
- 0x0f03, 0x0f04, 0x0f05, 0x0f05, 0x0f06, 0x0f07, 0x0f08, 0x0f09,
- 0x0f0a, 0x0f0b, 0x0f0c, 0x0f0e, 0x0f0f, 0x0f10, 0x0f11, 0x0f13,
- 0x0f14, 0x0f15, 0x0f17, 0x0f18, 0x0f1a, 0x0f1b, 0x0f1d, 0x0f1f,
- 0x0f40, 0x0f40, 0x0f40, 0x0f40, 0x0f41, 0x0f41, 0x0f42, 0x0f42,
- 0x0f43, 0x0f44, 0x0f45, 0x0f45, 0x0f46, 0x0f47, 0x0f48, 0x0f49,
- 0x0f4a, 0x0f4b, 0x0f4c, 0x0f4e, 0x0f4f, 0x0f50, 0x0f51, 0x0f53,
- 0x0f54, 0x0f55, 0x0f57, 0x0f58, 0x0f5a, 0x0f5b, 0x0f5d, 0x0f5f,
- 0x0f60, 0x0f60, 0x0f60, 0x0f60, 0x0f61, 0x0f61, 0x0f62, 0x0f62,
- 0x0f63, 0x0f64, 0x0f65, 0x0f65, 0x0f66, 0x0f67, 0x0f68, 0x0f69,
- 0x0f6a, 0x0f6b, 0x0f6c, 0x0f6e, 0x0f6f, 0x0f70, 0x0f71, 0x0f73,
- 0x0f74, 0x0f75, 0x0f77, 0x0f78, 0x0f7a, 0x0f7b, 0x0f7d, 0x0f7f,
- 0x0fa0, 0x0fa0, 0x0fa0, 0x0fa0, 0x0fa1, 0x0fa1, 0x0fa2, 0x0fa2,
- 0x0fa3, 0x0fa4, 0x0fa5, 0x0fa5, 0x0fa6, 0x0fa7, 0x0fa8, 0x0fa9,
- 0x0faa, 0x0fab, 0x0fac, 0x0fae, 0x0faf, 0x0fb0, 0x0fb1, 0x0fb3,
- 0x0fb4, 0x0fb5, 0x0fb7, 0x0fb8, 0x0fba, 0x0fbb, 0x0fbd, 0x0fbf,
- 0x0fe0, 0x0fe0, 0x0fe0, 0x0fe0, 0x0fe1, 0x0fe1, 0x0fe2, 0x0fe2,
- 0x0fe3, 0x0fe4, 0x0fe5, 0x0fe5, 0x0fe6, 0x0fe7, 0x0fe8, 0x0fe9,
- 0x0fea, 0x0feb, 0x0fec, 0x0fee, 0x0fef, 0x0ff0, 0x0ff1, 0x0ff3,
- 0x0ff4, 0x0ff5, 0x0ff7, 0x0ff8, 0x0ffa, 0x0ffb, 0x0ffd, 0x0fff,
- 0x0800, 0x0800, 0x0800, 0x0800, 0x0801, 0x0801, 0x0802, 0x0802,
- 0x0803, 0x0804, 0x0805, 0x0805, 0x0806, 0x0807, 0x0808, 0x0809,
- 0x080a, 0x080b, 0x080c, 0x080e, 0x080f, 0x0810, 0x0811, 0x0813,
- 0x0814, 0x0815, 0x0817, 0x0818, 0x081a, 0x081b, 0x081d, 0x081f,
- 0x0800, 0x0800, 0x0800, 0x0800, 0x0801, 0x0801, 0x0802, 0x0802,
- 0x0803, 0x0804, 0x0805, 0x0805, 0x0806, 0x0807, 0x0808, 0x0809,
- 0x080a, 0x080b, 0x080c, 0x080e, 0x080f, 0x0810, 0x0811, 0x0813,
- 0x0814, 0x0815, 0x0817, 0x0818, 0x081a, 0x081b, 0x081d, 0x081f,
- 0x0800, 0x0800, 0x0800, 0x0800, 0x0801, 0x0801, 0x0802, 0x0802,
- 0x0803, 0x0804, 0x0805, 0x0805, 0x0806, 0x0807, 0x0808, 0x0809,
- 0x080a, 0x080b, 0x080c, 0x080e, 0x080f, 0x0810, 0x0811, 0x0813,
- 0x0814, 0x0815, 0x0817, 0x0818, 0x081a, 0x081b, 0x081d, 0x081f,
- 0x0800, 0x0800, 0x0800, 0x0800, 0x0801, 0x0801, 0x0802, 0x0802,
- 0x0803, 0x0804, 0x0805, 0x0805, 0x0806, 0x0807, 0x0808, 0x0809,
- 0x080a, 0x080b, 0x080c, 0x080e, 0x080f, 0x0810, 0x0811, 0x0813,
- 0x0814, 0x0815, 0x0817, 0x0818, 0x081a, 0x081b, 0x081d, 0x081f,
- 0x0800, 0x0800, 0x0800, 0x0800, 0x0801, 0x0801, 0x0802, 0x0802,
- 0x0803, 0x0804, 0x0805, 0x0805, 0x0806, 0x0807, 0x0808, 0x0809,
- 0x080a, 0x080b, 0x080c, 0x080e, 0x080f, 0x0810, 0x0811, 0x0813,
- 0x0814, 0x0815, 0x0817, 0x0818, 0x081a, 0x081b, 0x081d, 0x081f,
- 0x0820, 0x0820, 0x0820, 0x0820, 0x0821, 0x0821, 0x0822, 0x0822,
- 0x0823, 0x0824, 0x0825, 0x0825, 0x0826, 0x0827, 0x0828, 0x0829,
- 0x082a, 0x082b, 0x082c, 0x082e, 0x082f, 0x0830, 0x0831, 0x0833,
- 0x0834, 0x0835, 0x0837, 0x0838, 0x083a, 0x083b, 0x083d, 0x083f,
- 0x0820, 0x0820, 0x0820, 0x0820, 0x0821, 0x0821, 0x0822, 0x0822,
- 0x0823, 0x0824, 0x0825, 0x0825, 0x0826, 0x0827, 0x0828, 0x0829,
- 0x082a, 0x082b, 0x082c, 0x082e, 0x082f, 0x0830, 0x0831, 0x0833,
- 0x0834, 0x0835, 0x0837, 0x0838, 0x083a, 0x083b, 0x083d, 0x083f,
- 0x0820, 0x0820, 0x0820, 0x0820, 0x0821, 0x0821, 0x0822, 0x0822,
- 0x0823, 0x0824, 0x0825, 0x0825, 0x0826, 0x0827, 0x0828, 0x0829,
- 0x082a, 0x082b, 0x082c, 0x082e, 0x082f, 0x0830, 0x0831, 0x0833,
- 0x0834, 0x0835, 0x0837, 0x0838, 0x083a, 0x083b, 0x083d, 0x083f,
- 0x0840, 0x0840, 0x0840, 0x0840, 0x0841, 0x0841, 0x0842, 0x0842,
- 0x0843, 0x0844, 0x0845, 0x0845, 0x0846, 0x0847, 0x0848, 0x0849,
- 0x084a, 0x084b, 0x084c, 0x084e, 0x084f, 0x0850, 0x0851, 0x0853,
- 0x0854, 0x0855, 0x0857, 0x0858, 0x085a, 0x085b, 0x085d, 0x085f,
- 0x0840, 0x0840, 0x0840, 0x0840, 0x0841, 0x0841, 0x0842, 0x0842,
- 0x0843, 0x0844, 0x0845, 0x0845, 0x0846, 0x0847, 0x0848, 0x0849,
- 0x084a, 0x084b, 0x084c, 0x084e, 0x084f, 0x0850, 0x0851, 0x0853,
- 0x0854, 0x0855, 0x0857, 0x0858, 0x085a, 0x085b, 0x085d, 0x085f,
- 0x0860, 0x0860, 0x0860, 0x0860, 0x0861, 0x0861, 0x0862, 0x0862,
- 0x0863, 0x0864, 0x0865, 0x0865, 0x0866, 0x0867, 0x0868, 0x0869,
- 0x086a, 0x086b, 0x086c, 0x086e, 0x086f, 0x0870, 0x0871, 0x0873,
- 0x0874, 0x0875, 0x0877, 0x0878, 0x087a, 0x087b, 0x087d, 0x087f,
- 0x0860, 0x0860, 0x0860, 0x0860, 0x0861, 0x0861, 0x0862, 0x0862,
- 0x0863, 0x0864, 0x0865, 0x0865, 0x0866, 0x0867, 0x0868, 0x0869,
- 0x086a, 0x086b, 0x086c, 0x086e, 0x086f, 0x0870, 0x0871, 0x0873,
- 0x0874, 0x0875, 0x0877, 0x0878, 0x087a, 0x087b, 0x087d, 0x087f,
- 0x0880, 0x0880, 0x0880, 0x0880, 0x0881, 0x0881, 0x0882, 0x0882,
- 0x0883, 0x0884, 0x0885, 0x0885, 0x0886, 0x0887, 0x0888, 0x0889,
- 0x088a, 0x088b, 0x088c, 0x088e, 0x088f, 0x0890, 0x0891, 0x0893,
- 0x0894, 0x0895, 0x0897, 0x0898, 0x089a, 0x089b, 0x089d, 0x089f,
- 0x08a0, 0x08a0, 0x08a0, 0x08a0, 0x08a1, 0x08a1, 0x08a2, 0x08a2,
- 0x08a3, 0x08a4, 0x08a5, 0x08a5, 0x08a6, 0x08a7, 0x08a8, 0x08a9,
- 0x08aa, 0x08ab, 0x08ac, 0x08ae, 0x08af, 0x08b0, 0x08b1, 0x08b3,
- 0x08b4, 0x08b5, 0x08b7, 0x08b8, 0x08ba, 0x08bb, 0x08bd, 0x08bf,
- 0x08a0, 0x08a0, 0x08a0, 0x08a0, 0x08a1, 0x08a1, 0x08a2, 0x08a2,
- 0x08a3, 0x08a4, 0x08a5, 0x08a5, 0x08a6, 0x08a7, 0x08a8, 0x08a9,
- 0x08aa, 0x08ab, 0x08ac, 0x08ae, 0x08af, 0x08b0, 0x08b1, 0x08b3,
- 0x08b4, 0x08b5, 0x08b7, 0x08b8, 0x08ba, 0x08bb, 0x08bd, 0x08bf,
- 0x08c0, 0x08c0, 0x08c0, 0x08c0, 0x08c1, 0x08c1, 0x08c2, 0x08c2,
- 0x08c3, 0x08c4, 0x08c5, 0x08c5, 0x08c6, 0x08c7, 0x08c8, 0x08c9,
- 0x08ca, 0x08cb, 0x08cc, 0x08ce, 0x08cf, 0x08d0, 0x08d1, 0x08d3,
- 0x08d4, 0x08d5, 0x08d7, 0x08d8, 0x08da, 0x08db, 0x08dd, 0x08df,
- 0x08e0, 0x08e0, 0x08e0, 0x08e0, 0x08e1, 0x08e1, 0x08e2, 0x08e2,
- 0x08e3, 0x08e4, 0x08e5, 0x08e5, 0x08e6, 0x08e7, 0x08e8, 0x08e9,
- 0x08ea, 0x08eb, 0x08ec, 0x08ee, 0x08ef, 0x08f0, 0x08f1, 0x08f3,
- 0x08f4, 0x08f5, 0x08f7, 0x08f8, 0x08fa, 0x08fb, 0x08fd, 0x08ff,
- 0x08e0, 0x08e0, 0x08e0, 0x08e0, 0x08e1, 0x08e1, 0x08e2, 0x08e2,
- 0x08e3, 0x08e4, 0x08e5, 0x08e5, 0x08e6, 0x08e7, 0x08e8, 0x08e9,
- 0x08ea, 0x08eb, 0x08ec, 0x08ee, 0x08ef, 0x08f0, 0x08f1, 0x08f3,
- 0x08f4, 0x08f5, 0x08f7, 0x08f8, 0x08fa, 0x08fb, 0x08fd, 0x08ff,
- 0x0900, 0x0900, 0x0900, 0x0900, 0x0901, 0x0901, 0x0902, 0x0902,
- 0x0903, 0x0904, 0x0905, 0x0905, 0x0906, 0x0907, 0x0908, 0x0909,
- 0x090a, 0x090b, 0x090c, 0x090e, 0x090f, 0x0910, 0x0911, 0x0913,
- 0x0914, 0x0915, 0x0917, 0x0918, 0x091a, 0x091b, 0x091d, 0x091f,
- 0x0920, 0x0920, 0x0920, 0x0920, 0x0921, 0x0921, 0x0922, 0x0922,
- 0x0923, 0x0924, 0x0925, 0x0925, 0x0926, 0x0927, 0x0928, 0x0929,
- 0x092a, 0x092b, 0x092c, 0x092e, 0x092f, 0x0930, 0x0931, 0x0933,
- 0x0934, 0x0935, 0x0937, 0x0938, 0x093a, 0x093b, 0x093d, 0x093f,
- 0x0940, 0x0940, 0x0940, 0x0940, 0x0941, 0x0941, 0x0942, 0x0942,
- 0x0943, 0x0944, 0x0945, 0x0945, 0x0946, 0x0947, 0x0948, 0x0949,
- 0x094a, 0x094b, 0x094c, 0x094e, 0x094f, 0x0950, 0x0951, 0x0953,
- 0x0954, 0x0955, 0x0957, 0x0958, 0x095a, 0x095b, 0x095d, 0x095f,
- 0x0940, 0x0940, 0x0940, 0x0940, 0x0941, 0x0941, 0x0942, 0x0942,
- 0x0943, 0x0944, 0x0945, 0x0945, 0x0946, 0x0947, 0x0948, 0x0949,
- 0x094a, 0x094b, 0x094c, 0x094e, 0x094f, 0x0950, 0x0951, 0x0953,
- 0x0954, 0x0955, 0x0957, 0x0958, 0x095a, 0x095b, 0x095d, 0x095f,
- 0x0960, 0x0960, 0x0960, 0x0960, 0x0961, 0x0961, 0x0962, 0x0962,
- 0x0963, 0x0964, 0x0965, 0x0965, 0x0966, 0x0967, 0x0968, 0x0969,
- 0x096a, 0x096b, 0x096c, 0x096e, 0x096f, 0x0970, 0x0971, 0x0973,
- 0x0974, 0x0975, 0x0977, 0x0978, 0x097a, 0x097b, 0x097d, 0x097f,
- 0x0980, 0x0980, 0x0980, 0x0980, 0x0981, 0x0981, 0x0982, 0x0982,
- 0x0983, 0x0984, 0x0985, 0x0985, 0x0986, 0x0987, 0x0988, 0x0989,
- 0x098a, 0x098b, 0x098c, 0x098e, 0x098f, 0x0990, 0x0991, 0x0993,
- 0x0994, 0x0995, 0x0997, 0x0998, 0x099a, 0x099b, 0x099d, 0x099f,
- 0x09a0, 0x09a0, 0x09a0, 0x09a0, 0x09a1, 0x09a1, 0x09a2, 0x09a2,
- 0x09a3, 0x09a4, 0x09a5, 0x09a5, 0x09a6, 0x09a7, 0x09a8, 0x09a9,
- 0x09aa, 0x09ab, 0x09ac, 0x09ae, 0x09af, 0x09b0, 0x09b1, 0x09b3,
- 0x09b4, 0x09b5, 0x09b7, 0x09b8, 0x09ba, 0x09bb, 0x09bd, 0x09bf,
- 0x09c0, 0x09c0, 0x09c0, 0x09c0, 0x09c1, 0x09c1, 0x09c2, 0x09c2,
- 0x09c3, 0x09c4, 0x09c5, 0x09c5, 0x09c6, 0x09c7, 0x09c8, 0x09c9,
- 0x09ca, 0x09cb, 0x09cc, 0x09ce, 0x09cf, 0x09d0, 0x09d1, 0x09d3,
- 0x09d4, 0x09d5, 0x09d7, 0x09d8, 0x09da, 0x09db, 0x09dd, 0x09df,
- 0x09e0, 0x09e0, 0x09e0, 0x09e0, 0x09e1, 0x09e1, 0x09e2, 0x09e2,
- 0x09e3, 0x09e4, 0x09e5, 0x09e5, 0x09e6, 0x09e7, 0x09e8, 0x09e9,
- 0x09ea, 0x09eb, 0x09ec, 0x09ee, 0x09ef, 0x09f0, 0x09f1, 0x09f3,
- 0x09f4, 0x09f5, 0x09f7, 0x09f8, 0x09fa, 0x09fb, 0x09fd, 0x09ff,
- 0x0a00, 0x0a00, 0x0a00, 0x0a00, 0x0a01, 0x0a01, 0x0a02, 0x0a02,
- 0x0a03, 0x0a04, 0x0a05, 0x0a05, 0x0a06, 0x0a07, 0x0a08, 0x0a09,
- 0x0a0a, 0x0a0b, 0x0a0c, 0x0a0e, 0x0a0f, 0x0a10, 0x0a11, 0x0a13,
- 0x0a14, 0x0a15, 0x0a17, 0x0a18, 0x0a1a, 0x0a1b, 0x0a1d, 0x0a1f,
- 0x0a20, 0x0a20, 0x0a20, 0x0a20, 0x0a21, 0x0a21, 0x0a22, 0x0a22,
- 0x0a23, 0x0a24, 0x0a25, 0x0a25, 0x0a26, 0x0a27, 0x0a28, 0x0a29,
- 0x0a2a, 0x0a2b, 0x0a2c, 0x0a2e, 0x0a2f, 0x0a30, 0x0a31, 0x0a33,
- 0x0a34, 0x0a35, 0x0a37, 0x0a38, 0x0a3a, 0x0a3b, 0x0a3d, 0x0a3f,
- 0x0a40, 0x0a40, 0x0a40, 0x0a40, 0x0a41, 0x0a41, 0x0a42, 0x0a42,
- 0x0a43, 0x0a44, 0x0a45, 0x0a45, 0x0a46, 0x0a47, 0x0a48, 0x0a49,
- 0x0a4a, 0x0a4b, 0x0a4c, 0x0a4e, 0x0a4f, 0x0a50, 0x0a51, 0x0a53,
- 0x0a54, 0x0a55, 0x0a57, 0x0a58, 0x0a5a, 0x0a5b, 0x0a5d, 0x0a5f,
- 0x0a60, 0x0a60, 0x0a60, 0x0a60, 0x0a61, 0x0a61, 0x0a62, 0x0a62,
- 0x0a63, 0x0a64, 0x0a65, 0x0a65, 0x0a66, 0x0a67, 0x0a68, 0x0a69,
- 0x0a6a, 0x0a6b, 0x0a6c, 0x0a6e, 0x0a6f, 0x0a70, 0x0a71, 0x0a73,
- 0x0a74, 0x0a75, 0x0a77, 0x0a78, 0x0a7a, 0x0a7b, 0x0a7d, 0x0a7f,
- 0x0a80, 0x0a80, 0x0a80, 0x0a80, 0x0a81, 0x0a81, 0x0a82, 0x0a82,
- 0x0a83, 0x0a84, 0x0a85, 0x0a85, 0x0a86, 0x0a87, 0x0a88, 0x0a89,
- 0x0a8a, 0x0a8b, 0x0a8c, 0x0a8e, 0x0a8f, 0x0a90, 0x0a91, 0x0a93,
- 0x0a94, 0x0a95, 0x0a97, 0x0a98, 0x0a9a, 0x0a9b, 0x0a9d, 0x0a9f,
- 0x0aa0, 0x0aa0, 0x0aa0, 0x0aa0, 0x0aa1, 0x0aa1, 0x0aa2, 0x0aa2,
- 0x0aa3, 0x0aa4, 0x0aa5, 0x0aa5, 0x0aa6, 0x0aa7, 0x0aa8, 0x0aa9,
- 0x0aaa, 0x0aab, 0x0aac, 0x0aae, 0x0aaf, 0x0ab0, 0x0ab1, 0x0ab3,
- 0x0ab4, 0x0ab5, 0x0ab7, 0x0ab8, 0x0aba, 0x0abb, 0x0abd, 0x0abf,
- 0x0ac0, 0x0ac0, 0x0ac0, 0x0ac0, 0x0ac1, 0x0ac1, 0x0ac2, 0x0ac2,
- 0x0ac3, 0x0ac4, 0x0ac5, 0x0ac5, 0x0ac6, 0x0ac7, 0x0ac8, 0x0ac9,
- 0x0aca, 0x0acb, 0x0acc, 0x0ace, 0x0acf, 0x0ad0, 0x0ad1, 0x0ad3,
- 0x0ad4, 0x0ad5, 0x0ad7, 0x0ad8, 0x0ada, 0x0adb, 0x0add, 0x0adf,
- 0x0ae0, 0x0ae0, 0x0ae0, 0x0ae0, 0x0ae1, 0x0ae1, 0x0ae2, 0x0ae2,
- 0x0ae3, 0x0ae4, 0x0ae5, 0x0ae5, 0x0ae6, 0x0ae7, 0x0ae8, 0x0ae9,
- 0x0aea, 0x0aeb, 0x0aec, 0x0aee, 0x0aef, 0x0af0, 0x0af1, 0x0af3,
- 0x0af4, 0x0af5, 0x0af7, 0x0af8, 0x0afa, 0x0afb, 0x0afd, 0x0aff,
- 0x0b00, 0x0b00, 0x0b00, 0x0b00, 0x0b01, 0x0b01, 0x0b02, 0x0b02,
- 0x0b03, 0x0b04, 0x0b05, 0x0b05, 0x0b06, 0x0b07, 0x0b08, 0x0b09,
- 0x0b0a, 0x0b0b, 0x0b0c, 0x0b0e, 0x0b0f, 0x0b10, 0x0b11, 0x0b13,
- 0x0b14, 0x0b15, 0x0b17, 0x0b18, 0x0b1a, 0x0b1b, 0x0b1d, 0x0b1f,
- 0x0b20, 0x0b20, 0x0b20, 0x0b20, 0x0b21, 0x0b21, 0x0b22, 0x0b22,
- 0x0b23, 0x0b24, 0x0b25, 0x0b25, 0x0b26, 0x0b27, 0x0b28, 0x0b29,
- 0x0b2a, 0x0b2b, 0x0b2c, 0x0b2e, 0x0b2f, 0x0b30, 0x0b31, 0x0b33,
- 0x0b34, 0x0b35, 0x0b37, 0x0b38, 0x0b3a, 0x0b3b, 0x0b3d, 0x0b3f,
- 0x0b40, 0x0b40, 0x0b40, 0x0b40, 0x0b41, 0x0b41, 0x0b42, 0x0b42,
- 0x0b43, 0x0b44, 0x0b45, 0x0b45, 0x0b46, 0x0b47, 0x0b48, 0x0b49,
- 0x0b4a, 0x0b4b, 0x0b4c, 0x0b4e, 0x0b4f, 0x0b50, 0x0b51, 0x0b53,
- 0x0b54, 0x0b55, 0x0b57, 0x0b58, 0x0b5a, 0x0b5b, 0x0b5d, 0x0b5f,
- 0x0b80, 0x0b80, 0x0b80, 0x0b80, 0x0b81, 0x0b81, 0x0b82, 0x0b82,
- 0x0b83, 0x0b84, 0x0b85, 0x0b85, 0x0b86, 0x0b87, 0x0b88, 0x0b89,
- 0x0b8a, 0x0b8b, 0x0b8c, 0x0b8e, 0x0b8f, 0x0b90, 0x0b91, 0x0b93,
- 0x0b94, 0x0b95, 0x0b97, 0x0b98, 0x0b9a, 0x0b9b, 0x0b9d, 0x0b9f,
- 0x0ba0, 0x0ba0, 0x0ba0, 0x0ba0, 0x0ba1, 0x0ba1, 0x0ba2, 0x0ba2,
- 0x0ba3, 0x0ba4, 0x0ba5, 0x0ba5, 0x0ba6, 0x0ba7, 0x0ba8, 0x0ba9,
- 0x0baa, 0x0bab, 0x0bac, 0x0bae, 0x0baf, 0x0bb0, 0x0bb1, 0x0bb3,
- 0x0bb4, 0x0bb5, 0x0bb7, 0x0bb8, 0x0bba, 0x0bbb, 0x0bbd, 0x0bbf,
- 0x0bc0, 0x0bc0, 0x0bc0, 0x0bc0, 0x0bc1, 0x0bc1, 0x0bc2, 0x0bc2,
- 0x0bc3, 0x0bc4, 0x0bc5, 0x0bc5, 0x0bc6, 0x0bc7, 0x0bc8, 0x0bc9,
- 0x0bca, 0x0bcb, 0x0bcc, 0x0bce, 0x0bcf, 0x0bd0, 0x0bd1, 0x0bd3,
- 0x0bd4, 0x0bd5, 0x0bd7, 0x0bd8, 0x0bda, 0x0bdb, 0x0bdd, 0x0bdf,
- 0x0be0, 0x0be0, 0x0be0, 0x0be0, 0x0be1, 0x0be1, 0x0be2, 0x0be2,
- 0x0be3, 0x0be4, 0x0be5, 0x0be5, 0x0be6, 0x0be7, 0x0be8, 0x0be9,
- 0x0bea, 0x0beb, 0x0bec, 0x0bee, 0x0bef, 0x0bf0, 0x0bf1, 0x0bf3,
- 0x0bf4, 0x0bf5, 0x0bf7, 0x0bf8, 0x0bfa, 0x0bfb, 0x0bfd, 0x0bff,
- 0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x0c01, 0x0c01, 0x0c02, 0x0c02,
- 0x0c03, 0x0c04, 0x0c05, 0x0c05, 0x0c06, 0x0c07, 0x0c08, 0x0c09,
- 0x0c0a, 0x0c0b, 0x0c0c, 0x0c0e, 0x0c0f, 0x0c10, 0x0c11, 0x0c13,
- 0x0c14, 0x0c15, 0x0c17, 0x0c18, 0x0c1a, 0x0c1b, 0x0c1d, 0x0c1f,
- 0x0c40, 0x0c40, 0x0c40, 0x0c40, 0x0c41, 0x0c41, 0x0c42, 0x0c42,
- 0x0c43, 0x0c44, 0x0c45, 0x0c45, 0x0c46, 0x0c47, 0x0c48, 0x0c49,
- 0x0c4a, 0x0c4b, 0x0c4c, 0x0c4e, 0x0c4f, 0x0c50, 0x0c51, 0x0c53,
- 0x0c54, 0x0c55, 0x0c57, 0x0c58, 0x0c5a, 0x0c5b, 0x0c5d, 0x0c5f,
- 0x0c60, 0x0c60, 0x0c60, 0x0c60, 0x0c61, 0x0c61, 0x0c62, 0x0c62,
- 0x0c63, 0x0c64, 0x0c65, 0x0c65, 0x0c66, 0x0c67, 0x0c68, 0x0c69,
- 0x0c6a, 0x0c6b, 0x0c6c, 0x0c6e, 0x0c6f, 0x0c70, 0x0c71, 0x0c73,
- 0x0c74, 0x0c75, 0x0c77, 0x0c78, 0x0c7a, 0x0c7b, 0x0c7d, 0x0c7f,
- 0x0c80, 0x0c80, 0x0c80, 0x0c80, 0x0c81, 0x0c81, 0x0c82, 0x0c82,
- 0x0c83, 0x0c84, 0x0c85, 0x0c85, 0x0c86, 0x0c87, 0x0c88, 0x0c89,
- 0x0c8a, 0x0c8b, 0x0c8c, 0x0c8e, 0x0c8f, 0x0c90, 0x0c91, 0x0c93,
- 0x0c94, 0x0c95, 0x0c97, 0x0c98, 0x0c9a, 0x0c9b, 0x0c9d, 0x0c9f,
- 0x0cc0, 0x0cc0, 0x0cc0, 0x0cc0, 0x0cc1, 0x0cc1, 0x0cc2, 0x0cc2,
- 0x0cc3, 0x0cc4, 0x0cc5, 0x0cc5, 0x0cc6, 0x0cc7, 0x0cc8, 0x0cc9,
- 0x0cca, 0x0ccb, 0x0ccc, 0x0cce, 0x0ccf, 0x0cd0, 0x0cd1, 0x0cd3,
- 0x0cd4, 0x0cd5, 0x0cd7, 0x0cd8, 0x0cda, 0x0cdb, 0x0cdd, 0x0cdf,
- 0x0ce0, 0x0ce0, 0x0ce0, 0x0ce0, 0x0ce1, 0x0ce1, 0x0ce2, 0x0ce2,
- 0x0ce3, 0x0ce4, 0x0ce5, 0x0ce5, 0x0ce6, 0x0ce7, 0x0ce8, 0x0ce9,
- 0x0cea, 0x0ceb, 0x0cec, 0x0cee, 0x0cef, 0x0cf0, 0x0cf1, 0x0cf3,
- 0x0cf4, 0x0cf5, 0x0cf7, 0x0cf8, 0x0cfa, 0x0cfb, 0x0cfd, 0x0cff,
- 0x0d00, 0x0d00, 0x0d00, 0x0d00, 0x0d01, 0x0d01, 0x0d02, 0x0d02,
- 0x0d03, 0x0d04, 0x0d05, 0x0d05, 0x0d06, 0x0d07, 0x0d08, 0x0d09,
- 0x0d0a, 0x0d0b, 0x0d0c, 0x0d0e, 0x0d0f, 0x0d10, 0x0d11, 0x0d13,
- 0x0d14, 0x0d15, 0x0d17, 0x0d18, 0x0d1a, 0x0d1b, 0x0d1d, 0x0d1f,
- 0x0d40, 0x0d40, 0x0d40, 0x0d40, 0x0d41, 0x0d41, 0x0d42, 0x0d42,
- 0x0d43, 0x0d44, 0x0d45, 0x0d45, 0x0d46, 0x0d47, 0x0d48, 0x0d49,
- 0x0d4a, 0x0d4b, 0x0d4c, 0x0d4e, 0x0d4f, 0x0d50, 0x0d51, 0x0d53,
- 0x0d54, 0x0d55, 0x0d57, 0x0d58, 0x0d5a, 0x0d5b, 0x0d5d, 0x0d5f,
- 0x0d60, 0x0d60, 0x0d60, 0x0d60, 0x0d61, 0x0d61, 0x0d62, 0x0d62,
- 0x0d63, 0x0d64, 0x0d65, 0x0d65, 0x0d66, 0x0d67, 0x0d68, 0x0d69,
- 0x0d6a, 0x0d6b, 0x0d6c, 0x0d6e, 0x0d6f, 0x0d70, 0x0d71, 0x0d73,
- 0x0d74, 0x0d75, 0x0d77, 0x0d78, 0x0d7a, 0x0d7b, 0x0d7d, 0x0d7f,
- 0x0d80, 0x0d80, 0x0d80, 0x0d80, 0x0d81, 0x0d81, 0x0d82, 0x0d82,
- 0x0d83, 0x0d84, 0x0d85, 0x0d85, 0x0d86, 0x0d87, 0x0d88, 0x0d89,
- 0x0d8a, 0x0d8b, 0x0d8c, 0x0d8e, 0x0d8f, 0x0d90, 0x0d91, 0x0d93,
- 0x0d94, 0x0d95, 0x0d97, 0x0d98, 0x0d9a, 0x0d9b, 0x0d9d, 0x0d9f,
- 0x0dc0, 0x0dc0, 0x0dc0, 0x0dc0, 0x0dc1, 0x0dc1, 0x0dc2, 0x0dc2,
- 0x0dc3, 0x0dc4, 0x0dc5, 0x0dc5, 0x0dc6, 0x0dc7, 0x0dc8, 0x0dc9,
- 0x0dca, 0x0dcb, 0x0dcc, 0x0dce, 0x0dcf, 0x0dd0, 0x0dd1, 0x0dd3,
- 0x0dd4, 0x0dd5, 0x0dd7, 0x0dd8, 0x0dda, 0x0ddb, 0x0ddd, 0x0ddf,
- 0x0de0, 0x0de0, 0x0de0, 0x0de0, 0x0de1, 0x0de1, 0x0de2, 0x0de2,
- 0x0de3, 0x0de4, 0x0de5, 0x0de5, 0x0de6, 0x0de7, 0x0de8, 0x0de9,
- 0x0dea, 0x0deb, 0x0dec, 0x0dee, 0x0def, 0x0df0, 0x0df1, 0x0df3,
- 0x0df4, 0x0df5, 0x0df7, 0x0df8, 0x0dfa, 0x0dfb, 0x0dfd, 0x0dff,
- 0x0e20, 0x0e20, 0x0e20, 0x0e20, 0x0e21, 0x0e21, 0x0e22, 0x0e22,
- 0x0e23, 0x0e24, 0x0e25, 0x0e25, 0x0e26, 0x0e27, 0x0e28, 0x0e29,
- 0x0e2a, 0x0e2b, 0x0e2c, 0x0e2e, 0x0e2f, 0x0e30, 0x0e31, 0x0e33,
- 0x0e34, 0x0e35, 0x0e37, 0x0e38, 0x0e3a, 0x0e3b, 0x0e3d, 0x0e3f,
- 0x0e40, 0x0e40, 0x0e40, 0x0e40, 0x0e41, 0x0e41, 0x0e42, 0x0e42,
- 0x0e43, 0x0e44, 0x0e45, 0x0e45, 0x0e46, 0x0e47, 0x0e48, 0x0e49,
- 0x0e4a, 0x0e4b, 0x0e4c, 0x0e4e, 0x0e4f, 0x0e50, 0x0e51, 0x0e53,
- 0x0e54, 0x0e55, 0x0e57, 0x0e58, 0x0e5a, 0x0e5b, 0x0e5d, 0x0e5f,
- 0x0e80, 0x0e80, 0x0e80, 0x0e80, 0x0e81, 0x0e81, 0x0e82, 0x0e82,
- 0x0e83, 0x0e84, 0x0e85, 0x0e85, 0x0e86, 0x0e87, 0x0e88, 0x0e89,
- 0x0e8a, 0x0e8b, 0x0e8c, 0x0e8e, 0x0e8f, 0x0e90, 0x0e91, 0x0e93,
- 0x0e94, 0x0e95, 0x0e97, 0x0e98, 0x0e9a, 0x0e9b, 0x0e9d, 0x0e9f,
- 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea0, 0x0ea1, 0x0ea1, 0x0ea2, 0x0ea2,
- 0x0ea3, 0x0ea4, 0x0ea5, 0x0ea5, 0x0ea6, 0x0ea7, 0x0ea8, 0x0ea9,
- 0x0eaa, 0x0eab, 0x0eac, 0x0eae, 0x0eaf, 0x0eb0, 0x0eb1, 0x0eb3,
- 0x0eb4, 0x0eb5, 0x0eb7, 0x0eb8, 0x0eba, 0x0ebb, 0x0ebd, 0x0ebf,
- 0x0ee0, 0x0ee0, 0x0ee0, 0x0ee0, 0x0ee1, 0x0ee1, 0x0ee2, 0x0ee2,
- 0x0ee3, 0x0ee4, 0x0ee5, 0x0ee5, 0x0ee6, 0x0ee7, 0x0ee8, 0x0ee9,
- 0x0eea, 0x0eeb, 0x0eec, 0x0eee, 0x0eef, 0x0ef0, 0x0ef1, 0x0ef3,
- 0x0ef4, 0x0ef5, 0x0ef7, 0x0ef8, 0x0efa, 0x0efb, 0x0efd, 0x0eff,
- 0x0f00, 0x0f00, 0x0f00, 0x0f00, 0x0f01, 0x0f01, 0x0f02, 0x0f02,
- 0x0f03, 0x0f04, 0x0f05, 0x0f05, 0x0f06, 0x0f07, 0x0f08, 0x0f09,
- 0x0f0a, 0x0f0b, 0x0f0c, 0x0f0e, 0x0f0f, 0x0f10, 0x0f11, 0x0f13,
- 0x0f14, 0x0f15, 0x0f17, 0x0f18, 0x0f1a, 0x0f1b, 0x0f1d, 0x0f1f,
- 0x0f40, 0x0f40, 0x0f40, 0x0f40, 0x0f41, 0x0f41, 0x0f42, 0x0f42,
- 0x0f43, 0x0f44, 0x0f45, 0x0f45, 0x0f46, 0x0f47, 0x0f48, 0x0f49,
- 0x0f4a, 0x0f4b, 0x0f4c, 0x0f4e, 0x0f4f, 0x0f50, 0x0f51, 0x0f53,
- 0x0f54, 0x0f55, 0x0f57, 0x0f58, 0x0f5a, 0x0f5b, 0x0f5d, 0x0f5f,
- 0x0f60, 0x0f60, 0x0f60, 0x0f60, 0x0f61, 0x0f61, 0x0f62, 0x0f62,
- 0x0f63, 0x0f64, 0x0f65, 0x0f65, 0x0f66, 0x0f67, 0x0f68, 0x0f69,
- 0x0f6a, 0x0f6b, 0x0f6c, 0x0f6e, 0x0f6f, 0x0f70, 0x0f71, 0x0f73,
- 0x0f74, 0x0f75, 0x0f77, 0x0f78, 0x0f7a, 0x0f7b, 0x0f7d, 0x0f7f,
- 0x0fa0, 0x0fa0, 0x0fa0, 0x0fa0, 0x0fa1, 0x0fa1, 0x0fa2, 0x0fa2,
- 0x0fa3, 0x0fa4, 0x0fa5, 0x0fa5, 0x0fa6, 0x0fa7, 0x0fa8, 0x0fa9,
- 0x0faa, 0x0fab, 0x0fac, 0x0fae, 0x0faf, 0x0fb0, 0x0fb1, 0x0fb3,
- 0x0fb4, 0x0fb5, 0x0fb7, 0x0fb8, 0x0fba, 0x0fbb, 0x0fbd, 0x0fbf,
- 0x0fe0, 0x0fe0, 0x0fe0, 0x0fe0, 0x0fe1, 0x0fe1, 0x0fe2, 0x0fe2,
- 0x0fe3, 0x0fe4, 0x0fe5, 0x0fe5, 0x0fe6, 0x0fe7, 0x0fe8, 0x0fe9,
- 0x0fea, 0x0feb, 0x0fec, 0x0fee, 0x0fef, 0x0ff0, 0x0ff1, 0x0ff3,
- 0x0ff4, 0x0ff5, 0x0ff7, 0x0ff8, 0x0ffa, 0x0ffb, 0x0ffd, 0x0fff,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1001, 0x1001, 0x1002, 0x1002,
- 0x1003, 0x1004, 0x1005, 0x1005, 0x1006, 0x1007, 0x1008, 0x1009,
- 0x100a, 0x100b, 0x100c, 0x100e, 0x100f, 0x1010, 0x1011, 0x1013,
- 0x1014, 0x1015, 0x1017, 0x1018, 0x101a, 0x101b, 0x101d, 0x101f,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1001, 0x1001, 0x1002, 0x1002,
- 0x1003, 0x1004, 0x1005, 0x1005, 0x1006, 0x1007, 0x1008, 0x1009,
- 0x100a, 0x100b, 0x100c, 0x100e, 0x100f, 0x1010, 0x1011, 0x1013,
- 0x1014, 0x1015, 0x1017, 0x1018, 0x101a, 0x101b, 0x101d, 0x101f,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1001, 0x1001, 0x1002, 0x1002,
- 0x1003, 0x1004, 0x1005, 0x1005, 0x1006, 0x1007, 0x1008, 0x1009,
- 0x100a, 0x100b, 0x100c, 0x100e, 0x100f, 0x1010, 0x1011, 0x1013,
- 0x1014, 0x1015, 0x1017, 0x1018, 0x101a, 0x101b, 0x101d, 0x101f,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1001, 0x1001, 0x1002, 0x1002,
- 0x1003, 0x1004, 0x1005, 0x1005, 0x1006, 0x1007, 0x1008, 0x1009,
- 0x100a, 0x100b, 0x100c, 0x100e, 0x100f, 0x1010, 0x1011, 0x1013,
- 0x1014, 0x1015, 0x1017, 0x1018, 0x101a, 0x101b, 0x101d, 0x101f,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1001, 0x1001, 0x1002, 0x1002,
- 0x1003, 0x1004, 0x1005, 0x1005, 0x1006, 0x1007, 0x1008, 0x1009,
- 0x100a, 0x100b, 0x100c, 0x100e, 0x100f, 0x1010, 0x1011, 0x1013,
- 0x1014, 0x1015, 0x1017, 0x1018, 0x101a, 0x101b, 0x101d, 0x101f,
- 0x1020, 0x1020, 0x1020, 0x1020, 0x1021, 0x1021, 0x1022, 0x1022,
- 0x1023, 0x1024, 0x1025, 0x1025, 0x1026, 0x1027, 0x1028, 0x1029,
- 0x102a, 0x102b, 0x102c, 0x102e, 0x102f, 0x1030, 0x1031, 0x1033,
- 0x1034, 0x1035, 0x1037, 0x1038, 0x103a, 0x103b, 0x103d, 0x103f,
- 0x1020, 0x1020, 0x1020, 0x1020, 0x1021, 0x1021, 0x1022, 0x1022,
- 0x1023, 0x1024, 0x1025, 0x1025, 0x1026, 0x1027, 0x1028, 0x1029,
- 0x102a, 0x102b, 0x102c, 0x102e, 0x102f, 0x1030, 0x1031, 0x1033,
- 0x1034, 0x1035, 0x1037, 0x1038, 0x103a, 0x103b, 0x103d, 0x103f,
- 0x1020, 0x1020, 0x1020, 0x1020, 0x1021, 0x1021, 0x1022, 0x1022,
- 0x1023, 0x1024, 0x1025, 0x1025, 0x1026, 0x1027, 0x1028, 0x1029,
- 0x102a, 0x102b, 0x102c, 0x102e, 0x102f, 0x1030, 0x1031, 0x1033,
- 0x1034, 0x1035, 0x1037, 0x1038, 0x103a, 0x103b, 0x103d, 0x103f,
- 0x1040, 0x1040, 0x1040, 0x1040, 0x1041, 0x1041, 0x1042, 0x1042,
- 0x1043, 0x1044, 0x1045, 0x1045, 0x1046, 0x1047, 0x1048, 0x1049,
- 0x104a, 0x104b, 0x104c, 0x104e, 0x104f, 0x1050, 0x1051, 0x1053,
- 0x1054, 0x1055, 0x1057, 0x1058, 0x105a, 0x105b, 0x105d, 0x105f,
- 0x1040, 0x1040, 0x1040, 0x1040, 0x1041, 0x1041, 0x1042, 0x1042,
- 0x1043, 0x1044, 0x1045, 0x1045, 0x1046, 0x1047, 0x1048, 0x1049,
- 0x104a, 0x104b, 0x104c, 0x104e, 0x104f, 0x1050, 0x1051, 0x1053,
- 0x1054, 0x1055, 0x1057, 0x1058, 0x105a, 0x105b, 0x105d, 0x105f,
- 0x1060, 0x1060, 0x1060, 0x1060, 0x1061, 0x1061, 0x1062, 0x1062,
- 0x1063, 0x1064, 0x1065, 0x1065, 0x1066, 0x1067, 0x1068, 0x1069,
- 0x106a, 0x106b, 0x106c, 0x106e, 0x106f, 0x1070, 0x1071, 0x1073,
- 0x1074, 0x1075, 0x1077, 0x1078, 0x107a, 0x107b, 0x107d, 0x107f,
- 0x1060, 0x1060, 0x1060, 0x1060, 0x1061, 0x1061, 0x1062, 0x1062,
- 0x1063, 0x1064, 0x1065, 0x1065, 0x1066, 0x1067, 0x1068, 0x1069,
- 0x106a, 0x106b, 0x106c, 0x106e, 0x106f, 0x1070, 0x1071, 0x1073,
- 0x1074, 0x1075, 0x1077, 0x1078, 0x107a, 0x107b, 0x107d, 0x107f,
- 0x1080, 0x1080, 0x1080, 0x1080, 0x1081, 0x1081, 0x1082, 0x1082,
- 0x1083, 0x1084, 0x1085, 0x1085, 0x1086, 0x1087, 0x1088, 0x1089,
- 0x108a, 0x108b, 0x108c, 0x108e, 0x108f, 0x1090, 0x1091, 0x1093,
- 0x1094, 0x1095, 0x1097, 0x1098, 0x109a, 0x109b, 0x109d, 0x109f,
- 0x10a0, 0x10a0, 0x10a0, 0x10a0, 0x10a1, 0x10a1, 0x10a2, 0x10a2,
- 0x10a3, 0x10a4, 0x10a5, 0x10a5, 0x10a6, 0x10a7, 0x10a8, 0x10a9,
- 0x10aa, 0x10ab, 0x10ac, 0x10ae, 0x10af, 0x10b0, 0x10b1, 0x10b3,
- 0x10b4, 0x10b5, 0x10b7, 0x10b8, 0x10ba, 0x10bb, 0x10bd, 0x10bf,
- 0x10a0, 0x10a0, 0x10a0, 0x10a0, 0x10a1, 0x10a1, 0x10a2, 0x10a2,
- 0x10a3, 0x10a4, 0x10a5, 0x10a5, 0x10a6, 0x10a7, 0x10a8, 0x10a9,
- 0x10aa, 0x10ab, 0x10ac, 0x10ae, 0x10af, 0x10b0, 0x10b1, 0x10b3,
- 0x10b4, 0x10b5, 0x10b7, 0x10b8, 0x10ba, 0x10bb, 0x10bd, 0x10bf,
- 0x10c0, 0x10c0, 0x10c0, 0x10c0, 0x10c1, 0x10c1, 0x10c2, 0x10c2,
- 0x10c3, 0x10c4, 0x10c5, 0x10c5, 0x10c6, 0x10c7, 0x10c8, 0x10c9,
- 0x10ca, 0x10cb, 0x10cc, 0x10ce, 0x10cf, 0x10d0, 0x10d1, 0x10d3,
- 0x10d4, 0x10d5, 0x10d7, 0x10d8, 0x10da, 0x10db, 0x10dd, 0x10df,
- 0x10e0, 0x10e0, 0x10e0, 0x10e0, 0x10e1, 0x10e1, 0x10e2, 0x10e2,
- 0x10e3, 0x10e4, 0x10e5, 0x10e5, 0x10e6, 0x10e7, 0x10e8, 0x10e9,
- 0x10ea, 0x10eb, 0x10ec, 0x10ee, 0x10ef, 0x10f0, 0x10f1, 0x10f3,
- 0x10f4, 0x10f5, 0x10f7, 0x10f8, 0x10fa, 0x10fb, 0x10fd, 0x10ff,
- 0x10e0, 0x10e0, 0x10e0, 0x10e0, 0x10e1, 0x10e1, 0x10e2, 0x10e2,
- 0x10e3, 0x10e4, 0x10e5, 0x10e5, 0x10e6, 0x10e7, 0x10e8, 0x10e9,
- 0x10ea, 0x10eb, 0x10ec, 0x10ee, 0x10ef, 0x10f0, 0x10f1, 0x10f3,
- 0x10f4, 0x10f5, 0x10f7, 0x10f8, 0x10fa, 0x10fb, 0x10fd, 0x10ff,
- 0x1100, 0x1100, 0x1100, 0x1100, 0x1101, 0x1101, 0x1102, 0x1102,
- 0x1103, 0x1104, 0x1105, 0x1105, 0x1106, 0x1107, 0x1108, 0x1109,
- 0x110a, 0x110b, 0x110c, 0x110e, 0x110f, 0x1110, 0x1111, 0x1113,
- 0x1114, 0x1115, 0x1117, 0x1118, 0x111a, 0x111b, 0x111d, 0x111f,
- 0x1120, 0x1120, 0x1120, 0x1120, 0x1121, 0x1121, 0x1122, 0x1122,
- 0x1123, 0x1124, 0x1125, 0x1125, 0x1126, 0x1127, 0x1128, 0x1129,
- 0x112a, 0x112b, 0x112c, 0x112e, 0x112f, 0x1130, 0x1131, 0x1133,
- 0x1134, 0x1135, 0x1137, 0x1138, 0x113a, 0x113b, 0x113d, 0x113f,
- 0x1140, 0x1140, 0x1140, 0x1140, 0x1141, 0x1141, 0x1142, 0x1142,
- 0x1143, 0x1144, 0x1145, 0x1145, 0x1146, 0x1147, 0x1148, 0x1149,
- 0x114a, 0x114b, 0x114c, 0x114e, 0x114f, 0x1150, 0x1151, 0x1153,
- 0x1154, 0x1155, 0x1157, 0x1158, 0x115a, 0x115b, 0x115d, 0x115f,
- 0x1140, 0x1140, 0x1140, 0x1140, 0x1141, 0x1141, 0x1142, 0x1142,
- 0x1143, 0x1144, 0x1145, 0x1145, 0x1146, 0x1147, 0x1148, 0x1149,
- 0x114a, 0x114b, 0x114c, 0x114e, 0x114f, 0x1150, 0x1151, 0x1153,
- 0x1154, 0x1155, 0x1157, 0x1158, 0x115a, 0x115b, 0x115d, 0x115f,
- 0x1160, 0x1160, 0x1160, 0x1160, 0x1161, 0x1161, 0x1162, 0x1162,
- 0x1163, 0x1164, 0x1165, 0x1165, 0x1166, 0x1167, 0x1168, 0x1169,
- 0x116a, 0x116b, 0x116c, 0x116e, 0x116f, 0x1170, 0x1171, 0x1173,
- 0x1174, 0x1175, 0x1177, 0x1178, 0x117a, 0x117b, 0x117d, 0x117f,
- 0x1180, 0x1180, 0x1180, 0x1180, 0x1181, 0x1181, 0x1182, 0x1182,
- 0x1183, 0x1184, 0x1185, 0x1185, 0x1186, 0x1187, 0x1188, 0x1189,
- 0x118a, 0x118b, 0x118c, 0x118e, 0x118f, 0x1190, 0x1191, 0x1193,
- 0x1194, 0x1195, 0x1197, 0x1198, 0x119a, 0x119b, 0x119d, 0x119f,
- 0x11a0, 0x11a0, 0x11a0, 0x11a0, 0x11a1, 0x11a1, 0x11a2, 0x11a2,
- 0x11a3, 0x11a4, 0x11a5, 0x11a5, 0x11a6, 0x11a7, 0x11a8, 0x11a9,
- 0x11aa, 0x11ab, 0x11ac, 0x11ae, 0x11af, 0x11b0, 0x11b1, 0x11b3,
- 0x11b4, 0x11b5, 0x11b7, 0x11b8, 0x11ba, 0x11bb, 0x11bd, 0x11bf,
- 0x11c0, 0x11c0, 0x11c0, 0x11c0, 0x11c1, 0x11c1, 0x11c2, 0x11c2,
- 0x11c3, 0x11c4, 0x11c5, 0x11c5, 0x11c6, 0x11c7, 0x11c8, 0x11c9,
- 0x11ca, 0x11cb, 0x11cc, 0x11ce, 0x11cf, 0x11d0, 0x11d1, 0x11d3,
- 0x11d4, 0x11d5, 0x11d7, 0x11d8, 0x11da, 0x11db, 0x11dd, 0x11df,
- 0x11e0, 0x11e0, 0x11e0, 0x11e0, 0x11e1, 0x11e1, 0x11e2, 0x11e2,
- 0x11e3, 0x11e4, 0x11e5, 0x11e5, 0x11e6, 0x11e7, 0x11e8, 0x11e9,
- 0x11ea, 0x11eb, 0x11ec, 0x11ee, 0x11ef, 0x11f0, 0x11f1, 0x11f3,
- 0x11f4, 0x11f5, 0x11f7, 0x11f8, 0x11fa, 0x11fb, 0x11fd, 0x11ff,
- 0x1200, 0x1200, 0x1200, 0x1200, 0x1201, 0x1201, 0x1202, 0x1202,
- 0x1203, 0x1204, 0x1205, 0x1205, 0x1206, 0x1207, 0x1208, 0x1209,
- 0x120a, 0x120b, 0x120c, 0x120e, 0x120f, 0x1210, 0x1211, 0x1213,
- 0x1214, 0x1215, 0x1217, 0x1218, 0x121a, 0x121b, 0x121d, 0x121f,
- 0x1220, 0x1220, 0x1220, 0x1220, 0x1221, 0x1221, 0x1222, 0x1222,
- 0x1223, 0x1224, 0x1225, 0x1225, 0x1226, 0x1227, 0x1228, 0x1229,
- 0x122a, 0x122b, 0x122c, 0x122e, 0x122f, 0x1230, 0x1231, 0x1233,
- 0x1234, 0x1235, 0x1237, 0x1238, 0x123a, 0x123b, 0x123d, 0x123f,
- 0x1240, 0x1240, 0x1240, 0x1240, 0x1241, 0x1241, 0x1242, 0x1242,
- 0x1243, 0x1244, 0x1245, 0x1245, 0x1246, 0x1247, 0x1248, 0x1249,
- 0x124a, 0x124b, 0x124c, 0x124e, 0x124f, 0x1250, 0x1251, 0x1253,
- 0x1254, 0x1255, 0x1257, 0x1258, 0x125a, 0x125b, 0x125d, 0x125f,
- 0x1260, 0x1260, 0x1260, 0x1260, 0x1261, 0x1261, 0x1262, 0x1262,
- 0x1263, 0x1264, 0x1265, 0x1265, 0x1266, 0x1267, 0x1268, 0x1269,
- 0x126a, 0x126b, 0x126c, 0x126e, 0x126f, 0x1270, 0x1271, 0x1273,
- 0x1274, 0x1275, 0x1277, 0x1278, 0x127a, 0x127b, 0x127d, 0x127f,
- 0x1280, 0x1280, 0x1280, 0x1280, 0x1281, 0x1281, 0x1282, 0x1282,
- 0x1283, 0x1284, 0x1285, 0x1285, 0x1286, 0x1287, 0x1288, 0x1289,
- 0x128a, 0x128b, 0x128c, 0x128e, 0x128f, 0x1290, 0x1291, 0x1293,
- 0x1294, 0x1295, 0x1297, 0x1298, 0x129a, 0x129b, 0x129d, 0x129f,
- 0x12a0, 0x12a0, 0x12a0, 0x12a0, 0x12a1, 0x12a1, 0x12a2, 0x12a2,
- 0x12a3, 0x12a4, 0x12a5, 0x12a5, 0x12a6, 0x12a7, 0x12a8, 0x12a9,
- 0x12aa, 0x12ab, 0x12ac, 0x12ae, 0x12af, 0x12b0, 0x12b1, 0x12b3,
- 0x12b4, 0x12b5, 0x12b7, 0x12b8, 0x12ba, 0x12bb, 0x12bd, 0x12bf,
- 0x12c0, 0x12c0, 0x12c0, 0x12c0, 0x12c1, 0x12c1, 0x12c2, 0x12c2,
- 0x12c3, 0x12c4, 0x12c5, 0x12c5, 0x12c6, 0x12c7, 0x12c8, 0x12c9,
- 0x12ca, 0x12cb, 0x12cc, 0x12ce, 0x12cf, 0x12d0, 0x12d1, 0x12d3,
- 0x12d4, 0x12d5, 0x12d7, 0x12d8, 0x12da, 0x12db, 0x12dd, 0x12df,
- 0x12e0, 0x12e0, 0x12e0, 0x12e0, 0x12e1, 0x12e1, 0x12e2, 0x12e2,
- 0x12e3, 0x12e4, 0x12e5, 0x12e5, 0x12e6, 0x12e7, 0x12e8, 0x12e9,
- 0x12ea, 0x12eb, 0x12ec, 0x12ee, 0x12ef, 0x12f0, 0x12f1, 0x12f3,
- 0x12f4, 0x12f5, 0x12f7, 0x12f8, 0x12fa, 0x12fb, 0x12fd, 0x12ff,
- 0x1300, 0x1300, 0x1300, 0x1300, 0x1301, 0x1301, 0x1302, 0x1302,
- 0x1303, 0x1304, 0x1305, 0x1305, 0x1306, 0x1307, 0x1308, 0x1309,
- 0x130a, 0x130b, 0x130c, 0x130e, 0x130f, 0x1310, 0x1311, 0x1313,
- 0x1314, 0x1315, 0x1317, 0x1318, 0x131a, 0x131b, 0x131d, 0x131f,
- 0x1320, 0x1320, 0x1320, 0x1320, 0x1321, 0x1321, 0x1322, 0x1322,
- 0x1323, 0x1324, 0x1325, 0x1325, 0x1326, 0x1327, 0x1328, 0x1329,
- 0x132a, 0x132b, 0x132c, 0x132e, 0x132f, 0x1330, 0x1331, 0x1333,
- 0x1334, 0x1335, 0x1337, 0x1338, 0x133a, 0x133b, 0x133d, 0x133f,
- 0x1340, 0x1340, 0x1340, 0x1340, 0x1341, 0x1341, 0x1342, 0x1342,
- 0x1343, 0x1344, 0x1345, 0x1345, 0x1346, 0x1347, 0x1348, 0x1349,
- 0x134a, 0x134b, 0x134c, 0x134e, 0x134f, 0x1350, 0x1351, 0x1353,
- 0x1354, 0x1355, 0x1357, 0x1358, 0x135a, 0x135b, 0x135d, 0x135f,
- 0x1380, 0x1380, 0x1380, 0x1380, 0x1381, 0x1381, 0x1382, 0x1382,
- 0x1383, 0x1384, 0x1385, 0x1385, 0x1386, 0x1387, 0x1388, 0x1389,
- 0x138a, 0x138b, 0x138c, 0x138e, 0x138f, 0x1390, 0x1391, 0x1393,
- 0x1394, 0x1395, 0x1397, 0x1398, 0x139a, 0x139b, 0x139d, 0x139f,
- 0x13a0, 0x13a0, 0x13a0, 0x13a0, 0x13a1, 0x13a1, 0x13a2, 0x13a2,
- 0x13a3, 0x13a4, 0x13a5, 0x13a5, 0x13a6, 0x13a7, 0x13a8, 0x13a9,
- 0x13aa, 0x13ab, 0x13ac, 0x13ae, 0x13af, 0x13b0, 0x13b1, 0x13b3,
- 0x13b4, 0x13b5, 0x13b7, 0x13b8, 0x13ba, 0x13bb, 0x13bd, 0x13bf,
- 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c1, 0x13c1, 0x13c2, 0x13c2,
- 0x13c3, 0x13c4, 0x13c5, 0x13c5, 0x13c6, 0x13c7, 0x13c8, 0x13c9,
- 0x13ca, 0x13cb, 0x13cc, 0x13ce, 0x13cf, 0x13d0, 0x13d1, 0x13d3,
- 0x13d4, 0x13d5, 0x13d7, 0x13d8, 0x13da, 0x13db, 0x13dd, 0x13df,
- 0x13e0, 0x13e0, 0x13e0, 0x13e0, 0x13e1, 0x13e1, 0x13e2, 0x13e2,
- 0x13e3, 0x13e4, 0x13e5, 0x13e5, 0x13e6, 0x13e7, 0x13e8, 0x13e9,
- 0x13ea, 0x13eb, 0x13ec, 0x13ee, 0x13ef, 0x13f0, 0x13f1, 0x13f3,
- 0x13f4, 0x13f5, 0x13f7, 0x13f8, 0x13fa, 0x13fb, 0x13fd, 0x13ff,
- 0x1400, 0x1400, 0x1400, 0x1400, 0x1401, 0x1401, 0x1402, 0x1402,
- 0x1403, 0x1404, 0x1405, 0x1405, 0x1406, 0x1407, 0x1408, 0x1409,
- 0x140a, 0x140b, 0x140c, 0x140e, 0x140f, 0x1410, 0x1411, 0x1413,
- 0x1414, 0x1415, 0x1417, 0x1418, 0x141a, 0x141b, 0x141d, 0x141f,
- 0x1440, 0x1440, 0x1440, 0x1440, 0x1441, 0x1441, 0x1442, 0x1442,
- 0x1443, 0x1444, 0x1445, 0x1445, 0x1446, 0x1447, 0x1448, 0x1449,
- 0x144a, 0x144b, 0x144c, 0x144e, 0x144f, 0x1450, 0x1451, 0x1453,
- 0x1454, 0x1455, 0x1457, 0x1458, 0x145a, 0x145b, 0x145d, 0x145f,
- 0x1460, 0x1460, 0x1460, 0x1460, 0x1461, 0x1461, 0x1462, 0x1462,
- 0x1463, 0x1464, 0x1465, 0x1465, 0x1466, 0x1467, 0x1468, 0x1469,
- 0x146a, 0x146b, 0x146c, 0x146e, 0x146f, 0x1470, 0x1471, 0x1473,
- 0x1474, 0x1475, 0x1477, 0x1478, 0x147a, 0x147b, 0x147d, 0x147f,
- 0x1480, 0x1480, 0x1480, 0x1480, 0x1481, 0x1481, 0x1482, 0x1482,
- 0x1483, 0x1484, 0x1485, 0x1485, 0x1486, 0x1487, 0x1488, 0x1489,
- 0x148a, 0x148b, 0x148c, 0x148e, 0x148f, 0x1490, 0x1491, 0x1493,
- 0x1494, 0x1495, 0x1497, 0x1498, 0x149a, 0x149b, 0x149d, 0x149f,
- 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c1, 0x14c1, 0x14c2, 0x14c2,
- 0x14c3, 0x14c4, 0x14c5, 0x14c5, 0x14c6, 0x14c7, 0x14c8, 0x14c9,
- 0x14ca, 0x14cb, 0x14cc, 0x14ce, 0x14cf, 0x14d0, 0x14d1, 0x14d3,
- 0x14d4, 0x14d5, 0x14d7, 0x14d8, 0x14da, 0x14db, 0x14dd, 0x14df,
- 0x14e0, 0x14e0, 0x14e0, 0x14e0, 0x14e1, 0x14e1, 0x14e2, 0x14e2,
- 0x14e3, 0x14e4, 0x14e5, 0x14e5, 0x14e6, 0x14e7, 0x14e8, 0x14e9,
- 0x14ea, 0x14eb, 0x14ec, 0x14ee, 0x14ef, 0x14f0, 0x14f1, 0x14f3,
- 0x14f4, 0x14f5, 0x14f7, 0x14f8, 0x14fa, 0x14fb, 0x14fd, 0x14ff,
- 0x1500, 0x1500, 0x1500, 0x1500, 0x1501, 0x1501, 0x1502, 0x1502,
- 0x1503, 0x1504, 0x1505, 0x1505, 0x1506, 0x1507, 0x1508, 0x1509,
- 0x150a, 0x150b, 0x150c, 0x150e, 0x150f, 0x1510, 0x1511, 0x1513,
- 0x1514, 0x1515, 0x1517, 0x1518, 0x151a, 0x151b, 0x151d, 0x151f,
- 0x1540, 0x1540, 0x1540, 0x1540, 0x1541, 0x1541, 0x1542, 0x1542,
- 0x1543, 0x1544, 0x1545, 0x1545, 0x1546, 0x1547, 0x1548, 0x1549,
- 0x154a, 0x154b, 0x154c, 0x154e, 0x154f, 0x1550, 0x1551, 0x1553,
- 0x1554, 0x1555, 0x1557, 0x1558, 0x155a, 0x155b, 0x155d, 0x155f,
- 0x1560, 0x1560, 0x1560, 0x1560, 0x1561, 0x1561, 0x1562, 0x1562,
- 0x1563, 0x1564, 0x1565, 0x1565, 0x1566, 0x1567, 0x1568, 0x1569,
- 0x156a, 0x156b, 0x156c, 0x156e, 0x156f, 0x1570, 0x1571, 0x1573,
- 0x1574, 0x1575, 0x1577, 0x1578, 0x157a, 0x157b, 0x157d, 0x157f,
- 0x1580, 0x1580, 0x1580, 0x1580, 0x1581, 0x1581, 0x1582, 0x1582,
- 0x1583, 0x1584, 0x1585, 0x1585, 0x1586, 0x1587, 0x1588, 0x1589,
- 0x158a, 0x158b, 0x158c, 0x158e, 0x158f, 0x1590, 0x1591, 0x1593,
- 0x1594, 0x1595, 0x1597, 0x1598, 0x159a, 0x159b, 0x159d, 0x159f,
- 0x15c0, 0x15c0, 0x15c0, 0x15c0, 0x15c1, 0x15c1, 0x15c2, 0x15c2,
- 0x15c3, 0x15c4, 0x15c5, 0x15c5, 0x15c6, 0x15c7, 0x15c8, 0x15c9,
- 0x15ca, 0x15cb, 0x15cc, 0x15ce, 0x15cf, 0x15d0, 0x15d1, 0x15d3,
- 0x15d4, 0x15d5, 0x15d7, 0x15d8, 0x15da, 0x15db, 0x15dd, 0x15df,
- 0x15e0, 0x15e0, 0x15e0, 0x15e0, 0x15e1, 0x15e1, 0x15e2, 0x15e2,
- 0x15e3, 0x15e4, 0x15e5, 0x15e5, 0x15e6, 0x15e7, 0x15e8, 0x15e9,
- 0x15ea, 0x15eb, 0x15ec, 0x15ee, 0x15ef, 0x15f0, 0x15f1, 0x15f3,
- 0x15f4, 0x15f5, 0x15f7, 0x15f8, 0x15fa, 0x15fb, 0x15fd, 0x15ff,
- 0x1620, 0x1620, 0x1620, 0x1620, 0x1621, 0x1621, 0x1622, 0x1622,
- 0x1623, 0x1624, 0x1625, 0x1625, 0x1626, 0x1627, 0x1628, 0x1629,
- 0x162a, 0x162b, 0x162c, 0x162e, 0x162f, 0x1630, 0x1631, 0x1633,
- 0x1634, 0x1635, 0x1637, 0x1638, 0x163a, 0x163b, 0x163d, 0x163f,
- 0x1640, 0x1640, 0x1640, 0x1640, 0x1641, 0x1641, 0x1642, 0x1642,
- 0x1643, 0x1644, 0x1645, 0x1645, 0x1646, 0x1647, 0x1648, 0x1649,
- 0x164a, 0x164b, 0x164c, 0x164e, 0x164f, 0x1650, 0x1651, 0x1653,
- 0x1654, 0x1655, 0x1657, 0x1658, 0x165a, 0x165b, 0x165d, 0x165f,
- 0x1680, 0x1680, 0x1680, 0x1680, 0x1681, 0x1681, 0x1682, 0x1682,
- 0x1683, 0x1684, 0x1685, 0x1685, 0x1686, 0x1687, 0x1688, 0x1689,
- 0x168a, 0x168b, 0x168c, 0x168e, 0x168f, 0x1690, 0x1691, 0x1693,
- 0x1694, 0x1695, 0x1697, 0x1698, 0x169a, 0x169b, 0x169d, 0x169f,
- 0x16a0, 0x16a0, 0x16a0, 0x16a0, 0x16a1, 0x16a1, 0x16a2, 0x16a2,
- 0x16a3, 0x16a4, 0x16a5, 0x16a5, 0x16a6, 0x16a7, 0x16a8, 0x16a9,
- 0x16aa, 0x16ab, 0x16ac, 0x16ae, 0x16af, 0x16b0, 0x16b1, 0x16b3,
- 0x16b4, 0x16b5, 0x16b7, 0x16b8, 0x16ba, 0x16bb, 0x16bd, 0x16bf,
- 0x16e0, 0x16e0, 0x16e0, 0x16e0, 0x16e1, 0x16e1, 0x16e2, 0x16e2,
- 0x16e3, 0x16e4, 0x16e5, 0x16e5, 0x16e6, 0x16e7, 0x16e8, 0x16e9,
- 0x16ea, 0x16eb, 0x16ec, 0x16ee, 0x16ef, 0x16f0, 0x16f1, 0x16f3,
- 0x16f4, 0x16f5, 0x16f7, 0x16f8, 0x16fa, 0x16fb, 0x16fd, 0x16ff,
- 0x1700, 0x1700, 0x1700, 0x1700, 0x1701, 0x1701, 0x1702, 0x1702,
- 0x1703, 0x1704, 0x1705, 0x1705, 0x1706, 0x1707, 0x1708, 0x1709,
- 0x170a, 0x170b, 0x170c, 0x170e, 0x170f, 0x1710, 0x1711, 0x1713,
- 0x1714, 0x1715, 0x1717, 0x1718, 0x171a, 0x171b, 0x171d, 0x171f,
- 0x1740, 0x1740, 0x1740, 0x1740, 0x1741, 0x1741, 0x1742, 0x1742,
- 0x1743, 0x1744, 0x1745, 0x1745, 0x1746, 0x1747, 0x1748, 0x1749,
- 0x174a, 0x174b, 0x174c, 0x174e, 0x174f, 0x1750, 0x1751, 0x1753,
- 0x1754, 0x1755, 0x1757, 0x1758, 0x175a, 0x175b, 0x175d, 0x175f,
- 0x1760, 0x1760, 0x1760, 0x1760, 0x1761, 0x1761, 0x1762, 0x1762,
- 0x1763, 0x1764, 0x1765, 0x1765, 0x1766, 0x1767, 0x1768, 0x1769,
- 0x176a, 0x176b, 0x176c, 0x176e, 0x176f, 0x1770, 0x1771, 0x1773,
- 0x1774, 0x1775, 0x1777, 0x1778, 0x177a, 0x177b, 0x177d, 0x177f,
- 0x17a0, 0x17a0, 0x17a0, 0x17a0, 0x17a1, 0x17a1, 0x17a2, 0x17a2,
- 0x17a3, 0x17a4, 0x17a5, 0x17a5, 0x17a6, 0x17a7, 0x17a8, 0x17a9,
- 0x17aa, 0x17ab, 0x17ac, 0x17ae, 0x17af, 0x17b0, 0x17b1, 0x17b3,
- 0x17b4, 0x17b5, 0x17b7, 0x17b8, 0x17ba, 0x17bb, 0x17bd, 0x17bf,
- 0x17e0, 0x17e0, 0x17e0, 0x17e0, 0x17e1, 0x17e1, 0x17e2, 0x17e2,
- 0x17e3, 0x17e4, 0x17e5, 0x17e5, 0x17e6, 0x17e7, 0x17e8, 0x17e9,
- 0x17ea, 0x17eb, 0x17ec, 0x17ee, 0x17ef, 0x17f0, 0x17f1, 0x17f3,
- 0x17f4, 0x17f5, 0x17f7, 0x17f8, 0x17fa, 0x17fb, 0x17fd, 0x17ff,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1001, 0x1001, 0x1002, 0x1002,
- 0x1003, 0x1004, 0x1005, 0x1005, 0x1006, 0x1007, 0x1008, 0x1009,
- 0x100a, 0x100b, 0x100c, 0x100e, 0x100f, 0x1010, 0x1011, 0x1013,
- 0x1014, 0x1015, 0x1017, 0x1018, 0x101a, 0x101b, 0x101d, 0x101f,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1001, 0x1001, 0x1002, 0x1002,
- 0x1003, 0x1004, 0x1005, 0x1005, 0x1006, 0x1007, 0x1008, 0x1009,
- 0x100a, 0x100b, 0x100c, 0x100e, 0x100f, 0x1010, 0x1011, 0x1013,
- 0x1014, 0x1015, 0x1017, 0x1018, 0x101a, 0x101b, 0x101d, 0x101f,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1001, 0x1001, 0x1002, 0x1002,
- 0x1003, 0x1004, 0x1005, 0x1005, 0x1006, 0x1007, 0x1008, 0x1009,
- 0x100a, 0x100b, 0x100c, 0x100e, 0x100f, 0x1010, 0x1011, 0x1013,
- 0x1014, 0x1015, 0x1017, 0x1018, 0x101a, 0x101b, 0x101d, 0x101f,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1001, 0x1001, 0x1002, 0x1002,
- 0x1003, 0x1004, 0x1005, 0x1005, 0x1006, 0x1007, 0x1008, 0x1009,
- 0x100a, 0x100b, 0x100c, 0x100e, 0x100f, 0x1010, 0x1011, 0x1013,
- 0x1014, 0x1015, 0x1017, 0x1018, 0x101a, 0x101b, 0x101d, 0x101f,
- 0x1000, 0x1000, 0x1000, 0x1000, 0x1001, 0x1001, 0x1002, 0x1002,
- 0x1003, 0x1004, 0x1005, 0x1005, 0x1006, 0x1007, 0x1008, 0x1009,
- 0x100a, 0x100b, 0x100c, 0x100e, 0x100f, 0x1010, 0x1011, 0x1013,
- 0x1014, 0x1015, 0x1017, 0x1018, 0x101a, 0x101b, 0x101d, 0x101f,
- 0x1020, 0x1020, 0x1020, 0x1020, 0x1021, 0x1021, 0x1022, 0x1022,
- 0x1023, 0x1024, 0x1025, 0x1025, 0x1026, 0x1027, 0x1028, 0x1029,
- 0x102a, 0x102b, 0x102c, 0x102e, 0x102f, 0x1030, 0x1031, 0x1033,
- 0x1034, 0x1035, 0x1037, 0x1038, 0x103a, 0x103b, 0x103d, 0x103f,
- 0x1020, 0x1020, 0x1020, 0x1020, 0x1021, 0x1021, 0x1022, 0x1022,
- 0x1023, 0x1024, 0x1025, 0x1025, 0x1026, 0x1027, 0x1028, 0x1029,
- 0x102a, 0x102b, 0x102c, 0x102e, 0x102f, 0x1030, 0x1031, 0x1033,
- 0x1034, 0x1035, 0x1037, 0x1038, 0x103a, 0x103b, 0x103d, 0x103f,
- 0x1020, 0x1020, 0x1020, 0x1020, 0x1021, 0x1021, 0x1022, 0x1022,
- 0x1023, 0x1024, 0x1025, 0x1025, 0x1026, 0x1027, 0x1028, 0x1029,
- 0x102a, 0x102b, 0x102c, 0x102e, 0x102f, 0x1030, 0x1031, 0x1033,
- 0x1034, 0x1035, 0x1037, 0x1038, 0x103a, 0x103b, 0x103d, 0x103f,
- 0x1040, 0x1040, 0x1040, 0x1040, 0x1041, 0x1041, 0x1042, 0x1042,
- 0x1043, 0x1044, 0x1045, 0x1045, 0x1046, 0x1047, 0x1048, 0x1049,
- 0x104a, 0x104b, 0x104c, 0x104e, 0x104f, 0x1050, 0x1051, 0x1053,
- 0x1054, 0x1055, 0x1057, 0x1058, 0x105a, 0x105b, 0x105d, 0x105f,
- 0x1040, 0x1040, 0x1040, 0x1040, 0x1041, 0x1041, 0x1042, 0x1042,
- 0x1043, 0x1044, 0x1045, 0x1045, 0x1046, 0x1047, 0x1048, 0x1049,
- 0x104a, 0x104b, 0x104c, 0x104e, 0x104f, 0x1050, 0x1051, 0x1053,
- 0x1054, 0x1055, 0x1057, 0x1058, 0x105a, 0x105b, 0x105d, 0x105f,
- 0x1060, 0x1060, 0x1060, 0x1060, 0x1061, 0x1061, 0x1062, 0x1062,
- 0x1063, 0x1064, 0x1065, 0x1065, 0x1066, 0x1067, 0x1068, 0x1069,
- 0x106a, 0x106b, 0x106c, 0x106e, 0x106f, 0x1070, 0x1071, 0x1073,
- 0x1074, 0x1075, 0x1077, 0x1078, 0x107a, 0x107b, 0x107d, 0x107f,
- 0x1060, 0x1060, 0x1060, 0x1060, 0x1061, 0x1061, 0x1062, 0x1062,
- 0x1063, 0x1064, 0x1065, 0x1065, 0x1066, 0x1067, 0x1068, 0x1069,
- 0x106a, 0x106b, 0x106c, 0x106e, 0x106f, 0x1070, 0x1071, 0x1073,
- 0x1074, 0x1075, 0x1077, 0x1078, 0x107a, 0x107b, 0x107d, 0x107f,
- 0x1080, 0x1080, 0x1080, 0x1080, 0x1081, 0x1081, 0x1082, 0x1082,
- 0x1083, 0x1084, 0x1085, 0x1085, 0x1086, 0x1087, 0x1088, 0x1089,
- 0x108a, 0x108b, 0x108c, 0x108e, 0x108f, 0x1090, 0x1091, 0x1093,
- 0x1094, 0x1095, 0x1097, 0x1098, 0x109a, 0x109b, 0x109d, 0x109f,
- 0x10a0, 0x10a0, 0x10a0, 0x10a0, 0x10a1, 0x10a1, 0x10a2, 0x10a2,
- 0x10a3, 0x10a4, 0x10a5, 0x10a5, 0x10a6, 0x10a7, 0x10a8, 0x10a9,
- 0x10aa, 0x10ab, 0x10ac, 0x10ae, 0x10af, 0x10b0, 0x10b1, 0x10b3,
- 0x10b4, 0x10b5, 0x10b7, 0x10b8, 0x10ba, 0x10bb, 0x10bd, 0x10bf,
- 0x10a0, 0x10a0, 0x10a0, 0x10a0, 0x10a1, 0x10a1, 0x10a2, 0x10a2,
- 0x10a3, 0x10a4, 0x10a5, 0x10a5, 0x10a6, 0x10a7, 0x10a8, 0x10a9,
- 0x10aa, 0x10ab, 0x10ac, 0x10ae, 0x10af, 0x10b0, 0x10b1, 0x10b3,
- 0x10b4, 0x10b5, 0x10b7, 0x10b8, 0x10ba, 0x10bb, 0x10bd, 0x10bf,
- 0x10c0, 0x10c0, 0x10c0, 0x10c0, 0x10c1, 0x10c1, 0x10c2, 0x10c2,
- 0x10c3, 0x10c4, 0x10c5, 0x10c5, 0x10c6, 0x10c7, 0x10c8, 0x10c9,
- 0x10ca, 0x10cb, 0x10cc, 0x10ce, 0x10cf, 0x10d0, 0x10d1, 0x10d3,
- 0x10d4, 0x10d5, 0x10d7, 0x10d8, 0x10da, 0x10db, 0x10dd, 0x10df,
- 0x10e0, 0x10e0, 0x10e0, 0x10e0, 0x10e1, 0x10e1, 0x10e2, 0x10e2,
- 0x10e3, 0x10e4, 0x10e5, 0x10e5, 0x10e6, 0x10e7, 0x10e8, 0x10e9,
- 0x10ea, 0x10eb, 0x10ec, 0x10ee, 0x10ef, 0x10f0, 0x10f1, 0x10f3,
- 0x10f4, 0x10f5, 0x10f7, 0x10f8, 0x10fa, 0x10fb, 0x10fd, 0x10ff,
- 0x10e0, 0x10e0, 0x10e0, 0x10e0, 0x10e1, 0x10e1, 0x10e2, 0x10e2,
- 0x10e3, 0x10e4, 0x10e5, 0x10e5, 0x10e6, 0x10e7, 0x10e8, 0x10e9,
- 0x10ea, 0x10eb, 0x10ec, 0x10ee, 0x10ef, 0x10f0, 0x10f1, 0x10f3,
- 0x10f4, 0x10f5, 0x10f7, 0x10f8, 0x10fa, 0x10fb, 0x10fd, 0x10ff,
- 0x1100, 0x1100, 0x1100, 0x1100, 0x1101, 0x1101, 0x1102, 0x1102,
- 0x1103, 0x1104, 0x1105, 0x1105, 0x1106, 0x1107, 0x1108, 0x1109,
- 0x110a, 0x110b, 0x110c, 0x110e, 0x110f, 0x1110, 0x1111, 0x1113,
- 0x1114, 0x1115, 0x1117, 0x1118, 0x111a, 0x111b, 0x111d, 0x111f,
- 0x1120, 0x1120, 0x1120, 0x1120, 0x1121, 0x1121, 0x1122, 0x1122,
- 0x1123, 0x1124, 0x1125, 0x1125, 0x1126, 0x1127, 0x1128, 0x1129,
- 0x112a, 0x112b, 0x112c, 0x112e, 0x112f, 0x1130, 0x1131, 0x1133,
- 0x1134, 0x1135, 0x1137, 0x1138, 0x113a, 0x113b, 0x113d, 0x113f,
- 0x1140, 0x1140, 0x1140, 0x1140, 0x1141, 0x1141, 0x1142, 0x1142,
- 0x1143, 0x1144, 0x1145, 0x1145, 0x1146, 0x1147, 0x1148, 0x1149,
- 0x114a, 0x114b, 0x114c, 0x114e, 0x114f, 0x1150, 0x1151, 0x1153,
- 0x1154, 0x1155, 0x1157, 0x1158, 0x115a, 0x115b, 0x115d, 0x115f,
- 0x1140, 0x1140, 0x1140, 0x1140, 0x1141, 0x1141, 0x1142, 0x1142,
- 0x1143, 0x1144, 0x1145, 0x1145, 0x1146, 0x1147, 0x1148, 0x1149,
- 0x114a, 0x114b, 0x114c, 0x114e, 0x114f, 0x1150, 0x1151, 0x1153,
- 0x1154, 0x1155, 0x1157, 0x1158, 0x115a, 0x115b, 0x115d, 0x115f,
- 0x1160, 0x1160, 0x1160, 0x1160, 0x1161, 0x1161, 0x1162, 0x1162,
- 0x1163, 0x1164, 0x1165, 0x1165, 0x1166, 0x1167, 0x1168, 0x1169,
- 0x116a, 0x116b, 0x116c, 0x116e, 0x116f, 0x1170, 0x1171, 0x1173,
- 0x1174, 0x1175, 0x1177, 0x1178, 0x117a, 0x117b, 0x117d, 0x117f,
- 0x1180, 0x1180, 0x1180, 0x1180, 0x1181, 0x1181, 0x1182, 0x1182,
- 0x1183, 0x1184, 0x1185, 0x1185, 0x1186, 0x1187, 0x1188, 0x1189,
- 0x118a, 0x118b, 0x118c, 0x118e, 0x118f, 0x1190, 0x1191, 0x1193,
- 0x1194, 0x1195, 0x1197, 0x1198, 0x119a, 0x119b, 0x119d, 0x119f,
- 0x11a0, 0x11a0, 0x11a0, 0x11a0, 0x11a1, 0x11a1, 0x11a2, 0x11a2,
- 0x11a3, 0x11a4, 0x11a5, 0x11a5, 0x11a6, 0x11a7, 0x11a8, 0x11a9,
- 0x11aa, 0x11ab, 0x11ac, 0x11ae, 0x11af, 0x11b0, 0x11b1, 0x11b3,
- 0x11b4, 0x11b5, 0x11b7, 0x11b8, 0x11ba, 0x11bb, 0x11bd, 0x11bf,
- 0x11c0, 0x11c0, 0x11c0, 0x11c0, 0x11c1, 0x11c1, 0x11c2, 0x11c2,
- 0x11c3, 0x11c4, 0x11c5, 0x11c5, 0x11c6, 0x11c7, 0x11c8, 0x11c9,
- 0x11ca, 0x11cb, 0x11cc, 0x11ce, 0x11cf, 0x11d0, 0x11d1, 0x11d3,
- 0x11d4, 0x11d5, 0x11d7, 0x11d8, 0x11da, 0x11db, 0x11dd, 0x11df,
- 0x11e0, 0x11e0, 0x11e0, 0x11e0, 0x11e1, 0x11e1, 0x11e2, 0x11e2,
- 0x11e3, 0x11e4, 0x11e5, 0x11e5, 0x11e6, 0x11e7, 0x11e8, 0x11e9,
- 0x11ea, 0x11eb, 0x11ec, 0x11ee, 0x11ef, 0x11f0, 0x11f1, 0x11f3,
- 0x11f4, 0x11f5, 0x11f7, 0x11f8, 0x11fa, 0x11fb, 0x11fd, 0x11ff,
- 0x1200, 0x1200, 0x1200, 0x1200, 0x1201, 0x1201, 0x1202, 0x1202,
- 0x1203, 0x1204, 0x1205, 0x1205, 0x1206, 0x1207, 0x1208, 0x1209,
- 0x120a, 0x120b, 0x120c, 0x120e, 0x120f, 0x1210, 0x1211, 0x1213,
- 0x1214, 0x1215, 0x1217, 0x1218, 0x121a, 0x121b, 0x121d, 0x121f,
- 0x1220, 0x1220, 0x1220, 0x1220, 0x1221, 0x1221, 0x1222, 0x1222,
- 0x1223, 0x1224, 0x1225, 0x1225, 0x1226, 0x1227, 0x1228, 0x1229,
- 0x122a, 0x122b, 0x122c, 0x122e, 0x122f, 0x1230, 0x1231, 0x1233,
- 0x1234, 0x1235, 0x1237, 0x1238, 0x123a, 0x123b, 0x123d, 0x123f,
- 0x1240, 0x1240, 0x1240, 0x1240, 0x1241, 0x1241, 0x1242, 0x1242,
- 0x1243, 0x1244, 0x1245, 0x1245, 0x1246, 0x1247, 0x1248, 0x1249,
- 0x124a, 0x124b, 0x124c, 0x124e, 0x124f, 0x1250, 0x1251, 0x1253,
- 0x1254, 0x1255, 0x1257, 0x1258, 0x125a, 0x125b, 0x125d, 0x125f,
- 0x1260, 0x1260, 0x1260, 0x1260, 0x1261, 0x1261, 0x1262, 0x1262,
- 0x1263, 0x1264, 0x1265, 0x1265, 0x1266, 0x1267, 0x1268, 0x1269,
- 0x126a, 0x126b, 0x126c, 0x126e, 0x126f, 0x1270, 0x1271, 0x1273,
- 0x1274, 0x1275, 0x1277, 0x1278, 0x127a, 0x127b, 0x127d, 0x127f,
- 0x1280, 0x1280, 0x1280, 0x1280, 0x1281, 0x1281, 0x1282, 0x1282,
- 0x1283, 0x1284, 0x1285, 0x1285, 0x1286, 0x1287, 0x1288, 0x1289,
- 0x128a, 0x128b, 0x128c, 0x128e, 0x128f, 0x1290, 0x1291, 0x1293,
- 0x1294, 0x1295, 0x1297, 0x1298, 0x129a, 0x129b, 0x129d, 0x129f,
- 0x12a0, 0x12a0, 0x12a0, 0x12a0, 0x12a1, 0x12a1, 0x12a2, 0x12a2,
- 0x12a3, 0x12a4, 0x12a5, 0x12a5, 0x12a6, 0x12a7, 0x12a8, 0x12a9,
- 0x12aa, 0x12ab, 0x12ac, 0x12ae, 0x12af, 0x12b0, 0x12b1, 0x12b3,
- 0x12b4, 0x12b5, 0x12b7, 0x12b8, 0x12ba, 0x12bb, 0x12bd, 0x12bf,
- 0x12c0, 0x12c0, 0x12c0, 0x12c0, 0x12c1, 0x12c1, 0x12c2, 0x12c2,
- 0x12c3, 0x12c4, 0x12c5, 0x12c5, 0x12c6, 0x12c7, 0x12c8, 0x12c9,
- 0x12ca, 0x12cb, 0x12cc, 0x12ce, 0x12cf, 0x12d0, 0x12d1, 0x12d3,
- 0x12d4, 0x12d5, 0x12d7, 0x12d8, 0x12da, 0x12db, 0x12dd, 0x12df,
- 0x12e0, 0x12e0, 0x12e0, 0x12e0, 0x12e1, 0x12e1, 0x12e2, 0x12e2,
- 0x12e3, 0x12e4, 0x12e5, 0x12e5, 0x12e6, 0x12e7, 0x12e8, 0x12e9,
- 0x12ea, 0x12eb, 0x12ec, 0x12ee, 0x12ef, 0x12f0, 0x12f1, 0x12f3,
- 0x12f4, 0x12f5, 0x12f7, 0x12f8, 0x12fa, 0x12fb, 0x12fd, 0x12ff,
- 0x1300, 0x1300, 0x1300, 0x1300, 0x1301, 0x1301, 0x1302, 0x1302,
- 0x1303, 0x1304, 0x1305, 0x1305, 0x1306, 0x1307, 0x1308, 0x1309,
- 0x130a, 0x130b, 0x130c, 0x130e, 0x130f, 0x1310, 0x1311, 0x1313,
- 0x1314, 0x1315, 0x1317, 0x1318, 0x131a, 0x131b, 0x131d, 0x131f,
- 0x1320, 0x1320, 0x1320, 0x1320, 0x1321, 0x1321, 0x1322, 0x1322,
- 0x1323, 0x1324, 0x1325, 0x1325, 0x1326, 0x1327, 0x1328, 0x1329,
- 0x132a, 0x132b, 0x132c, 0x132e, 0x132f, 0x1330, 0x1331, 0x1333,
- 0x1334, 0x1335, 0x1337, 0x1338, 0x133a, 0x133b, 0x133d, 0x133f,
- 0x1340, 0x1340, 0x1340, 0x1340, 0x1341, 0x1341, 0x1342, 0x1342,
- 0x1343, 0x1344, 0x1345, 0x1345, 0x1346, 0x1347, 0x1348, 0x1349,
- 0x134a, 0x134b, 0x134c, 0x134e, 0x134f, 0x1350, 0x1351, 0x1353,
- 0x1354, 0x1355, 0x1357, 0x1358, 0x135a, 0x135b, 0x135d, 0x135f,
- 0x1380, 0x1380, 0x1380, 0x1380, 0x1381, 0x1381, 0x1382, 0x1382,
- 0x1383, 0x1384, 0x1385, 0x1385, 0x1386, 0x1387, 0x1388, 0x1389,
- 0x138a, 0x138b, 0x138c, 0x138e, 0x138f, 0x1390, 0x1391, 0x1393,
- 0x1394, 0x1395, 0x1397, 0x1398, 0x139a, 0x139b, 0x139d, 0x139f,
- 0x13a0, 0x13a0, 0x13a0, 0x13a0, 0x13a1, 0x13a1, 0x13a2, 0x13a2,
- 0x13a3, 0x13a4, 0x13a5, 0x13a5, 0x13a6, 0x13a7, 0x13a8, 0x13a9,
- 0x13aa, 0x13ab, 0x13ac, 0x13ae, 0x13af, 0x13b0, 0x13b1, 0x13b3,
- 0x13b4, 0x13b5, 0x13b7, 0x13b8, 0x13ba, 0x13bb, 0x13bd, 0x13bf,
- 0x13c0, 0x13c0, 0x13c0, 0x13c0, 0x13c1, 0x13c1, 0x13c2, 0x13c2,
- 0x13c3, 0x13c4, 0x13c5, 0x13c5, 0x13c6, 0x13c7, 0x13c8, 0x13c9,
- 0x13ca, 0x13cb, 0x13cc, 0x13ce, 0x13cf, 0x13d0, 0x13d1, 0x13d3,
- 0x13d4, 0x13d5, 0x13d7, 0x13d8, 0x13da, 0x13db, 0x13dd, 0x13df,
- 0x13e0, 0x13e0, 0x13e0, 0x13e0, 0x13e1, 0x13e1, 0x13e2, 0x13e2,
- 0x13e3, 0x13e4, 0x13e5, 0x13e5, 0x13e6, 0x13e7, 0x13e8, 0x13e9,
- 0x13ea, 0x13eb, 0x13ec, 0x13ee, 0x13ef, 0x13f0, 0x13f1, 0x13f3,
- 0x13f4, 0x13f5, 0x13f7, 0x13f8, 0x13fa, 0x13fb, 0x13fd, 0x13ff,
- 0x1400, 0x1400, 0x1400, 0x1400, 0x1401, 0x1401, 0x1402, 0x1402,
- 0x1403, 0x1404, 0x1405, 0x1405, 0x1406, 0x1407, 0x1408, 0x1409,
- 0x140a, 0x140b, 0x140c, 0x140e, 0x140f, 0x1410, 0x1411, 0x1413,
- 0x1414, 0x1415, 0x1417, 0x1418, 0x141a, 0x141b, 0x141d, 0x141f,
- 0x1440, 0x1440, 0x1440, 0x1440, 0x1441, 0x1441, 0x1442, 0x1442,
- 0x1443, 0x1444, 0x1445, 0x1445, 0x1446, 0x1447, 0x1448, 0x1449,
- 0x144a, 0x144b, 0x144c, 0x144e, 0x144f, 0x1450, 0x1451, 0x1453,
- 0x1454, 0x1455, 0x1457, 0x1458, 0x145a, 0x145b, 0x145d, 0x145f,
- 0x1460, 0x1460, 0x1460, 0x1460, 0x1461, 0x1461, 0x1462, 0x1462,
- 0x1463, 0x1464, 0x1465, 0x1465, 0x1466, 0x1467, 0x1468, 0x1469,
- 0x146a, 0x146b, 0x146c, 0x146e, 0x146f, 0x1470, 0x1471, 0x1473,
- 0x1474, 0x1475, 0x1477, 0x1478, 0x147a, 0x147b, 0x147d, 0x147f,
- 0x1480, 0x1480, 0x1480, 0x1480, 0x1481, 0x1481, 0x1482, 0x1482,
- 0x1483, 0x1484, 0x1485, 0x1485, 0x1486, 0x1487, 0x1488, 0x1489,
- 0x148a, 0x148b, 0x148c, 0x148e, 0x148f, 0x1490, 0x1491, 0x1493,
- 0x1494, 0x1495, 0x1497, 0x1498, 0x149a, 0x149b, 0x149d, 0x149f,
- 0x14c0, 0x14c0, 0x14c0, 0x14c0, 0x14c1, 0x14c1, 0x14c2, 0x14c2,
- 0x14c3, 0x14c4, 0x14c5, 0x14c5, 0x14c6, 0x14c7, 0x14c8, 0x14c9,
- 0x14ca, 0x14cb, 0x14cc, 0x14ce, 0x14cf, 0x14d0, 0x14d1, 0x14d3,
- 0x14d4, 0x14d5, 0x14d7, 0x14d8, 0x14da, 0x14db, 0x14dd, 0x14df,
- 0x14e0, 0x14e0, 0x14e0, 0x14e0, 0x14e1, 0x14e1, 0x14e2, 0x14e2,
- 0x14e3, 0x14e4, 0x14e5, 0x14e5, 0x14e6, 0x14e7, 0x14e8, 0x14e9,
- 0x14ea, 0x14eb, 0x14ec, 0x14ee, 0x14ef, 0x14f0, 0x14f1, 0x14f3,
- 0x14f4, 0x14f5, 0x14f7, 0x14f8, 0x14fa, 0x14fb, 0x14fd, 0x14ff,
- 0x1500, 0x1500, 0x1500, 0x1500, 0x1501, 0x1501, 0x1502, 0x1502,
- 0x1503, 0x1504, 0x1505, 0x1505, 0x1506, 0x1507, 0x1508, 0x1509,
- 0x150a, 0x150b, 0x150c, 0x150e, 0x150f, 0x1510, 0x1511, 0x1513,
- 0x1514, 0x1515, 0x1517, 0x1518, 0x151a, 0x151b, 0x151d, 0x151f,
- 0x1540, 0x1540, 0x1540, 0x1540, 0x1541, 0x1541, 0x1542, 0x1542,
- 0x1543, 0x1544, 0x1545, 0x1545, 0x1546, 0x1547, 0x1548, 0x1549,
- 0x154a, 0x154b, 0x154c, 0x154e, 0x154f, 0x1550, 0x1551, 0x1553,
- 0x1554, 0x1555, 0x1557, 0x1558, 0x155a, 0x155b, 0x155d, 0x155f,
- 0x1560, 0x1560, 0x1560, 0x1560, 0x1561, 0x1561, 0x1562, 0x1562,
- 0x1563, 0x1564, 0x1565, 0x1565, 0x1566, 0x1567, 0x1568, 0x1569,
- 0x156a, 0x156b, 0x156c, 0x156e, 0x156f, 0x1570, 0x1571, 0x1573,
- 0x1574, 0x1575, 0x1577, 0x1578, 0x157a, 0x157b, 0x157d, 0x157f,
- 0x1580, 0x1580, 0x1580, 0x1580, 0x1581, 0x1581, 0x1582, 0x1582,
- 0x1583, 0x1584, 0x1585, 0x1585, 0x1586, 0x1587, 0x1588, 0x1589,
- 0x158a, 0x158b, 0x158c, 0x158e, 0x158f, 0x1590, 0x1591, 0x1593,
- 0x1594, 0x1595, 0x1597, 0x1598, 0x159a, 0x159b, 0x159d, 0x159f,
- 0x15c0, 0x15c0, 0x15c0, 0x15c0, 0x15c1, 0x15c1, 0x15c2, 0x15c2,
- 0x15c3, 0x15c4, 0x15c5, 0x15c5, 0x15c6, 0x15c7, 0x15c8, 0x15c9,
- 0x15ca, 0x15cb, 0x15cc, 0x15ce, 0x15cf, 0x15d0, 0x15d1, 0x15d3,
- 0x15d4, 0x15d5, 0x15d7, 0x15d8, 0x15da, 0x15db, 0x15dd, 0x15df,
- 0x15e0, 0x15e0, 0x15e0, 0x15e0, 0x15e1, 0x15e1, 0x15e2, 0x15e2,
- 0x15e3, 0x15e4, 0x15e5, 0x15e5, 0x15e6, 0x15e7, 0x15e8, 0x15e9,
- 0x15ea, 0x15eb, 0x15ec, 0x15ee, 0x15ef, 0x15f0, 0x15f1, 0x15f3,
- 0x15f4, 0x15f5, 0x15f7, 0x15f8, 0x15fa, 0x15fb, 0x15fd, 0x15ff,
- 0x1620, 0x1620, 0x1620, 0x1620, 0x1621, 0x1621, 0x1622, 0x1622,
- 0x1623, 0x1624, 0x1625, 0x1625, 0x1626, 0x1627, 0x1628, 0x1629,
- 0x162a, 0x162b, 0x162c, 0x162e, 0x162f, 0x1630, 0x1631, 0x1633,
- 0x1634, 0x1635, 0x1637, 0x1638, 0x163a, 0x163b, 0x163d, 0x163f,
- 0x1640, 0x1640, 0x1640, 0x1640, 0x1641, 0x1641, 0x1642, 0x1642,
- 0x1643, 0x1644, 0x1645, 0x1645, 0x1646, 0x1647, 0x1648, 0x1649,
- 0x164a, 0x164b, 0x164c, 0x164e, 0x164f, 0x1650, 0x1651, 0x1653,
- 0x1654, 0x1655, 0x1657, 0x1658, 0x165a, 0x165b, 0x165d, 0x165f,
- 0x1680, 0x1680, 0x1680, 0x1680, 0x1681, 0x1681, 0x1682, 0x1682,
- 0x1683, 0x1684, 0x1685, 0x1685, 0x1686, 0x1687, 0x1688, 0x1689,
- 0x168a, 0x168b, 0x168c, 0x168e, 0x168f, 0x1690, 0x1691, 0x1693,
- 0x1694, 0x1695, 0x1697, 0x1698, 0x169a, 0x169b, 0x169d, 0x169f,
- 0x16a0, 0x16a0, 0x16a0, 0x16a0, 0x16a1, 0x16a1, 0x16a2, 0x16a2,
- 0x16a3, 0x16a4, 0x16a5, 0x16a5, 0x16a6, 0x16a7, 0x16a8, 0x16a9,
- 0x16aa, 0x16ab, 0x16ac, 0x16ae, 0x16af, 0x16b0, 0x16b1, 0x16b3,
- 0x16b4, 0x16b5, 0x16b7, 0x16b8, 0x16ba, 0x16bb, 0x16bd, 0x16bf,
- 0x16e0, 0x16e0, 0x16e0, 0x16e0, 0x16e1, 0x16e1, 0x16e2, 0x16e2,
- 0x16e3, 0x16e4, 0x16e5, 0x16e5, 0x16e6, 0x16e7, 0x16e8, 0x16e9,
- 0x16ea, 0x16eb, 0x16ec, 0x16ee, 0x16ef, 0x16f0, 0x16f1, 0x16f3,
- 0x16f4, 0x16f5, 0x16f7, 0x16f8, 0x16fa, 0x16fb, 0x16fd, 0x16ff,
- 0x1700, 0x1700, 0x1700, 0x1700, 0x1701, 0x1701, 0x1702, 0x1702,
- 0x1703, 0x1704, 0x1705, 0x1705, 0x1706, 0x1707, 0x1708, 0x1709,
- 0x170a, 0x170b, 0x170c, 0x170e, 0x170f, 0x1710, 0x1711, 0x1713,
- 0x1714, 0x1715, 0x1717, 0x1718, 0x171a, 0x171b, 0x171d, 0x171f,
- 0x1740, 0x1740, 0x1740, 0x1740, 0x1741, 0x1741, 0x1742, 0x1742,
- 0x1743, 0x1744, 0x1745, 0x1745, 0x1746, 0x1747, 0x1748, 0x1749,
- 0x174a, 0x174b, 0x174c, 0x174e, 0x174f, 0x1750, 0x1751, 0x1753,
- 0x1754, 0x1755, 0x1757, 0x1758, 0x175a, 0x175b, 0x175d, 0x175f,
- 0x1760, 0x1760, 0x1760, 0x1760, 0x1761, 0x1761, 0x1762, 0x1762,
- 0x1763, 0x1764, 0x1765, 0x1765, 0x1766, 0x1767, 0x1768, 0x1769,
- 0x176a, 0x176b, 0x176c, 0x176e, 0x176f, 0x1770, 0x1771, 0x1773,
- 0x1774, 0x1775, 0x1777, 0x1778, 0x177a, 0x177b, 0x177d, 0x177f,
- 0x17a0, 0x17a0, 0x17a0, 0x17a0, 0x17a1, 0x17a1, 0x17a2, 0x17a2,
- 0x17a3, 0x17a4, 0x17a5, 0x17a5, 0x17a6, 0x17a7, 0x17a8, 0x17a9,
- 0x17aa, 0x17ab, 0x17ac, 0x17ae, 0x17af, 0x17b0, 0x17b1, 0x17b3,
- 0x17b4, 0x17b5, 0x17b7, 0x17b8, 0x17ba, 0x17bb, 0x17bd, 0x17bf,
- 0x17e0, 0x17e0, 0x17e0, 0x17e0, 0x17e1, 0x17e1, 0x17e2, 0x17e2,
- 0x17e3, 0x17e4, 0x17e5, 0x17e5, 0x17e6, 0x17e7, 0x17e8, 0x17e9,
- 0x17ea, 0x17eb, 0x17ec, 0x17ee, 0x17ef, 0x17f0, 0x17f1, 0x17f3,
- 0x17f4, 0x17f5, 0x17f7, 0x17f8, 0x17fa, 0x17fb, 0x17fd, 0x17ff,
- 0x1800, 0x1800, 0x1800, 0x1800, 0x1801, 0x1801, 0x1802, 0x1802,
- 0x1803, 0x1804, 0x1805, 0x1805, 0x1806, 0x1807, 0x1808, 0x1809,
- 0x180a, 0x180b, 0x180c, 0x180e, 0x180f, 0x1810, 0x1811, 0x1813,
- 0x1814, 0x1815, 0x1817, 0x1818, 0x181a, 0x181b, 0x181d, 0x181f,
- 0x1800, 0x1800, 0x1800, 0x1800, 0x1801, 0x1801, 0x1802, 0x1802,
- 0x1803, 0x1804, 0x1805, 0x1805, 0x1806, 0x1807, 0x1808, 0x1809,
- 0x180a, 0x180b, 0x180c, 0x180e, 0x180f, 0x1810, 0x1811, 0x1813,
- 0x1814, 0x1815, 0x1817, 0x1818, 0x181a, 0x181b, 0x181d, 0x181f,
- 0x1800, 0x1800, 0x1800, 0x1800, 0x1801, 0x1801, 0x1802, 0x1802,
- 0x1803, 0x1804, 0x1805, 0x1805, 0x1806, 0x1807, 0x1808, 0x1809,
- 0x180a, 0x180b, 0x180c, 0x180e, 0x180f, 0x1810, 0x1811, 0x1813,
- 0x1814, 0x1815, 0x1817, 0x1818, 0x181a, 0x181b, 0x181d, 0x181f,
- 0x1800, 0x1800, 0x1800, 0x1800, 0x1801, 0x1801, 0x1802, 0x1802,
- 0x1803, 0x1804, 0x1805, 0x1805, 0x1806, 0x1807, 0x1808, 0x1809,
- 0x180a, 0x180b, 0x180c, 0x180e, 0x180f, 0x1810, 0x1811, 0x1813,
- 0x1814, 0x1815, 0x1817, 0x1818, 0x181a, 0x181b, 0x181d, 0x181f,
- 0x1800, 0x1800, 0x1800, 0x1800, 0x1801, 0x1801, 0x1802, 0x1802,
- 0x1803, 0x1804, 0x1805, 0x1805, 0x1806, 0x1807, 0x1808, 0x1809,
- 0x180a, 0x180b, 0x180c, 0x180e, 0x180f, 0x1810, 0x1811, 0x1813,
- 0x1814, 0x1815, 0x1817, 0x1818, 0x181a, 0x181b, 0x181d, 0x181f,
- 0x1820, 0x1820, 0x1820, 0x1820, 0x1821, 0x1821, 0x1822, 0x1822,
- 0x1823, 0x1824, 0x1825, 0x1825, 0x1826, 0x1827, 0x1828, 0x1829,
- 0x182a, 0x182b, 0x182c, 0x182e, 0x182f, 0x1830, 0x1831, 0x1833,
- 0x1834, 0x1835, 0x1837, 0x1838, 0x183a, 0x183b, 0x183d, 0x183f,
- 0x1820, 0x1820, 0x1820, 0x1820, 0x1821, 0x1821, 0x1822, 0x1822,
- 0x1823, 0x1824, 0x1825, 0x1825, 0x1826, 0x1827, 0x1828, 0x1829,
- 0x182a, 0x182b, 0x182c, 0x182e, 0x182f, 0x1830, 0x1831, 0x1833,
- 0x1834, 0x1835, 0x1837, 0x1838, 0x183a, 0x183b, 0x183d, 0x183f,
- 0x1820, 0x1820, 0x1820, 0x1820, 0x1821, 0x1821, 0x1822, 0x1822,
- 0x1823, 0x1824, 0x1825, 0x1825, 0x1826, 0x1827, 0x1828, 0x1829,
- 0x182a, 0x182b, 0x182c, 0x182e, 0x182f, 0x1830, 0x1831, 0x1833,
- 0x1834, 0x1835, 0x1837, 0x1838, 0x183a, 0x183b, 0x183d, 0x183f,
- 0x1840, 0x1840, 0x1840, 0x1840, 0x1841, 0x1841, 0x1842, 0x1842,
- 0x1843, 0x1844, 0x1845, 0x1845, 0x1846, 0x1847, 0x1848, 0x1849,
- 0x184a, 0x184b, 0x184c, 0x184e, 0x184f, 0x1850, 0x1851, 0x1853,
- 0x1854, 0x1855, 0x1857, 0x1858, 0x185a, 0x185b, 0x185d, 0x185f,
- 0x1840, 0x1840, 0x1840, 0x1840, 0x1841, 0x1841, 0x1842, 0x1842,
- 0x1843, 0x1844, 0x1845, 0x1845, 0x1846, 0x1847, 0x1848, 0x1849,
- 0x184a, 0x184b, 0x184c, 0x184e, 0x184f, 0x1850, 0x1851, 0x1853,
- 0x1854, 0x1855, 0x1857, 0x1858, 0x185a, 0x185b, 0x185d, 0x185f,
- 0x1860, 0x1860, 0x1860, 0x1860, 0x1861, 0x1861, 0x1862, 0x1862,
- 0x1863, 0x1864, 0x1865, 0x1865, 0x1866, 0x1867, 0x1868, 0x1869,
- 0x186a, 0x186b, 0x186c, 0x186e, 0x186f, 0x1870, 0x1871, 0x1873,
- 0x1874, 0x1875, 0x1877, 0x1878, 0x187a, 0x187b, 0x187d, 0x187f,
- 0x1860, 0x1860, 0x1860, 0x1860, 0x1861, 0x1861, 0x1862, 0x1862,
- 0x1863, 0x1864, 0x1865, 0x1865, 0x1866, 0x1867, 0x1868, 0x1869,
- 0x186a, 0x186b, 0x186c, 0x186e, 0x186f, 0x1870, 0x1871, 0x1873,
- 0x1874, 0x1875, 0x1877, 0x1878, 0x187a, 0x187b, 0x187d, 0x187f,
- 0x1880, 0x1880, 0x1880, 0x1880, 0x1881, 0x1881, 0x1882, 0x1882,
- 0x1883, 0x1884, 0x1885, 0x1885, 0x1886, 0x1887, 0x1888, 0x1889,
- 0x188a, 0x188b, 0x188c, 0x188e, 0x188f, 0x1890, 0x1891, 0x1893,
- 0x1894, 0x1895, 0x1897, 0x1898, 0x189a, 0x189b, 0x189d, 0x189f,
- 0x18a0, 0x18a0, 0x18a0, 0x18a0, 0x18a1, 0x18a1, 0x18a2, 0x18a2,
- 0x18a3, 0x18a4, 0x18a5, 0x18a5, 0x18a6, 0x18a7, 0x18a8, 0x18a9,
- 0x18aa, 0x18ab, 0x18ac, 0x18ae, 0x18af, 0x18b0, 0x18b1, 0x18b3,
- 0x18b4, 0x18b5, 0x18b7, 0x18b8, 0x18ba, 0x18bb, 0x18bd, 0x18bf,
- 0x18a0, 0x18a0, 0x18a0, 0x18a0, 0x18a1, 0x18a1, 0x18a2, 0x18a2,
- 0x18a3, 0x18a4, 0x18a5, 0x18a5, 0x18a6, 0x18a7, 0x18a8, 0x18a9,
- 0x18aa, 0x18ab, 0x18ac, 0x18ae, 0x18af, 0x18b0, 0x18b1, 0x18b3,
- 0x18b4, 0x18b5, 0x18b7, 0x18b8, 0x18ba, 0x18bb, 0x18bd, 0x18bf,
- 0x18c0, 0x18c0, 0x18c0, 0x18c0, 0x18c1, 0x18c1, 0x18c2, 0x18c2,
- 0x18c3, 0x18c4, 0x18c5, 0x18c5, 0x18c6, 0x18c7, 0x18c8, 0x18c9,
- 0x18ca, 0x18cb, 0x18cc, 0x18ce, 0x18cf, 0x18d0, 0x18d1, 0x18d3,
- 0x18d4, 0x18d5, 0x18d7, 0x18d8, 0x18da, 0x18db, 0x18dd, 0x18df,
- 0x18e0, 0x18e0, 0x18e0, 0x18e0, 0x18e1, 0x18e1, 0x18e2, 0x18e2,
- 0x18e3, 0x18e4, 0x18e5, 0x18e5, 0x18e6, 0x18e7, 0x18e8, 0x18e9,
- 0x18ea, 0x18eb, 0x18ec, 0x18ee, 0x18ef, 0x18f0, 0x18f1, 0x18f3,
- 0x18f4, 0x18f5, 0x18f7, 0x18f8, 0x18fa, 0x18fb, 0x18fd, 0x18ff,
- 0x18e0, 0x18e0, 0x18e0, 0x18e0, 0x18e1, 0x18e1, 0x18e2, 0x18e2,
- 0x18e3, 0x18e4, 0x18e5, 0x18e5, 0x18e6, 0x18e7, 0x18e8, 0x18e9,
- 0x18ea, 0x18eb, 0x18ec, 0x18ee, 0x18ef, 0x18f0, 0x18f1, 0x18f3,
- 0x18f4, 0x18f5, 0x18f7, 0x18f8, 0x18fa, 0x18fb, 0x18fd, 0x18ff,
- 0x1900, 0x1900, 0x1900, 0x1900, 0x1901, 0x1901, 0x1902, 0x1902,
- 0x1903, 0x1904, 0x1905, 0x1905, 0x1906, 0x1907, 0x1908, 0x1909,
- 0x190a, 0x190b, 0x190c, 0x190e, 0x190f, 0x1910, 0x1911, 0x1913,
- 0x1914, 0x1915, 0x1917, 0x1918, 0x191a, 0x191b, 0x191d, 0x191f,
- 0x1920, 0x1920, 0x1920, 0x1920, 0x1921, 0x1921, 0x1922, 0x1922,
- 0x1923, 0x1924, 0x1925, 0x1925, 0x1926, 0x1927, 0x1928, 0x1929,
- 0x192a, 0x192b, 0x192c, 0x192e, 0x192f, 0x1930, 0x1931, 0x1933,
- 0x1934, 0x1935, 0x1937, 0x1938, 0x193a, 0x193b, 0x193d, 0x193f,
- 0x1940, 0x1940, 0x1940, 0x1940, 0x1941, 0x1941, 0x1942, 0x1942,
- 0x1943, 0x1944, 0x1945, 0x1945, 0x1946, 0x1947, 0x1948, 0x1949,
- 0x194a, 0x194b, 0x194c, 0x194e, 0x194f, 0x1950, 0x1951, 0x1953,
- 0x1954, 0x1955, 0x1957, 0x1958, 0x195a, 0x195b, 0x195d, 0x195f,
- 0x1940, 0x1940, 0x1940, 0x1940, 0x1941, 0x1941, 0x1942, 0x1942,
- 0x1943, 0x1944, 0x1945, 0x1945, 0x1946, 0x1947, 0x1948, 0x1949,
- 0x194a, 0x194b, 0x194c, 0x194e, 0x194f, 0x1950, 0x1951, 0x1953,
- 0x1954, 0x1955, 0x1957, 0x1958, 0x195a, 0x195b, 0x195d, 0x195f,
- 0x1960, 0x1960, 0x1960, 0x1960, 0x1961, 0x1961, 0x1962, 0x1962,
- 0x1963, 0x1964, 0x1965, 0x1965, 0x1966, 0x1967, 0x1968, 0x1969,
- 0x196a, 0x196b, 0x196c, 0x196e, 0x196f, 0x1970, 0x1971, 0x1973,
- 0x1974, 0x1975, 0x1977, 0x1978, 0x197a, 0x197b, 0x197d, 0x197f,
- 0x1980, 0x1980, 0x1980, 0x1980, 0x1981, 0x1981, 0x1982, 0x1982,
- 0x1983, 0x1984, 0x1985, 0x1985, 0x1986, 0x1987, 0x1988, 0x1989,
- 0x198a, 0x198b, 0x198c, 0x198e, 0x198f, 0x1990, 0x1991, 0x1993,
- 0x1994, 0x1995, 0x1997, 0x1998, 0x199a, 0x199b, 0x199d, 0x199f,
- 0x19a0, 0x19a0, 0x19a0, 0x19a0, 0x19a1, 0x19a1, 0x19a2, 0x19a2,
- 0x19a3, 0x19a4, 0x19a5, 0x19a5, 0x19a6, 0x19a7, 0x19a8, 0x19a9,
- 0x19aa, 0x19ab, 0x19ac, 0x19ae, 0x19af, 0x19b0, 0x19b1, 0x19b3,
- 0x19b4, 0x19b5, 0x19b7, 0x19b8, 0x19ba, 0x19bb, 0x19bd, 0x19bf,
- 0x19c0, 0x19c0, 0x19c0, 0x19c0, 0x19c1, 0x19c1, 0x19c2, 0x19c2,
- 0x19c3, 0x19c4, 0x19c5, 0x19c5, 0x19c6, 0x19c7, 0x19c8, 0x19c9,
- 0x19ca, 0x19cb, 0x19cc, 0x19ce, 0x19cf, 0x19d0, 0x19d1, 0x19d3,
- 0x19d4, 0x19d5, 0x19d7, 0x19d8, 0x19da, 0x19db, 0x19dd, 0x19df,
- 0x19e0, 0x19e0, 0x19e0, 0x19e0, 0x19e1, 0x19e1, 0x19e2, 0x19e2,
- 0x19e3, 0x19e4, 0x19e5, 0x19e5, 0x19e6, 0x19e7, 0x19e8, 0x19e9,
- 0x19ea, 0x19eb, 0x19ec, 0x19ee, 0x19ef, 0x19f0, 0x19f1, 0x19f3,
- 0x19f4, 0x19f5, 0x19f7, 0x19f8, 0x19fa, 0x19fb, 0x19fd, 0x19ff,
- 0x1a00, 0x1a00, 0x1a00, 0x1a00, 0x1a01, 0x1a01, 0x1a02, 0x1a02,
- 0x1a03, 0x1a04, 0x1a05, 0x1a05, 0x1a06, 0x1a07, 0x1a08, 0x1a09,
- 0x1a0a, 0x1a0b, 0x1a0c, 0x1a0e, 0x1a0f, 0x1a10, 0x1a11, 0x1a13,
- 0x1a14, 0x1a15, 0x1a17, 0x1a18, 0x1a1a, 0x1a1b, 0x1a1d, 0x1a1f,
- 0x1a20, 0x1a20, 0x1a20, 0x1a20, 0x1a21, 0x1a21, 0x1a22, 0x1a22,
- 0x1a23, 0x1a24, 0x1a25, 0x1a25, 0x1a26, 0x1a27, 0x1a28, 0x1a29,
- 0x1a2a, 0x1a2b, 0x1a2c, 0x1a2e, 0x1a2f, 0x1a30, 0x1a31, 0x1a33,
- 0x1a34, 0x1a35, 0x1a37, 0x1a38, 0x1a3a, 0x1a3b, 0x1a3d, 0x1a3f,
- 0x1a40, 0x1a40, 0x1a40, 0x1a40, 0x1a41, 0x1a41, 0x1a42, 0x1a42,
- 0x1a43, 0x1a44, 0x1a45, 0x1a45, 0x1a46, 0x1a47, 0x1a48, 0x1a49,
- 0x1a4a, 0x1a4b, 0x1a4c, 0x1a4e, 0x1a4f, 0x1a50, 0x1a51, 0x1a53,
- 0x1a54, 0x1a55, 0x1a57, 0x1a58, 0x1a5a, 0x1a5b, 0x1a5d, 0x1a5f,
- 0x1a60, 0x1a60, 0x1a60, 0x1a60, 0x1a61, 0x1a61, 0x1a62, 0x1a62,
- 0x1a63, 0x1a64, 0x1a65, 0x1a65, 0x1a66, 0x1a67, 0x1a68, 0x1a69,
- 0x1a6a, 0x1a6b, 0x1a6c, 0x1a6e, 0x1a6f, 0x1a70, 0x1a71, 0x1a73,
- 0x1a74, 0x1a75, 0x1a77, 0x1a78, 0x1a7a, 0x1a7b, 0x1a7d, 0x1a7f,
- 0x1a80, 0x1a80, 0x1a80, 0x1a80, 0x1a81, 0x1a81, 0x1a82, 0x1a82,
- 0x1a83, 0x1a84, 0x1a85, 0x1a85, 0x1a86, 0x1a87, 0x1a88, 0x1a89,
- 0x1a8a, 0x1a8b, 0x1a8c, 0x1a8e, 0x1a8f, 0x1a90, 0x1a91, 0x1a93,
- 0x1a94, 0x1a95, 0x1a97, 0x1a98, 0x1a9a, 0x1a9b, 0x1a9d, 0x1a9f,
- 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa0, 0x1aa1, 0x1aa1, 0x1aa2, 0x1aa2,
- 0x1aa3, 0x1aa4, 0x1aa5, 0x1aa5, 0x1aa6, 0x1aa7, 0x1aa8, 0x1aa9,
- 0x1aaa, 0x1aab, 0x1aac, 0x1aae, 0x1aaf, 0x1ab0, 0x1ab1, 0x1ab3,
- 0x1ab4, 0x1ab5, 0x1ab7, 0x1ab8, 0x1aba, 0x1abb, 0x1abd, 0x1abf,
- 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac0, 0x1ac1, 0x1ac1, 0x1ac2, 0x1ac2,
- 0x1ac3, 0x1ac4, 0x1ac5, 0x1ac5, 0x1ac6, 0x1ac7, 0x1ac8, 0x1ac9,
- 0x1aca, 0x1acb, 0x1acc, 0x1ace, 0x1acf, 0x1ad0, 0x1ad1, 0x1ad3,
- 0x1ad4, 0x1ad5, 0x1ad7, 0x1ad8, 0x1ada, 0x1adb, 0x1add, 0x1adf,
- 0x1ae0, 0x1ae0, 0x1ae0, 0x1ae0, 0x1ae1, 0x1ae1, 0x1ae2, 0x1ae2,
- 0x1ae3, 0x1ae4, 0x1ae5, 0x1ae5, 0x1ae6, 0x1ae7, 0x1ae8, 0x1ae9,
- 0x1aea, 0x1aeb, 0x1aec, 0x1aee, 0x1aef, 0x1af0, 0x1af1, 0x1af3,
- 0x1af4, 0x1af5, 0x1af7, 0x1af8, 0x1afa, 0x1afb, 0x1afd, 0x1aff,
- 0x1b00, 0x1b00, 0x1b00, 0x1b00, 0x1b01, 0x1b01, 0x1b02, 0x1b02,
- 0x1b03, 0x1b04, 0x1b05, 0x1b05, 0x1b06, 0x1b07, 0x1b08, 0x1b09,
- 0x1b0a, 0x1b0b, 0x1b0c, 0x1b0e, 0x1b0f, 0x1b10, 0x1b11, 0x1b13,
- 0x1b14, 0x1b15, 0x1b17, 0x1b18, 0x1b1a, 0x1b1b, 0x1b1d, 0x1b1f,
- 0x1b20, 0x1b20, 0x1b20, 0x1b20, 0x1b21, 0x1b21, 0x1b22, 0x1b22,
- 0x1b23, 0x1b24, 0x1b25, 0x1b25, 0x1b26, 0x1b27, 0x1b28, 0x1b29,
- 0x1b2a, 0x1b2b, 0x1b2c, 0x1b2e, 0x1b2f, 0x1b30, 0x1b31, 0x1b33,
- 0x1b34, 0x1b35, 0x1b37, 0x1b38, 0x1b3a, 0x1b3b, 0x1b3d, 0x1b3f,
- 0x1b40, 0x1b40, 0x1b40, 0x1b40, 0x1b41, 0x1b41, 0x1b42, 0x1b42,
- 0x1b43, 0x1b44, 0x1b45, 0x1b45, 0x1b46, 0x1b47, 0x1b48, 0x1b49,
- 0x1b4a, 0x1b4b, 0x1b4c, 0x1b4e, 0x1b4f, 0x1b50, 0x1b51, 0x1b53,
- 0x1b54, 0x1b55, 0x1b57, 0x1b58, 0x1b5a, 0x1b5b, 0x1b5d, 0x1b5f,
- 0x1b80, 0x1b80, 0x1b80, 0x1b80, 0x1b81, 0x1b81, 0x1b82, 0x1b82,
- 0x1b83, 0x1b84, 0x1b85, 0x1b85, 0x1b86, 0x1b87, 0x1b88, 0x1b89,
- 0x1b8a, 0x1b8b, 0x1b8c, 0x1b8e, 0x1b8f, 0x1b90, 0x1b91, 0x1b93,
- 0x1b94, 0x1b95, 0x1b97, 0x1b98, 0x1b9a, 0x1b9b, 0x1b9d, 0x1b9f,
- 0x1ba0, 0x1ba0, 0x1ba0, 0x1ba0, 0x1ba1, 0x1ba1, 0x1ba2, 0x1ba2,
- 0x1ba3, 0x1ba4, 0x1ba5, 0x1ba5, 0x1ba6, 0x1ba7, 0x1ba8, 0x1ba9,
- 0x1baa, 0x1bab, 0x1bac, 0x1bae, 0x1baf, 0x1bb0, 0x1bb1, 0x1bb3,
- 0x1bb4, 0x1bb5, 0x1bb7, 0x1bb8, 0x1bba, 0x1bbb, 0x1bbd, 0x1bbf,
- 0x1bc0, 0x1bc0, 0x1bc0, 0x1bc0, 0x1bc1, 0x1bc1, 0x1bc2, 0x1bc2,
- 0x1bc3, 0x1bc4, 0x1bc5, 0x1bc5, 0x1bc6, 0x1bc7, 0x1bc8, 0x1bc9,
- 0x1bca, 0x1bcb, 0x1bcc, 0x1bce, 0x1bcf, 0x1bd0, 0x1bd1, 0x1bd3,
- 0x1bd4, 0x1bd5, 0x1bd7, 0x1bd8, 0x1bda, 0x1bdb, 0x1bdd, 0x1bdf,
- 0x1be0, 0x1be0, 0x1be0, 0x1be0, 0x1be1, 0x1be1, 0x1be2, 0x1be2,
- 0x1be3, 0x1be4, 0x1be5, 0x1be5, 0x1be6, 0x1be7, 0x1be8, 0x1be9,
- 0x1bea, 0x1beb, 0x1bec, 0x1bee, 0x1bef, 0x1bf0, 0x1bf1, 0x1bf3,
- 0x1bf4, 0x1bf5, 0x1bf7, 0x1bf8, 0x1bfa, 0x1bfb, 0x1bfd, 0x1bff,
- 0x1c00, 0x1c00, 0x1c00, 0x1c00, 0x1c01, 0x1c01, 0x1c02, 0x1c02,
- 0x1c03, 0x1c04, 0x1c05, 0x1c05, 0x1c06, 0x1c07, 0x1c08, 0x1c09,
- 0x1c0a, 0x1c0b, 0x1c0c, 0x1c0e, 0x1c0f, 0x1c10, 0x1c11, 0x1c13,
- 0x1c14, 0x1c15, 0x1c17, 0x1c18, 0x1c1a, 0x1c1b, 0x1c1d, 0x1c1f,
- 0x1c40, 0x1c40, 0x1c40, 0x1c40, 0x1c41, 0x1c41, 0x1c42, 0x1c42,
- 0x1c43, 0x1c44, 0x1c45, 0x1c45, 0x1c46, 0x1c47, 0x1c48, 0x1c49,
- 0x1c4a, 0x1c4b, 0x1c4c, 0x1c4e, 0x1c4f, 0x1c50, 0x1c51, 0x1c53,
- 0x1c54, 0x1c55, 0x1c57, 0x1c58, 0x1c5a, 0x1c5b, 0x1c5d, 0x1c5f,
- 0x1c60, 0x1c60, 0x1c60, 0x1c60, 0x1c61, 0x1c61, 0x1c62, 0x1c62,
- 0x1c63, 0x1c64, 0x1c65, 0x1c65, 0x1c66, 0x1c67, 0x1c68, 0x1c69,
- 0x1c6a, 0x1c6b, 0x1c6c, 0x1c6e, 0x1c6f, 0x1c70, 0x1c71, 0x1c73,
- 0x1c74, 0x1c75, 0x1c77, 0x1c78, 0x1c7a, 0x1c7b, 0x1c7d, 0x1c7f,
- 0x1c80, 0x1c80, 0x1c80, 0x1c80, 0x1c81, 0x1c81, 0x1c82, 0x1c82,
- 0x1c83, 0x1c84, 0x1c85, 0x1c85, 0x1c86, 0x1c87, 0x1c88, 0x1c89,
- 0x1c8a, 0x1c8b, 0x1c8c, 0x1c8e, 0x1c8f, 0x1c90, 0x1c91, 0x1c93,
- 0x1c94, 0x1c95, 0x1c97, 0x1c98, 0x1c9a, 0x1c9b, 0x1c9d, 0x1c9f,
- 0x1cc0, 0x1cc0, 0x1cc0, 0x1cc0, 0x1cc1, 0x1cc1, 0x1cc2, 0x1cc2,
- 0x1cc3, 0x1cc4, 0x1cc5, 0x1cc5, 0x1cc6, 0x1cc7, 0x1cc8, 0x1cc9,
- 0x1cca, 0x1ccb, 0x1ccc, 0x1cce, 0x1ccf, 0x1cd0, 0x1cd1, 0x1cd3,
- 0x1cd4, 0x1cd5, 0x1cd7, 0x1cd8, 0x1cda, 0x1cdb, 0x1cdd, 0x1cdf,
- 0x1ce0, 0x1ce0, 0x1ce0, 0x1ce0, 0x1ce1, 0x1ce1, 0x1ce2, 0x1ce2,
- 0x1ce3, 0x1ce4, 0x1ce5, 0x1ce5, 0x1ce6, 0x1ce7, 0x1ce8, 0x1ce9,
- 0x1cea, 0x1ceb, 0x1cec, 0x1cee, 0x1cef, 0x1cf0, 0x1cf1, 0x1cf3,
- 0x1cf4, 0x1cf5, 0x1cf7, 0x1cf8, 0x1cfa, 0x1cfb, 0x1cfd, 0x1cff,
- 0x1d00, 0x1d00, 0x1d00, 0x1d00, 0x1d01, 0x1d01, 0x1d02, 0x1d02,
- 0x1d03, 0x1d04, 0x1d05, 0x1d05, 0x1d06, 0x1d07, 0x1d08, 0x1d09,
- 0x1d0a, 0x1d0b, 0x1d0c, 0x1d0e, 0x1d0f, 0x1d10, 0x1d11, 0x1d13,
- 0x1d14, 0x1d15, 0x1d17, 0x1d18, 0x1d1a, 0x1d1b, 0x1d1d, 0x1d1f,
- 0x1d40, 0x1d40, 0x1d40, 0x1d40, 0x1d41, 0x1d41, 0x1d42, 0x1d42,
- 0x1d43, 0x1d44, 0x1d45, 0x1d45, 0x1d46, 0x1d47, 0x1d48, 0x1d49,
- 0x1d4a, 0x1d4b, 0x1d4c, 0x1d4e, 0x1d4f, 0x1d50, 0x1d51, 0x1d53,
- 0x1d54, 0x1d55, 0x1d57, 0x1d58, 0x1d5a, 0x1d5b, 0x1d5d, 0x1d5f,
- 0x1d60, 0x1d60, 0x1d60, 0x1d60, 0x1d61, 0x1d61, 0x1d62, 0x1d62,
- 0x1d63, 0x1d64, 0x1d65, 0x1d65, 0x1d66, 0x1d67, 0x1d68, 0x1d69,
- 0x1d6a, 0x1d6b, 0x1d6c, 0x1d6e, 0x1d6f, 0x1d70, 0x1d71, 0x1d73,
- 0x1d74, 0x1d75, 0x1d77, 0x1d78, 0x1d7a, 0x1d7b, 0x1d7d, 0x1d7f,
- 0x1d80, 0x1d80, 0x1d80, 0x1d80, 0x1d81, 0x1d81, 0x1d82, 0x1d82,
- 0x1d83, 0x1d84, 0x1d85, 0x1d85, 0x1d86, 0x1d87, 0x1d88, 0x1d89,
- 0x1d8a, 0x1d8b, 0x1d8c, 0x1d8e, 0x1d8f, 0x1d90, 0x1d91, 0x1d93,
- 0x1d94, 0x1d95, 0x1d97, 0x1d98, 0x1d9a, 0x1d9b, 0x1d9d, 0x1d9f,
- 0x1dc0, 0x1dc0, 0x1dc0, 0x1dc0, 0x1dc1, 0x1dc1, 0x1dc2, 0x1dc2,
- 0x1dc3, 0x1dc4, 0x1dc5, 0x1dc5, 0x1dc6, 0x1dc7, 0x1dc8, 0x1dc9,
- 0x1dca, 0x1dcb, 0x1dcc, 0x1dce, 0x1dcf, 0x1dd0, 0x1dd1, 0x1dd3,
- 0x1dd4, 0x1dd5, 0x1dd7, 0x1dd8, 0x1dda, 0x1ddb, 0x1ddd, 0x1ddf,
- 0x1de0, 0x1de0, 0x1de0, 0x1de0, 0x1de1, 0x1de1, 0x1de2, 0x1de2,
- 0x1de3, 0x1de4, 0x1de5, 0x1de5, 0x1de6, 0x1de7, 0x1de8, 0x1de9,
- 0x1dea, 0x1deb, 0x1dec, 0x1dee, 0x1def, 0x1df0, 0x1df1, 0x1df3,
- 0x1df4, 0x1df5, 0x1df7, 0x1df8, 0x1dfa, 0x1dfb, 0x1dfd, 0x1dff,
- 0x1e20, 0x1e20, 0x1e20, 0x1e20, 0x1e21, 0x1e21, 0x1e22, 0x1e22,
- 0x1e23, 0x1e24, 0x1e25, 0x1e25, 0x1e26, 0x1e27, 0x1e28, 0x1e29,
- 0x1e2a, 0x1e2b, 0x1e2c, 0x1e2e, 0x1e2f, 0x1e30, 0x1e31, 0x1e33,
- 0x1e34, 0x1e35, 0x1e37, 0x1e38, 0x1e3a, 0x1e3b, 0x1e3d, 0x1e3f,
- 0x1e40, 0x1e40, 0x1e40, 0x1e40, 0x1e41, 0x1e41, 0x1e42, 0x1e42,
- 0x1e43, 0x1e44, 0x1e45, 0x1e45, 0x1e46, 0x1e47, 0x1e48, 0x1e49,
- 0x1e4a, 0x1e4b, 0x1e4c, 0x1e4e, 0x1e4f, 0x1e50, 0x1e51, 0x1e53,
- 0x1e54, 0x1e55, 0x1e57, 0x1e58, 0x1e5a, 0x1e5b, 0x1e5d, 0x1e5f,
- 0x1e80, 0x1e80, 0x1e80, 0x1e80, 0x1e81, 0x1e81, 0x1e82, 0x1e82,
- 0x1e83, 0x1e84, 0x1e85, 0x1e85, 0x1e86, 0x1e87, 0x1e88, 0x1e89,
- 0x1e8a, 0x1e8b, 0x1e8c, 0x1e8e, 0x1e8f, 0x1e90, 0x1e91, 0x1e93,
- 0x1e94, 0x1e95, 0x1e97, 0x1e98, 0x1e9a, 0x1e9b, 0x1e9d, 0x1e9f,
- 0x1ea0, 0x1ea0, 0x1ea0, 0x1ea0, 0x1ea1, 0x1ea1, 0x1ea2, 0x1ea2,
- 0x1ea3, 0x1ea4, 0x1ea5, 0x1ea5, 0x1ea6, 0x1ea7, 0x1ea8, 0x1ea9,
- 0x1eaa, 0x1eab, 0x1eac, 0x1eae, 0x1eaf, 0x1eb0, 0x1eb1, 0x1eb3,
- 0x1eb4, 0x1eb5, 0x1eb7, 0x1eb8, 0x1eba, 0x1ebb, 0x1ebd, 0x1ebf,
- 0x1ee0, 0x1ee0, 0x1ee0, 0x1ee0, 0x1ee1, 0x1ee1, 0x1ee2, 0x1ee2,
- 0x1ee3, 0x1ee4, 0x1ee5, 0x1ee5, 0x1ee6, 0x1ee7, 0x1ee8, 0x1ee9,
- 0x1eea, 0x1eeb, 0x1eec, 0x1eee, 0x1eef, 0x1ef0, 0x1ef1, 0x1ef3,
- 0x1ef4, 0x1ef5, 0x1ef7, 0x1ef8, 0x1efa, 0x1efb, 0x1efd, 0x1eff,
- 0x1f00, 0x1f00, 0x1f00, 0x1f00, 0x1f01, 0x1f01, 0x1f02, 0x1f02,
- 0x1f03, 0x1f04, 0x1f05, 0x1f05, 0x1f06, 0x1f07, 0x1f08, 0x1f09,
- 0x1f0a, 0x1f0b, 0x1f0c, 0x1f0e, 0x1f0f, 0x1f10, 0x1f11, 0x1f13,
- 0x1f14, 0x1f15, 0x1f17, 0x1f18, 0x1f1a, 0x1f1b, 0x1f1d, 0x1f1f,
- 0x1f40, 0x1f40, 0x1f40, 0x1f40, 0x1f41, 0x1f41, 0x1f42, 0x1f42,
- 0x1f43, 0x1f44, 0x1f45, 0x1f45, 0x1f46, 0x1f47, 0x1f48, 0x1f49,
- 0x1f4a, 0x1f4b, 0x1f4c, 0x1f4e, 0x1f4f, 0x1f50, 0x1f51, 0x1f53,
- 0x1f54, 0x1f55, 0x1f57, 0x1f58, 0x1f5a, 0x1f5b, 0x1f5d, 0x1f5f,
- 0x1f60, 0x1f60, 0x1f60, 0x1f60, 0x1f61, 0x1f61, 0x1f62, 0x1f62,
- 0x1f63, 0x1f64, 0x1f65, 0x1f65, 0x1f66, 0x1f67, 0x1f68, 0x1f69,
- 0x1f6a, 0x1f6b, 0x1f6c, 0x1f6e, 0x1f6f, 0x1f70, 0x1f71, 0x1f73,
- 0x1f74, 0x1f75, 0x1f77, 0x1f78, 0x1f7a, 0x1f7b, 0x1f7d, 0x1f7f,
- 0x1fa0, 0x1fa0, 0x1fa0, 0x1fa0, 0x1fa1, 0x1fa1, 0x1fa2, 0x1fa2,
- 0x1fa3, 0x1fa4, 0x1fa5, 0x1fa5, 0x1fa6, 0x1fa7, 0x1fa8, 0x1fa9,
- 0x1faa, 0x1fab, 0x1fac, 0x1fae, 0x1faf, 0x1fb0, 0x1fb1, 0x1fb3,
- 0x1fb4, 0x1fb5, 0x1fb7, 0x1fb8, 0x1fba, 0x1fbb, 0x1fbd, 0x1fbf,
- 0x1fe0, 0x1fe0, 0x1fe0, 0x1fe0, 0x1fe1, 0x1fe1, 0x1fe2, 0x1fe2,
- 0x1fe3, 0x1fe4, 0x1fe5, 0x1fe5, 0x1fe6, 0x1fe7, 0x1fe8, 0x1fe9,
- 0x1fea, 0x1feb, 0x1fec, 0x1fee, 0x1fef, 0x1ff0, 0x1ff1, 0x1ff3,
- 0x1ff4, 0x1ff5, 0x1ff7, 0x1ff8, 0x1ffa, 0x1ffb, 0x1ffd, 0x1fff,
- 0x2000, 0x2000, 0x2000, 0x2000, 0x2001, 0x2001, 0x2002, 0x2002,
- 0x2003, 0x2004, 0x2005, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009,
- 0x200a, 0x200b, 0x200c, 0x200e, 0x200f, 0x2010, 0x2011, 0x2013,
- 0x2014, 0x2015, 0x2017, 0x2018, 0x201a, 0x201b, 0x201d, 0x201f,
- 0x2000, 0x2000, 0x2000, 0x2000, 0x2001, 0x2001, 0x2002, 0x2002,
- 0x2003, 0x2004, 0x2005, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009,
- 0x200a, 0x200b, 0x200c, 0x200e, 0x200f, 0x2010, 0x2011, 0x2013,
- 0x2014, 0x2015, 0x2017, 0x2018, 0x201a, 0x201b, 0x201d, 0x201f,
- 0x2000, 0x2000, 0x2000, 0x2000, 0x2001, 0x2001, 0x2002, 0x2002,
- 0x2003, 0x2004, 0x2005, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009,
- 0x200a, 0x200b, 0x200c, 0x200e, 0x200f, 0x2010, 0x2011, 0x2013,
- 0x2014, 0x2015, 0x2017, 0x2018, 0x201a, 0x201b, 0x201d, 0x201f,
- 0x2000, 0x2000, 0x2000, 0x2000, 0x2001, 0x2001, 0x2002, 0x2002,
- 0x2003, 0x2004, 0x2005, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009,
- 0x200a, 0x200b, 0x200c, 0x200e, 0x200f, 0x2010, 0x2011, 0x2013,
- 0x2014, 0x2015, 0x2017, 0x2018, 0x201a, 0x201b, 0x201d, 0x201f,
- 0x2000, 0x2000, 0x2000, 0x2000, 0x2001, 0x2001, 0x2002, 0x2002,
- 0x2003, 0x2004, 0x2005, 0x2005, 0x2006, 0x2007, 0x2008, 0x2009,
- 0x200a, 0x200b, 0x200c, 0x200e, 0x200f, 0x2010, 0x2011, 0x2013,
- 0x2014, 0x2015, 0x2017, 0x2018, 0x201a, 0x201b, 0x201d, 0x201f,
- 0x2020, 0x2020, 0x2020, 0x2020, 0x2021, 0x2021, 0x2022, 0x2022,
- 0x2023, 0x2024, 0x2025, 0x2025, 0x2026, 0x2027, 0x2028, 0x2029,
- 0x202a, 0x202b, 0x202c, 0x202e, 0x202f, 0x2030, 0x2031, 0x2033,
- 0x2034, 0x2035, 0x2037, 0x2038, 0x203a, 0x203b, 0x203d, 0x203f,
- 0x2020, 0x2020, 0x2020, 0x2020, 0x2021, 0x2021, 0x2022, 0x2022,
- 0x2023, 0x2024, 0x2025, 0x2025, 0x2026, 0x2027, 0x2028, 0x2029,
- 0x202a, 0x202b, 0x202c, 0x202e, 0x202f, 0x2030, 0x2031, 0x2033,
- 0x2034, 0x2035, 0x2037, 0x2038, 0x203a, 0x203b, 0x203d, 0x203f,
- 0x2020, 0x2020, 0x2020, 0x2020, 0x2021, 0x2021, 0x2022, 0x2022,
- 0x2023, 0x2024, 0x2025, 0x2025, 0x2026, 0x2027, 0x2028, 0x2029,
- 0x202a, 0x202b, 0x202c, 0x202e, 0x202f, 0x2030, 0x2031, 0x2033,
- 0x2034, 0x2035, 0x2037, 0x2038, 0x203a, 0x203b, 0x203d, 0x203f,
- 0x2040, 0x2040, 0x2040, 0x2040, 0x2041, 0x2041, 0x2042, 0x2042,
- 0x2043, 0x2044, 0x2045, 0x2045, 0x2046, 0x2047, 0x2048, 0x2049,
- 0x204a, 0x204b, 0x204c, 0x204e, 0x204f, 0x2050, 0x2051, 0x2053,
- 0x2054, 0x2055, 0x2057, 0x2058, 0x205a, 0x205b, 0x205d, 0x205f,
- 0x2040, 0x2040, 0x2040, 0x2040, 0x2041, 0x2041, 0x2042, 0x2042,
- 0x2043, 0x2044, 0x2045, 0x2045, 0x2046, 0x2047, 0x2048, 0x2049,
- 0x204a, 0x204b, 0x204c, 0x204e, 0x204f, 0x2050, 0x2051, 0x2053,
- 0x2054, 0x2055, 0x2057, 0x2058, 0x205a, 0x205b, 0x205d, 0x205f,
- 0x2060, 0x2060, 0x2060, 0x2060, 0x2061, 0x2061, 0x2062, 0x2062,
- 0x2063, 0x2064, 0x2065, 0x2065, 0x2066, 0x2067, 0x2068, 0x2069,
- 0x206a, 0x206b, 0x206c, 0x206e, 0x206f, 0x2070, 0x2071, 0x2073,
- 0x2074, 0x2075, 0x2077, 0x2078, 0x207a, 0x207b, 0x207d, 0x207f,
- 0x2060, 0x2060, 0x2060, 0x2060, 0x2061, 0x2061, 0x2062, 0x2062,
- 0x2063, 0x2064, 0x2065, 0x2065, 0x2066, 0x2067, 0x2068, 0x2069,
- 0x206a, 0x206b, 0x206c, 0x206e, 0x206f, 0x2070, 0x2071, 0x2073,
- 0x2074, 0x2075, 0x2077, 0x2078, 0x207a, 0x207b, 0x207d, 0x207f,
- 0x2080, 0x2080, 0x2080, 0x2080, 0x2081, 0x2081, 0x2082, 0x2082,
- 0x2083, 0x2084, 0x2085, 0x2085, 0x2086, 0x2087, 0x2088, 0x2089,
- 0x208a, 0x208b, 0x208c, 0x208e, 0x208f, 0x2090, 0x2091, 0x2093,
- 0x2094, 0x2095, 0x2097, 0x2098, 0x209a, 0x209b, 0x209d, 0x209f,
- 0x20a0, 0x20a0, 0x20a0, 0x20a0, 0x20a1, 0x20a1, 0x20a2, 0x20a2,
- 0x20a3, 0x20a4, 0x20a5, 0x20a5, 0x20a6, 0x20a7, 0x20a8, 0x20a9,
- 0x20aa, 0x20ab, 0x20ac, 0x20ae, 0x20af, 0x20b0, 0x20b1, 0x20b3,
- 0x20b4, 0x20b5, 0x20b7, 0x20b8, 0x20ba, 0x20bb, 0x20bd, 0x20bf,
- 0x20a0, 0x20a0, 0x20a0, 0x20a0, 0x20a1, 0x20a1, 0x20a2, 0x20a2,
- 0x20a3, 0x20a4, 0x20a5, 0x20a5, 0x20a6, 0x20a7, 0x20a8, 0x20a9,
- 0x20aa, 0x20ab, 0x20ac, 0x20ae, 0x20af, 0x20b0, 0x20b1, 0x20b3,
- 0x20b4, 0x20b5, 0x20b7, 0x20b8, 0x20ba, 0x20bb, 0x20bd, 0x20bf,
- 0x20c0, 0x20c0, 0x20c0, 0x20c0, 0x20c1, 0x20c1, 0x20c2, 0x20c2,
- 0x20c3, 0x20c4, 0x20c5, 0x20c5, 0x20c6, 0x20c7, 0x20c8, 0x20c9,
- 0x20ca, 0x20cb, 0x20cc, 0x20ce, 0x20cf, 0x20d0, 0x20d1, 0x20d3,
- 0x20d4, 0x20d5, 0x20d7, 0x20d8, 0x20da, 0x20db, 0x20dd, 0x20df,
- 0x20e0, 0x20e0, 0x20e0, 0x20e0, 0x20e1, 0x20e1, 0x20e2, 0x20e2,
- 0x20e3, 0x20e4, 0x20e5, 0x20e5, 0x20e6, 0x20e7, 0x20e8, 0x20e9,
- 0x20ea, 0x20eb, 0x20ec, 0x20ee, 0x20ef, 0x20f0, 0x20f1, 0x20f3,
- 0x20f4, 0x20f5, 0x20f7, 0x20f8, 0x20fa, 0x20fb, 0x20fd, 0x20ff,
- 0x20e0, 0x20e0, 0x20e0, 0x20e0, 0x20e1, 0x20e1, 0x20e2, 0x20e2,
- 0x20e3, 0x20e4, 0x20e5, 0x20e5, 0x20e6, 0x20e7, 0x20e8, 0x20e9,
- 0x20ea, 0x20eb, 0x20ec, 0x20ee, 0x20ef, 0x20f0, 0x20f1, 0x20f3,
- 0x20f4, 0x20f5, 0x20f7, 0x20f8, 0x20fa, 0x20fb, 0x20fd, 0x20ff,
- 0x2100, 0x2100, 0x2100, 0x2100, 0x2101, 0x2101, 0x2102, 0x2102,
- 0x2103, 0x2104, 0x2105, 0x2105, 0x2106, 0x2107, 0x2108, 0x2109,
- 0x210a, 0x210b, 0x210c, 0x210e, 0x210f, 0x2110, 0x2111, 0x2113,
- 0x2114, 0x2115, 0x2117, 0x2118, 0x211a, 0x211b, 0x211d, 0x211f,
- 0x2120, 0x2120, 0x2120, 0x2120, 0x2121, 0x2121, 0x2122, 0x2122,
- 0x2123, 0x2124, 0x2125, 0x2125, 0x2126, 0x2127, 0x2128, 0x2129,
- 0x212a, 0x212b, 0x212c, 0x212e, 0x212f, 0x2130, 0x2131, 0x2133,
- 0x2134, 0x2135, 0x2137, 0x2138, 0x213a, 0x213b, 0x213d, 0x213f,
- 0x2140, 0x2140, 0x2140, 0x2140, 0x2141, 0x2141, 0x2142, 0x2142,
- 0x2143, 0x2144, 0x2145, 0x2145, 0x2146, 0x2147, 0x2148, 0x2149,
- 0x214a, 0x214b, 0x214c, 0x214e, 0x214f, 0x2150, 0x2151, 0x2153,
- 0x2154, 0x2155, 0x2157, 0x2158, 0x215a, 0x215b, 0x215d, 0x215f,
- 0x2140, 0x2140, 0x2140, 0x2140, 0x2141, 0x2141, 0x2142, 0x2142,
- 0x2143, 0x2144, 0x2145, 0x2145, 0x2146, 0x2147, 0x2148, 0x2149,
- 0x214a, 0x214b, 0x214c, 0x214e, 0x214f, 0x2150, 0x2151, 0x2153,
- 0x2154, 0x2155, 0x2157, 0x2158, 0x215a, 0x215b, 0x215d, 0x215f,
- 0x2160, 0x2160, 0x2160, 0x2160, 0x2161, 0x2161, 0x2162, 0x2162,
- 0x2163, 0x2164, 0x2165, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169,
- 0x216a, 0x216b, 0x216c, 0x216e, 0x216f, 0x2170, 0x2171, 0x2173,
- 0x2174, 0x2175, 0x2177, 0x2178, 0x217a, 0x217b, 0x217d, 0x217f,
- 0x2180, 0x2180, 0x2180, 0x2180, 0x2181, 0x2181, 0x2182, 0x2182,
- 0x2183, 0x2184, 0x2185, 0x2185, 0x2186, 0x2187, 0x2188, 0x2189,
- 0x218a, 0x218b, 0x218c, 0x218e, 0x218f, 0x2190, 0x2191, 0x2193,
- 0x2194, 0x2195, 0x2197, 0x2198, 0x219a, 0x219b, 0x219d, 0x219f,
- 0x21a0, 0x21a0, 0x21a0, 0x21a0, 0x21a1, 0x21a1, 0x21a2, 0x21a2,
- 0x21a3, 0x21a4, 0x21a5, 0x21a5, 0x21a6, 0x21a7, 0x21a8, 0x21a9,
- 0x21aa, 0x21ab, 0x21ac, 0x21ae, 0x21af, 0x21b0, 0x21b1, 0x21b3,
- 0x21b4, 0x21b5, 0x21b7, 0x21b8, 0x21ba, 0x21bb, 0x21bd, 0x21bf,
- 0x21c0, 0x21c0, 0x21c0, 0x21c0, 0x21c1, 0x21c1, 0x21c2, 0x21c2,
- 0x21c3, 0x21c4, 0x21c5, 0x21c5, 0x21c6, 0x21c7, 0x21c8, 0x21c9,
- 0x21ca, 0x21cb, 0x21cc, 0x21ce, 0x21cf, 0x21d0, 0x21d1, 0x21d3,
- 0x21d4, 0x21d5, 0x21d7, 0x21d8, 0x21da, 0x21db, 0x21dd, 0x21df,
- 0x21e0, 0x21e0, 0x21e0, 0x21e0, 0x21e1, 0x21e1, 0x21e2, 0x21e2,
- 0x21e3, 0x21e4, 0x21e5, 0x21e5, 0x21e6, 0x21e7, 0x21e8, 0x21e9,
- 0x21ea, 0x21eb, 0x21ec, 0x21ee, 0x21ef, 0x21f0, 0x21f1, 0x21f3,
- 0x21f4, 0x21f5, 0x21f7, 0x21f8, 0x21fa, 0x21fb, 0x21fd, 0x21ff,
- 0x2200, 0x2200, 0x2200, 0x2200, 0x2201, 0x2201, 0x2202, 0x2202,
- 0x2203, 0x2204, 0x2205, 0x2205, 0x2206, 0x2207, 0x2208, 0x2209,
- 0x220a, 0x220b, 0x220c, 0x220e, 0x220f, 0x2210, 0x2211, 0x2213,
- 0x2214, 0x2215, 0x2217, 0x2218, 0x221a, 0x221b, 0x221d, 0x221f,
- 0x2220, 0x2220, 0x2220, 0x2220, 0x2221, 0x2221, 0x2222, 0x2222,
- 0x2223, 0x2224, 0x2225, 0x2225, 0x2226, 0x2227, 0x2228, 0x2229,
- 0x222a, 0x222b, 0x222c, 0x222e, 0x222f, 0x2230, 0x2231, 0x2233,
- 0x2234, 0x2235, 0x2237, 0x2238, 0x223a, 0x223b, 0x223d, 0x223f,
- 0x2240, 0x2240, 0x2240, 0x2240, 0x2241, 0x2241, 0x2242, 0x2242,
- 0x2243, 0x2244, 0x2245, 0x2245, 0x2246, 0x2247, 0x2248, 0x2249,
- 0x224a, 0x224b, 0x224c, 0x224e, 0x224f, 0x2250, 0x2251, 0x2253,
- 0x2254, 0x2255, 0x2257, 0x2258, 0x225a, 0x225b, 0x225d, 0x225f,
- 0x2260, 0x2260, 0x2260, 0x2260, 0x2261, 0x2261, 0x2262, 0x2262,
- 0x2263, 0x2264, 0x2265, 0x2265, 0x2266, 0x2267, 0x2268, 0x2269,
- 0x226a, 0x226b, 0x226c, 0x226e, 0x226f, 0x2270, 0x2271, 0x2273,
- 0x2274, 0x2275, 0x2277, 0x2278, 0x227a, 0x227b, 0x227d, 0x227f,
- 0x2280, 0x2280, 0x2280, 0x2280, 0x2281, 0x2281, 0x2282, 0x2282,
- 0x2283, 0x2284, 0x2285, 0x2285, 0x2286, 0x2287, 0x2288, 0x2289,
- 0x228a, 0x228b, 0x228c, 0x228e, 0x228f, 0x2290, 0x2291, 0x2293,
- 0x2294, 0x2295, 0x2297, 0x2298, 0x229a, 0x229b, 0x229d, 0x229f,
- 0x22a0, 0x22a0, 0x22a0, 0x22a0, 0x22a1, 0x22a1, 0x22a2, 0x22a2,
- 0x22a3, 0x22a4, 0x22a5, 0x22a5, 0x22a6, 0x22a7, 0x22a8, 0x22a9,
- 0x22aa, 0x22ab, 0x22ac, 0x22ae, 0x22af, 0x22b0, 0x22b1, 0x22b3,
- 0x22b4, 0x22b5, 0x22b7, 0x22b8, 0x22ba, 0x22bb, 0x22bd, 0x22bf,
- 0x22c0, 0x22c0, 0x22c0, 0x22c0, 0x22c1, 0x22c1, 0x22c2, 0x22c2,
- 0x22c3, 0x22c4, 0x22c5, 0x22c5, 0x22c6, 0x22c7, 0x22c8, 0x22c9,
- 0x22ca, 0x22cb, 0x22cc, 0x22ce, 0x22cf, 0x22d0, 0x22d1, 0x22d3,
- 0x22d4, 0x22d5, 0x22d7, 0x22d8, 0x22da, 0x22db, 0x22dd, 0x22df,
- 0x22e0, 0x22e0, 0x22e0, 0x22e0, 0x22e1, 0x22e1, 0x22e2, 0x22e2,
- 0x22e3, 0x22e4, 0x22e5, 0x22e5, 0x22e6, 0x22e7, 0x22e8, 0x22e9,
- 0x22ea, 0x22eb, 0x22ec, 0x22ee, 0x22ef, 0x22f0, 0x22f1, 0x22f3,
- 0x22f4, 0x22f5, 0x22f7, 0x22f8, 0x22fa, 0x22fb, 0x22fd, 0x22ff,
- 0x2300, 0x2300, 0x2300, 0x2300, 0x2301, 0x2301, 0x2302, 0x2302,
- 0x2303, 0x2304, 0x2305, 0x2305, 0x2306, 0x2307, 0x2308, 0x2309,
- 0x230a, 0x230b, 0x230c, 0x230e, 0x230f, 0x2310, 0x2311, 0x2313,
- 0x2314, 0x2315, 0x2317, 0x2318, 0x231a, 0x231b, 0x231d, 0x231f,
- 0x2320, 0x2320, 0x2320, 0x2320, 0x2321, 0x2321, 0x2322, 0x2322,
- 0x2323, 0x2324, 0x2325, 0x2325, 0x2326, 0x2327, 0x2328, 0x2329,
- 0x232a, 0x232b, 0x232c, 0x232e, 0x232f, 0x2330, 0x2331, 0x2333,
- 0x2334, 0x2335, 0x2337, 0x2338, 0x233a, 0x233b, 0x233d, 0x233f,
- 0x2340, 0x2340, 0x2340, 0x2340, 0x2341, 0x2341, 0x2342, 0x2342,
- 0x2343, 0x2344, 0x2345, 0x2345, 0x2346, 0x2347, 0x2348, 0x2349,
- 0x234a, 0x234b, 0x234c, 0x234e, 0x234f, 0x2350, 0x2351, 0x2353,
- 0x2354, 0x2355, 0x2357, 0x2358, 0x235a, 0x235b, 0x235d, 0x235f,
- 0x2380, 0x2380, 0x2380, 0x2380, 0x2381, 0x2381, 0x2382, 0x2382,
- 0x2383, 0x2384, 0x2385, 0x2385, 0x2386, 0x2387, 0x2388, 0x2389,
- 0x238a, 0x238b, 0x238c, 0x238e, 0x238f, 0x2390, 0x2391, 0x2393,
- 0x2394, 0x2395, 0x2397, 0x2398, 0x239a, 0x239b, 0x239d, 0x239f,
- 0x23a0, 0x23a0, 0x23a0, 0x23a0, 0x23a1, 0x23a1, 0x23a2, 0x23a2,
- 0x23a3, 0x23a4, 0x23a5, 0x23a5, 0x23a6, 0x23a7, 0x23a8, 0x23a9,
- 0x23aa, 0x23ab, 0x23ac, 0x23ae, 0x23af, 0x23b0, 0x23b1, 0x23b3,
- 0x23b4, 0x23b5, 0x23b7, 0x23b8, 0x23ba, 0x23bb, 0x23bd, 0x23bf,
- 0x23c0, 0x23c0, 0x23c0, 0x23c0, 0x23c1, 0x23c1, 0x23c2, 0x23c2,
- 0x23c3, 0x23c4, 0x23c5, 0x23c5, 0x23c6, 0x23c7, 0x23c8, 0x23c9,
- 0x23ca, 0x23cb, 0x23cc, 0x23ce, 0x23cf, 0x23d0, 0x23d1, 0x23d3,
- 0x23d4, 0x23d5, 0x23d7, 0x23d8, 0x23da, 0x23db, 0x23dd, 0x23df,
- 0x23e0, 0x23e0, 0x23e0, 0x23e0, 0x23e1, 0x23e1, 0x23e2, 0x23e2,
- 0x23e3, 0x23e4, 0x23e5, 0x23e5, 0x23e6, 0x23e7, 0x23e8, 0x23e9,
- 0x23ea, 0x23eb, 0x23ec, 0x23ee, 0x23ef, 0x23f0, 0x23f1, 0x23f3,
- 0x23f4, 0x23f5, 0x23f7, 0x23f8, 0x23fa, 0x23fb, 0x23fd, 0x23ff,
- 0x2400, 0x2400, 0x2400, 0x2400, 0x2401, 0x2401, 0x2402, 0x2402,
- 0x2403, 0x2404, 0x2405, 0x2405, 0x2406, 0x2407, 0x2408, 0x2409,
- 0x240a, 0x240b, 0x240c, 0x240e, 0x240f, 0x2410, 0x2411, 0x2413,
- 0x2414, 0x2415, 0x2417, 0x2418, 0x241a, 0x241b, 0x241d, 0x241f,
- 0x2440, 0x2440, 0x2440, 0x2440, 0x2441, 0x2441, 0x2442, 0x2442,
- 0x2443, 0x2444, 0x2445, 0x2445, 0x2446, 0x2447, 0x2448, 0x2449,
- 0x244a, 0x244b, 0x244c, 0x244e, 0x244f, 0x2450, 0x2451, 0x2453,
- 0x2454, 0x2455, 0x2457, 0x2458, 0x245a, 0x245b, 0x245d, 0x245f,
- 0x2460, 0x2460, 0x2460, 0x2460, 0x2461, 0x2461, 0x2462, 0x2462,
- 0x2463, 0x2464, 0x2465, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469,
- 0x246a, 0x246b, 0x246c, 0x246e, 0x246f, 0x2470, 0x2471, 0x2473,
- 0x2474, 0x2475, 0x2477, 0x2478, 0x247a, 0x247b, 0x247d, 0x247f,
- 0x2480, 0x2480, 0x2480, 0x2480, 0x2481, 0x2481, 0x2482, 0x2482,
- 0x2483, 0x2484, 0x2485, 0x2485, 0x2486, 0x2487, 0x2488, 0x2489,
- 0x248a, 0x248b, 0x248c, 0x248e, 0x248f, 0x2490, 0x2491, 0x2493,
- 0x2494, 0x2495, 0x2497, 0x2498, 0x249a, 0x249b, 0x249d, 0x249f,
- 0x24c0, 0x24c0, 0x24c0, 0x24c0, 0x24c1, 0x24c1, 0x24c2, 0x24c2,
- 0x24c3, 0x24c4, 0x24c5, 0x24c5, 0x24c6, 0x24c7, 0x24c8, 0x24c9,
- 0x24ca, 0x24cb, 0x24cc, 0x24ce, 0x24cf, 0x24d0, 0x24d1, 0x24d3,
- 0x24d4, 0x24d5, 0x24d7, 0x24d8, 0x24da, 0x24db, 0x24dd, 0x24df,
- 0x24e0, 0x24e0, 0x24e0, 0x24e0, 0x24e1, 0x24e1, 0x24e2, 0x24e2,
- 0x24e3, 0x24e4, 0x24e5, 0x24e5, 0x24e6, 0x24e7, 0x24e8, 0x24e9,
- 0x24ea, 0x24eb, 0x24ec, 0x24ee, 0x24ef, 0x24f0, 0x24f1, 0x24f3,
- 0x24f4, 0x24f5, 0x24f7, 0x24f8, 0x24fa, 0x24fb, 0x24fd, 0x24ff,
- 0x2500, 0x2500, 0x2500, 0x2500, 0x2501, 0x2501, 0x2502, 0x2502,
- 0x2503, 0x2504, 0x2505, 0x2505, 0x2506, 0x2507, 0x2508, 0x2509,
- 0x250a, 0x250b, 0x250c, 0x250e, 0x250f, 0x2510, 0x2511, 0x2513,
- 0x2514, 0x2515, 0x2517, 0x2518, 0x251a, 0x251b, 0x251d, 0x251f,
- 0x2540, 0x2540, 0x2540, 0x2540, 0x2541, 0x2541, 0x2542, 0x2542,
- 0x2543, 0x2544, 0x2545, 0x2545, 0x2546, 0x2547, 0x2548, 0x2549,
- 0x254a, 0x254b, 0x254c, 0x254e, 0x254f, 0x2550, 0x2551, 0x2553,
- 0x2554, 0x2555, 0x2557, 0x2558, 0x255a, 0x255b, 0x255d, 0x255f,
- 0x2560, 0x2560, 0x2560, 0x2560, 0x2561, 0x2561, 0x2562, 0x2562,
- 0x2563, 0x2564, 0x2565, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569,
- 0x256a, 0x256b, 0x256c, 0x256e, 0x256f, 0x2570, 0x2571, 0x2573,
- 0x2574, 0x2575, 0x2577, 0x2578, 0x257a, 0x257b, 0x257d, 0x257f,
- 0x2580, 0x2580, 0x2580, 0x2580, 0x2581, 0x2581, 0x2582, 0x2582,
- 0x2583, 0x2584, 0x2585, 0x2585, 0x2586, 0x2587, 0x2588, 0x2589,
- 0x258a, 0x258b, 0x258c, 0x258e, 0x258f, 0x2590, 0x2591, 0x2593,
- 0x2594, 0x2595, 0x2597, 0x2598, 0x259a, 0x259b, 0x259d, 0x259f,
- 0x25c0, 0x25c0, 0x25c0, 0x25c0, 0x25c1, 0x25c1, 0x25c2, 0x25c2,
- 0x25c3, 0x25c4, 0x25c5, 0x25c5, 0x25c6, 0x25c7, 0x25c8, 0x25c9,
- 0x25ca, 0x25cb, 0x25cc, 0x25ce, 0x25cf, 0x25d0, 0x25d1, 0x25d3,
- 0x25d4, 0x25d5, 0x25d7, 0x25d8, 0x25da, 0x25db, 0x25dd, 0x25df,
- 0x25e0, 0x25e0, 0x25e0, 0x25e0, 0x25e1, 0x25e1, 0x25e2, 0x25e2,
- 0x25e3, 0x25e4, 0x25e5, 0x25e5, 0x25e6, 0x25e7, 0x25e8, 0x25e9,
- 0x25ea, 0x25eb, 0x25ec, 0x25ee, 0x25ef, 0x25f0, 0x25f1, 0x25f3,
- 0x25f4, 0x25f5, 0x25f7, 0x25f8, 0x25fa, 0x25fb, 0x25fd, 0x25ff,
- 0x2620, 0x2620, 0x2620, 0x2620, 0x2621, 0x2621, 0x2622, 0x2622,
- 0x2623, 0x2624, 0x2625, 0x2625, 0x2626, 0x2627, 0x2628, 0x2629,
- 0x262a, 0x262b, 0x262c, 0x262e, 0x262f, 0x2630, 0x2631, 0x2633,
- 0x2634, 0x2635, 0x2637, 0x2638, 0x263a, 0x263b, 0x263d, 0x263f,
- 0x2640, 0x2640, 0x2640, 0x2640, 0x2641, 0x2641, 0x2642, 0x2642,
- 0x2643, 0x2644, 0x2645, 0x2645, 0x2646, 0x2647, 0x2648, 0x2649,
- 0x264a, 0x264b, 0x264c, 0x264e, 0x264f, 0x2650, 0x2651, 0x2653,
- 0x2654, 0x2655, 0x2657, 0x2658, 0x265a, 0x265b, 0x265d, 0x265f,
- 0x2680, 0x2680, 0x2680, 0x2680, 0x2681, 0x2681, 0x2682, 0x2682,
- 0x2683, 0x2684, 0x2685, 0x2685, 0x2686, 0x2687, 0x2688, 0x2689,
- 0x268a, 0x268b, 0x268c, 0x268e, 0x268f, 0x2690, 0x2691, 0x2693,
- 0x2694, 0x2695, 0x2697, 0x2698, 0x269a, 0x269b, 0x269d, 0x269f,
- 0x26a0, 0x26a0, 0x26a0, 0x26a0, 0x26a1, 0x26a1, 0x26a2, 0x26a2,
- 0x26a3, 0x26a4, 0x26a5, 0x26a5, 0x26a6, 0x26a7, 0x26a8, 0x26a9,
- 0x26aa, 0x26ab, 0x26ac, 0x26ae, 0x26af, 0x26b0, 0x26b1, 0x26b3,
- 0x26b4, 0x26b5, 0x26b7, 0x26b8, 0x26ba, 0x26bb, 0x26bd, 0x26bf,
- 0x26e0, 0x26e0, 0x26e0, 0x26e0, 0x26e1, 0x26e1, 0x26e2, 0x26e2,
- 0x26e3, 0x26e4, 0x26e5, 0x26e5, 0x26e6, 0x26e7, 0x26e8, 0x26e9,
- 0x26ea, 0x26eb, 0x26ec, 0x26ee, 0x26ef, 0x26f0, 0x26f1, 0x26f3,
- 0x26f4, 0x26f5, 0x26f7, 0x26f8, 0x26fa, 0x26fb, 0x26fd, 0x26ff,
- 0x2700, 0x2700, 0x2700, 0x2700, 0x2701, 0x2701, 0x2702, 0x2702,
- 0x2703, 0x2704, 0x2705, 0x2705, 0x2706, 0x2707, 0x2708, 0x2709,
- 0x270a, 0x270b, 0x270c, 0x270e, 0x270f, 0x2710, 0x2711, 0x2713,
- 0x2714, 0x2715, 0x2717, 0x2718, 0x271a, 0x271b, 0x271d, 0x271f,
- 0x2740, 0x2740, 0x2740, 0x2740, 0x2741, 0x2741, 0x2742, 0x2742,
- 0x2743, 0x2744, 0x2745, 0x2745, 0x2746, 0x2747, 0x2748, 0x2749,
- 0x274a, 0x274b, 0x274c, 0x274e, 0x274f, 0x2750, 0x2751, 0x2753,
- 0x2754, 0x2755, 0x2757, 0x2758, 0x275a, 0x275b, 0x275d, 0x275f,
- 0x2760, 0x2760, 0x2760, 0x2760, 0x2761, 0x2761, 0x2762, 0x2762,
- 0x2763, 0x2764, 0x2765, 0x2765, 0x2766, 0x2767, 0x2768, 0x2769,
- 0x276a, 0x276b, 0x276c, 0x276e, 0x276f, 0x2770, 0x2771, 0x2773,
- 0x2774, 0x2775, 0x2777, 0x2778, 0x277a, 0x277b, 0x277d, 0x277f,
- 0x27a0, 0x27a0, 0x27a0, 0x27a0, 0x27a1, 0x27a1, 0x27a2, 0x27a2,
- 0x27a3, 0x27a4, 0x27a5, 0x27a5, 0x27a6, 0x27a7, 0x27a8, 0x27a9,
- 0x27aa, 0x27ab, 0x27ac, 0x27ae, 0x27af, 0x27b0, 0x27b1, 0x27b3,
- 0x27b4, 0x27b5, 0x27b7, 0x27b8, 0x27ba, 0x27bb, 0x27bd, 0x27bf,
- 0x27e0, 0x27e0, 0x27e0, 0x27e0, 0x27e1, 0x27e1, 0x27e2, 0x27e2,
- 0x27e3, 0x27e4, 0x27e5, 0x27e5, 0x27e6, 0x27e7, 0x27e8, 0x27e9,
- 0x27ea, 0x27eb, 0x27ec, 0x27ee, 0x27ef, 0x27f0, 0x27f1, 0x27f3,
- 0x27f4, 0x27f5, 0x27f7, 0x27f8, 0x27fa, 0x27fb, 0x27fd, 0x27ff,
- 0x2800, 0x2800, 0x2800, 0x2800, 0x2801, 0x2801, 0x2802, 0x2802,
- 0x2803, 0x2804, 0x2805, 0x2805, 0x2806, 0x2807, 0x2808, 0x2809,
- 0x280a, 0x280b, 0x280c, 0x280e, 0x280f, 0x2810, 0x2811, 0x2813,
- 0x2814, 0x2815, 0x2817, 0x2818, 0x281a, 0x281b, 0x281d, 0x281f,
- 0x2800, 0x2800, 0x2800, 0x2800, 0x2801, 0x2801, 0x2802, 0x2802,
- 0x2803, 0x2804, 0x2805, 0x2805, 0x2806, 0x2807, 0x2808, 0x2809,
- 0x280a, 0x280b, 0x280c, 0x280e, 0x280f, 0x2810, 0x2811, 0x2813,
- 0x2814, 0x2815, 0x2817, 0x2818, 0x281a, 0x281b, 0x281d, 0x281f,
- 0x2800, 0x2800, 0x2800, 0x2800, 0x2801, 0x2801, 0x2802, 0x2802,
- 0x2803, 0x2804, 0x2805, 0x2805, 0x2806, 0x2807, 0x2808, 0x2809,
- 0x280a, 0x280b, 0x280c, 0x280e, 0x280f, 0x2810, 0x2811, 0x2813,
- 0x2814, 0x2815, 0x2817, 0x2818, 0x281a, 0x281b, 0x281d, 0x281f,
- 0x2800, 0x2800, 0x2800, 0x2800, 0x2801, 0x2801, 0x2802, 0x2802,
- 0x2803, 0x2804, 0x2805, 0x2805, 0x2806, 0x2807, 0x2808, 0x2809,
- 0x280a, 0x280b, 0x280c, 0x280e, 0x280f, 0x2810, 0x2811, 0x2813,
- 0x2814, 0x2815, 0x2817, 0x2818, 0x281a, 0x281b, 0x281d, 0x281f,
- 0x2800, 0x2800, 0x2800, 0x2800, 0x2801, 0x2801, 0x2802, 0x2802,
- 0x2803, 0x2804, 0x2805, 0x2805, 0x2806, 0x2807, 0x2808, 0x2809,
- 0x280a, 0x280b, 0x280c, 0x280e, 0x280f, 0x2810, 0x2811, 0x2813,
- 0x2814, 0x2815, 0x2817, 0x2818, 0x281a, 0x281b, 0x281d, 0x281f,
- 0x2820, 0x2820, 0x2820, 0x2820, 0x2821, 0x2821, 0x2822, 0x2822,
- 0x2823, 0x2824, 0x2825, 0x2825, 0x2826, 0x2827, 0x2828, 0x2829,
- 0x282a, 0x282b, 0x282c, 0x282e, 0x282f, 0x2830, 0x2831, 0x2833,
- 0x2834, 0x2835, 0x2837, 0x2838, 0x283a, 0x283b, 0x283d, 0x283f,
- 0x2820, 0x2820, 0x2820, 0x2820, 0x2821, 0x2821, 0x2822, 0x2822,
- 0x2823, 0x2824, 0x2825, 0x2825, 0x2826, 0x2827, 0x2828, 0x2829,
- 0x282a, 0x282b, 0x282c, 0x282e, 0x282f, 0x2830, 0x2831, 0x2833,
- 0x2834, 0x2835, 0x2837, 0x2838, 0x283a, 0x283b, 0x283d, 0x283f,
- 0x2820, 0x2820, 0x2820, 0x2820, 0x2821, 0x2821, 0x2822, 0x2822,
- 0x2823, 0x2824, 0x2825, 0x2825, 0x2826, 0x2827, 0x2828, 0x2829,
- 0x282a, 0x282b, 0x282c, 0x282e, 0x282f, 0x2830, 0x2831, 0x2833,
- 0x2834, 0x2835, 0x2837, 0x2838, 0x283a, 0x283b, 0x283d, 0x283f,
- 0x2840, 0x2840, 0x2840, 0x2840, 0x2841, 0x2841, 0x2842, 0x2842,
- 0x2843, 0x2844, 0x2845, 0x2845, 0x2846, 0x2847, 0x2848, 0x2849,
- 0x284a, 0x284b, 0x284c, 0x284e, 0x284f, 0x2850, 0x2851, 0x2853,
- 0x2854, 0x2855, 0x2857, 0x2858, 0x285a, 0x285b, 0x285d, 0x285f,
- 0x2840, 0x2840, 0x2840, 0x2840, 0x2841, 0x2841, 0x2842, 0x2842,
- 0x2843, 0x2844, 0x2845, 0x2845, 0x2846, 0x2847, 0x2848, 0x2849,
- 0x284a, 0x284b, 0x284c, 0x284e, 0x284f, 0x2850, 0x2851, 0x2853,
- 0x2854, 0x2855, 0x2857, 0x2858, 0x285a, 0x285b, 0x285d, 0x285f,
- 0x2860, 0x2860, 0x2860, 0x2860, 0x2861, 0x2861, 0x2862, 0x2862,
- 0x2863, 0x2864, 0x2865, 0x2865, 0x2866, 0x2867, 0x2868, 0x2869,
- 0x286a, 0x286b, 0x286c, 0x286e, 0x286f, 0x2870, 0x2871, 0x2873,
- 0x2874, 0x2875, 0x2877, 0x2878, 0x287a, 0x287b, 0x287d, 0x287f,
- 0x2860, 0x2860, 0x2860, 0x2860, 0x2861, 0x2861, 0x2862, 0x2862,
- 0x2863, 0x2864, 0x2865, 0x2865, 0x2866, 0x2867, 0x2868, 0x2869,
- 0x286a, 0x286b, 0x286c, 0x286e, 0x286f, 0x2870, 0x2871, 0x2873,
- 0x2874, 0x2875, 0x2877, 0x2878, 0x287a, 0x287b, 0x287d, 0x287f,
- 0x2880, 0x2880, 0x2880, 0x2880, 0x2881, 0x2881, 0x2882, 0x2882,
- 0x2883, 0x2884, 0x2885, 0x2885, 0x2886, 0x2887, 0x2888, 0x2889,
- 0x288a, 0x288b, 0x288c, 0x288e, 0x288f, 0x2890, 0x2891, 0x2893,
- 0x2894, 0x2895, 0x2897, 0x2898, 0x289a, 0x289b, 0x289d, 0x289f,
- 0x28a0, 0x28a0, 0x28a0, 0x28a0, 0x28a1, 0x28a1, 0x28a2, 0x28a2,
- 0x28a3, 0x28a4, 0x28a5, 0x28a5, 0x28a6, 0x28a7, 0x28a8, 0x28a9,
- 0x28aa, 0x28ab, 0x28ac, 0x28ae, 0x28af, 0x28b0, 0x28b1, 0x28b3,
- 0x28b4, 0x28b5, 0x28b7, 0x28b8, 0x28ba, 0x28bb, 0x28bd, 0x28bf,
- 0x28a0, 0x28a0, 0x28a0, 0x28a0, 0x28a1, 0x28a1, 0x28a2, 0x28a2,
- 0x28a3, 0x28a4, 0x28a5, 0x28a5, 0x28a6, 0x28a7, 0x28a8, 0x28a9,
- 0x28aa, 0x28ab, 0x28ac, 0x28ae, 0x28af, 0x28b0, 0x28b1, 0x28b3,
- 0x28b4, 0x28b5, 0x28b7, 0x28b8, 0x28ba, 0x28bb, 0x28bd, 0x28bf,
- 0x28c0, 0x28c0, 0x28c0, 0x28c0, 0x28c1, 0x28c1, 0x28c2, 0x28c2,
- 0x28c3, 0x28c4, 0x28c5, 0x28c5, 0x28c6, 0x28c7, 0x28c8, 0x28c9,
- 0x28ca, 0x28cb, 0x28cc, 0x28ce, 0x28cf, 0x28d0, 0x28d1, 0x28d3,
- 0x28d4, 0x28d5, 0x28d7, 0x28d8, 0x28da, 0x28db, 0x28dd, 0x28df,
- 0x28e0, 0x28e0, 0x28e0, 0x28e0, 0x28e1, 0x28e1, 0x28e2, 0x28e2,
- 0x28e3, 0x28e4, 0x28e5, 0x28e5, 0x28e6, 0x28e7, 0x28e8, 0x28e9,
- 0x28ea, 0x28eb, 0x28ec, 0x28ee, 0x28ef, 0x28f0, 0x28f1, 0x28f3,
- 0x28f4, 0x28f5, 0x28f7, 0x28f8, 0x28fa, 0x28fb, 0x28fd, 0x28ff,
- 0x28e0, 0x28e0, 0x28e0, 0x28e0, 0x28e1, 0x28e1, 0x28e2, 0x28e2,
- 0x28e3, 0x28e4, 0x28e5, 0x28e5, 0x28e6, 0x28e7, 0x28e8, 0x28e9,
- 0x28ea, 0x28eb, 0x28ec, 0x28ee, 0x28ef, 0x28f0, 0x28f1, 0x28f3,
- 0x28f4, 0x28f5, 0x28f7, 0x28f8, 0x28fa, 0x28fb, 0x28fd, 0x28ff,
- 0x2900, 0x2900, 0x2900, 0x2900, 0x2901, 0x2901, 0x2902, 0x2902,
- 0x2903, 0x2904, 0x2905, 0x2905, 0x2906, 0x2907, 0x2908, 0x2909,
- 0x290a, 0x290b, 0x290c, 0x290e, 0x290f, 0x2910, 0x2911, 0x2913,
- 0x2914, 0x2915, 0x2917, 0x2918, 0x291a, 0x291b, 0x291d, 0x291f,
- 0x2920, 0x2920, 0x2920, 0x2920, 0x2921, 0x2921, 0x2922, 0x2922,
- 0x2923, 0x2924, 0x2925, 0x2925, 0x2926, 0x2927, 0x2928, 0x2929,
- 0x292a, 0x292b, 0x292c, 0x292e, 0x292f, 0x2930, 0x2931, 0x2933,
- 0x2934, 0x2935, 0x2937, 0x2938, 0x293a, 0x293b, 0x293d, 0x293f,
- 0x2940, 0x2940, 0x2940, 0x2940, 0x2941, 0x2941, 0x2942, 0x2942,
- 0x2943, 0x2944, 0x2945, 0x2945, 0x2946, 0x2947, 0x2948, 0x2949,
- 0x294a, 0x294b, 0x294c, 0x294e, 0x294f, 0x2950, 0x2951, 0x2953,
- 0x2954, 0x2955, 0x2957, 0x2958, 0x295a, 0x295b, 0x295d, 0x295f,
- 0x2940, 0x2940, 0x2940, 0x2940, 0x2941, 0x2941, 0x2942, 0x2942,
- 0x2943, 0x2944, 0x2945, 0x2945, 0x2946, 0x2947, 0x2948, 0x2949,
- 0x294a, 0x294b, 0x294c, 0x294e, 0x294f, 0x2950, 0x2951, 0x2953,
- 0x2954, 0x2955, 0x2957, 0x2958, 0x295a, 0x295b, 0x295d, 0x295f,
- 0x2960, 0x2960, 0x2960, 0x2960, 0x2961, 0x2961, 0x2962, 0x2962,
- 0x2963, 0x2964, 0x2965, 0x2965, 0x2966, 0x2967, 0x2968, 0x2969,
- 0x296a, 0x296b, 0x296c, 0x296e, 0x296f, 0x2970, 0x2971, 0x2973,
- 0x2974, 0x2975, 0x2977, 0x2978, 0x297a, 0x297b, 0x297d, 0x297f,
- 0x2980, 0x2980, 0x2980, 0x2980, 0x2981, 0x2981, 0x2982, 0x2982,
- 0x2983, 0x2984, 0x2985, 0x2985, 0x2986, 0x2987, 0x2988, 0x2989,
- 0x298a, 0x298b, 0x298c, 0x298e, 0x298f, 0x2990, 0x2991, 0x2993,
- 0x2994, 0x2995, 0x2997, 0x2998, 0x299a, 0x299b, 0x299d, 0x299f,
- 0x29a0, 0x29a0, 0x29a0, 0x29a0, 0x29a1, 0x29a1, 0x29a2, 0x29a2,
- 0x29a3, 0x29a4, 0x29a5, 0x29a5, 0x29a6, 0x29a7, 0x29a8, 0x29a9,
- 0x29aa, 0x29ab, 0x29ac, 0x29ae, 0x29af, 0x29b0, 0x29b1, 0x29b3,
- 0x29b4, 0x29b5, 0x29b7, 0x29b8, 0x29ba, 0x29bb, 0x29bd, 0x29bf,
- 0x29c0, 0x29c0, 0x29c0, 0x29c0, 0x29c1, 0x29c1, 0x29c2, 0x29c2,
- 0x29c3, 0x29c4, 0x29c5, 0x29c5, 0x29c6, 0x29c7, 0x29c8, 0x29c9,
- 0x29ca, 0x29cb, 0x29cc, 0x29ce, 0x29cf, 0x29d0, 0x29d1, 0x29d3,
- 0x29d4, 0x29d5, 0x29d7, 0x29d8, 0x29da, 0x29db, 0x29dd, 0x29df,
- 0x29e0, 0x29e0, 0x29e0, 0x29e0, 0x29e1, 0x29e1, 0x29e2, 0x29e2,
- 0x29e3, 0x29e4, 0x29e5, 0x29e5, 0x29e6, 0x29e7, 0x29e8, 0x29e9,
- 0x29ea, 0x29eb, 0x29ec, 0x29ee, 0x29ef, 0x29f0, 0x29f1, 0x29f3,
- 0x29f4, 0x29f5, 0x29f7, 0x29f8, 0x29fa, 0x29fb, 0x29fd, 0x29ff,
- 0x2a00, 0x2a00, 0x2a00, 0x2a00, 0x2a01, 0x2a01, 0x2a02, 0x2a02,
- 0x2a03, 0x2a04, 0x2a05, 0x2a05, 0x2a06, 0x2a07, 0x2a08, 0x2a09,
- 0x2a0a, 0x2a0b, 0x2a0c, 0x2a0e, 0x2a0f, 0x2a10, 0x2a11, 0x2a13,
- 0x2a14, 0x2a15, 0x2a17, 0x2a18, 0x2a1a, 0x2a1b, 0x2a1d, 0x2a1f,
- 0x2a20, 0x2a20, 0x2a20, 0x2a20, 0x2a21, 0x2a21, 0x2a22, 0x2a22,
- 0x2a23, 0x2a24, 0x2a25, 0x2a25, 0x2a26, 0x2a27, 0x2a28, 0x2a29,
- 0x2a2a, 0x2a2b, 0x2a2c, 0x2a2e, 0x2a2f, 0x2a30, 0x2a31, 0x2a33,
- 0x2a34, 0x2a35, 0x2a37, 0x2a38, 0x2a3a, 0x2a3b, 0x2a3d, 0x2a3f,
- 0x2a40, 0x2a40, 0x2a40, 0x2a40, 0x2a41, 0x2a41, 0x2a42, 0x2a42,
- 0x2a43, 0x2a44, 0x2a45, 0x2a45, 0x2a46, 0x2a47, 0x2a48, 0x2a49,
- 0x2a4a, 0x2a4b, 0x2a4c, 0x2a4e, 0x2a4f, 0x2a50, 0x2a51, 0x2a53,
- 0x2a54, 0x2a55, 0x2a57, 0x2a58, 0x2a5a, 0x2a5b, 0x2a5d, 0x2a5f,
- 0x2a60, 0x2a60, 0x2a60, 0x2a60, 0x2a61, 0x2a61, 0x2a62, 0x2a62,
- 0x2a63, 0x2a64, 0x2a65, 0x2a65, 0x2a66, 0x2a67, 0x2a68, 0x2a69,
- 0x2a6a, 0x2a6b, 0x2a6c, 0x2a6e, 0x2a6f, 0x2a70, 0x2a71, 0x2a73,
- 0x2a74, 0x2a75, 0x2a77, 0x2a78, 0x2a7a, 0x2a7b, 0x2a7d, 0x2a7f,
- 0x2a80, 0x2a80, 0x2a80, 0x2a80, 0x2a81, 0x2a81, 0x2a82, 0x2a82,
- 0x2a83, 0x2a84, 0x2a85, 0x2a85, 0x2a86, 0x2a87, 0x2a88, 0x2a89,
- 0x2a8a, 0x2a8b, 0x2a8c, 0x2a8e, 0x2a8f, 0x2a90, 0x2a91, 0x2a93,
- 0x2a94, 0x2a95, 0x2a97, 0x2a98, 0x2a9a, 0x2a9b, 0x2a9d, 0x2a9f,
- 0x2aa0, 0x2aa0, 0x2aa0, 0x2aa0, 0x2aa1, 0x2aa1, 0x2aa2, 0x2aa2,
- 0x2aa3, 0x2aa4, 0x2aa5, 0x2aa5, 0x2aa6, 0x2aa7, 0x2aa8, 0x2aa9,
- 0x2aaa, 0x2aab, 0x2aac, 0x2aae, 0x2aaf, 0x2ab0, 0x2ab1, 0x2ab3,
- 0x2ab4, 0x2ab5, 0x2ab7, 0x2ab8, 0x2aba, 0x2abb, 0x2abd, 0x2abf,
- 0x2ac0, 0x2ac0, 0x2ac0, 0x2ac0, 0x2ac1, 0x2ac1, 0x2ac2, 0x2ac2,
- 0x2ac3, 0x2ac4, 0x2ac5, 0x2ac5, 0x2ac6, 0x2ac7, 0x2ac8, 0x2ac9,
- 0x2aca, 0x2acb, 0x2acc, 0x2ace, 0x2acf, 0x2ad0, 0x2ad1, 0x2ad3,
- 0x2ad4, 0x2ad5, 0x2ad7, 0x2ad8, 0x2ada, 0x2adb, 0x2add, 0x2adf,
- 0x2ae0, 0x2ae0, 0x2ae0, 0x2ae0, 0x2ae1, 0x2ae1, 0x2ae2, 0x2ae2,
- 0x2ae3, 0x2ae4, 0x2ae5, 0x2ae5, 0x2ae6, 0x2ae7, 0x2ae8, 0x2ae9,
- 0x2aea, 0x2aeb, 0x2aec, 0x2aee, 0x2aef, 0x2af0, 0x2af1, 0x2af3,
- 0x2af4, 0x2af5, 0x2af7, 0x2af8, 0x2afa, 0x2afb, 0x2afd, 0x2aff,
- 0x2b00, 0x2b00, 0x2b00, 0x2b00, 0x2b01, 0x2b01, 0x2b02, 0x2b02,
- 0x2b03, 0x2b04, 0x2b05, 0x2b05, 0x2b06, 0x2b07, 0x2b08, 0x2b09,
- 0x2b0a, 0x2b0b, 0x2b0c, 0x2b0e, 0x2b0f, 0x2b10, 0x2b11, 0x2b13,
- 0x2b14, 0x2b15, 0x2b17, 0x2b18, 0x2b1a, 0x2b1b, 0x2b1d, 0x2b1f,
- 0x2b20, 0x2b20, 0x2b20, 0x2b20, 0x2b21, 0x2b21, 0x2b22, 0x2b22,
- 0x2b23, 0x2b24, 0x2b25, 0x2b25, 0x2b26, 0x2b27, 0x2b28, 0x2b29,
- 0x2b2a, 0x2b2b, 0x2b2c, 0x2b2e, 0x2b2f, 0x2b30, 0x2b31, 0x2b33,
- 0x2b34, 0x2b35, 0x2b37, 0x2b38, 0x2b3a, 0x2b3b, 0x2b3d, 0x2b3f,
- 0x2b40, 0x2b40, 0x2b40, 0x2b40, 0x2b41, 0x2b41, 0x2b42, 0x2b42,
- 0x2b43, 0x2b44, 0x2b45, 0x2b45, 0x2b46, 0x2b47, 0x2b48, 0x2b49,
- 0x2b4a, 0x2b4b, 0x2b4c, 0x2b4e, 0x2b4f, 0x2b50, 0x2b51, 0x2b53,
- 0x2b54, 0x2b55, 0x2b57, 0x2b58, 0x2b5a, 0x2b5b, 0x2b5d, 0x2b5f,
- 0x2b80, 0x2b80, 0x2b80, 0x2b80, 0x2b81, 0x2b81, 0x2b82, 0x2b82,
- 0x2b83, 0x2b84, 0x2b85, 0x2b85, 0x2b86, 0x2b87, 0x2b88, 0x2b89,
- 0x2b8a, 0x2b8b, 0x2b8c, 0x2b8e, 0x2b8f, 0x2b90, 0x2b91, 0x2b93,
- 0x2b94, 0x2b95, 0x2b97, 0x2b98, 0x2b9a, 0x2b9b, 0x2b9d, 0x2b9f,
- 0x2ba0, 0x2ba0, 0x2ba0, 0x2ba0, 0x2ba1, 0x2ba1, 0x2ba2, 0x2ba2,
- 0x2ba3, 0x2ba4, 0x2ba5, 0x2ba5, 0x2ba6, 0x2ba7, 0x2ba8, 0x2ba9,
- 0x2baa, 0x2bab, 0x2bac, 0x2bae, 0x2baf, 0x2bb0, 0x2bb1, 0x2bb3,
- 0x2bb4, 0x2bb5, 0x2bb7, 0x2bb8, 0x2bba, 0x2bbb, 0x2bbd, 0x2bbf,
- 0x2bc0, 0x2bc0, 0x2bc0, 0x2bc0, 0x2bc1, 0x2bc1, 0x2bc2, 0x2bc2,
- 0x2bc3, 0x2bc4, 0x2bc5, 0x2bc5, 0x2bc6, 0x2bc7, 0x2bc8, 0x2bc9,
- 0x2bca, 0x2bcb, 0x2bcc, 0x2bce, 0x2bcf, 0x2bd0, 0x2bd1, 0x2bd3,
- 0x2bd4, 0x2bd5, 0x2bd7, 0x2bd8, 0x2bda, 0x2bdb, 0x2bdd, 0x2bdf,
- 0x2be0, 0x2be0, 0x2be0, 0x2be0, 0x2be1, 0x2be1, 0x2be2, 0x2be2,
- 0x2be3, 0x2be4, 0x2be5, 0x2be5, 0x2be6, 0x2be7, 0x2be8, 0x2be9,
- 0x2bea, 0x2beb, 0x2bec, 0x2bee, 0x2bef, 0x2bf0, 0x2bf1, 0x2bf3,
- 0x2bf4, 0x2bf5, 0x2bf7, 0x2bf8, 0x2bfa, 0x2bfb, 0x2bfd, 0x2bff,
- 0x2c00, 0x2c00, 0x2c00, 0x2c00, 0x2c01, 0x2c01, 0x2c02, 0x2c02,
- 0x2c03, 0x2c04, 0x2c05, 0x2c05, 0x2c06, 0x2c07, 0x2c08, 0x2c09,
- 0x2c0a, 0x2c0b, 0x2c0c, 0x2c0e, 0x2c0f, 0x2c10, 0x2c11, 0x2c13,
- 0x2c14, 0x2c15, 0x2c17, 0x2c18, 0x2c1a, 0x2c1b, 0x2c1d, 0x2c1f,
- 0x2c40, 0x2c40, 0x2c40, 0x2c40, 0x2c41, 0x2c41, 0x2c42, 0x2c42,
- 0x2c43, 0x2c44, 0x2c45, 0x2c45, 0x2c46, 0x2c47, 0x2c48, 0x2c49,
- 0x2c4a, 0x2c4b, 0x2c4c, 0x2c4e, 0x2c4f, 0x2c50, 0x2c51, 0x2c53,
- 0x2c54, 0x2c55, 0x2c57, 0x2c58, 0x2c5a, 0x2c5b, 0x2c5d, 0x2c5f,
- 0x2c60, 0x2c60, 0x2c60, 0x2c60, 0x2c61, 0x2c61, 0x2c62, 0x2c62,
- 0x2c63, 0x2c64, 0x2c65, 0x2c65, 0x2c66, 0x2c67, 0x2c68, 0x2c69,
- 0x2c6a, 0x2c6b, 0x2c6c, 0x2c6e, 0x2c6f, 0x2c70, 0x2c71, 0x2c73,
- 0x2c74, 0x2c75, 0x2c77, 0x2c78, 0x2c7a, 0x2c7b, 0x2c7d, 0x2c7f,
- 0x2c80, 0x2c80, 0x2c80, 0x2c80, 0x2c81, 0x2c81, 0x2c82, 0x2c82,
- 0x2c83, 0x2c84, 0x2c85, 0x2c85, 0x2c86, 0x2c87, 0x2c88, 0x2c89,
- 0x2c8a, 0x2c8b, 0x2c8c, 0x2c8e, 0x2c8f, 0x2c90, 0x2c91, 0x2c93,
- 0x2c94, 0x2c95, 0x2c97, 0x2c98, 0x2c9a, 0x2c9b, 0x2c9d, 0x2c9f,
- 0x2cc0, 0x2cc0, 0x2cc0, 0x2cc0, 0x2cc1, 0x2cc1, 0x2cc2, 0x2cc2,
- 0x2cc3, 0x2cc4, 0x2cc5, 0x2cc5, 0x2cc6, 0x2cc7, 0x2cc8, 0x2cc9,
- 0x2cca, 0x2ccb, 0x2ccc, 0x2cce, 0x2ccf, 0x2cd0, 0x2cd1, 0x2cd3,
- 0x2cd4, 0x2cd5, 0x2cd7, 0x2cd8, 0x2cda, 0x2cdb, 0x2cdd, 0x2cdf,
- 0x2ce0, 0x2ce0, 0x2ce0, 0x2ce0, 0x2ce1, 0x2ce1, 0x2ce2, 0x2ce2,
- 0x2ce3, 0x2ce4, 0x2ce5, 0x2ce5, 0x2ce6, 0x2ce7, 0x2ce8, 0x2ce9,
- 0x2cea, 0x2ceb, 0x2cec, 0x2cee, 0x2cef, 0x2cf0, 0x2cf1, 0x2cf3,
- 0x2cf4, 0x2cf5, 0x2cf7, 0x2cf8, 0x2cfa, 0x2cfb, 0x2cfd, 0x2cff,
- 0x2d00, 0x2d00, 0x2d00, 0x2d00, 0x2d01, 0x2d01, 0x2d02, 0x2d02,
- 0x2d03, 0x2d04, 0x2d05, 0x2d05, 0x2d06, 0x2d07, 0x2d08, 0x2d09,
- 0x2d0a, 0x2d0b, 0x2d0c, 0x2d0e, 0x2d0f, 0x2d10, 0x2d11, 0x2d13,
- 0x2d14, 0x2d15, 0x2d17, 0x2d18, 0x2d1a, 0x2d1b, 0x2d1d, 0x2d1f,
- 0x2d40, 0x2d40, 0x2d40, 0x2d40, 0x2d41, 0x2d41, 0x2d42, 0x2d42,
- 0x2d43, 0x2d44, 0x2d45, 0x2d45, 0x2d46, 0x2d47, 0x2d48, 0x2d49,
- 0x2d4a, 0x2d4b, 0x2d4c, 0x2d4e, 0x2d4f, 0x2d50, 0x2d51, 0x2d53,
- 0x2d54, 0x2d55, 0x2d57, 0x2d58, 0x2d5a, 0x2d5b, 0x2d5d, 0x2d5f,
- 0x2d60, 0x2d60, 0x2d60, 0x2d60, 0x2d61, 0x2d61, 0x2d62, 0x2d62,
- 0x2d63, 0x2d64, 0x2d65, 0x2d65, 0x2d66, 0x2d67, 0x2d68, 0x2d69,
- 0x2d6a, 0x2d6b, 0x2d6c, 0x2d6e, 0x2d6f, 0x2d70, 0x2d71, 0x2d73,
- 0x2d74, 0x2d75, 0x2d77, 0x2d78, 0x2d7a, 0x2d7b, 0x2d7d, 0x2d7f,
- 0x2d80, 0x2d80, 0x2d80, 0x2d80, 0x2d81, 0x2d81, 0x2d82, 0x2d82,
- 0x2d83, 0x2d84, 0x2d85, 0x2d85, 0x2d86, 0x2d87, 0x2d88, 0x2d89,
- 0x2d8a, 0x2d8b, 0x2d8c, 0x2d8e, 0x2d8f, 0x2d90, 0x2d91, 0x2d93,
- 0x2d94, 0x2d95, 0x2d97, 0x2d98, 0x2d9a, 0x2d9b, 0x2d9d, 0x2d9f,
- 0x2dc0, 0x2dc0, 0x2dc0, 0x2dc0, 0x2dc1, 0x2dc1, 0x2dc2, 0x2dc2,
- 0x2dc3, 0x2dc4, 0x2dc5, 0x2dc5, 0x2dc6, 0x2dc7, 0x2dc8, 0x2dc9,
- 0x2dca, 0x2dcb, 0x2dcc, 0x2dce, 0x2dcf, 0x2dd0, 0x2dd1, 0x2dd3,
- 0x2dd4, 0x2dd5, 0x2dd7, 0x2dd8, 0x2dda, 0x2ddb, 0x2ddd, 0x2ddf,
- 0x2de0, 0x2de0, 0x2de0, 0x2de0, 0x2de1, 0x2de1, 0x2de2, 0x2de2,
- 0x2de3, 0x2de4, 0x2de5, 0x2de5, 0x2de6, 0x2de7, 0x2de8, 0x2de9,
- 0x2dea, 0x2deb, 0x2dec, 0x2dee, 0x2def, 0x2df0, 0x2df1, 0x2df3,
- 0x2df4, 0x2df5, 0x2df7, 0x2df8, 0x2dfa, 0x2dfb, 0x2dfd, 0x2dff,
- 0x2e20, 0x2e20, 0x2e20, 0x2e20, 0x2e21, 0x2e21, 0x2e22, 0x2e22,
- 0x2e23, 0x2e24, 0x2e25, 0x2e25, 0x2e26, 0x2e27, 0x2e28, 0x2e29,
- 0x2e2a, 0x2e2b, 0x2e2c, 0x2e2e, 0x2e2f, 0x2e30, 0x2e31, 0x2e33,
- 0x2e34, 0x2e35, 0x2e37, 0x2e38, 0x2e3a, 0x2e3b, 0x2e3d, 0x2e3f,
- 0x2e40, 0x2e40, 0x2e40, 0x2e40, 0x2e41, 0x2e41, 0x2e42, 0x2e42,
- 0x2e43, 0x2e44, 0x2e45, 0x2e45, 0x2e46, 0x2e47, 0x2e48, 0x2e49,
- 0x2e4a, 0x2e4b, 0x2e4c, 0x2e4e, 0x2e4f, 0x2e50, 0x2e51, 0x2e53,
- 0x2e54, 0x2e55, 0x2e57, 0x2e58, 0x2e5a, 0x2e5b, 0x2e5d, 0x2e5f,
- 0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e81, 0x2e81, 0x2e82, 0x2e82,
- 0x2e83, 0x2e84, 0x2e85, 0x2e85, 0x2e86, 0x2e87, 0x2e88, 0x2e89,
- 0x2e8a, 0x2e8b, 0x2e8c, 0x2e8e, 0x2e8f, 0x2e90, 0x2e91, 0x2e93,
- 0x2e94, 0x2e95, 0x2e97, 0x2e98, 0x2e9a, 0x2e9b, 0x2e9d, 0x2e9f,
- 0x2ea0, 0x2ea0, 0x2ea0, 0x2ea0, 0x2ea1, 0x2ea1, 0x2ea2, 0x2ea2,
- 0x2ea3, 0x2ea4, 0x2ea5, 0x2ea5, 0x2ea6, 0x2ea7, 0x2ea8, 0x2ea9,
- 0x2eaa, 0x2eab, 0x2eac, 0x2eae, 0x2eaf, 0x2eb0, 0x2eb1, 0x2eb3,
- 0x2eb4, 0x2eb5, 0x2eb7, 0x2eb8, 0x2eba, 0x2ebb, 0x2ebd, 0x2ebf,
- 0x2ee0, 0x2ee0, 0x2ee0, 0x2ee0, 0x2ee1, 0x2ee1, 0x2ee2, 0x2ee2,
- 0x2ee3, 0x2ee4, 0x2ee5, 0x2ee5, 0x2ee6, 0x2ee7, 0x2ee8, 0x2ee9,
- 0x2eea, 0x2eeb, 0x2eec, 0x2eee, 0x2eef, 0x2ef0, 0x2ef1, 0x2ef3,
- 0x2ef4, 0x2ef5, 0x2ef7, 0x2ef8, 0x2efa, 0x2efb, 0x2efd, 0x2eff,
- 0x2f00, 0x2f00, 0x2f00, 0x2f00, 0x2f01, 0x2f01, 0x2f02, 0x2f02,
- 0x2f03, 0x2f04, 0x2f05, 0x2f05, 0x2f06, 0x2f07, 0x2f08, 0x2f09,
- 0x2f0a, 0x2f0b, 0x2f0c, 0x2f0e, 0x2f0f, 0x2f10, 0x2f11, 0x2f13,
- 0x2f14, 0x2f15, 0x2f17, 0x2f18, 0x2f1a, 0x2f1b, 0x2f1d, 0x2f1f,
- 0x2f40, 0x2f40, 0x2f40, 0x2f40, 0x2f41, 0x2f41, 0x2f42, 0x2f42,
- 0x2f43, 0x2f44, 0x2f45, 0x2f45, 0x2f46, 0x2f47, 0x2f48, 0x2f49,
- 0x2f4a, 0x2f4b, 0x2f4c, 0x2f4e, 0x2f4f, 0x2f50, 0x2f51, 0x2f53,
- 0x2f54, 0x2f55, 0x2f57, 0x2f58, 0x2f5a, 0x2f5b, 0x2f5d, 0x2f5f,
- 0x2f60, 0x2f60, 0x2f60, 0x2f60, 0x2f61, 0x2f61, 0x2f62, 0x2f62,
- 0x2f63, 0x2f64, 0x2f65, 0x2f65, 0x2f66, 0x2f67, 0x2f68, 0x2f69,
- 0x2f6a, 0x2f6b, 0x2f6c, 0x2f6e, 0x2f6f, 0x2f70, 0x2f71, 0x2f73,
- 0x2f74, 0x2f75, 0x2f77, 0x2f78, 0x2f7a, 0x2f7b, 0x2f7d, 0x2f7f,
- 0x2fa0, 0x2fa0, 0x2fa0, 0x2fa0, 0x2fa1, 0x2fa1, 0x2fa2, 0x2fa2,
- 0x2fa3, 0x2fa4, 0x2fa5, 0x2fa5, 0x2fa6, 0x2fa7, 0x2fa8, 0x2fa9,
- 0x2faa, 0x2fab, 0x2fac, 0x2fae, 0x2faf, 0x2fb0, 0x2fb1, 0x2fb3,
- 0x2fb4, 0x2fb5, 0x2fb7, 0x2fb8, 0x2fba, 0x2fbb, 0x2fbd, 0x2fbf,
- 0x2fe0, 0x2fe0, 0x2fe0, 0x2fe0, 0x2fe1, 0x2fe1, 0x2fe2, 0x2fe2,
- 0x2fe3, 0x2fe4, 0x2fe5, 0x2fe5, 0x2fe6, 0x2fe7, 0x2fe8, 0x2fe9,
- 0x2fea, 0x2feb, 0x2fec, 0x2fee, 0x2fef, 0x2ff0, 0x2ff1, 0x2ff3,
- 0x2ff4, 0x2ff5, 0x2ff7, 0x2ff8, 0x2ffa, 0x2ffb, 0x2ffd, 0x2fff,
- 0x2800, 0x2800, 0x2800, 0x2800, 0x2801, 0x2801, 0x2802, 0x2802,
- 0x2803, 0x2804, 0x2805, 0x2805, 0x2806, 0x2807, 0x2808, 0x2809,
- 0x280a, 0x280b, 0x280c, 0x280e, 0x280f, 0x2810, 0x2811, 0x2813,
- 0x2814, 0x2815, 0x2817, 0x2818, 0x281a, 0x281b, 0x281d, 0x281f,
- 0x2800, 0x2800, 0x2800, 0x2800, 0x2801, 0x2801, 0x2802, 0x2802,
- 0x2803, 0x2804, 0x2805, 0x2805, 0x2806, 0x2807, 0x2808, 0x2809,
- 0x280a, 0x280b, 0x280c, 0x280e, 0x280f, 0x2810, 0x2811, 0x2813,
- 0x2814, 0x2815, 0x2817, 0x2818, 0x281a, 0x281b, 0x281d, 0x281f,
- 0x2800, 0x2800, 0x2800, 0x2800, 0x2801, 0x2801, 0x2802, 0x2802,
- 0x2803, 0x2804, 0x2805, 0x2805, 0x2806, 0x2807, 0x2808, 0x2809,
- 0x280a, 0x280b, 0x280c, 0x280e, 0x280f, 0x2810, 0x2811, 0x2813,
- 0x2814, 0x2815, 0x2817, 0x2818, 0x281a, 0x281b, 0x281d, 0x281f,
- 0x2800, 0x2800, 0x2800, 0x2800, 0x2801, 0x2801, 0x2802, 0x2802,
- 0x2803, 0x2804, 0x2805, 0x2805, 0x2806, 0x2807, 0x2808, 0x2809,
- 0x280a, 0x280b, 0x280c, 0x280e, 0x280f, 0x2810, 0x2811, 0x2813,
- 0x2814, 0x2815, 0x2817, 0x2818, 0x281a, 0x281b, 0x281d, 0x281f,
- 0x2800, 0x2800, 0x2800, 0x2800, 0x2801, 0x2801, 0x2802, 0x2802,
- 0x2803, 0x2804, 0x2805, 0x2805, 0x2806, 0x2807, 0x2808, 0x2809,
- 0x280a, 0x280b, 0x280c, 0x280e, 0x280f, 0x2810, 0x2811, 0x2813,
- 0x2814, 0x2815, 0x2817, 0x2818, 0x281a, 0x281b, 0x281d, 0x281f,
- 0x2820, 0x2820, 0x2820, 0x2820, 0x2821, 0x2821, 0x2822, 0x2822,
- 0x2823, 0x2824, 0x2825, 0x2825, 0x2826, 0x2827, 0x2828, 0x2829,
- 0x282a, 0x282b, 0x282c, 0x282e, 0x282f, 0x2830, 0x2831, 0x2833,
- 0x2834, 0x2835, 0x2837, 0x2838, 0x283a, 0x283b, 0x283d, 0x283f,
- 0x2820, 0x2820, 0x2820, 0x2820, 0x2821, 0x2821, 0x2822, 0x2822,
- 0x2823, 0x2824, 0x2825, 0x2825, 0x2826, 0x2827, 0x2828, 0x2829,
- 0x282a, 0x282b, 0x282c, 0x282e, 0x282f, 0x2830, 0x2831, 0x2833,
- 0x2834, 0x2835, 0x2837, 0x2838, 0x283a, 0x283b, 0x283d, 0x283f,
- 0x2820, 0x2820, 0x2820, 0x2820, 0x2821, 0x2821, 0x2822, 0x2822,
- 0x2823, 0x2824, 0x2825, 0x2825, 0x2826, 0x2827, 0x2828, 0x2829,
- 0x282a, 0x282b, 0x282c, 0x282e, 0x282f, 0x2830, 0x2831, 0x2833,
- 0x2834, 0x2835, 0x2837, 0x2838, 0x283a, 0x283b, 0x283d, 0x283f,
- 0x2840, 0x2840, 0x2840, 0x2840, 0x2841, 0x2841, 0x2842, 0x2842,
- 0x2843, 0x2844, 0x2845, 0x2845, 0x2846, 0x2847, 0x2848, 0x2849,
- 0x284a, 0x284b, 0x284c, 0x284e, 0x284f, 0x2850, 0x2851, 0x2853,
- 0x2854, 0x2855, 0x2857, 0x2858, 0x285a, 0x285b, 0x285d, 0x285f,
- 0x2840, 0x2840, 0x2840, 0x2840, 0x2841, 0x2841, 0x2842, 0x2842,
- 0x2843, 0x2844, 0x2845, 0x2845, 0x2846, 0x2847, 0x2848, 0x2849,
- 0x284a, 0x284b, 0x284c, 0x284e, 0x284f, 0x2850, 0x2851, 0x2853,
- 0x2854, 0x2855, 0x2857, 0x2858, 0x285a, 0x285b, 0x285d, 0x285f,
- 0x2860, 0x2860, 0x2860, 0x2860, 0x2861, 0x2861, 0x2862, 0x2862,
- 0x2863, 0x2864, 0x2865, 0x2865, 0x2866, 0x2867, 0x2868, 0x2869,
- 0x286a, 0x286b, 0x286c, 0x286e, 0x286f, 0x2870, 0x2871, 0x2873,
- 0x2874, 0x2875, 0x2877, 0x2878, 0x287a, 0x287b, 0x287d, 0x287f,
- 0x2860, 0x2860, 0x2860, 0x2860, 0x2861, 0x2861, 0x2862, 0x2862,
- 0x2863, 0x2864, 0x2865, 0x2865, 0x2866, 0x2867, 0x2868, 0x2869,
- 0x286a, 0x286b, 0x286c, 0x286e, 0x286f, 0x2870, 0x2871, 0x2873,
- 0x2874, 0x2875, 0x2877, 0x2878, 0x287a, 0x287b, 0x287d, 0x287f,
- 0x2880, 0x2880, 0x2880, 0x2880, 0x2881, 0x2881, 0x2882, 0x2882,
- 0x2883, 0x2884, 0x2885, 0x2885, 0x2886, 0x2887, 0x2888, 0x2889,
- 0x288a, 0x288b, 0x288c, 0x288e, 0x288f, 0x2890, 0x2891, 0x2893,
- 0x2894, 0x2895, 0x2897, 0x2898, 0x289a, 0x289b, 0x289d, 0x289f,
- 0x28a0, 0x28a0, 0x28a0, 0x28a0, 0x28a1, 0x28a1, 0x28a2, 0x28a2,
- 0x28a3, 0x28a4, 0x28a5, 0x28a5, 0x28a6, 0x28a7, 0x28a8, 0x28a9,
- 0x28aa, 0x28ab, 0x28ac, 0x28ae, 0x28af, 0x28b0, 0x28b1, 0x28b3,
- 0x28b4, 0x28b5, 0x28b7, 0x28b8, 0x28ba, 0x28bb, 0x28bd, 0x28bf,
- 0x28a0, 0x28a0, 0x28a0, 0x28a0, 0x28a1, 0x28a1, 0x28a2, 0x28a2,
- 0x28a3, 0x28a4, 0x28a5, 0x28a5, 0x28a6, 0x28a7, 0x28a8, 0x28a9,
- 0x28aa, 0x28ab, 0x28ac, 0x28ae, 0x28af, 0x28b0, 0x28b1, 0x28b3,
- 0x28b4, 0x28b5, 0x28b7, 0x28b8, 0x28ba, 0x28bb, 0x28bd, 0x28bf,
- 0x28c0, 0x28c0, 0x28c0, 0x28c0, 0x28c1, 0x28c1, 0x28c2, 0x28c2,
- 0x28c3, 0x28c4, 0x28c5, 0x28c5, 0x28c6, 0x28c7, 0x28c8, 0x28c9,
- 0x28ca, 0x28cb, 0x28cc, 0x28ce, 0x28cf, 0x28d0, 0x28d1, 0x28d3,
- 0x28d4, 0x28d5, 0x28d7, 0x28d8, 0x28da, 0x28db, 0x28dd, 0x28df,
- 0x28e0, 0x28e0, 0x28e0, 0x28e0, 0x28e1, 0x28e1, 0x28e2, 0x28e2,
- 0x28e3, 0x28e4, 0x28e5, 0x28e5, 0x28e6, 0x28e7, 0x28e8, 0x28e9,
- 0x28ea, 0x28eb, 0x28ec, 0x28ee, 0x28ef, 0x28f0, 0x28f1, 0x28f3,
- 0x28f4, 0x28f5, 0x28f7, 0x28f8, 0x28fa, 0x28fb, 0x28fd, 0x28ff,
- 0x28e0, 0x28e0, 0x28e0, 0x28e0, 0x28e1, 0x28e1, 0x28e2, 0x28e2,
- 0x28e3, 0x28e4, 0x28e5, 0x28e5, 0x28e6, 0x28e7, 0x28e8, 0x28e9,
- 0x28ea, 0x28eb, 0x28ec, 0x28ee, 0x28ef, 0x28f0, 0x28f1, 0x28f3,
- 0x28f4, 0x28f5, 0x28f7, 0x28f8, 0x28fa, 0x28fb, 0x28fd, 0x28ff,
- 0x2900, 0x2900, 0x2900, 0x2900, 0x2901, 0x2901, 0x2902, 0x2902,
- 0x2903, 0x2904, 0x2905, 0x2905, 0x2906, 0x2907, 0x2908, 0x2909,
- 0x290a, 0x290b, 0x290c, 0x290e, 0x290f, 0x2910, 0x2911, 0x2913,
- 0x2914, 0x2915, 0x2917, 0x2918, 0x291a, 0x291b, 0x291d, 0x291f,
- 0x2920, 0x2920, 0x2920, 0x2920, 0x2921, 0x2921, 0x2922, 0x2922,
- 0x2923, 0x2924, 0x2925, 0x2925, 0x2926, 0x2927, 0x2928, 0x2929,
- 0x292a, 0x292b, 0x292c, 0x292e, 0x292f, 0x2930, 0x2931, 0x2933,
- 0x2934, 0x2935, 0x2937, 0x2938, 0x293a, 0x293b, 0x293d, 0x293f,
- 0x2940, 0x2940, 0x2940, 0x2940, 0x2941, 0x2941, 0x2942, 0x2942,
- 0x2943, 0x2944, 0x2945, 0x2945, 0x2946, 0x2947, 0x2948, 0x2949,
- 0x294a, 0x294b, 0x294c, 0x294e, 0x294f, 0x2950, 0x2951, 0x2953,
- 0x2954, 0x2955, 0x2957, 0x2958, 0x295a, 0x295b, 0x295d, 0x295f,
- 0x2940, 0x2940, 0x2940, 0x2940, 0x2941, 0x2941, 0x2942, 0x2942,
- 0x2943, 0x2944, 0x2945, 0x2945, 0x2946, 0x2947, 0x2948, 0x2949,
- 0x294a, 0x294b, 0x294c, 0x294e, 0x294f, 0x2950, 0x2951, 0x2953,
- 0x2954, 0x2955, 0x2957, 0x2958, 0x295a, 0x295b, 0x295d, 0x295f,
- 0x2960, 0x2960, 0x2960, 0x2960, 0x2961, 0x2961, 0x2962, 0x2962,
- 0x2963, 0x2964, 0x2965, 0x2965, 0x2966, 0x2967, 0x2968, 0x2969,
- 0x296a, 0x296b, 0x296c, 0x296e, 0x296f, 0x2970, 0x2971, 0x2973,
- 0x2974, 0x2975, 0x2977, 0x2978, 0x297a, 0x297b, 0x297d, 0x297f,
- 0x2980, 0x2980, 0x2980, 0x2980, 0x2981, 0x2981, 0x2982, 0x2982,
- 0x2983, 0x2984, 0x2985, 0x2985, 0x2986, 0x2987, 0x2988, 0x2989,
- 0x298a, 0x298b, 0x298c, 0x298e, 0x298f, 0x2990, 0x2991, 0x2993,
- 0x2994, 0x2995, 0x2997, 0x2998, 0x299a, 0x299b, 0x299d, 0x299f,
- 0x29a0, 0x29a0, 0x29a0, 0x29a0, 0x29a1, 0x29a1, 0x29a2, 0x29a2,
- 0x29a3, 0x29a4, 0x29a5, 0x29a5, 0x29a6, 0x29a7, 0x29a8, 0x29a9,
- 0x29aa, 0x29ab, 0x29ac, 0x29ae, 0x29af, 0x29b0, 0x29b1, 0x29b3,
- 0x29b4, 0x29b5, 0x29b7, 0x29b8, 0x29ba, 0x29bb, 0x29bd, 0x29bf,
- 0x29c0, 0x29c0, 0x29c0, 0x29c0, 0x29c1, 0x29c1, 0x29c2, 0x29c2,
- 0x29c3, 0x29c4, 0x29c5, 0x29c5, 0x29c6, 0x29c7, 0x29c8, 0x29c9,
- 0x29ca, 0x29cb, 0x29cc, 0x29ce, 0x29cf, 0x29d0, 0x29d1, 0x29d3,
- 0x29d4, 0x29d5, 0x29d7, 0x29d8, 0x29da, 0x29db, 0x29dd, 0x29df,
- 0x29e0, 0x29e0, 0x29e0, 0x29e0, 0x29e1, 0x29e1, 0x29e2, 0x29e2,
- 0x29e3, 0x29e4, 0x29e5, 0x29e5, 0x29e6, 0x29e7, 0x29e8, 0x29e9,
- 0x29ea, 0x29eb, 0x29ec, 0x29ee, 0x29ef, 0x29f0, 0x29f1, 0x29f3,
- 0x29f4, 0x29f5, 0x29f7, 0x29f8, 0x29fa, 0x29fb, 0x29fd, 0x29ff,
- 0x2a00, 0x2a00, 0x2a00, 0x2a00, 0x2a01, 0x2a01, 0x2a02, 0x2a02,
- 0x2a03, 0x2a04, 0x2a05, 0x2a05, 0x2a06, 0x2a07, 0x2a08, 0x2a09,
- 0x2a0a, 0x2a0b, 0x2a0c, 0x2a0e, 0x2a0f, 0x2a10, 0x2a11, 0x2a13,
- 0x2a14, 0x2a15, 0x2a17, 0x2a18, 0x2a1a, 0x2a1b, 0x2a1d, 0x2a1f,
- 0x2a20, 0x2a20, 0x2a20, 0x2a20, 0x2a21, 0x2a21, 0x2a22, 0x2a22,
- 0x2a23, 0x2a24, 0x2a25, 0x2a25, 0x2a26, 0x2a27, 0x2a28, 0x2a29,
- 0x2a2a, 0x2a2b, 0x2a2c, 0x2a2e, 0x2a2f, 0x2a30, 0x2a31, 0x2a33,
- 0x2a34, 0x2a35, 0x2a37, 0x2a38, 0x2a3a, 0x2a3b, 0x2a3d, 0x2a3f,
- 0x2a40, 0x2a40, 0x2a40, 0x2a40, 0x2a41, 0x2a41, 0x2a42, 0x2a42,
- 0x2a43, 0x2a44, 0x2a45, 0x2a45, 0x2a46, 0x2a47, 0x2a48, 0x2a49,
- 0x2a4a, 0x2a4b, 0x2a4c, 0x2a4e, 0x2a4f, 0x2a50, 0x2a51, 0x2a53,
- 0x2a54, 0x2a55, 0x2a57, 0x2a58, 0x2a5a, 0x2a5b, 0x2a5d, 0x2a5f,
- 0x2a60, 0x2a60, 0x2a60, 0x2a60, 0x2a61, 0x2a61, 0x2a62, 0x2a62,
- 0x2a63, 0x2a64, 0x2a65, 0x2a65, 0x2a66, 0x2a67, 0x2a68, 0x2a69,
- 0x2a6a, 0x2a6b, 0x2a6c, 0x2a6e, 0x2a6f, 0x2a70, 0x2a71, 0x2a73,
- 0x2a74, 0x2a75, 0x2a77, 0x2a78, 0x2a7a, 0x2a7b, 0x2a7d, 0x2a7f,
- 0x2a80, 0x2a80, 0x2a80, 0x2a80, 0x2a81, 0x2a81, 0x2a82, 0x2a82,
- 0x2a83, 0x2a84, 0x2a85, 0x2a85, 0x2a86, 0x2a87, 0x2a88, 0x2a89,
- 0x2a8a, 0x2a8b, 0x2a8c, 0x2a8e, 0x2a8f, 0x2a90, 0x2a91, 0x2a93,
- 0x2a94, 0x2a95, 0x2a97, 0x2a98, 0x2a9a, 0x2a9b, 0x2a9d, 0x2a9f,
- 0x2aa0, 0x2aa0, 0x2aa0, 0x2aa0, 0x2aa1, 0x2aa1, 0x2aa2, 0x2aa2,
- 0x2aa3, 0x2aa4, 0x2aa5, 0x2aa5, 0x2aa6, 0x2aa7, 0x2aa8, 0x2aa9,
- 0x2aaa, 0x2aab, 0x2aac, 0x2aae, 0x2aaf, 0x2ab0, 0x2ab1, 0x2ab3,
- 0x2ab4, 0x2ab5, 0x2ab7, 0x2ab8, 0x2aba, 0x2abb, 0x2abd, 0x2abf,
- 0x2ac0, 0x2ac0, 0x2ac0, 0x2ac0, 0x2ac1, 0x2ac1, 0x2ac2, 0x2ac2,
- 0x2ac3, 0x2ac4, 0x2ac5, 0x2ac5, 0x2ac6, 0x2ac7, 0x2ac8, 0x2ac9,
- 0x2aca, 0x2acb, 0x2acc, 0x2ace, 0x2acf, 0x2ad0, 0x2ad1, 0x2ad3,
- 0x2ad4, 0x2ad5, 0x2ad7, 0x2ad8, 0x2ada, 0x2adb, 0x2add, 0x2adf,
- 0x2ae0, 0x2ae0, 0x2ae0, 0x2ae0, 0x2ae1, 0x2ae1, 0x2ae2, 0x2ae2,
- 0x2ae3, 0x2ae4, 0x2ae5, 0x2ae5, 0x2ae6, 0x2ae7, 0x2ae8, 0x2ae9,
- 0x2aea, 0x2aeb, 0x2aec, 0x2aee, 0x2aef, 0x2af0, 0x2af1, 0x2af3,
- 0x2af4, 0x2af5, 0x2af7, 0x2af8, 0x2afa, 0x2afb, 0x2afd, 0x2aff,
- 0x2b00, 0x2b00, 0x2b00, 0x2b00, 0x2b01, 0x2b01, 0x2b02, 0x2b02,
- 0x2b03, 0x2b04, 0x2b05, 0x2b05, 0x2b06, 0x2b07, 0x2b08, 0x2b09,
- 0x2b0a, 0x2b0b, 0x2b0c, 0x2b0e, 0x2b0f, 0x2b10, 0x2b11, 0x2b13,
- 0x2b14, 0x2b15, 0x2b17, 0x2b18, 0x2b1a, 0x2b1b, 0x2b1d, 0x2b1f,
- 0x2b20, 0x2b20, 0x2b20, 0x2b20, 0x2b21, 0x2b21, 0x2b22, 0x2b22,
- 0x2b23, 0x2b24, 0x2b25, 0x2b25, 0x2b26, 0x2b27, 0x2b28, 0x2b29,
- 0x2b2a, 0x2b2b, 0x2b2c, 0x2b2e, 0x2b2f, 0x2b30, 0x2b31, 0x2b33,
- 0x2b34, 0x2b35, 0x2b37, 0x2b38, 0x2b3a, 0x2b3b, 0x2b3d, 0x2b3f,
- 0x2b40, 0x2b40, 0x2b40, 0x2b40, 0x2b41, 0x2b41, 0x2b42, 0x2b42,
- 0x2b43, 0x2b44, 0x2b45, 0x2b45, 0x2b46, 0x2b47, 0x2b48, 0x2b49,
- 0x2b4a, 0x2b4b, 0x2b4c, 0x2b4e, 0x2b4f, 0x2b50, 0x2b51, 0x2b53,
- 0x2b54, 0x2b55, 0x2b57, 0x2b58, 0x2b5a, 0x2b5b, 0x2b5d, 0x2b5f,
- 0x2b80, 0x2b80, 0x2b80, 0x2b80, 0x2b81, 0x2b81, 0x2b82, 0x2b82,
- 0x2b83, 0x2b84, 0x2b85, 0x2b85, 0x2b86, 0x2b87, 0x2b88, 0x2b89,
- 0x2b8a, 0x2b8b, 0x2b8c, 0x2b8e, 0x2b8f, 0x2b90, 0x2b91, 0x2b93,
- 0x2b94, 0x2b95, 0x2b97, 0x2b98, 0x2b9a, 0x2b9b, 0x2b9d, 0x2b9f,
- 0x2ba0, 0x2ba0, 0x2ba0, 0x2ba0, 0x2ba1, 0x2ba1, 0x2ba2, 0x2ba2,
- 0x2ba3, 0x2ba4, 0x2ba5, 0x2ba5, 0x2ba6, 0x2ba7, 0x2ba8, 0x2ba9,
- 0x2baa, 0x2bab, 0x2bac, 0x2bae, 0x2baf, 0x2bb0, 0x2bb1, 0x2bb3,
- 0x2bb4, 0x2bb5, 0x2bb7, 0x2bb8, 0x2bba, 0x2bbb, 0x2bbd, 0x2bbf,
- 0x2bc0, 0x2bc0, 0x2bc0, 0x2bc0, 0x2bc1, 0x2bc1, 0x2bc2, 0x2bc2,
- 0x2bc3, 0x2bc4, 0x2bc5, 0x2bc5, 0x2bc6, 0x2bc7, 0x2bc8, 0x2bc9,
- 0x2bca, 0x2bcb, 0x2bcc, 0x2bce, 0x2bcf, 0x2bd0, 0x2bd1, 0x2bd3,
- 0x2bd4, 0x2bd5, 0x2bd7, 0x2bd8, 0x2bda, 0x2bdb, 0x2bdd, 0x2bdf,
- 0x2be0, 0x2be0, 0x2be0, 0x2be0, 0x2be1, 0x2be1, 0x2be2, 0x2be2,
- 0x2be3, 0x2be4, 0x2be5, 0x2be5, 0x2be6, 0x2be7, 0x2be8, 0x2be9,
- 0x2bea, 0x2beb, 0x2bec, 0x2bee, 0x2bef, 0x2bf0, 0x2bf1, 0x2bf3,
- 0x2bf4, 0x2bf5, 0x2bf7, 0x2bf8, 0x2bfa, 0x2bfb, 0x2bfd, 0x2bff,
- 0x2c00, 0x2c00, 0x2c00, 0x2c00, 0x2c01, 0x2c01, 0x2c02, 0x2c02,
- 0x2c03, 0x2c04, 0x2c05, 0x2c05, 0x2c06, 0x2c07, 0x2c08, 0x2c09,
- 0x2c0a, 0x2c0b, 0x2c0c, 0x2c0e, 0x2c0f, 0x2c10, 0x2c11, 0x2c13,
- 0x2c14, 0x2c15, 0x2c17, 0x2c18, 0x2c1a, 0x2c1b, 0x2c1d, 0x2c1f,
- 0x2c40, 0x2c40, 0x2c40, 0x2c40, 0x2c41, 0x2c41, 0x2c42, 0x2c42,
- 0x2c43, 0x2c44, 0x2c45, 0x2c45, 0x2c46, 0x2c47, 0x2c48, 0x2c49,
- 0x2c4a, 0x2c4b, 0x2c4c, 0x2c4e, 0x2c4f, 0x2c50, 0x2c51, 0x2c53,
- 0x2c54, 0x2c55, 0x2c57, 0x2c58, 0x2c5a, 0x2c5b, 0x2c5d, 0x2c5f,
- 0x2c60, 0x2c60, 0x2c60, 0x2c60, 0x2c61, 0x2c61, 0x2c62, 0x2c62,
- 0x2c63, 0x2c64, 0x2c65, 0x2c65, 0x2c66, 0x2c67, 0x2c68, 0x2c69,
- 0x2c6a, 0x2c6b, 0x2c6c, 0x2c6e, 0x2c6f, 0x2c70, 0x2c71, 0x2c73,
- 0x2c74, 0x2c75, 0x2c77, 0x2c78, 0x2c7a, 0x2c7b, 0x2c7d, 0x2c7f,
- 0x2c80, 0x2c80, 0x2c80, 0x2c80, 0x2c81, 0x2c81, 0x2c82, 0x2c82,
- 0x2c83, 0x2c84, 0x2c85, 0x2c85, 0x2c86, 0x2c87, 0x2c88, 0x2c89,
- 0x2c8a, 0x2c8b, 0x2c8c, 0x2c8e, 0x2c8f, 0x2c90, 0x2c91, 0x2c93,
- 0x2c94, 0x2c95, 0x2c97, 0x2c98, 0x2c9a, 0x2c9b, 0x2c9d, 0x2c9f,
- 0x2cc0, 0x2cc0, 0x2cc0, 0x2cc0, 0x2cc1, 0x2cc1, 0x2cc2, 0x2cc2,
- 0x2cc3, 0x2cc4, 0x2cc5, 0x2cc5, 0x2cc6, 0x2cc7, 0x2cc8, 0x2cc9,
- 0x2cca, 0x2ccb, 0x2ccc, 0x2cce, 0x2ccf, 0x2cd0, 0x2cd1, 0x2cd3,
- 0x2cd4, 0x2cd5, 0x2cd7, 0x2cd8, 0x2cda, 0x2cdb, 0x2cdd, 0x2cdf,
- 0x2ce0, 0x2ce0, 0x2ce0, 0x2ce0, 0x2ce1, 0x2ce1, 0x2ce2, 0x2ce2,
- 0x2ce3, 0x2ce4, 0x2ce5, 0x2ce5, 0x2ce6, 0x2ce7, 0x2ce8, 0x2ce9,
- 0x2cea, 0x2ceb, 0x2cec, 0x2cee, 0x2cef, 0x2cf0, 0x2cf1, 0x2cf3,
- 0x2cf4, 0x2cf5, 0x2cf7, 0x2cf8, 0x2cfa, 0x2cfb, 0x2cfd, 0x2cff,
- 0x2d00, 0x2d00, 0x2d00, 0x2d00, 0x2d01, 0x2d01, 0x2d02, 0x2d02,
- 0x2d03, 0x2d04, 0x2d05, 0x2d05, 0x2d06, 0x2d07, 0x2d08, 0x2d09,
- 0x2d0a, 0x2d0b, 0x2d0c, 0x2d0e, 0x2d0f, 0x2d10, 0x2d11, 0x2d13,
- 0x2d14, 0x2d15, 0x2d17, 0x2d18, 0x2d1a, 0x2d1b, 0x2d1d, 0x2d1f,
- 0x2d40, 0x2d40, 0x2d40, 0x2d40, 0x2d41, 0x2d41, 0x2d42, 0x2d42,
- 0x2d43, 0x2d44, 0x2d45, 0x2d45, 0x2d46, 0x2d47, 0x2d48, 0x2d49,
- 0x2d4a, 0x2d4b, 0x2d4c, 0x2d4e, 0x2d4f, 0x2d50, 0x2d51, 0x2d53,
- 0x2d54, 0x2d55, 0x2d57, 0x2d58, 0x2d5a, 0x2d5b, 0x2d5d, 0x2d5f,
- 0x2d60, 0x2d60, 0x2d60, 0x2d60, 0x2d61, 0x2d61, 0x2d62, 0x2d62,
- 0x2d63, 0x2d64, 0x2d65, 0x2d65, 0x2d66, 0x2d67, 0x2d68, 0x2d69,
- 0x2d6a, 0x2d6b, 0x2d6c, 0x2d6e, 0x2d6f, 0x2d70, 0x2d71, 0x2d73,
- 0x2d74, 0x2d75, 0x2d77, 0x2d78, 0x2d7a, 0x2d7b, 0x2d7d, 0x2d7f,
- 0x2d80, 0x2d80, 0x2d80, 0x2d80, 0x2d81, 0x2d81, 0x2d82, 0x2d82,
- 0x2d83, 0x2d84, 0x2d85, 0x2d85, 0x2d86, 0x2d87, 0x2d88, 0x2d89,
- 0x2d8a, 0x2d8b, 0x2d8c, 0x2d8e, 0x2d8f, 0x2d90, 0x2d91, 0x2d93,
- 0x2d94, 0x2d95, 0x2d97, 0x2d98, 0x2d9a, 0x2d9b, 0x2d9d, 0x2d9f,
- 0x2dc0, 0x2dc0, 0x2dc0, 0x2dc0, 0x2dc1, 0x2dc1, 0x2dc2, 0x2dc2,
- 0x2dc3, 0x2dc4, 0x2dc5, 0x2dc5, 0x2dc6, 0x2dc7, 0x2dc8, 0x2dc9,
- 0x2dca, 0x2dcb, 0x2dcc, 0x2dce, 0x2dcf, 0x2dd0, 0x2dd1, 0x2dd3,
- 0x2dd4, 0x2dd5, 0x2dd7, 0x2dd8, 0x2dda, 0x2ddb, 0x2ddd, 0x2ddf,
- 0x2de0, 0x2de0, 0x2de0, 0x2de0, 0x2de1, 0x2de1, 0x2de2, 0x2de2,
- 0x2de3, 0x2de4, 0x2de5, 0x2de5, 0x2de6, 0x2de7, 0x2de8, 0x2de9,
- 0x2dea, 0x2deb, 0x2dec, 0x2dee, 0x2def, 0x2df0, 0x2df1, 0x2df3,
- 0x2df4, 0x2df5, 0x2df7, 0x2df8, 0x2dfa, 0x2dfb, 0x2dfd, 0x2dff,
- 0x2e20, 0x2e20, 0x2e20, 0x2e20, 0x2e21, 0x2e21, 0x2e22, 0x2e22,
- 0x2e23, 0x2e24, 0x2e25, 0x2e25, 0x2e26, 0x2e27, 0x2e28, 0x2e29,
- 0x2e2a, 0x2e2b, 0x2e2c, 0x2e2e, 0x2e2f, 0x2e30, 0x2e31, 0x2e33,
- 0x2e34, 0x2e35, 0x2e37, 0x2e38, 0x2e3a, 0x2e3b, 0x2e3d, 0x2e3f,
- 0x2e40, 0x2e40, 0x2e40, 0x2e40, 0x2e41, 0x2e41, 0x2e42, 0x2e42,
- 0x2e43, 0x2e44, 0x2e45, 0x2e45, 0x2e46, 0x2e47, 0x2e48, 0x2e49,
- 0x2e4a, 0x2e4b, 0x2e4c, 0x2e4e, 0x2e4f, 0x2e50, 0x2e51, 0x2e53,
- 0x2e54, 0x2e55, 0x2e57, 0x2e58, 0x2e5a, 0x2e5b, 0x2e5d, 0x2e5f,
- 0x2e80, 0x2e80, 0x2e80, 0x2e80, 0x2e81, 0x2e81, 0x2e82, 0x2e82,
- 0x2e83, 0x2e84, 0x2e85, 0x2e85, 0x2e86, 0x2e87, 0x2e88, 0x2e89,
- 0x2e8a, 0x2e8b, 0x2e8c, 0x2e8e, 0x2e8f, 0x2e90, 0x2e91, 0x2e93,
- 0x2e94, 0x2e95, 0x2e97, 0x2e98, 0x2e9a, 0x2e9b, 0x2e9d, 0x2e9f,
- 0x2ea0, 0x2ea0, 0x2ea0, 0x2ea0, 0x2ea1, 0x2ea1, 0x2ea2, 0x2ea2,
- 0x2ea3, 0x2ea4, 0x2ea5, 0x2ea5, 0x2ea6, 0x2ea7, 0x2ea8, 0x2ea9,
- 0x2eaa, 0x2eab, 0x2eac, 0x2eae, 0x2eaf, 0x2eb0, 0x2eb1, 0x2eb3,
- 0x2eb4, 0x2eb5, 0x2eb7, 0x2eb8, 0x2eba, 0x2ebb, 0x2ebd, 0x2ebf,
- 0x2ee0, 0x2ee0, 0x2ee0, 0x2ee0, 0x2ee1, 0x2ee1, 0x2ee2, 0x2ee2,
- 0x2ee3, 0x2ee4, 0x2ee5, 0x2ee5, 0x2ee6, 0x2ee7, 0x2ee8, 0x2ee9,
- 0x2eea, 0x2eeb, 0x2eec, 0x2eee, 0x2eef, 0x2ef0, 0x2ef1, 0x2ef3,
- 0x2ef4, 0x2ef5, 0x2ef7, 0x2ef8, 0x2efa, 0x2efb, 0x2efd, 0x2eff,
- 0x2f00, 0x2f00, 0x2f00, 0x2f00, 0x2f01, 0x2f01, 0x2f02, 0x2f02,
- 0x2f03, 0x2f04, 0x2f05, 0x2f05, 0x2f06, 0x2f07, 0x2f08, 0x2f09,
- 0x2f0a, 0x2f0b, 0x2f0c, 0x2f0e, 0x2f0f, 0x2f10, 0x2f11, 0x2f13,
- 0x2f14, 0x2f15, 0x2f17, 0x2f18, 0x2f1a, 0x2f1b, 0x2f1d, 0x2f1f,
- 0x2f40, 0x2f40, 0x2f40, 0x2f40, 0x2f41, 0x2f41, 0x2f42, 0x2f42,
- 0x2f43, 0x2f44, 0x2f45, 0x2f45, 0x2f46, 0x2f47, 0x2f48, 0x2f49,
- 0x2f4a, 0x2f4b, 0x2f4c, 0x2f4e, 0x2f4f, 0x2f50, 0x2f51, 0x2f53,
- 0x2f54, 0x2f55, 0x2f57, 0x2f58, 0x2f5a, 0x2f5b, 0x2f5d, 0x2f5f,
- 0x2f60, 0x2f60, 0x2f60, 0x2f60, 0x2f61, 0x2f61, 0x2f62, 0x2f62,
- 0x2f63, 0x2f64, 0x2f65, 0x2f65, 0x2f66, 0x2f67, 0x2f68, 0x2f69,
- 0x2f6a, 0x2f6b, 0x2f6c, 0x2f6e, 0x2f6f, 0x2f70, 0x2f71, 0x2f73,
- 0x2f74, 0x2f75, 0x2f77, 0x2f78, 0x2f7a, 0x2f7b, 0x2f7d, 0x2f7f,
- 0x2fa0, 0x2fa0, 0x2fa0, 0x2fa0, 0x2fa1, 0x2fa1, 0x2fa2, 0x2fa2,
- 0x2fa3, 0x2fa4, 0x2fa5, 0x2fa5, 0x2fa6, 0x2fa7, 0x2fa8, 0x2fa9,
- 0x2faa, 0x2fab, 0x2fac, 0x2fae, 0x2faf, 0x2fb0, 0x2fb1, 0x2fb3,
- 0x2fb4, 0x2fb5, 0x2fb7, 0x2fb8, 0x2fba, 0x2fbb, 0x2fbd, 0x2fbf,
- 0x2fe0, 0x2fe0, 0x2fe0, 0x2fe0, 0x2fe1, 0x2fe1, 0x2fe2, 0x2fe2,
- 0x2fe3, 0x2fe4, 0x2fe5, 0x2fe5, 0x2fe6, 0x2fe7, 0x2fe8, 0x2fe9,
- 0x2fea, 0x2feb, 0x2fec, 0x2fee, 0x2fef, 0x2ff0, 0x2ff1, 0x2ff3,
- 0x2ff4, 0x2ff5, 0x2ff7, 0x2ff8, 0x2ffa, 0x2ffb, 0x2ffd, 0x2fff,
- 0x3000, 0x3000, 0x3000, 0x3000, 0x3001, 0x3001, 0x3002, 0x3002,
- 0x3003, 0x3004, 0x3005, 0x3005, 0x3006, 0x3007, 0x3008, 0x3009,
- 0x300a, 0x300b, 0x300c, 0x300e, 0x300f, 0x3010, 0x3011, 0x3013,
- 0x3014, 0x3015, 0x3017, 0x3018, 0x301a, 0x301b, 0x301d, 0x301f,
- 0x3000, 0x3000, 0x3000, 0x3000, 0x3001, 0x3001, 0x3002, 0x3002,
- 0x3003, 0x3004, 0x3005, 0x3005, 0x3006, 0x3007, 0x3008, 0x3009,
- 0x300a, 0x300b, 0x300c, 0x300e, 0x300f, 0x3010, 0x3011, 0x3013,
- 0x3014, 0x3015, 0x3017, 0x3018, 0x301a, 0x301b, 0x301d, 0x301f,
- 0x3000, 0x3000, 0x3000, 0x3000, 0x3001, 0x3001, 0x3002, 0x3002,
- 0x3003, 0x3004, 0x3005, 0x3005, 0x3006, 0x3007, 0x3008, 0x3009,
- 0x300a, 0x300b, 0x300c, 0x300e, 0x300f, 0x3010, 0x3011, 0x3013,
- 0x3014, 0x3015, 0x3017, 0x3018, 0x301a, 0x301b, 0x301d, 0x301f,
- 0x3000, 0x3000, 0x3000, 0x3000, 0x3001, 0x3001, 0x3002, 0x3002,
- 0x3003, 0x3004, 0x3005, 0x3005, 0x3006, 0x3007, 0x3008, 0x3009,
- 0x300a, 0x300b, 0x300c, 0x300e, 0x300f, 0x3010, 0x3011, 0x3013,
- 0x3014, 0x3015, 0x3017, 0x3018, 0x301a, 0x301b, 0x301d, 0x301f,
- 0x3000, 0x3000, 0x3000, 0x3000, 0x3001, 0x3001, 0x3002, 0x3002,
- 0x3003, 0x3004, 0x3005, 0x3005, 0x3006, 0x3007, 0x3008, 0x3009,
- 0x300a, 0x300b, 0x300c, 0x300e, 0x300f, 0x3010, 0x3011, 0x3013,
- 0x3014, 0x3015, 0x3017, 0x3018, 0x301a, 0x301b, 0x301d, 0x301f,
- 0x3020, 0x3020, 0x3020, 0x3020, 0x3021, 0x3021, 0x3022, 0x3022,
- 0x3023, 0x3024, 0x3025, 0x3025, 0x3026, 0x3027, 0x3028, 0x3029,
- 0x302a, 0x302b, 0x302c, 0x302e, 0x302f, 0x3030, 0x3031, 0x3033,
- 0x3034, 0x3035, 0x3037, 0x3038, 0x303a, 0x303b, 0x303d, 0x303f,
- 0x3020, 0x3020, 0x3020, 0x3020, 0x3021, 0x3021, 0x3022, 0x3022,
- 0x3023, 0x3024, 0x3025, 0x3025, 0x3026, 0x3027, 0x3028, 0x3029,
- 0x302a, 0x302b, 0x302c, 0x302e, 0x302f, 0x3030, 0x3031, 0x3033,
- 0x3034, 0x3035, 0x3037, 0x3038, 0x303a, 0x303b, 0x303d, 0x303f,
- 0x3020, 0x3020, 0x3020, 0x3020, 0x3021, 0x3021, 0x3022, 0x3022,
- 0x3023, 0x3024, 0x3025, 0x3025, 0x3026, 0x3027, 0x3028, 0x3029,
- 0x302a, 0x302b, 0x302c, 0x302e, 0x302f, 0x3030, 0x3031, 0x3033,
- 0x3034, 0x3035, 0x3037, 0x3038, 0x303a, 0x303b, 0x303d, 0x303f,
- 0x3040, 0x3040, 0x3040, 0x3040, 0x3041, 0x3041, 0x3042, 0x3042,
- 0x3043, 0x3044, 0x3045, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049,
- 0x304a, 0x304b, 0x304c, 0x304e, 0x304f, 0x3050, 0x3051, 0x3053,
- 0x3054, 0x3055, 0x3057, 0x3058, 0x305a, 0x305b, 0x305d, 0x305f,
- 0x3040, 0x3040, 0x3040, 0x3040, 0x3041, 0x3041, 0x3042, 0x3042,
- 0x3043, 0x3044, 0x3045, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049,
- 0x304a, 0x304b, 0x304c, 0x304e, 0x304f, 0x3050, 0x3051, 0x3053,
- 0x3054, 0x3055, 0x3057, 0x3058, 0x305a, 0x305b, 0x305d, 0x305f,
- 0x3060, 0x3060, 0x3060, 0x3060, 0x3061, 0x3061, 0x3062, 0x3062,
- 0x3063, 0x3064, 0x3065, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069,
- 0x306a, 0x306b, 0x306c, 0x306e, 0x306f, 0x3070, 0x3071, 0x3073,
- 0x3074, 0x3075, 0x3077, 0x3078, 0x307a, 0x307b, 0x307d, 0x307f,
- 0x3060, 0x3060, 0x3060, 0x3060, 0x3061, 0x3061, 0x3062, 0x3062,
- 0x3063, 0x3064, 0x3065, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069,
- 0x306a, 0x306b, 0x306c, 0x306e, 0x306f, 0x3070, 0x3071, 0x3073,
- 0x3074, 0x3075, 0x3077, 0x3078, 0x307a, 0x307b, 0x307d, 0x307f,
- 0x3080, 0x3080, 0x3080, 0x3080, 0x3081, 0x3081, 0x3082, 0x3082,
- 0x3083, 0x3084, 0x3085, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089,
- 0x308a, 0x308b, 0x308c, 0x308e, 0x308f, 0x3090, 0x3091, 0x3093,
- 0x3094, 0x3095, 0x3097, 0x3098, 0x309a, 0x309b, 0x309d, 0x309f,
- 0x30a0, 0x30a0, 0x30a0, 0x30a0, 0x30a1, 0x30a1, 0x30a2, 0x30a2,
- 0x30a3, 0x30a4, 0x30a5, 0x30a5, 0x30a6, 0x30a7, 0x30a8, 0x30a9,
- 0x30aa, 0x30ab, 0x30ac, 0x30ae, 0x30af, 0x30b0, 0x30b1, 0x30b3,
- 0x30b4, 0x30b5, 0x30b7, 0x30b8, 0x30ba, 0x30bb, 0x30bd, 0x30bf,
- 0x30a0, 0x30a0, 0x30a0, 0x30a0, 0x30a1, 0x30a1, 0x30a2, 0x30a2,
- 0x30a3, 0x30a4, 0x30a5, 0x30a5, 0x30a6, 0x30a7, 0x30a8, 0x30a9,
- 0x30aa, 0x30ab, 0x30ac, 0x30ae, 0x30af, 0x30b0, 0x30b1, 0x30b3,
- 0x30b4, 0x30b5, 0x30b7, 0x30b8, 0x30ba, 0x30bb, 0x30bd, 0x30bf,
- 0x30c0, 0x30c0, 0x30c0, 0x30c0, 0x30c1, 0x30c1, 0x30c2, 0x30c2,
- 0x30c3, 0x30c4, 0x30c5, 0x30c5, 0x30c6, 0x30c7, 0x30c8, 0x30c9,
- 0x30ca, 0x30cb, 0x30cc, 0x30ce, 0x30cf, 0x30d0, 0x30d1, 0x30d3,
- 0x30d4, 0x30d5, 0x30d7, 0x30d8, 0x30da, 0x30db, 0x30dd, 0x30df,
- 0x30e0, 0x30e0, 0x30e0, 0x30e0, 0x30e1, 0x30e1, 0x30e2, 0x30e2,
- 0x30e3, 0x30e4, 0x30e5, 0x30e5, 0x30e6, 0x30e7, 0x30e8, 0x30e9,
- 0x30ea, 0x30eb, 0x30ec, 0x30ee, 0x30ef, 0x30f0, 0x30f1, 0x30f3,
- 0x30f4, 0x30f5, 0x30f7, 0x30f8, 0x30fa, 0x30fb, 0x30fd, 0x30ff,
- 0x30e0, 0x30e0, 0x30e0, 0x30e0, 0x30e1, 0x30e1, 0x30e2, 0x30e2,
- 0x30e3, 0x30e4, 0x30e5, 0x30e5, 0x30e6, 0x30e7, 0x30e8, 0x30e9,
- 0x30ea, 0x30eb, 0x30ec, 0x30ee, 0x30ef, 0x30f0, 0x30f1, 0x30f3,
- 0x30f4, 0x30f5, 0x30f7, 0x30f8, 0x30fa, 0x30fb, 0x30fd, 0x30ff,
- 0x3100, 0x3100, 0x3100, 0x3100, 0x3101, 0x3101, 0x3102, 0x3102,
- 0x3103, 0x3104, 0x3105, 0x3105, 0x3106, 0x3107, 0x3108, 0x3109,
- 0x310a, 0x310b, 0x310c, 0x310e, 0x310f, 0x3110, 0x3111, 0x3113,
- 0x3114, 0x3115, 0x3117, 0x3118, 0x311a, 0x311b, 0x311d, 0x311f,
- 0x3120, 0x3120, 0x3120, 0x3120, 0x3121, 0x3121, 0x3122, 0x3122,
- 0x3123, 0x3124, 0x3125, 0x3125, 0x3126, 0x3127, 0x3128, 0x3129,
- 0x312a, 0x312b, 0x312c, 0x312e, 0x312f, 0x3130, 0x3131, 0x3133,
- 0x3134, 0x3135, 0x3137, 0x3138, 0x313a, 0x313b, 0x313d, 0x313f,
- 0x3140, 0x3140, 0x3140, 0x3140, 0x3141, 0x3141, 0x3142, 0x3142,
- 0x3143, 0x3144, 0x3145, 0x3145, 0x3146, 0x3147, 0x3148, 0x3149,
- 0x314a, 0x314b, 0x314c, 0x314e, 0x314f, 0x3150, 0x3151, 0x3153,
- 0x3154, 0x3155, 0x3157, 0x3158, 0x315a, 0x315b, 0x315d, 0x315f,
- 0x3140, 0x3140, 0x3140, 0x3140, 0x3141, 0x3141, 0x3142, 0x3142,
- 0x3143, 0x3144, 0x3145, 0x3145, 0x3146, 0x3147, 0x3148, 0x3149,
- 0x314a, 0x314b, 0x314c, 0x314e, 0x314f, 0x3150, 0x3151, 0x3153,
- 0x3154, 0x3155, 0x3157, 0x3158, 0x315a, 0x315b, 0x315d, 0x315f,
- 0x3160, 0x3160, 0x3160, 0x3160, 0x3161, 0x3161, 0x3162, 0x3162,
- 0x3163, 0x3164, 0x3165, 0x3165, 0x3166, 0x3167, 0x3168, 0x3169,
- 0x316a, 0x316b, 0x316c, 0x316e, 0x316f, 0x3170, 0x3171, 0x3173,
- 0x3174, 0x3175, 0x3177, 0x3178, 0x317a, 0x317b, 0x317d, 0x317f,
- 0x3180, 0x3180, 0x3180, 0x3180, 0x3181, 0x3181, 0x3182, 0x3182,
- 0x3183, 0x3184, 0x3185, 0x3185, 0x3186, 0x3187, 0x3188, 0x3189,
- 0x318a, 0x318b, 0x318c, 0x318e, 0x318f, 0x3190, 0x3191, 0x3193,
- 0x3194, 0x3195, 0x3197, 0x3198, 0x319a, 0x319b, 0x319d, 0x319f,
- 0x31a0, 0x31a0, 0x31a0, 0x31a0, 0x31a1, 0x31a1, 0x31a2, 0x31a2,
- 0x31a3, 0x31a4, 0x31a5, 0x31a5, 0x31a6, 0x31a7, 0x31a8, 0x31a9,
- 0x31aa, 0x31ab, 0x31ac, 0x31ae, 0x31af, 0x31b0, 0x31b1, 0x31b3,
- 0x31b4, 0x31b5, 0x31b7, 0x31b8, 0x31ba, 0x31bb, 0x31bd, 0x31bf,
- 0x31c0, 0x31c0, 0x31c0, 0x31c0, 0x31c1, 0x31c1, 0x31c2, 0x31c2,
- 0x31c3, 0x31c4, 0x31c5, 0x31c5, 0x31c6, 0x31c7, 0x31c8, 0x31c9,
- 0x31ca, 0x31cb, 0x31cc, 0x31ce, 0x31cf, 0x31d0, 0x31d1, 0x31d3,
- 0x31d4, 0x31d5, 0x31d7, 0x31d8, 0x31da, 0x31db, 0x31dd, 0x31df,
- 0x31e0, 0x31e0, 0x31e0, 0x31e0, 0x31e1, 0x31e1, 0x31e2, 0x31e2,
- 0x31e3, 0x31e4, 0x31e5, 0x31e5, 0x31e6, 0x31e7, 0x31e8, 0x31e9,
- 0x31ea, 0x31eb, 0x31ec, 0x31ee, 0x31ef, 0x31f0, 0x31f1, 0x31f3,
- 0x31f4, 0x31f5, 0x31f7, 0x31f8, 0x31fa, 0x31fb, 0x31fd, 0x31ff,
- 0x3200, 0x3200, 0x3200, 0x3200, 0x3201, 0x3201, 0x3202, 0x3202,
- 0x3203, 0x3204, 0x3205, 0x3205, 0x3206, 0x3207, 0x3208, 0x3209,
- 0x320a, 0x320b, 0x320c, 0x320e, 0x320f, 0x3210, 0x3211, 0x3213,
- 0x3214, 0x3215, 0x3217, 0x3218, 0x321a, 0x321b, 0x321d, 0x321f,
- 0x3220, 0x3220, 0x3220, 0x3220, 0x3221, 0x3221, 0x3222, 0x3222,
- 0x3223, 0x3224, 0x3225, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229,
- 0x322a, 0x322b, 0x322c, 0x322e, 0x322f, 0x3230, 0x3231, 0x3233,
- 0x3234, 0x3235, 0x3237, 0x3238, 0x323a, 0x323b, 0x323d, 0x323f,
- 0x3240, 0x3240, 0x3240, 0x3240, 0x3241, 0x3241, 0x3242, 0x3242,
- 0x3243, 0x3244, 0x3245, 0x3245, 0x3246, 0x3247, 0x3248, 0x3249,
- 0x324a, 0x324b, 0x324c, 0x324e, 0x324f, 0x3250, 0x3251, 0x3253,
- 0x3254, 0x3255, 0x3257, 0x3258, 0x325a, 0x325b, 0x325d, 0x325f,
- 0x3260, 0x3260, 0x3260, 0x3260, 0x3261, 0x3261, 0x3262, 0x3262,
- 0x3263, 0x3264, 0x3265, 0x3265, 0x3266, 0x3267, 0x3268, 0x3269,
- 0x326a, 0x326b, 0x326c, 0x326e, 0x326f, 0x3270, 0x3271, 0x3273,
- 0x3274, 0x3275, 0x3277, 0x3278, 0x327a, 0x327b, 0x327d, 0x327f,
- 0x3280, 0x3280, 0x3280, 0x3280, 0x3281, 0x3281, 0x3282, 0x3282,
- 0x3283, 0x3284, 0x3285, 0x3285, 0x3286, 0x3287, 0x3288, 0x3289,
- 0x328a, 0x328b, 0x328c, 0x328e, 0x328f, 0x3290, 0x3291, 0x3293,
- 0x3294, 0x3295, 0x3297, 0x3298, 0x329a, 0x329b, 0x329d, 0x329f,
- 0x32a0, 0x32a0, 0x32a0, 0x32a0, 0x32a1, 0x32a1, 0x32a2, 0x32a2,
- 0x32a3, 0x32a4, 0x32a5, 0x32a5, 0x32a6, 0x32a7, 0x32a8, 0x32a9,
- 0x32aa, 0x32ab, 0x32ac, 0x32ae, 0x32af, 0x32b0, 0x32b1, 0x32b3,
- 0x32b4, 0x32b5, 0x32b7, 0x32b8, 0x32ba, 0x32bb, 0x32bd, 0x32bf,
- 0x32c0, 0x32c0, 0x32c0, 0x32c0, 0x32c1, 0x32c1, 0x32c2, 0x32c2,
- 0x32c3, 0x32c4, 0x32c5, 0x32c5, 0x32c6, 0x32c7, 0x32c8, 0x32c9,
- 0x32ca, 0x32cb, 0x32cc, 0x32ce, 0x32cf, 0x32d0, 0x32d1, 0x32d3,
- 0x32d4, 0x32d5, 0x32d7, 0x32d8, 0x32da, 0x32db, 0x32dd, 0x32df,
- 0x32e0, 0x32e0, 0x32e0, 0x32e0, 0x32e1, 0x32e1, 0x32e2, 0x32e2,
- 0x32e3, 0x32e4, 0x32e5, 0x32e5, 0x32e6, 0x32e7, 0x32e8, 0x32e9,
- 0x32ea, 0x32eb, 0x32ec, 0x32ee, 0x32ef, 0x32f0, 0x32f1, 0x32f3,
- 0x32f4, 0x32f5, 0x32f7, 0x32f8, 0x32fa, 0x32fb, 0x32fd, 0x32ff,
- 0x3300, 0x3300, 0x3300, 0x3300, 0x3301, 0x3301, 0x3302, 0x3302,
- 0x3303, 0x3304, 0x3305, 0x3305, 0x3306, 0x3307, 0x3308, 0x3309,
- 0x330a, 0x330b, 0x330c, 0x330e, 0x330f, 0x3310, 0x3311, 0x3313,
- 0x3314, 0x3315, 0x3317, 0x3318, 0x331a, 0x331b, 0x331d, 0x331f,
- 0x3320, 0x3320, 0x3320, 0x3320, 0x3321, 0x3321, 0x3322, 0x3322,
- 0x3323, 0x3324, 0x3325, 0x3325, 0x3326, 0x3327, 0x3328, 0x3329,
- 0x332a, 0x332b, 0x332c, 0x332e, 0x332f, 0x3330, 0x3331, 0x3333,
- 0x3334, 0x3335, 0x3337, 0x3338, 0x333a, 0x333b, 0x333d, 0x333f,
- 0x3340, 0x3340, 0x3340, 0x3340, 0x3341, 0x3341, 0x3342, 0x3342,
- 0x3343, 0x3344, 0x3345, 0x3345, 0x3346, 0x3347, 0x3348, 0x3349,
- 0x334a, 0x334b, 0x334c, 0x334e, 0x334f, 0x3350, 0x3351, 0x3353,
- 0x3354, 0x3355, 0x3357, 0x3358, 0x335a, 0x335b, 0x335d, 0x335f,
- 0x3380, 0x3380, 0x3380, 0x3380, 0x3381, 0x3381, 0x3382, 0x3382,
- 0x3383, 0x3384, 0x3385, 0x3385, 0x3386, 0x3387, 0x3388, 0x3389,
- 0x338a, 0x338b, 0x338c, 0x338e, 0x338f, 0x3390, 0x3391, 0x3393,
- 0x3394, 0x3395, 0x3397, 0x3398, 0x339a, 0x339b, 0x339d, 0x339f,
- 0x33a0, 0x33a0, 0x33a0, 0x33a0, 0x33a1, 0x33a1, 0x33a2, 0x33a2,
- 0x33a3, 0x33a4, 0x33a5, 0x33a5, 0x33a6, 0x33a7, 0x33a8, 0x33a9,
- 0x33aa, 0x33ab, 0x33ac, 0x33ae, 0x33af, 0x33b0, 0x33b1, 0x33b3,
- 0x33b4, 0x33b5, 0x33b7, 0x33b8, 0x33ba, 0x33bb, 0x33bd, 0x33bf,
- 0x33c0, 0x33c0, 0x33c0, 0x33c0, 0x33c1, 0x33c1, 0x33c2, 0x33c2,
- 0x33c3, 0x33c4, 0x33c5, 0x33c5, 0x33c6, 0x33c7, 0x33c8, 0x33c9,
- 0x33ca, 0x33cb, 0x33cc, 0x33ce, 0x33cf, 0x33d0, 0x33d1, 0x33d3,
- 0x33d4, 0x33d5, 0x33d7, 0x33d8, 0x33da, 0x33db, 0x33dd, 0x33df,
- 0x33e0, 0x33e0, 0x33e0, 0x33e0, 0x33e1, 0x33e1, 0x33e2, 0x33e2,
- 0x33e3, 0x33e4, 0x33e5, 0x33e5, 0x33e6, 0x33e7, 0x33e8, 0x33e9,
- 0x33ea, 0x33eb, 0x33ec, 0x33ee, 0x33ef, 0x33f0, 0x33f1, 0x33f3,
- 0x33f4, 0x33f5, 0x33f7, 0x33f8, 0x33fa, 0x33fb, 0x33fd, 0x33ff,
- 0x3400, 0x3400, 0x3400, 0x3400, 0x3401, 0x3401, 0x3402, 0x3402,
- 0x3403, 0x3404, 0x3405, 0x3405, 0x3406, 0x3407, 0x3408, 0x3409,
- 0x340a, 0x340b, 0x340c, 0x340e, 0x340f, 0x3410, 0x3411, 0x3413,
- 0x3414, 0x3415, 0x3417, 0x3418, 0x341a, 0x341b, 0x341d, 0x341f,
- 0x3440, 0x3440, 0x3440, 0x3440, 0x3441, 0x3441, 0x3442, 0x3442,
- 0x3443, 0x3444, 0x3445, 0x3445, 0x3446, 0x3447, 0x3448, 0x3449,
- 0x344a, 0x344b, 0x344c, 0x344e, 0x344f, 0x3450, 0x3451, 0x3453,
- 0x3454, 0x3455, 0x3457, 0x3458, 0x345a, 0x345b, 0x345d, 0x345f,
- 0x3460, 0x3460, 0x3460, 0x3460, 0x3461, 0x3461, 0x3462, 0x3462,
- 0x3463, 0x3464, 0x3465, 0x3465, 0x3466, 0x3467, 0x3468, 0x3469,
- 0x346a, 0x346b, 0x346c, 0x346e, 0x346f, 0x3470, 0x3471, 0x3473,
- 0x3474, 0x3475, 0x3477, 0x3478, 0x347a, 0x347b, 0x347d, 0x347f,
- 0x3480, 0x3480, 0x3480, 0x3480, 0x3481, 0x3481, 0x3482, 0x3482,
- 0x3483, 0x3484, 0x3485, 0x3485, 0x3486, 0x3487, 0x3488, 0x3489,
- 0x348a, 0x348b, 0x348c, 0x348e, 0x348f, 0x3490, 0x3491, 0x3493,
- 0x3494, 0x3495, 0x3497, 0x3498, 0x349a, 0x349b, 0x349d, 0x349f,
- 0x34c0, 0x34c0, 0x34c0, 0x34c0, 0x34c1, 0x34c1, 0x34c2, 0x34c2,
- 0x34c3, 0x34c4, 0x34c5, 0x34c5, 0x34c6, 0x34c7, 0x34c8, 0x34c9,
- 0x34ca, 0x34cb, 0x34cc, 0x34ce, 0x34cf, 0x34d0, 0x34d1, 0x34d3,
- 0x34d4, 0x34d5, 0x34d7, 0x34d8, 0x34da, 0x34db, 0x34dd, 0x34df,
- 0x34e0, 0x34e0, 0x34e0, 0x34e0, 0x34e1, 0x34e1, 0x34e2, 0x34e2,
- 0x34e3, 0x34e4, 0x34e5, 0x34e5, 0x34e6, 0x34e7, 0x34e8, 0x34e9,
- 0x34ea, 0x34eb, 0x34ec, 0x34ee, 0x34ef, 0x34f0, 0x34f1, 0x34f3,
- 0x34f4, 0x34f5, 0x34f7, 0x34f8, 0x34fa, 0x34fb, 0x34fd, 0x34ff,
- 0x3500, 0x3500, 0x3500, 0x3500, 0x3501, 0x3501, 0x3502, 0x3502,
- 0x3503, 0x3504, 0x3505, 0x3505, 0x3506, 0x3507, 0x3508, 0x3509,
- 0x350a, 0x350b, 0x350c, 0x350e, 0x350f, 0x3510, 0x3511, 0x3513,
- 0x3514, 0x3515, 0x3517, 0x3518, 0x351a, 0x351b, 0x351d, 0x351f,
- 0x3540, 0x3540, 0x3540, 0x3540, 0x3541, 0x3541, 0x3542, 0x3542,
- 0x3543, 0x3544, 0x3545, 0x3545, 0x3546, 0x3547, 0x3548, 0x3549,
- 0x354a, 0x354b, 0x354c, 0x354e, 0x354f, 0x3550, 0x3551, 0x3553,
- 0x3554, 0x3555, 0x3557, 0x3558, 0x355a, 0x355b, 0x355d, 0x355f,
- 0x3560, 0x3560, 0x3560, 0x3560, 0x3561, 0x3561, 0x3562, 0x3562,
- 0x3563, 0x3564, 0x3565, 0x3565, 0x3566, 0x3567, 0x3568, 0x3569,
- 0x356a, 0x356b, 0x356c, 0x356e, 0x356f, 0x3570, 0x3571, 0x3573,
- 0x3574, 0x3575, 0x3577, 0x3578, 0x357a, 0x357b, 0x357d, 0x357f,
- 0x3580, 0x3580, 0x3580, 0x3580, 0x3581, 0x3581, 0x3582, 0x3582,
- 0x3583, 0x3584, 0x3585, 0x3585, 0x3586, 0x3587, 0x3588, 0x3589,
- 0x358a, 0x358b, 0x358c, 0x358e, 0x358f, 0x3590, 0x3591, 0x3593,
- 0x3594, 0x3595, 0x3597, 0x3598, 0x359a, 0x359b, 0x359d, 0x359f,
- 0x35c0, 0x35c0, 0x35c0, 0x35c0, 0x35c1, 0x35c1, 0x35c2, 0x35c2,
- 0x35c3, 0x35c4, 0x35c5, 0x35c5, 0x35c6, 0x35c7, 0x35c8, 0x35c9,
- 0x35ca, 0x35cb, 0x35cc, 0x35ce, 0x35cf, 0x35d0, 0x35d1, 0x35d3,
- 0x35d4, 0x35d5, 0x35d7, 0x35d8, 0x35da, 0x35db, 0x35dd, 0x35df,
- 0x35e0, 0x35e0, 0x35e0, 0x35e0, 0x35e1, 0x35e1, 0x35e2, 0x35e2,
- 0x35e3, 0x35e4, 0x35e5, 0x35e5, 0x35e6, 0x35e7, 0x35e8, 0x35e9,
- 0x35ea, 0x35eb, 0x35ec, 0x35ee, 0x35ef, 0x35f0, 0x35f1, 0x35f3,
- 0x35f4, 0x35f5, 0x35f7, 0x35f8, 0x35fa, 0x35fb, 0x35fd, 0x35ff,
- 0x3620, 0x3620, 0x3620, 0x3620, 0x3621, 0x3621, 0x3622, 0x3622,
- 0x3623, 0x3624, 0x3625, 0x3625, 0x3626, 0x3627, 0x3628, 0x3629,
- 0x362a, 0x362b, 0x362c, 0x362e, 0x362f, 0x3630, 0x3631, 0x3633,
- 0x3634, 0x3635, 0x3637, 0x3638, 0x363a, 0x363b, 0x363d, 0x363f,
- 0x3640, 0x3640, 0x3640, 0x3640, 0x3641, 0x3641, 0x3642, 0x3642,
- 0x3643, 0x3644, 0x3645, 0x3645, 0x3646, 0x3647, 0x3648, 0x3649,
- 0x364a, 0x364b, 0x364c, 0x364e, 0x364f, 0x3650, 0x3651, 0x3653,
- 0x3654, 0x3655, 0x3657, 0x3658, 0x365a, 0x365b, 0x365d, 0x365f,
- 0x3680, 0x3680, 0x3680, 0x3680, 0x3681, 0x3681, 0x3682, 0x3682,
- 0x3683, 0x3684, 0x3685, 0x3685, 0x3686, 0x3687, 0x3688, 0x3689,
- 0x368a, 0x368b, 0x368c, 0x368e, 0x368f, 0x3690, 0x3691, 0x3693,
- 0x3694, 0x3695, 0x3697, 0x3698, 0x369a, 0x369b, 0x369d, 0x369f,
- 0x36a0, 0x36a0, 0x36a0, 0x36a0, 0x36a1, 0x36a1, 0x36a2, 0x36a2,
- 0x36a3, 0x36a4, 0x36a5, 0x36a5, 0x36a6, 0x36a7, 0x36a8, 0x36a9,
- 0x36aa, 0x36ab, 0x36ac, 0x36ae, 0x36af, 0x36b0, 0x36b1, 0x36b3,
- 0x36b4, 0x36b5, 0x36b7, 0x36b8, 0x36ba, 0x36bb, 0x36bd, 0x36bf,
- 0x36e0, 0x36e0, 0x36e0, 0x36e0, 0x36e1, 0x36e1, 0x36e2, 0x36e2,
- 0x36e3, 0x36e4, 0x36e5, 0x36e5, 0x36e6, 0x36e7, 0x36e8, 0x36e9,
- 0x36ea, 0x36eb, 0x36ec, 0x36ee, 0x36ef, 0x36f0, 0x36f1, 0x36f3,
- 0x36f4, 0x36f5, 0x36f7, 0x36f8, 0x36fa, 0x36fb, 0x36fd, 0x36ff,
- 0x3700, 0x3700, 0x3700, 0x3700, 0x3701, 0x3701, 0x3702, 0x3702,
- 0x3703, 0x3704, 0x3705, 0x3705, 0x3706, 0x3707, 0x3708, 0x3709,
- 0x370a, 0x370b, 0x370c, 0x370e, 0x370f, 0x3710, 0x3711, 0x3713,
- 0x3714, 0x3715, 0x3717, 0x3718, 0x371a, 0x371b, 0x371d, 0x371f,
- 0x3740, 0x3740, 0x3740, 0x3740, 0x3741, 0x3741, 0x3742, 0x3742,
- 0x3743, 0x3744, 0x3745, 0x3745, 0x3746, 0x3747, 0x3748, 0x3749,
- 0x374a, 0x374b, 0x374c, 0x374e, 0x374f, 0x3750, 0x3751, 0x3753,
- 0x3754, 0x3755, 0x3757, 0x3758, 0x375a, 0x375b, 0x375d, 0x375f,
- 0x3760, 0x3760, 0x3760, 0x3760, 0x3761, 0x3761, 0x3762, 0x3762,
- 0x3763, 0x3764, 0x3765, 0x3765, 0x3766, 0x3767, 0x3768, 0x3769,
- 0x376a, 0x376b, 0x376c, 0x376e, 0x376f, 0x3770, 0x3771, 0x3773,
- 0x3774, 0x3775, 0x3777, 0x3778, 0x377a, 0x377b, 0x377d, 0x377f,
- 0x37a0, 0x37a0, 0x37a0, 0x37a0, 0x37a1, 0x37a1, 0x37a2, 0x37a2,
- 0x37a3, 0x37a4, 0x37a5, 0x37a5, 0x37a6, 0x37a7, 0x37a8, 0x37a9,
- 0x37aa, 0x37ab, 0x37ac, 0x37ae, 0x37af, 0x37b0, 0x37b1, 0x37b3,
- 0x37b4, 0x37b5, 0x37b7, 0x37b8, 0x37ba, 0x37bb, 0x37bd, 0x37bf,
- 0x37e0, 0x37e0, 0x37e0, 0x37e0, 0x37e1, 0x37e1, 0x37e2, 0x37e2,
- 0x37e3, 0x37e4, 0x37e5, 0x37e5, 0x37e6, 0x37e7, 0x37e8, 0x37e9,
- 0x37ea, 0x37eb, 0x37ec, 0x37ee, 0x37ef, 0x37f0, 0x37f1, 0x37f3,
- 0x37f4, 0x37f5, 0x37f7, 0x37f8, 0x37fa, 0x37fb, 0x37fd, 0x37ff,
- 0x3800, 0x3800, 0x3800, 0x3800, 0x3801, 0x3801, 0x3802, 0x3802,
- 0x3803, 0x3804, 0x3805, 0x3805, 0x3806, 0x3807, 0x3808, 0x3809,
- 0x380a, 0x380b, 0x380c, 0x380e, 0x380f, 0x3810, 0x3811, 0x3813,
- 0x3814, 0x3815, 0x3817, 0x3818, 0x381a, 0x381b, 0x381d, 0x381f,
- 0x3800, 0x3800, 0x3800, 0x3800, 0x3801, 0x3801, 0x3802, 0x3802,
- 0x3803, 0x3804, 0x3805, 0x3805, 0x3806, 0x3807, 0x3808, 0x3809,
- 0x380a, 0x380b, 0x380c, 0x380e, 0x380f, 0x3810, 0x3811, 0x3813,
- 0x3814, 0x3815, 0x3817, 0x3818, 0x381a, 0x381b, 0x381d, 0x381f,
- 0x3800, 0x3800, 0x3800, 0x3800, 0x3801, 0x3801, 0x3802, 0x3802,
- 0x3803, 0x3804, 0x3805, 0x3805, 0x3806, 0x3807, 0x3808, 0x3809,
- 0x380a, 0x380b, 0x380c, 0x380e, 0x380f, 0x3810, 0x3811, 0x3813,
- 0x3814, 0x3815, 0x3817, 0x3818, 0x381a, 0x381b, 0x381d, 0x381f,
- 0x3800, 0x3800, 0x3800, 0x3800, 0x3801, 0x3801, 0x3802, 0x3802,
- 0x3803, 0x3804, 0x3805, 0x3805, 0x3806, 0x3807, 0x3808, 0x3809,
- 0x380a, 0x380b, 0x380c, 0x380e, 0x380f, 0x3810, 0x3811, 0x3813,
- 0x3814, 0x3815, 0x3817, 0x3818, 0x381a, 0x381b, 0x381d, 0x381f,
- 0x3800, 0x3800, 0x3800, 0x3800, 0x3801, 0x3801, 0x3802, 0x3802,
- 0x3803, 0x3804, 0x3805, 0x3805, 0x3806, 0x3807, 0x3808, 0x3809,
- 0x380a, 0x380b, 0x380c, 0x380e, 0x380f, 0x3810, 0x3811, 0x3813,
- 0x3814, 0x3815, 0x3817, 0x3818, 0x381a, 0x381b, 0x381d, 0x381f,
- 0x3820, 0x3820, 0x3820, 0x3820, 0x3821, 0x3821, 0x3822, 0x3822,
- 0x3823, 0x3824, 0x3825, 0x3825, 0x3826, 0x3827, 0x3828, 0x3829,
- 0x382a, 0x382b, 0x382c, 0x382e, 0x382f, 0x3830, 0x3831, 0x3833,
- 0x3834, 0x3835, 0x3837, 0x3838, 0x383a, 0x383b, 0x383d, 0x383f,
- 0x3820, 0x3820, 0x3820, 0x3820, 0x3821, 0x3821, 0x3822, 0x3822,
- 0x3823, 0x3824, 0x3825, 0x3825, 0x3826, 0x3827, 0x3828, 0x3829,
- 0x382a, 0x382b, 0x382c, 0x382e, 0x382f, 0x3830, 0x3831, 0x3833,
- 0x3834, 0x3835, 0x3837, 0x3838, 0x383a, 0x383b, 0x383d, 0x383f,
- 0x3820, 0x3820, 0x3820, 0x3820, 0x3821, 0x3821, 0x3822, 0x3822,
- 0x3823, 0x3824, 0x3825, 0x3825, 0x3826, 0x3827, 0x3828, 0x3829,
- 0x382a, 0x382b, 0x382c, 0x382e, 0x382f, 0x3830, 0x3831, 0x3833,
- 0x3834, 0x3835, 0x3837, 0x3838, 0x383a, 0x383b, 0x383d, 0x383f,
- 0x3840, 0x3840, 0x3840, 0x3840, 0x3841, 0x3841, 0x3842, 0x3842,
- 0x3843, 0x3844, 0x3845, 0x3845, 0x3846, 0x3847, 0x3848, 0x3849,
- 0x384a, 0x384b, 0x384c, 0x384e, 0x384f, 0x3850, 0x3851, 0x3853,
- 0x3854, 0x3855, 0x3857, 0x3858, 0x385a, 0x385b, 0x385d, 0x385f,
- 0x3840, 0x3840, 0x3840, 0x3840, 0x3841, 0x3841, 0x3842, 0x3842,
- 0x3843, 0x3844, 0x3845, 0x3845, 0x3846, 0x3847, 0x3848, 0x3849,
- 0x384a, 0x384b, 0x384c, 0x384e, 0x384f, 0x3850, 0x3851, 0x3853,
- 0x3854, 0x3855, 0x3857, 0x3858, 0x385a, 0x385b, 0x385d, 0x385f,
- 0x3860, 0x3860, 0x3860, 0x3860, 0x3861, 0x3861, 0x3862, 0x3862,
- 0x3863, 0x3864, 0x3865, 0x3865, 0x3866, 0x3867, 0x3868, 0x3869,
- 0x386a, 0x386b, 0x386c, 0x386e, 0x386f, 0x3870, 0x3871, 0x3873,
- 0x3874, 0x3875, 0x3877, 0x3878, 0x387a, 0x387b, 0x387d, 0x387f,
- 0x3860, 0x3860, 0x3860, 0x3860, 0x3861, 0x3861, 0x3862, 0x3862,
- 0x3863, 0x3864, 0x3865, 0x3865, 0x3866, 0x3867, 0x3868, 0x3869,
- 0x386a, 0x386b, 0x386c, 0x386e, 0x386f, 0x3870, 0x3871, 0x3873,
- 0x3874, 0x3875, 0x3877, 0x3878, 0x387a, 0x387b, 0x387d, 0x387f,
- 0x3880, 0x3880, 0x3880, 0x3880, 0x3881, 0x3881, 0x3882, 0x3882,
- 0x3883, 0x3884, 0x3885, 0x3885, 0x3886, 0x3887, 0x3888, 0x3889,
- 0x388a, 0x388b, 0x388c, 0x388e, 0x388f, 0x3890, 0x3891, 0x3893,
- 0x3894, 0x3895, 0x3897, 0x3898, 0x389a, 0x389b, 0x389d, 0x389f,
- 0x38a0, 0x38a0, 0x38a0, 0x38a0, 0x38a1, 0x38a1, 0x38a2, 0x38a2,
- 0x38a3, 0x38a4, 0x38a5, 0x38a5, 0x38a6, 0x38a7, 0x38a8, 0x38a9,
- 0x38aa, 0x38ab, 0x38ac, 0x38ae, 0x38af, 0x38b0, 0x38b1, 0x38b3,
- 0x38b4, 0x38b5, 0x38b7, 0x38b8, 0x38ba, 0x38bb, 0x38bd, 0x38bf,
- 0x38a0, 0x38a0, 0x38a0, 0x38a0, 0x38a1, 0x38a1, 0x38a2, 0x38a2,
- 0x38a3, 0x38a4, 0x38a5, 0x38a5, 0x38a6, 0x38a7, 0x38a8, 0x38a9,
- 0x38aa, 0x38ab, 0x38ac, 0x38ae, 0x38af, 0x38b0, 0x38b1, 0x38b3,
- 0x38b4, 0x38b5, 0x38b7, 0x38b8, 0x38ba, 0x38bb, 0x38bd, 0x38bf,
- 0x38c0, 0x38c0, 0x38c0, 0x38c0, 0x38c1, 0x38c1, 0x38c2, 0x38c2,
- 0x38c3, 0x38c4, 0x38c5, 0x38c5, 0x38c6, 0x38c7, 0x38c8, 0x38c9,
- 0x38ca, 0x38cb, 0x38cc, 0x38ce, 0x38cf, 0x38d0, 0x38d1, 0x38d3,
- 0x38d4, 0x38d5, 0x38d7, 0x38d8, 0x38da, 0x38db, 0x38dd, 0x38df,
- 0x38e0, 0x38e0, 0x38e0, 0x38e0, 0x38e1, 0x38e1, 0x38e2, 0x38e2,
- 0x38e3, 0x38e4, 0x38e5, 0x38e5, 0x38e6, 0x38e7, 0x38e8, 0x38e9,
- 0x38ea, 0x38eb, 0x38ec, 0x38ee, 0x38ef, 0x38f0, 0x38f1, 0x38f3,
- 0x38f4, 0x38f5, 0x38f7, 0x38f8, 0x38fa, 0x38fb, 0x38fd, 0x38ff,
- 0x38e0, 0x38e0, 0x38e0, 0x38e0, 0x38e1, 0x38e1, 0x38e2, 0x38e2,
- 0x38e3, 0x38e4, 0x38e5, 0x38e5, 0x38e6, 0x38e7, 0x38e8, 0x38e9,
- 0x38ea, 0x38eb, 0x38ec, 0x38ee, 0x38ef, 0x38f0, 0x38f1, 0x38f3,
- 0x38f4, 0x38f5, 0x38f7, 0x38f8, 0x38fa, 0x38fb, 0x38fd, 0x38ff,
- 0x3900, 0x3900, 0x3900, 0x3900, 0x3901, 0x3901, 0x3902, 0x3902,
- 0x3903, 0x3904, 0x3905, 0x3905, 0x3906, 0x3907, 0x3908, 0x3909,
- 0x390a, 0x390b, 0x390c, 0x390e, 0x390f, 0x3910, 0x3911, 0x3913,
- 0x3914, 0x3915, 0x3917, 0x3918, 0x391a, 0x391b, 0x391d, 0x391f,
- 0x3920, 0x3920, 0x3920, 0x3920, 0x3921, 0x3921, 0x3922, 0x3922,
- 0x3923, 0x3924, 0x3925, 0x3925, 0x3926, 0x3927, 0x3928, 0x3929,
- 0x392a, 0x392b, 0x392c, 0x392e, 0x392f, 0x3930, 0x3931, 0x3933,
- 0x3934, 0x3935, 0x3937, 0x3938, 0x393a, 0x393b, 0x393d, 0x393f,
- 0x3940, 0x3940, 0x3940, 0x3940, 0x3941, 0x3941, 0x3942, 0x3942,
- 0x3943, 0x3944, 0x3945, 0x3945, 0x3946, 0x3947, 0x3948, 0x3949,
- 0x394a, 0x394b, 0x394c, 0x394e, 0x394f, 0x3950, 0x3951, 0x3953,
- 0x3954, 0x3955, 0x3957, 0x3958, 0x395a, 0x395b, 0x395d, 0x395f,
- 0x3940, 0x3940, 0x3940, 0x3940, 0x3941, 0x3941, 0x3942, 0x3942,
- 0x3943, 0x3944, 0x3945, 0x3945, 0x3946, 0x3947, 0x3948, 0x3949,
- 0x394a, 0x394b, 0x394c, 0x394e, 0x394f, 0x3950, 0x3951, 0x3953,
- 0x3954, 0x3955, 0x3957, 0x3958, 0x395a, 0x395b, 0x395d, 0x395f,
- 0x3960, 0x3960, 0x3960, 0x3960, 0x3961, 0x3961, 0x3962, 0x3962,
- 0x3963, 0x3964, 0x3965, 0x3965, 0x3966, 0x3967, 0x3968, 0x3969,
- 0x396a, 0x396b, 0x396c, 0x396e, 0x396f, 0x3970, 0x3971, 0x3973,
- 0x3974, 0x3975, 0x3977, 0x3978, 0x397a, 0x397b, 0x397d, 0x397f,
- 0x3980, 0x3980, 0x3980, 0x3980, 0x3981, 0x3981, 0x3982, 0x3982,
- 0x3983, 0x3984, 0x3985, 0x3985, 0x3986, 0x3987, 0x3988, 0x3989,
- 0x398a, 0x398b, 0x398c, 0x398e, 0x398f, 0x3990, 0x3991, 0x3993,
- 0x3994, 0x3995, 0x3997, 0x3998, 0x399a, 0x399b, 0x399d, 0x399f,
- 0x39a0, 0x39a0, 0x39a0, 0x39a0, 0x39a1, 0x39a1, 0x39a2, 0x39a2,
- 0x39a3, 0x39a4, 0x39a5, 0x39a5, 0x39a6, 0x39a7, 0x39a8, 0x39a9,
- 0x39aa, 0x39ab, 0x39ac, 0x39ae, 0x39af, 0x39b0, 0x39b1, 0x39b3,
- 0x39b4, 0x39b5, 0x39b7, 0x39b8, 0x39ba, 0x39bb, 0x39bd, 0x39bf,
- 0x39c0, 0x39c0, 0x39c0, 0x39c0, 0x39c1, 0x39c1, 0x39c2, 0x39c2,
- 0x39c3, 0x39c4, 0x39c5, 0x39c5, 0x39c6, 0x39c7, 0x39c8, 0x39c9,
- 0x39ca, 0x39cb, 0x39cc, 0x39ce, 0x39cf, 0x39d0, 0x39d1, 0x39d3,
- 0x39d4, 0x39d5, 0x39d7, 0x39d8, 0x39da, 0x39db, 0x39dd, 0x39df,
- 0x39e0, 0x39e0, 0x39e0, 0x39e0, 0x39e1, 0x39e1, 0x39e2, 0x39e2,
- 0x39e3, 0x39e4, 0x39e5, 0x39e5, 0x39e6, 0x39e7, 0x39e8, 0x39e9,
- 0x39ea, 0x39eb, 0x39ec, 0x39ee, 0x39ef, 0x39f0, 0x39f1, 0x39f3,
- 0x39f4, 0x39f5, 0x39f7, 0x39f8, 0x39fa, 0x39fb, 0x39fd, 0x39ff,
- 0x3a00, 0x3a00, 0x3a00, 0x3a00, 0x3a01, 0x3a01, 0x3a02, 0x3a02,
- 0x3a03, 0x3a04, 0x3a05, 0x3a05, 0x3a06, 0x3a07, 0x3a08, 0x3a09,
- 0x3a0a, 0x3a0b, 0x3a0c, 0x3a0e, 0x3a0f, 0x3a10, 0x3a11, 0x3a13,
- 0x3a14, 0x3a15, 0x3a17, 0x3a18, 0x3a1a, 0x3a1b, 0x3a1d, 0x3a1f,
- 0x3a20, 0x3a20, 0x3a20, 0x3a20, 0x3a21, 0x3a21, 0x3a22, 0x3a22,
- 0x3a23, 0x3a24, 0x3a25, 0x3a25, 0x3a26, 0x3a27, 0x3a28, 0x3a29,
- 0x3a2a, 0x3a2b, 0x3a2c, 0x3a2e, 0x3a2f, 0x3a30, 0x3a31, 0x3a33,
- 0x3a34, 0x3a35, 0x3a37, 0x3a38, 0x3a3a, 0x3a3b, 0x3a3d, 0x3a3f,
- 0x3a40, 0x3a40, 0x3a40, 0x3a40, 0x3a41, 0x3a41, 0x3a42, 0x3a42,
- 0x3a43, 0x3a44, 0x3a45, 0x3a45, 0x3a46, 0x3a47, 0x3a48, 0x3a49,
- 0x3a4a, 0x3a4b, 0x3a4c, 0x3a4e, 0x3a4f, 0x3a50, 0x3a51, 0x3a53,
- 0x3a54, 0x3a55, 0x3a57, 0x3a58, 0x3a5a, 0x3a5b, 0x3a5d, 0x3a5f,
- 0x3a60, 0x3a60, 0x3a60, 0x3a60, 0x3a61, 0x3a61, 0x3a62, 0x3a62,
- 0x3a63, 0x3a64, 0x3a65, 0x3a65, 0x3a66, 0x3a67, 0x3a68, 0x3a69,
- 0x3a6a, 0x3a6b, 0x3a6c, 0x3a6e, 0x3a6f, 0x3a70, 0x3a71, 0x3a73,
- 0x3a74, 0x3a75, 0x3a77, 0x3a78, 0x3a7a, 0x3a7b, 0x3a7d, 0x3a7f,
- 0x3a80, 0x3a80, 0x3a80, 0x3a80, 0x3a81, 0x3a81, 0x3a82, 0x3a82,
- 0x3a83, 0x3a84, 0x3a85, 0x3a85, 0x3a86, 0x3a87, 0x3a88, 0x3a89,
- 0x3a8a, 0x3a8b, 0x3a8c, 0x3a8e, 0x3a8f, 0x3a90, 0x3a91, 0x3a93,
- 0x3a94, 0x3a95, 0x3a97, 0x3a98, 0x3a9a, 0x3a9b, 0x3a9d, 0x3a9f,
- 0x3aa0, 0x3aa0, 0x3aa0, 0x3aa0, 0x3aa1, 0x3aa1, 0x3aa2, 0x3aa2,
- 0x3aa3, 0x3aa4, 0x3aa5, 0x3aa5, 0x3aa6, 0x3aa7, 0x3aa8, 0x3aa9,
- 0x3aaa, 0x3aab, 0x3aac, 0x3aae, 0x3aaf, 0x3ab0, 0x3ab1, 0x3ab3,
- 0x3ab4, 0x3ab5, 0x3ab7, 0x3ab8, 0x3aba, 0x3abb, 0x3abd, 0x3abf,
- 0x3ac0, 0x3ac0, 0x3ac0, 0x3ac0, 0x3ac1, 0x3ac1, 0x3ac2, 0x3ac2,
- 0x3ac3, 0x3ac4, 0x3ac5, 0x3ac5, 0x3ac6, 0x3ac7, 0x3ac8, 0x3ac9,
- 0x3aca, 0x3acb, 0x3acc, 0x3ace, 0x3acf, 0x3ad0, 0x3ad1, 0x3ad3,
- 0x3ad4, 0x3ad5, 0x3ad7, 0x3ad8, 0x3ada, 0x3adb, 0x3add, 0x3adf,
- 0x3ae0, 0x3ae0, 0x3ae0, 0x3ae0, 0x3ae1, 0x3ae1, 0x3ae2, 0x3ae2,
- 0x3ae3, 0x3ae4, 0x3ae5, 0x3ae5, 0x3ae6, 0x3ae7, 0x3ae8, 0x3ae9,
- 0x3aea, 0x3aeb, 0x3aec, 0x3aee, 0x3aef, 0x3af0, 0x3af1, 0x3af3,
- 0x3af4, 0x3af5, 0x3af7, 0x3af8, 0x3afa, 0x3afb, 0x3afd, 0x3aff,
- 0x3b00, 0x3b00, 0x3b00, 0x3b00, 0x3b01, 0x3b01, 0x3b02, 0x3b02,
- 0x3b03, 0x3b04, 0x3b05, 0x3b05, 0x3b06, 0x3b07, 0x3b08, 0x3b09,
- 0x3b0a, 0x3b0b, 0x3b0c, 0x3b0e, 0x3b0f, 0x3b10, 0x3b11, 0x3b13,
- 0x3b14, 0x3b15, 0x3b17, 0x3b18, 0x3b1a, 0x3b1b, 0x3b1d, 0x3b1f,
- 0x3b20, 0x3b20, 0x3b20, 0x3b20, 0x3b21, 0x3b21, 0x3b22, 0x3b22,
- 0x3b23, 0x3b24, 0x3b25, 0x3b25, 0x3b26, 0x3b27, 0x3b28, 0x3b29,
- 0x3b2a, 0x3b2b, 0x3b2c, 0x3b2e, 0x3b2f, 0x3b30, 0x3b31, 0x3b33,
- 0x3b34, 0x3b35, 0x3b37, 0x3b38, 0x3b3a, 0x3b3b, 0x3b3d, 0x3b3f,
- 0x3b40, 0x3b40, 0x3b40, 0x3b40, 0x3b41, 0x3b41, 0x3b42, 0x3b42,
- 0x3b43, 0x3b44, 0x3b45, 0x3b45, 0x3b46, 0x3b47, 0x3b48, 0x3b49,
- 0x3b4a, 0x3b4b, 0x3b4c, 0x3b4e, 0x3b4f, 0x3b50, 0x3b51, 0x3b53,
- 0x3b54, 0x3b55, 0x3b57, 0x3b58, 0x3b5a, 0x3b5b, 0x3b5d, 0x3b5f,
- 0x3b80, 0x3b80, 0x3b80, 0x3b80, 0x3b81, 0x3b81, 0x3b82, 0x3b82,
- 0x3b83, 0x3b84, 0x3b85, 0x3b85, 0x3b86, 0x3b87, 0x3b88, 0x3b89,
- 0x3b8a, 0x3b8b, 0x3b8c, 0x3b8e, 0x3b8f, 0x3b90, 0x3b91, 0x3b93,
- 0x3b94, 0x3b95, 0x3b97, 0x3b98, 0x3b9a, 0x3b9b, 0x3b9d, 0x3b9f,
- 0x3ba0, 0x3ba0, 0x3ba0, 0x3ba0, 0x3ba1, 0x3ba1, 0x3ba2, 0x3ba2,
- 0x3ba3, 0x3ba4, 0x3ba5, 0x3ba5, 0x3ba6, 0x3ba7, 0x3ba8, 0x3ba9,
- 0x3baa, 0x3bab, 0x3bac, 0x3bae, 0x3baf, 0x3bb0, 0x3bb1, 0x3bb3,
- 0x3bb4, 0x3bb5, 0x3bb7, 0x3bb8, 0x3bba, 0x3bbb, 0x3bbd, 0x3bbf,
- 0x3bc0, 0x3bc0, 0x3bc0, 0x3bc0, 0x3bc1, 0x3bc1, 0x3bc2, 0x3bc2,
- 0x3bc3, 0x3bc4, 0x3bc5, 0x3bc5, 0x3bc6, 0x3bc7, 0x3bc8, 0x3bc9,
- 0x3bca, 0x3bcb, 0x3bcc, 0x3bce, 0x3bcf, 0x3bd0, 0x3bd1, 0x3bd3,
- 0x3bd4, 0x3bd5, 0x3bd7, 0x3bd8, 0x3bda, 0x3bdb, 0x3bdd, 0x3bdf,
- 0x3be0, 0x3be0, 0x3be0, 0x3be0, 0x3be1, 0x3be1, 0x3be2, 0x3be2,
- 0x3be3, 0x3be4, 0x3be5, 0x3be5, 0x3be6, 0x3be7, 0x3be8, 0x3be9,
- 0x3bea, 0x3beb, 0x3bec, 0x3bee, 0x3bef, 0x3bf0, 0x3bf1, 0x3bf3,
- 0x3bf4, 0x3bf5, 0x3bf7, 0x3bf8, 0x3bfa, 0x3bfb, 0x3bfd, 0x3bff,
- 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c01, 0x3c01, 0x3c02, 0x3c02,
- 0x3c03, 0x3c04, 0x3c05, 0x3c05, 0x3c06, 0x3c07, 0x3c08, 0x3c09,
- 0x3c0a, 0x3c0b, 0x3c0c, 0x3c0e, 0x3c0f, 0x3c10, 0x3c11, 0x3c13,
- 0x3c14, 0x3c15, 0x3c17, 0x3c18, 0x3c1a, 0x3c1b, 0x3c1d, 0x3c1f,
- 0x3c40, 0x3c40, 0x3c40, 0x3c40, 0x3c41, 0x3c41, 0x3c42, 0x3c42,
- 0x3c43, 0x3c44, 0x3c45, 0x3c45, 0x3c46, 0x3c47, 0x3c48, 0x3c49,
- 0x3c4a, 0x3c4b, 0x3c4c, 0x3c4e, 0x3c4f, 0x3c50, 0x3c51, 0x3c53,
- 0x3c54, 0x3c55, 0x3c57, 0x3c58, 0x3c5a, 0x3c5b, 0x3c5d, 0x3c5f,
- 0x3c60, 0x3c60, 0x3c60, 0x3c60, 0x3c61, 0x3c61, 0x3c62, 0x3c62,
- 0x3c63, 0x3c64, 0x3c65, 0x3c65, 0x3c66, 0x3c67, 0x3c68, 0x3c69,
- 0x3c6a, 0x3c6b, 0x3c6c, 0x3c6e, 0x3c6f, 0x3c70, 0x3c71, 0x3c73,
- 0x3c74, 0x3c75, 0x3c77, 0x3c78, 0x3c7a, 0x3c7b, 0x3c7d, 0x3c7f,
- 0x3c80, 0x3c80, 0x3c80, 0x3c80, 0x3c81, 0x3c81, 0x3c82, 0x3c82,
- 0x3c83, 0x3c84, 0x3c85, 0x3c85, 0x3c86, 0x3c87, 0x3c88, 0x3c89,
- 0x3c8a, 0x3c8b, 0x3c8c, 0x3c8e, 0x3c8f, 0x3c90, 0x3c91, 0x3c93,
- 0x3c94, 0x3c95, 0x3c97, 0x3c98, 0x3c9a, 0x3c9b, 0x3c9d, 0x3c9f,
- 0x3cc0, 0x3cc0, 0x3cc0, 0x3cc0, 0x3cc1, 0x3cc1, 0x3cc2, 0x3cc2,
- 0x3cc3, 0x3cc4, 0x3cc5, 0x3cc5, 0x3cc6, 0x3cc7, 0x3cc8, 0x3cc9,
- 0x3cca, 0x3ccb, 0x3ccc, 0x3cce, 0x3ccf, 0x3cd0, 0x3cd1, 0x3cd3,
- 0x3cd4, 0x3cd5, 0x3cd7, 0x3cd8, 0x3cda, 0x3cdb, 0x3cdd, 0x3cdf,
- 0x3ce0, 0x3ce0, 0x3ce0, 0x3ce0, 0x3ce1, 0x3ce1, 0x3ce2, 0x3ce2,
- 0x3ce3, 0x3ce4, 0x3ce5, 0x3ce5, 0x3ce6, 0x3ce7, 0x3ce8, 0x3ce9,
- 0x3cea, 0x3ceb, 0x3cec, 0x3cee, 0x3cef, 0x3cf0, 0x3cf1, 0x3cf3,
- 0x3cf4, 0x3cf5, 0x3cf7, 0x3cf8, 0x3cfa, 0x3cfb, 0x3cfd, 0x3cff,
- 0x3d00, 0x3d00, 0x3d00, 0x3d00, 0x3d01, 0x3d01, 0x3d02, 0x3d02,
- 0x3d03, 0x3d04, 0x3d05, 0x3d05, 0x3d06, 0x3d07, 0x3d08, 0x3d09,
- 0x3d0a, 0x3d0b, 0x3d0c, 0x3d0e, 0x3d0f, 0x3d10, 0x3d11, 0x3d13,
- 0x3d14, 0x3d15, 0x3d17, 0x3d18, 0x3d1a, 0x3d1b, 0x3d1d, 0x3d1f,
- 0x3d40, 0x3d40, 0x3d40, 0x3d40, 0x3d41, 0x3d41, 0x3d42, 0x3d42,
- 0x3d43, 0x3d44, 0x3d45, 0x3d45, 0x3d46, 0x3d47, 0x3d48, 0x3d49,
- 0x3d4a, 0x3d4b, 0x3d4c, 0x3d4e, 0x3d4f, 0x3d50, 0x3d51, 0x3d53,
- 0x3d54, 0x3d55, 0x3d57, 0x3d58, 0x3d5a, 0x3d5b, 0x3d5d, 0x3d5f,
- 0x3d60, 0x3d60, 0x3d60, 0x3d60, 0x3d61, 0x3d61, 0x3d62, 0x3d62,
- 0x3d63, 0x3d64, 0x3d65, 0x3d65, 0x3d66, 0x3d67, 0x3d68, 0x3d69,
- 0x3d6a, 0x3d6b, 0x3d6c, 0x3d6e, 0x3d6f, 0x3d70, 0x3d71, 0x3d73,
- 0x3d74, 0x3d75, 0x3d77, 0x3d78, 0x3d7a, 0x3d7b, 0x3d7d, 0x3d7f,
- 0x3d80, 0x3d80, 0x3d80, 0x3d80, 0x3d81, 0x3d81, 0x3d82, 0x3d82,
- 0x3d83, 0x3d84, 0x3d85, 0x3d85, 0x3d86, 0x3d87, 0x3d88, 0x3d89,
- 0x3d8a, 0x3d8b, 0x3d8c, 0x3d8e, 0x3d8f, 0x3d90, 0x3d91, 0x3d93,
- 0x3d94, 0x3d95, 0x3d97, 0x3d98, 0x3d9a, 0x3d9b, 0x3d9d, 0x3d9f,
- 0x3dc0, 0x3dc0, 0x3dc0, 0x3dc0, 0x3dc1, 0x3dc1, 0x3dc2, 0x3dc2,
- 0x3dc3, 0x3dc4, 0x3dc5, 0x3dc5, 0x3dc6, 0x3dc7, 0x3dc8, 0x3dc9,
- 0x3dca, 0x3dcb, 0x3dcc, 0x3dce, 0x3dcf, 0x3dd0, 0x3dd1, 0x3dd3,
- 0x3dd4, 0x3dd5, 0x3dd7, 0x3dd8, 0x3dda, 0x3ddb, 0x3ddd, 0x3ddf,
- 0x3de0, 0x3de0, 0x3de0, 0x3de0, 0x3de1, 0x3de1, 0x3de2, 0x3de2,
- 0x3de3, 0x3de4, 0x3de5, 0x3de5, 0x3de6, 0x3de7, 0x3de8, 0x3de9,
- 0x3dea, 0x3deb, 0x3dec, 0x3dee, 0x3def, 0x3df0, 0x3df1, 0x3df3,
- 0x3df4, 0x3df5, 0x3df7, 0x3df8, 0x3dfa, 0x3dfb, 0x3dfd, 0x3dff,
- 0x3e20, 0x3e20, 0x3e20, 0x3e20, 0x3e21, 0x3e21, 0x3e22, 0x3e22,
- 0x3e23, 0x3e24, 0x3e25, 0x3e25, 0x3e26, 0x3e27, 0x3e28, 0x3e29,
- 0x3e2a, 0x3e2b, 0x3e2c, 0x3e2e, 0x3e2f, 0x3e30, 0x3e31, 0x3e33,
- 0x3e34, 0x3e35, 0x3e37, 0x3e38, 0x3e3a, 0x3e3b, 0x3e3d, 0x3e3f,
- 0x3e40, 0x3e40, 0x3e40, 0x3e40, 0x3e41, 0x3e41, 0x3e42, 0x3e42,
- 0x3e43, 0x3e44, 0x3e45, 0x3e45, 0x3e46, 0x3e47, 0x3e48, 0x3e49,
- 0x3e4a, 0x3e4b, 0x3e4c, 0x3e4e, 0x3e4f, 0x3e50, 0x3e51, 0x3e53,
- 0x3e54, 0x3e55, 0x3e57, 0x3e58, 0x3e5a, 0x3e5b, 0x3e5d, 0x3e5f,
- 0x3e80, 0x3e80, 0x3e80, 0x3e80, 0x3e81, 0x3e81, 0x3e82, 0x3e82,
- 0x3e83, 0x3e84, 0x3e85, 0x3e85, 0x3e86, 0x3e87, 0x3e88, 0x3e89,
- 0x3e8a, 0x3e8b, 0x3e8c, 0x3e8e, 0x3e8f, 0x3e90, 0x3e91, 0x3e93,
- 0x3e94, 0x3e95, 0x3e97, 0x3e98, 0x3e9a, 0x3e9b, 0x3e9d, 0x3e9f,
- 0x3ea0, 0x3ea0, 0x3ea0, 0x3ea0, 0x3ea1, 0x3ea1, 0x3ea2, 0x3ea2,
- 0x3ea3, 0x3ea4, 0x3ea5, 0x3ea5, 0x3ea6, 0x3ea7, 0x3ea8, 0x3ea9,
- 0x3eaa, 0x3eab, 0x3eac, 0x3eae, 0x3eaf, 0x3eb0, 0x3eb1, 0x3eb3,
- 0x3eb4, 0x3eb5, 0x3eb7, 0x3eb8, 0x3eba, 0x3ebb, 0x3ebd, 0x3ebf,
- 0x3ee0, 0x3ee0, 0x3ee0, 0x3ee0, 0x3ee1, 0x3ee1, 0x3ee2, 0x3ee2,
- 0x3ee3, 0x3ee4, 0x3ee5, 0x3ee5, 0x3ee6, 0x3ee7, 0x3ee8, 0x3ee9,
- 0x3eea, 0x3eeb, 0x3eec, 0x3eee, 0x3eef, 0x3ef0, 0x3ef1, 0x3ef3,
- 0x3ef4, 0x3ef5, 0x3ef7, 0x3ef8, 0x3efa, 0x3efb, 0x3efd, 0x3eff,
- 0x3f00, 0x3f00, 0x3f00, 0x3f00, 0x3f01, 0x3f01, 0x3f02, 0x3f02,
- 0x3f03, 0x3f04, 0x3f05, 0x3f05, 0x3f06, 0x3f07, 0x3f08, 0x3f09,
- 0x3f0a, 0x3f0b, 0x3f0c, 0x3f0e, 0x3f0f, 0x3f10, 0x3f11, 0x3f13,
- 0x3f14, 0x3f15, 0x3f17, 0x3f18, 0x3f1a, 0x3f1b, 0x3f1d, 0x3f1f,
- 0x3f40, 0x3f40, 0x3f40, 0x3f40, 0x3f41, 0x3f41, 0x3f42, 0x3f42,
- 0x3f43, 0x3f44, 0x3f45, 0x3f45, 0x3f46, 0x3f47, 0x3f48, 0x3f49,
- 0x3f4a, 0x3f4b, 0x3f4c, 0x3f4e, 0x3f4f, 0x3f50, 0x3f51, 0x3f53,
- 0x3f54, 0x3f55, 0x3f57, 0x3f58, 0x3f5a, 0x3f5b, 0x3f5d, 0x3f5f,
- 0x3f60, 0x3f60, 0x3f60, 0x3f60, 0x3f61, 0x3f61, 0x3f62, 0x3f62,
- 0x3f63, 0x3f64, 0x3f65, 0x3f65, 0x3f66, 0x3f67, 0x3f68, 0x3f69,
- 0x3f6a, 0x3f6b, 0x3f6c, 0x3f6e, 0x3f6f, 0x3f70, 0x3f71, 0x3f73,
- 0x3f74, 0x3f75, 0x3f77, 0x3f78, 0x3f7a, 0x3f7b, 0x3f7d, 0x3f7f,
- 0x3fa0, 0x3fa0, 0x3fa0, 0x3fa0, 0x3fa1, 0x3fa1, 0x3fa2, 0x3fa2,
- 0x3fa3, 0x3fa4, 0x3fa5, 0x3fa5, 0x3fa6, 0x3fa7, 0x3fa8, 0x3fa9,
- 0x3faa, 0x3fab, 0x3fac, 0x3fae, 0x3faf, 0x3fb0, 0x3fb1, 0x3fb3,
- 0x3fb4, 0x3fb5, 0x3fb7, 0x3fb8, 0x3fba, 0x3fbb, 0x3fbd, 0x3fbf,
- 0x3fe0, 0x3fe0, 0x3fe0, 0x3fe0, 0x3fe1, 0x3fe1, 0x3fe2, 0x3fe2,
- 0x3fe3, 0x3fe4, 0x3fe5, 0x3fe5, 0x3fe6, 0x3fe7, 0x3fe8, 0x3fe9,
- 0x3fea, 0x3feb, 0x3fec, 0x3fee, 0x3fef, 0x3ff0, 0x3ff1, 0x3ff3,
- 0x3ff4, 0x3ff5, 0x3ff7, 0x3ff8, 0x3ffa, 0x3ffb, 0x3ffd, 0x3fff,
- 0x4000, 0x4000, 0x4000, 0x4000, 0x4001, 0x4001, 0x4002, 0x4002,
- 0x4003, 0x4004, 0x4005, 0x4005, 0x4006, 0x4007, 0x4008, 0x4009,
- 0x400a, 0x400b, 0x400c, 0x400e, 0x400f, 0x4010, 0x4011, 0x4013,
- 0x4014, 0x4015, 0x4017, 0x4018, 0x401a, 0x401b, 0x401d, 0x401f,
- 0x4000, 0x4000, 0x4000, 0x4000, 0x4001, 0x4001, 0x4002, 0x4002,
- 0x4003, 0x4004, 0x4005, 0x4005, 0x4006, 0x4007, 0x4008, 0x4009,
- 0x400a, 0x400b, 0x400c, 0x400e, 0x400f, 0x4010, 0x4011, 0x4013,
- 0x4014, 0x4015, 0x4017, 0x4018, 0x401a, 0x401b, 0x401d, 0x401f,
- 0x4000, 0x4000, 0x4000, 0x4000, 0x4001, 0x4001, 0x4002, 0x4002,
- 0x4003, 0x4004, 0x4005, 0x4005, 0x4006, 0x4007, 0x4008, 0x4009,
- 0x400a, 0x400b, 0x400c, 0x400e, 0x400f, 0x4010, 0x4011, 0x4013,
- 0x4014, 0x4015, 0x4017, 0x4018, 0x401a, 0x401b, 0x401d, 0x401f,
- 0x4000, 0x4000, 0x4000, 0x4000, 0x4001, 0x4001, 0x4002, 0x4002,
- 0x4003, 0x4004, 0x4005, 0x4005, 0x4006, 0x4007, 0x4008, 0x4009,
- 0x400a, 0x400b, 0x400c, 0x400e, 0x400f, 0x4010, 0x4011, 0x4013,
- 0x4014, 0x4015, 0x4017, 0x4018, 0x401a, 0x401b, 0x401d, 0x401f,
- 0x4000, 0x4000, 0x4000, 0x4000, 0x4001, 0x4001, 0x4002, 0x4002,
- 0x4003, 0x4004, 0x4005, 0x4005, 0x4006, 0x4007, 0x4008, 0x4009,
- 0x400a, 0x400b, 0x400c, 0x400e, 0x400f, 0x4010, 0x4011, 0x4013,
- 0x4014, 0x4015, 0x4017, 0x4018, 0x401a, 0x401b, 0x401d, 0x401f,
- 0x4020, 0x4020, 0x4020, 0x4020, 0x4021, 0x4021, 0x4022, 0x4022,
- 0x4023, 0x4024, 0x4025, 0x4025, 0x4026, 0x4027, 0x4028, 0x4029,
- 0x402a, 0x402b, 0x402c, 0x402e, 0x402f, 0x4030, 0x4031, 0x4033,
- 0x4034, 0x4035, 0x4037, 0x4038, 0x403a, 0x403b, 0x403d, 0x403f,
- 0x4020, 0x4020, 0x4020, 0x4020, 0x4021, 0x4021, 0x4022, 0x4022,
- 0x4023, 0x4024, 0x4025, 0x4025, 0x4026, 0x4027, 0x4028, 0x4029,
- 0x402a, 0x402b, 0x402c, 0x402e, 0x402f, 0x4030, 0x4031, 0x4033,
- 0x4034, 0x4035, 0x4037, 0x4038, 0x403a, 0x403b, 0x403d, 0x403f,
- 0x4020, 0x4020, 0x4020, 0x4020, 0x4021, 0x4021, 0x4022, 0x4022,
- 0x4023, 0x4024, 0x4025, 0x4025, 0x4026, 0x4027, 0x4028, 0x4029,
- 0x402a, 0x402b, 0x402c, 0x402e, 0x402f, 0x4030, 0x4031, 0x4033,
- 0x4034, 0x4035, 0x4037, 0x4038, 0x403a, 0x403b, 0x403d, 0x403f,
- 0x4040, 0x4040, 0x4040, 0x4040, 0x4041, 0x4041, 0x4042, 0x4042,
- 0x4043, 0x4044, 0x4045, 0x4045, 0x4046, 0x4047, 0x4048, 0x4049,
- 0x404a, 0x404b, 0x404c, 0x404e, 0x404f, 0x4050, 0x4051, 0x4053,
- 0x4054, 0x4055, 0x4057, 0x4058, 0x405a, 0x405b, 0x405d, 0x405f,
- 0x4040, 0x4040, 0x4040, 0x4040, 0x4041, 0x4041, 0x4042, 0x4042,
- 0x4043, 0x4044, 0x4045, 0x4045, 0x4046, 0x4047, 0x4048, 0x4049,
- 0x404a, 0x404b, 0x404c, 0x404e, 0x404f, 0x4050, 0x4051, 0x4053,
- 0x4054, 0x4055, 0x4057, 0x4058, 0x405a, 0x405b, 0x405d, 0x405f,
- 0x4060, 0x4060, 0x4060, 0x4060, 0x4061, 0x4061, 0x4062, 0x4062,
- 0x4063, 0x4064, 0x4065, 0x4065, 0x4066, 0x4067, 0x4068, 0x4069,
- 0x406a, 0x406b, 0x406c, 0x406e, 0x406f, 0x4070, 0x4071, 0x4073,
- 0x4074, 0x4075, 0x4077, 0x4078, 0x407a, 0x407b, 0x407d, 0x407f,
- 0x4060, 0x4060, 0x4060, 0x4060, 0x4061, 0x4061, 0x4062, 0x4062,
- 0x4063, 0x4064, 0x4065, 0x4065, 0x4066, 0x4067, 0x4068, 0x4069,
- 0x406a, 0x406b, 0x406c, 0x406e, 0x406f, 0x4070, 0x4071, 0x4073,
- 0x4074, 0x4075, 0x4077, 0x4078, 0x407a, 0x407b, 0x407d, 0x407f,
- 0x4080, 0x4080, 0x4080, 0x4080, 0x4081, 0x4081, 0x4082, 0x4082,
- 0x4083, 0x4084, 0x4085, 0x4085, 0x4086, 0x4087, 0x4088, 0x4089,
- 0x408a, 0x408b, 0x408c, 0x408e, 0x408f, 0x4090, 0x4091, 0x4093,
- 0x4094, 0x4095, 0x4097, 0x4098, 0x409a, 0x409b, 0x409d, 0x409f,
- 0x40a0, 0x40a0, 0x40a0, 0x40a0, 0x40a1, 0x40a1, 0x40a2, 0x40a2,
- 0x40a3, 0x40a4, 0x40a5, 0x40a5, 0x40a6, 0x40a7, 0x40a8, 0x40a9,
- 0x40aa, 0x40ab, 0x40ac, 0x40ae, 0x40af, 0x40b0, 0x40b1, 0x40b3,
- 0x40b4, 0x40b5, 0x40b7, 0x40b8, 0x40ba, 0x40bb, 0x40bd, 0x40bf,
- 0x40a0, 0x40a0, 0x40a0, 0x40a0, 0x40a1, 0x40a1, 0x40a2, 0x40a2,
- 0x40a3, 0x40a4, 0x40a5, 0x40a5, 0x40a6, 0x40a7, 0x40a8, 0x40a9,
- 0x40aa, 0x40ab, 0x40ac, 0x40ae, 0x40af, 0x40b0, 0x40b1, 0x40b3,
- 0x40b4, 0x40b5, 0x40b7, 0x40b8, 0x40ba, 0x40bb, 0x40bd, 0x40bf,
- 0x40c0, 0x40c0, 0x40c0, 0x40c0, 0x40c1, 0x40c1, 0x40c2, 0x40c2,
- 0x40c3, 0x40c4, 0x40c5, 0x40c5, 0x40c6, 0x40c7, 0x40c8, 0x40c9,
- 0x40ca, 0x40cb, 0x40cc, 0x40ce, 0x40cf, 0x40d0, 0x40d1, 0x40d3,
- 0x40d4, 0x40d5, 0x40d7, 0x40d8, 0x40da, 0x40db, 0x40dd, 0x40df,
- 0x40e0, 0x40e0, 0x40e0, 0x40e0, 0x40e1, 0x40e1, 0x40e2, 0x40e2,
- 0x40e3, 0x40e4, 0x40e5, 0x40e5, 0x40e6, 0x40e7, 0x40e8, 0x40e9,
- 0x40ea, 0x40eb, 0x40ec, 0x40ee, 0x40ef, 0x40f0, 0x40f1, 0x40f3,
- 0x40f4, 0x40f5, 0x40f7, 0x40f8, 0x40fa, 0x40fb, 0x40fd, 0x40ff,
- 0x40e0, 0x40e0, 0x40e0, 0x40e0, 0x40e1, 0x40e1, 0x40e2, 0x40e2,
- 0x40e3, 0x40e4, 0x40e5, 0x40e5, 0x40e6, 0x40e7, 0x40e8, 0x40e9,
- 0x40ea, 0x40eb, 0x40ec, 0x40ee, 0x40ef, 0x40f0, 0x40f1, 0x40f3,
- 0x40f4, 0x40f5, 0x40f7, 0x40f8, 0x40fa, 0x40fb, 0x40fd, 0x40ff,
- 0x4100, 0x4100, 0x4100, 0x4100, 0x4101, 0x4101, 0x4102, 0x4102,
- 0x4103, 0x4104, 0x4105, 0x4105, 0x4106, 0x4107, 0x4108, 0x4109,
- 0x410a, 0x410b, 0x410c, 0x410e, 0x410f, 0x4110, 0x4111, 0x4113,
- 0x4114, 0x4115, 0x4117, 0x4118, 0x411a, 0x411b, 0x411d, 0x411f,
- 0x4120, 0x4120, 0x4120, 0x4120, 0x4121, 0x4121, 0x4122, 0x4122,
- 0x4123, 0x4124, 0x4125, 0x4125, 0x4126, 0x4127, 0x4128, 0x4129,
- 0x412a, 0x412b, 0x412c, 0x412e, 0x412f, 0x4130, 0x4131, 0x4133,
- 0x4134, 0x4135, 0x4137, 0x4138, 0x413a, 0x413b, 0x413d, 0x413f,
- 0x4140, 0x4140, 0x4140, 0x4140, 0x4141, 0x4141, 0x4142, 0x4142,
- 0x4143, 0x4144, 0x4145, 0x4145, 0x4146, 0x4147, 0x4148, 0x4149,
- 0x414a, 0x414b, 0x414c, 0x414e, 0x414f, 0x4150, 0x4151, 0x4153,
- 0x4154, 0x4155, 0x4157, 0x4158, 0x415a, 0x415b, 0x415d, 0x415f,
- 0x4140, 0x4140, 0x4140, 0x4140, 0x4141, 0x4141, 0x4142, 0x4142,
- 0x4143, 0x4144, 0x4145, 0x4145, 0x4146, 0x4147, 0x4148, 0x4149,
- 0x414a, 0x414b, 0x414c, 0x414e, 0x414f, 0x4150, 0x4151, 0x4153,
- 0x4154, 0x4155, 0x4157, 0x4158, 0x415a, 0x415b, 0x415d, 0x415f,
- 0x4160, 0x4160, 0x4160, 0x4160, 0x4161, 0x4161, 0x4162, 0x4162,
- 0x4163, 0x4164, 0x4165, 0x4165, 0x4166, 0x4167, 0x4168, 0x4169,
- 0x416a, 0x416b, 0x416c, 0x416e, 0x416f, 0x4170, 0x4171, 0x4173,
- 0x4174, 0x4175, 0x4177, 0x4178, 0x417a, 0x417b, 0x417d, 0x417f,
- 0x4180, 0x4180, 0x4180, 0x4180, 0x4181, 0x4181, 0x4182, 0x4182,
- 0x4183, 0x4184, 0x4185, 0x4185, 0x4186, 0x4187, 0x4188, 0x4189,
- 0x418a, 0x418b, 0x418c, 0x418e, 0x418f, 0x4190, 0x4191, 0x4193,
- 0x4194, 0x4195, 0x4197, 0x4198, 0x419a, 0x419b, 0x419d, 0x419f,
- 0x41a0, 0x41a0, 0x41a0, 0x41a0, 0x41a1, 0x41a1, 0x41a2, 0x41a2,
- 0x41a3, 0x41a4, 0x41a5, 0x41a5, 0x41a6, 0x41a7, 0x41a8, 0x41a9,
- 0x41aa, 0x41ab, 0x41ac, 0x41ae, 0x41af, 0x41b0, 0x41b1, 0x41b3,
- 0x41b4, 0x41b5, 0x41b7, 0x41b8, 0x41ba, 0x41bb, 0x41bd, 0x41bf,
- 0x41c0, 0x41c0, 0x41c0, 0x41c0, 0x41c1, 0x41c1, 0x41c2, 0x41c2,
- 0x41c3, 0x41c4, 0x41c5, 0x41c5, 0x41c6, 0x41c7, 0x41c8, 0x41c9,
- 0x41ca, 0x41cb, 0x41cc, 0x41ce, 0x41cf, 0x41d0, 0x41d1, 0x41d3,
- 0x41d4, 0x41d5, 0x41d7, 0x41d8, 0x41da, 0x41db, 0x41dd, 0x41df,
- 0x41e0, 0x41e0, 0x41e0, 0x41e0, 0x41e1, 0x41e1, 0x41e2, 0x41e2,
- 0x41e3, 0x41e4, 0x41e5, 0x41e5, 0x41e6, 0x41e7, 0x41e8, 0x41e9,
- 0x41ea, 0x41eb, 0x41ec, 0x41ee, 0x41ef, 0x41f0, 0x41f1, 0x41f3,
- 0x41f4, 0x41f5, 0x41f7, 0x41f8, 0x41fa, 0x41fb, 0x41fd, 0x41ff,
- 0x4200, 0x4200, 0x4200, 0x4200, 0x4201, 0x4201, 0x4202, 0x4202,
- 0x4203, 0x4204, 0x4205, 0x4205, 0x4206, 0x4207, 0x4208, 0x4209,
- 0x420a, 0x420b, 0x420c, 0x420e, 0x420f, 0x4210, 0x4211, 0x4213,
- 0x4214, 0x4215, 0x4217, 0x4218, 0x421a, 0x421b, 0x421d, 0x421f,
- 0x4220, 0x4220, 0x4220, 0x4220, 0x4221, 0x4221, 0x4222, 0x4222,
- 0x4223, 0x4224, 0x4225, 0x4225, 0x4226, 0x4227, 0x4228, 0x4229,
- 0x422a, 0x422b, 0x422c, 0x422e, 0x422f, 0x4230, 0x4231, 0x4233,
- 0x4234, 0x4235, 0x4237, 0x4238, 0x423a, 0x423b, 0x423d, 0x423f,
- 0x4240, 0x4240, 0x4240, 0x4240, 0x4241, 0x4241, 0x4242, 0x4242,
- 0x4243, 0x4244, 0x4245, 0x4245, 0x4246, 0x4247, 0x4248, 0x4249,
- 0x424a, 0x424b, 0x424c, 0x424e, 0x424f, 0x4250, 0x4251, 0x4253,
- 0x4254, 0x4255, 0x4257, 0x4258, 0x425a, 0x425b, 0x425d, 0x425f,
- 0x4260, 0x4260, 0x4260, 0x4260, 0x4261, 0x4261, 0x4262, 0x4262,
- 0x4263, 0x4264, 0x4265, 0x4265, 0x4266, 0x4267, 0x4268, 0x4269,
- 0x426a, 0x426b, 0x426c, 0x426e, 0x426f, 0x4270, 0x4271, 0x4273,
- 0x4274, 0x4275, 0x4277, 0x4278, 0x427a, 0x427b, 0x427d, 0x427f,
- 0x4280, 0x4280, 0x4280, 0x4280, 0x4281, 0x4281, 0x4282, 0x4282,
- 0x4283, 0x4284, 0x4285, 0x4285, 0x4286, 0x4287, 0x4288, 0x4289,
- 0x428a, 0x428b, 0x428c, 0x428e, 0x428f, 0x4290, 0x4291, 0x4293,
- 0x4294, 0x4295, 0x4297, 0x4298, 0x429a, 0x429b, 0x429d, 0x429f,
- 0x42a0, 0x42a0, 0x42a0, 0x42a0, 0x42a1, 0x42a1, 0x42a2, 0x42a2,
- 0x42a3, 0x42a4, 0x42a5, 0x42a5, 0x42a6, 0x42a7, 0x42a8, 0x42a9,
- 0x42aa, 0x42ab, 0x42ac, 0x42ae, 0x42af, 0x42b0, 0x42b1, 0x42b3,
- 0x42b4, 0x42b5, 0x42b7, 0x42b8, 0x42ba, 0x42bb, 0x42bd, 0x42bf,
- 0x42c0, 0x42c0, 0x42c0, 0x42c0, 0x42c1, 0x42c1, 0x42c2, 0x42c2,
- 0x42c3, 0x42c4, 0x42c5, 0x42c5, 0x42c6, 0x42c7, 0x42c8, 0x42c9,
- 0x42ca, 0x42cb, 0x42cc, 0x42ce, 0x42cf, 0x42d0, 0x42d1, 0x42d3,
- 0x42d4, 0x42d5, 0x42d7, 0x42d8, 0x42da, 0x42db, 0x42dd, 0x42df,
- 0x42e0, 0x42e0, 0x42e0, 0x42e0, 0x42e1, 0x42e1, 0x42e2, 0x42e2,
- 0x42e3, 0x42e4, 0x42e5, 0x42e5, 0x42e6, 0x42e7, 0x42e8, 0x42e9,
- 0x42ea, 0x42eb, 0x42ec, 0x42ee, 0x42ef, 0x42f0, 0x42f1, 0x42f3,
- 0x42f4, 0x42f5, 0x42f7, 0x42f8, 0x42fa, 0x42fb, 0x42fd, 0x42ff,
- 0x4300, 0x4300, 0x4300, 0x4300, 0x4301, 0x4301, 0x4302, 0x4302,
- 0x4303, 0x4304, 0x4305, 0x4305, 0x4306, 0x4307, 0x4308, 0x4309,
- 0x430a, 0x430b, 0x430c, 0x430e, 0x430f, 0x4310, 0x4311, 0x4313,
- 0x4314, 0x4315, 0x4317, 0x4318, 0x431a, 0x431b, 0x431d, 0x431f,
- 0x4320, 0x4320, 0x4320, 0x4320, 0x4321, 0x4321, 0x4322, 0x4322,
- 0x4323, 0x4324, 0x4325, 0x4325, 0x4326, 0x4327, 0x4328, 0x4329,
- 0x432a, 0x432b, 0x432c, 0x432e, 0x432f, 0x4330, 0x4331, 0x4333,
- 0x4334, 0x4335, 0x4337, 0x4338, 0x433a, 0x433b, 0x433d, 0x433f,
- 0x4340, 0x4340, 0x4340, 0x4340, 0x4341, 0x4341, 0x4342, 0x4342,
- 0x4343, 0x4344, 0x4345, 0x4345, 0x4346, 0x4347, 0x4348, 0x4349,
- 0x434a, 0x434b, 0x434c, 0x434e, 0x434f, 0x4350, 0x4351, 0x4353,
- 0x4354, 0x4355, 0x4357, 0x4358, 0x435a, 0x435b, 0x435d, 0x435f,
- 0x4380, 0x4380, 0x4380, 0x4380, 0x4381, 0x4381, 0x4382, 0x4382,
- 0x4383, 0x4384, 0x4385, 0x4385, 0x4386, 0x4387, 0x4388, 0x4389,
- 0x438a, 0x438b, 0x438c, 0x438e, 0x438f, 0x4390, 0x4391, 0x4393,
- 0x4394, 0x4395, 0x4397, 0x4398, 0x439a, 0x439b, 0x439d, 0x439f,
- 0x43a0, 0x43a0, 0x43a0, 0x43a0, 0x43a1, 0x43a1, 0x43a2, 0x43a2,
- 0x43a3, 0x43a4, 0x43a5, 0x43a5, 0x43a6, 0x43a7, 0x43a8, 0x43a9,
- 0x43aa, 0x43ab, 0x43ac, 0x43ae, 0x43af, 0x43b0, 0x43b1, 0x43b3,
- 0x43b4, 0x43b5, 0x43b7, 0x43b8, 0x43ba, 0x43bb, 0x43bd, 0x43bf,
- 0x43c0, 0x43c0, 0x43c0, 0x43c0, 0x43c1, 0x43c1, 0x43c2, 0x43c2,
- 0x43c3, 0x43c4, 0x43c5, 0x43c5, 0x43c6, 0x43c7, 0x43c8, 0x43c9,
- 0x43ca, 0x43cb, 0x43cc, 0x43ce, 0x43cf, 0x43d0, 0x43d1, 0x43d3,
- 0x43d4, 0x43d5, 0x43d7, 0x43d8, 0x43da, 0x43db, 0x43dd, 0x43df,
- 0x43e0, 0x43e0, 0x43e0, 0x43e0, 0x43e1, 0x43e1, 0x43e2, 0x43e2,
- 0x43e3, 0x43e4, 0x43e5, 0x43e5, 0x43e6, 0x43e7, 0x43e8, 0x43e9,
- 0x43ea, 0x43eb, 0x43ec, 0x43ee, 0x43ef, 0x43f0, 0x43f1, 0x43f3,
- 0x43f4, 0x43f5, 0x43f7, 0x43f8, 0x43fa, 0x43fb, 0x43fd, 0x43ff,
- 0x4400, 0x4400, 0x4400, 0x4400, 0x4401, 0x4401, 0x4402, 0x4402,
- 0x4403, 0x4404, 0x4405, 0x4405, 0x4406, 0x4407, 0x4408, 0x4409,
- 0x440a, 0x440b, 0x440c, 0x440e, 0x440f, 0x4410, 0x4411, 0x4413,
- 0x4414, 0x4415, 0x4417, 0x4418, 0x441a, 0x441b, 0x441d, 0x441f,
- 0x4440, 0x4440, 0x4440, 0x4440, 0x4441, 0x4441, 0x4442, 0x4442,
- 0x4443, 0x4444, 0x4445, 0x4445, 0x4446, 0x4447, 0x4448, 0x4449,
- 0x444a, 0x444b, 0x444c, 0x444e, 0x444f, 0x4450, 0x4451, 0x4453,
- 0x4454, 0x4455, 0x4457, 0x4458, 0x445a, 0x445b, 0x445d, 0x445f,
- 0x4460, 0x4460, 0x4460, 0x4460, 0x4461, 0x4461, 0x4462, 0x4462,
- 0x4463, 0x4464, 0x4465, 0x4465, 0x4466, 0x4467, 0x4468, 0x4469,
- 0x446a, 0x446b, 0x446c, 0x446e, 0x446f, 0x4470, 0x4471, 0x4473,
- 0x4474, 0x4475, 0x4477, 0x4478, 0x447a, 0x447b, 0x447d, 0x447f,
- 0x4480, 0x4480, 0x4480, 0x4480, 0x4481, 0x4481, 0x4482, 0x4482,
- 0x4483, 0x4484, 0x4485, 0x4485, 0x4486, 0x4487, 0x4488, 0x4489,
- 0x448a, 0x448b, 0x448c, 0x448e, 0x448f, 0x4490, 0x4491, 0x4493,
- 0x4494, 0x4495, 0x4497, 0x4498, 0x449a, 0x449b, 0x449d, 0x449f,
- 0x44c0, 0x44c0, 0x44c0, 0x44c0, 0x44c1, 0x44c1, 0x44c2, 0x44c2,
- 0x44c3, 0x44c4, 0x44c5, 0x44c5, 0x44c6, 0x44c7, 0x44c8, 0x44c9,
- 0x44ca, 0x44cb, 0x44cc, 0x44ce, 0x44cf, 0x44d0, 0x44d1, 0x44d3,
- 0x44d4, 0x44d5, 0x44d7, 0x44d8, 0x44da, 0x44db, 0x44dd, 0x44df,
- 0x44e0, 0x44e0, 0x44e0, 0x44e0, 0x44e1, 0x44e1, 0x44e2, 0x44e2,
- 0x44e3, 0x44e4, 0x44e5, 0x44e5, 0x44e6, 0x44e7, 0x44e8, 0x44e9,
- 0x44ea, 0x44eb, 0x44ec, 0x44ee, 0x44ef, 0x44f0, 0x44f1, 0x44f3,
- 0x44f4, 0x44f5, 0x44f7, 0x44f8, 0x44fa, 0x44fb, 0x44fd, 0x44ff,
- 0x4500, 0x4500, 0x4500, 0x4500, 0x4501, 0x4501, 0x4502, 0x4502,
- 0x4503, 0x4504, 0x4505, 0x4505, 0x4506, 0x4507, 0x4508, 0x4509,
- 0x450a, 0x450b, 0x450c, 0x450e, 0x450f, 0x4510, 0x4511, 0x4513,
- 0x4514, 0x4515, 0x4517, 0x4518, 0x451a, 0x451b, 0x451d, 0x451f,
- 0x4540, 0x4540, 0x4540, 0x4540, 0x4541, 0x4541, 0x4542, 0x4542,
- 0x4543, 0x4544, 0x4545, 0x4545, 0x4546, 0x4547, 0x4548, 0x4549,
- 0x454a, 0x454b, 0x454c, 0x454e, 0x454f, 0x4550, 0x4551, 0x4553,
- 0x4554, 0x4555, 0x4557, 0x4558, 0x455a, 0x455b, 0x455d, 0x455f,
- 0x4560, 0x4560, 0x4560, 0x4560, 0x4561, 0x4561, 0x4562, 0x4562,
- 0x4563, 0x4564, 0x4565, 0x4565, 0x4566, 0x4567, 0x4568, 0x4569,
- 0x456a, 0x456b, 0x456c, 0x456e, 0x456f, 0x4570, 0x4571, 0x4573,
- 0x4574, 0x4575, 0x4577, 0x4578, 0x457a, 0x457b, 0x457d, 0x457f,
- 0x4580, 0x4580, 0x4580, 0x4580, 0x4581, 0x4581, 0x4582, 0x4582,
- 0x4583, 0x4584, 0x4585, 0x4585, 0x4586, 0x4587, 0x4588, 0x4589,
- 0x458a, 0x458b, 0x458c, 0x458e, 0x458f, 0x4590, 0x4591, 0x4593,
- 0x4594, 0x4595, 0x4597, 0x4598, 0x459a, 0x459b, 0x459d, 0x459f,
- 0x45c0, 0x45c0, 0x45c0, 0x45c0, 0x45c1, 0x45c1, 0x45c2, 0x45c2,
- 0x45c3, 0x45c4, 0x45c5, 0x45c5, 0x45c6, 0x45c7, 0x45c8, 0x45c9,
- 0x45ca, 0x45cb, 0x45cc, 0x45ce, 0x45cf, 0x45d0, 0x45d1, 0x45d3,
- 0x45d4, 0x45d5, 0x45d7, 0x45d8, 0x45da, 0x45db, 0x45dd, 0x45df,
- 0x45e0, 0x45e0, 0x45e0, 0x45e0, 0x45e1, 0x45e1, 0x45e2, 0x45e2,
- 0x45e3, 0x45e4, 0x45e5, 0x45e5, 0x45e6, 0x45e7, 0x45e8, 0x45e9,
- 0x45ea, 0x45eb, 0x45ec, 0x45ee, 0x45ef, 0x45f0, 0x45f1, 0x45f3,
- 0x45f4, 0x45f5, 0x45f7, 0x45f8, 0x45fa, 0x45fb, 0x45fd, 0x45ff,
- 0x4620, 0x4620, 0x4620, 0x4620, 0x4621, 0x4621, 0x4622, 0x4622,
- 0x4623, 0x4624, 0x4625, 0x4625, 0x4626, 0x4627, 0x4628, 0x4629,
- 0x462a, 0x462b, 0x462c, 0x462e, 0x462f, 0x4630, 0x4631, 0x4633,
- 0x4634, 0x4635, 0x4637, 0x4638, 0x463a, 0x463b, 0x463d, 0x463f,
- 0x4640, 0x4640, 0x4640, 0x4640, 0x4641, 0x4641, 0x4642, 0x4642,
- 0x4643, 0x4644, 0x4645, 0x4645, 0x4646, 0x4647, 0x4648, 0x4649,
- 0x464a, 0x464b, 0x464c, 0x464e, 0x464f, 0x4650, 0x4651, 0x4653,
- 0x4654, 0x4655, 0x4657, 0x4658, 0x465a, 0x465b, 0x465d, 0x465f,
- 0x4680, 0x4680, 0x4680, 0x4680, 0x4681, 0x4681, 0x4682, 0x4682,
- 0x4683, 0x4684, 0x4685, 0x4685, 0x4686, 0x4687, 0x4688, 0x4689,
- 0x468a, 0x468b, 0x468c, 0x468e, 0x468f, 0x4690, 0x4691, 0x4693,
- 0x4694, 0x4695, 0x4697, 0x4698, 0x469a, 0x469b, 0x469d, 0x469f,
- 0x46a0, 0x46a0, 0x46a0, 0x46a0, 0x46a1, 0x46a1, 0x46a2, 0x46a2,
- 0x46a3, 0x46a4, 0x46a5, 0x46a5, 0x46a6, 0x46a7, 0x46a8, 0x46a9,
- 0x46aa, 0x46ab, 0x46ac, 0x46ae, 0x46af, 0x46b0, 0x46b1, 0x46b3,
- 0x46b4, 0x46b5, 0x46b7, 0x46b8, 0x46ba, 0x46bb, 0x46bd, 0x46bf,
- 0x46e0, 0x46e0, 0x46e0, 0x46e0, 0x46e1, 0x46e1, 0x46e2, 0x46e2,
- 0x46e3, 0x46e4, 0x46e5, 0x46e5, 0x46e6, 0x46e7, 0x46e8, 0x46e9,
- 0x46ea, 0x46eb, 0x46ec, 0x46ee, 0x46ef, 0x46f0, 0x46f1, 0x46f3,
- 0x46f4, 0x46f5, 0x46f7, 0x46f8, 0x46fa, 0x46fb, 0x46fd, 0x46ff,
- 0x4700, 0x4700, 0x4700, 0x4700, 0x4701, 0x4701, 0x4702, 0x4702,
- 0x4703, 0x4704, 0x4705, 0x4705, 0x4706, 0x4707, 0x4708, 0x4709,
- 0x470a, 0x470b, 0x470c, 0x470e, 0x470f, 0x4710, 0x4711, 0x4713,
- 0x4714, 0x4715, 0x4717, 0x4718, 0x471a, 0x471b, 0x471d, 0x471f,
- 0x4740, 0x4740, 0x4740, 0x4740, 0x4741, 0x4741, 0x4742, 0x4742,
- 0x4743, 0x4744, 0x4745, 0x4745, 0x4746, 0x4747, 0x4748, 0x4749,
- 0x474a, 0x474b, 0x474c, 0x474e, 0x474f, 0x4750, 0x4751, 0x4753,
- 0x4754, 0x4755, 0x4757, 0x4758, 0x475a, 0x475b, 0x475d, 0x475f,
- 0x4760, 0x4760, 0x4760, 0x4760, 0x4761, 0x4761, 0x4762, 0x4762,
- 0x4763, 0x4764, 0x4765, 0x4765, 0x4766, 0x4767, 0x4768, 0x4769,
- 0x476a, 0x476b, 0x476c, 0x476e, 0x476f, 0x4770, 0x4771, 0x4773,
- 0x4774, 0x4775, 0x4777, 0x4778, 0x477a, 0x477b, 0x477d, 0x477f,
- 0x47a0, 0x47a0, 0x47a0, 0x47a0, 0x47a1, 0x47a1, 0x47a2, 0x47a2,
- 0x47a3, 0x47a4, 0x47a5, 0x47a5, 0x47a6, 0x47a7, 0x47a8, 0x47a9,
- 0x47aa, 0x47ab, 0x47ac, 0x47ae, 0x47af, 0x47b0, 0x47b1, 0x47b3,
- 0x47b4, 0x47b5, 0x47b7, 0x47b8, 0x47ba, 0x47bb, 0x47bd, 0x47bf,
- 0x47e0, 0x47e0, 0x47e0, 0x47e0, 0x47e1, 0x47e1, 0x47e2, 0x47e2,
- 0x47e3, 0x47e4, 0x47e5, 0x47e5, 0x47e6, 0x47e7, 0x47e8, 0x47e9,
- 0x47ea, 0x47eb, 0x47ec, 0x47ee, 0x47ef, 0x47f0, 0x47f1, 0x47f3,
- 0x47f4, 0x47f5, 0x47f7, 0x47f8, 0x47fa, 0x47fb, 0x47fd, 0x47ff,
- 0x4800, 0x4800, 0x4800, 0x4800, 0x4801, 0x4801, 0x4802, 0x4802,
- 0x4803, 0x4804, 0x4805, 0x4805, 0x4806, 0x4807, 0x4808, 0x4809,
- 0x480a, 0x480b, 0x480c, 0x480e, 0x480f, 0x4810, 0x4811, 0x4813,
- 0x4814, 0x4815, 0x4817, 0x4818, 0x481a, 0x481b, 0x481d, 0x481f,
- 0x4800, 0x4800, 0x4800, 0x4800, 0x4801, 0x4801, 0x4802, 0x4802,
- 0x4803, 0x4804, 0x4805, 0x4805, 0x4806, 0x4807, 0x4808, 0x4809,
- 0x480a, 0x480b, 0x480c, 0x480e, 0x480f, 0x4810, 0x4811, 0x4813,
- 0x4814, 0x4815, 0x4817, 0x4818, 0x481a, 0x481b, 0x481d, 0x481f,
- 0x4800, 0x4800, 0x4800, 0x4800, 0x4801, 0x4801, 0x4802, 0x4802,
- 0x4803, 0x4804, 0x4805, 0x4805, 0x4806, 0x4807, 0x4808, 0x4809,
- 0x480a, 0x480b, 0x480c, 0x480e, 0x480f, 0x4810, 0x4811, 0x4813,
- 0x4814, 0x4815, 0x4817, 0x4818, 0x481a, 0x481b, 0x481d, 0x481f,
- 0x4800, 0x4800, 0x4800, 0x4800, 0x4801, 0x4801, 0x4802, 0x4802,
- 0x4803, 0x4804, 0x4805, 0x4805, 0x4806, 0x4807, 0x4808, 0x4809,
- 0x480a, 0x480b, 0x480c, 0x480e, 0x480f, 0x4810, 0x4811, 0x4813,
- 0x4814, 0x4815, 0x4817, 0x4818, 0x481a, 0x481b, 0x481d, 0x481f,
- 0x4800, 0x4800, 0x4800, 0x4800, 0x4801, 0x4801, 0x4802, 0x4802,
- 0x4803, 0x4804, 0x4805, 0x4805, 0x4806, 0x4807, 0x4808, 0x4809,
- 0x480a, 0x480b, 0x480c, 0x480e, 0x480f, 0x4810, 0x4811, 0x4813,
- 0x4814, 0x4815, 0x4817, 0x4818, 0x481a, 0x481b, 0x481d, 0x481f,
- 0x4820, 0x4820, 0x4820, 0x4820, 0x4821, 0x4821, 0x4822, 0x4822,
- 0x4823, 0x4824, 0x4825, 0x4825, 0x4826, 0x4827, 0x4828, 0x4829,
- 0x482a, 0x482b, 0x482c, 0x482e, 0x482f, 0x4830, 0x4831, 0x4833,
- 0x4834, 0x4835, 0x4837, 0x4838, 0x483a, 0x483b, 0x483d, 0x483f,
- 0x4820, 0x4820, 0x4820, 0x4820, 0x4821, 0x4821, 0x4822, 0x4822,
- 0x4823, 0x4824, 0x4825, 0x4825, 0x4826, 0x4827, 0x4828, 0x4829,
- 0x482a, 0x482b, 0x482c, 0x482e, 0x482f, 0x4830, 0x4831, 0x4833,
- 0x4834, 0x4835, 0x4837, 0x4838, 0x483a, 0x483b, 0x483d, 0x483f,
- 0x4820, 0x4820, 0x4820, 0x4820, 0x4821, 0x4821, 0x4822, 0x4822,
- 0x4823, 0x4824, 0x4825, 0x4825, 0x4826, 0x4827, 0x4828, 0x4829,
- 0x482a, 0x482b, 0x482c, 0x482e, 0x482f, 0x4830, 0x4831, 0x4833,
- 0x4834, 0x4835, 0x4837, 0x4838, 0x483a, 0x483b, 0x483d, 0x483f,
- 0x4840, 0x4840, 0x4840, 0x4840, 0x4841, 0x4841, 0x4842, 0x4842,
- 0x4843, 0x4844, 0x4845, 0x4845, 0x4846, 0x4847, 0x4848, 0x4849,
- 0x484a, 0x484b, 0x484c, 0x484e, 0x484f, 0x4850, 0x4851, 0x4853,
- 0x4854, 0x4855, 0x4857, 0x4858, 0x485a, 0x485b, 0x485d, 0x485f,
- 0x4840, 0x4840, 0x4840, 0x4840, 0x4841, 0x4841, 0x4842, 0x4842,
- 0x4843, 0x4844, 0x4845, 0x4845, 0x4846, 0x4847, 0x4848, 0x4849,
- 0x484a, 0x484b, 0x484c, 0x484e, 0x484f, 0x4850, 0x4851, 0x4853,
- 0x4854, 0x4855, 0x4857, 0x4858, 0x485a, 0x485b, 0x485d, 0x485f,
- 0x4860, 0x4860, 0x4860, 0x4860, 0x4861, 0x4861, 0x4862, 0x4862,
- 0x4863, 0x4864, 0x4865, 0x4865, 0x4866, 0x4867, 0x4868, 0x4869,
- 0x486a, 0x486b, 0x486c, 0x486e, 0x486f, 0x4870, 0x4871, 0x4873,
- 0x4874, 0x4875, 0x4877, 0x4878, 0x487a, 0x487b, 0x487d, 0x487f,
- 0x4860, 0x4860, 0x4860, 0x4860, 0x4861, 0x4861, 0x4862, 0x4862,
- 0x4863, 0x4864, 0x4865, 0x4865, 0x4866, 0x4867, 0x4868, 0x4869,
- 0x486a, 0x486b, 0x486c, 0x486e, 0x486f, 0x4870, 0x4871, 0x4873,
- 0x4874, 0x4875, 0x4877, 0x4878, 0x487a, 0x487b, 0x487d, 0x487f,
- 0x4880, 0x4880, 0x4880, 0x4880, 0x4881, 0x4881, 0x4882, 0x4882,
- 0x4883, 0x4884, 0x4885, 0x4885, 0x4886, 0x4887, 0x4888, 0x4889,
- 0x488a, 0x488b, 0x488c, 0x488e, 0x488f, 0x4890, 0x4891, 0x4893,
- 0x4894, 0x4895, 0x4897, 0x4898, 0x489a, 0x489b, 0x489d, 0x489f,
- 0x48a0, 0x48a0, 0x48a0, 0x48a0, 0x48a1, 0x48a1, 0x48a2, 0x48a2,
- 0x48a3, 0x48a4, 0x48a5, 0x48a5, 0x48a6, 0x48a7, 0x48a8, 0x48a9,
- 0x48aa, 0x48ab, 0x48ac, 0x48ae, 0x48af, 0x48b0, 0x48b1, 0x48b3,
- 0x48b4, 0x48b5, 0x48b7, 0x48b8, 0x48ba, 0x48bb, 0x48bd, 0x48bf,
- 0x48a0, 0x48a0, 0x48a0, 0x48a0, 0x48a1, 0x48a1, 0x48a2, 0x48a2,
- 0x48a3, 0x48a4, 0x48a5, 0x48a5, 0x48a6, 0x48a7, 0x48a8, 0x48a9,
- 0x48aa, 0x48ab, 0x48ac, 0x48ae, 0x48af, 0x48b0, 0x48b1, 0x48b3,
- 0x48b4, 0x48b5, 0x48b7, 0x48b8, 0x48ba, 0x48bb, 0x48bd, 0x48bf,
- 0x48c0, 0x48c0, 0x48c0, 0x48c0, 0x48c1, 0x48c1, 0x48c2, 0x48c2,
- 0x48c3, 0x48c4, 0x48c5, 0x48c5, 0x48c6, 0x48c7, 0x48c8, 0x48c9,
- 0x48ca, 0x48cb, 0x48cc, 0x48ce, 0x48cf, 0x48d0, 0x48d1, 0x48d3,
- 0x48d4, 0x48d5, 0x48d7, 0x48d8, 0x48da, 0x48db, 0x48dd, 0x48df,
- 0x48e0, 0x48e0, 0x48e0, 0x48e0, 0x48e1, 0x48e1, 0x48e2, 0x48e2,
- 0x48e3, 0x48e4, 0x48e5, 0x48e5, 0x48e6, 0x48e7, 0x48e8, 0x48e9,
- 0x48ea, 0x48eb, 0x48ec, 0x48ee, 0x48ef, 0x48f0, 0x48f1, 0x48f3,
- 0x48f4, 0x48f5, 0x48f7, 0x48f8, 0x48fa, 0x48fb, 0x48fd, 0x48ff,
- 0x48e0, 0x48e0, 0x48e0, 0x48e0, 0x48e1, 0x48e1, 0x48e2, 0x48e2,
- 0x48e3, 0x48e4, 0x48e5, 0x48e5, 0x48e6, 0x48e7, 0x48e8, 0x48e9,
- 0x48ea, 0x48eb, 0x48ec, 0x48ee, 0x48ef, 0x48f0, 0x48f1, 0x48f3,
- 0x48f4, 0x48f5, 0x48f7, 0x48f8, 0x48fa, 0x48fb, 0x48fd, 0x48ff,
- 0x4900, 0x4900, 0x4900, 0x4900, 0x4901, 0x4901, 0x4902, 0x4902,
- 0x4903, 0x4904, 0x4905, 0x4905, 0x4906, 0x4907, 0x4908, 0x4909,
- 0x490a, 0x490b, 0x490c, 0x490e, 0x490f, 0x4910, 0x4911, 0x4913,
- 0x4914, 0x4915, 0x4917, 0x4918, 0x491a, 0x491b, 0x491d, 0x491f,
- 0x4920, 0x4920, 0x4920, 0x4920, 0x4921, 0x4921, 0x4922, 0x4922,
- 0x4923, 0x4924, 0x4925, 0x4925, 0x4926, 0x4927, 0x4928, 0x4929,
- 0x492a, 0x492b, 0x492c, 0x492e, 0x492f, 0x4930, 0x4931, 0x4933,
- 0x4934, 0x4935, 0x4937, 0x4938, 0x493a, 0x493b, 0x493d, 0x493f,
- 0x4940, 0x4940, 0x4940, 0x4940, 0x4941, 0x4941, 0x4942, 0x4942,
- 0x4943, 0x4944, 0x4945, 0x4945, 0x4946, 0x4947, 0x4948, 0x4949,
- 0x494a, 0x494b, 0x494c, 0x494e, 0x494f, 0x4950, 0x4951, 0x4953,
- 0x4954, 0x4955, 0x4957, 0x4958, 0x495a, 0x495b, 0x495d, 0x495f,
- 0x4940, 0x4940, 0x4940, 0x4940, 0x4941, 0x4941, 0x4942, 0x4942,
- 0x4943, 0x4944, 0x4945, 0x4945, 0x4946, 0x4947, 0x4948, 0x4949,
- 0x494a, 0x494b, 0x494c, 0x494e, 0x494f, 0x4950, 0x4951, 0x4953,
- 0x4954, 0x4955, 0x4957, 0x4958, 0x495a, 0x495b, 0x495d, 0x495f,
- 0x4960, 0x4960, 0x4960, 0x4960, 0x4961, 0x4961, 0x4962, 0x4962,
- 0x4963, 0x4964, 0x4965, 0x4965, 0x4966, 0x4967, 0x4968, 0x4969,
- 0x496a, 0x496b, 0x496c, 0x496e, 0x496f, 0x4970, 0x4971, 0x4973,
- 0x4974, 0x4975, 0x4977, 0x4978, 0x497a, 0x497b, 0x497d, 0x497f,
- 0x4980, 0x4980, 0x4980, 0x4980, 0x4981, 0x4981, 0x4982, 0x4982,
- 0x4983, 0x4984, 0x4985, 0x4985, 0x4986, 0x4987, 0x4988, 0x4989,
- 0x498a, 0x498b, 0x498c, 0x498e, 0x498f, 0x4990, 0x4991, 0x4993,
- 0x4994, 0x4995, 0x4997, 0x4998, 0x499a, 0x499b, 0x499d, 0x499f,
- 0x49a0, 0x49a0, 0x49a0, 0x49a0, 0x49a1, 0x49a1, 0x49a2, 0x49a2,
- 0x49a3, 0x49a4, 0x49a5, 0x49a5, 0x49a6, 0x49a7, 0x49a8, 0x49a9,
- 0x49aa, 0x49ab, 0x49ac, 0x49ae, 0x49af, 0x49b0, 0x49b1, 0x49b3,
- 0x49b4, 0x49b5, 0x49b7, 0x49b8, 0x49ba, 0x49bb, 0x49bd, 0x49bf,
- 0x49c0, 0x49c0, 0x49c0, 0x49c0, 0x49c1, 0x49c1, 0x49c2, 0x49c2,
- 0x49c3, 0x49c4, 0x49c5, 0x49c5, 0x49c6, 0x49c7, 0x49c8, 0x49c9,
- 0x49ca, 0x49cb, 0x49cc, 0x49ce, 0x49cf, 0x49d0, 0x49d1, 0x49d3,
- 0x49d4, 0x49d5, 0x49d7, 0x49d8, 0x49da, 0x49db, 0x49dd, 0x49df,
- 0x49e0, 0x49e0, 0x49e0, 0x49e0, 0x49e1, 0x49e1, 0x49e2, 0x49e2,
- 0x49e3, 0x49e4, 0x49e5, 0x49e5, 0x49e6, 0x49e7, 0x49e8, 0x49e9,
- 0x49ea, 0x49eb, 0x49ec, 0x49ee, 0x49ef, 0x49f0, 0x49f1, 0x49f3,
- 0x49f4, 0x49f5, 0x49f7, 0x49f8, 0x49fa, 0x49fb, 0x49fd, 0x49ff,
- 0x4a00, 0x4a00, 0x4a00, 0x4a00, 0x4a01, 0x4a01, 0x4a02, 0x4a02,
- 0x4a03, 0x4a04, 0x4a05, 0x4a05, 0x4a06, 0x4a07, 0x4a08, 0x4a09,
- 0x4a0a, 0x4a0b, 0x4a0c, 0x4a0e, 0x4a0f, 0x4a10, 0x4a11, 0x4a13,
- 0x4a14, 0x4a15, 0x4a17, 0x4a18, 0x4a1a, 0x4a1b, 0x4a1d, 0x4a1f,
- 0x4a20, 0x4a20, 0x4a20, 0x4a20, 0x4a21, 0x4a21, 0x4a22, 0x4a22,
- 0x4a23, 0x4a24, 0x4a25, 0x4a25, 0x4a26, 0x4a27, 0x4a28, 0x4a29,
- 0x4a2a, 0x4a2b, 0x4a2c, 0x4a2e, 0x4a2f, 0x4a30, 0x4a31, 0x4a33,
- 0x4a34, 0x4a35, 0x4a37, 0x4a38, 0x4a3a, 0x4a3b, 0x4a3d, 0x4a3f,
- 0x4a40, 0x4a40, 0x4a40, 0x4a40, 0x4a41, 0x4a41, 0x4a42, 0x4a42,
- 0x4a43, 0x4a44, 0x4a45, 0x4a45, 0x4a46, 0x4a47, 0x4a48, 0x4a49,
- 0x4a4a, 0x4a4b, 0x4a4c, 0x4a4e, 0x4a4f, 0x4a50, 0x4a51, 0x4a53,
- 0x4a54, 0x4a55, 0x4a57, 0x4a58, 0x4a5a, 0x4a5b, 0x4a5d, 0x4a5f,
- 0x4a60, 0x4a60, 0x4a60, 0x4a60, 0x4a61, 0x4a61, 0x4a62, 0x4a62,
- 0x4a63, 0x4a64, 0x4a65, 0x4a65, 0x4a66, 0x4a67, 0x4a68, 0x4a69,
- 0x4a6a, 0x4a6b, 0x4a6c, 0x4a6e, 0x4a6f, 0x4a70, 0x4a71, 0x4a73,
- 0x4a74, 0x4a75, 0x4a77, 0x4a78, 0x4a7a, 0x4a7b, 0x4a7d, 0x4a7f,
- 0x4a80, 0x4a80, 0x4a80, 0x4a80, 0x4a81, 0x4a81, 0x4a82, 0x4a82,
- 0x4a83, 0x4a84, 0x4a85, 0x4a85, 0x4a86, 0x4a87, 0x4a88, 0x4a89,
- 0x4a8a, 0x4a8b, 0x4a8c, 0x4a8e, 0x4a8f, 0x4a90, 0x4a91, 0x4a93,
- 0x4a94, 0x4a95, 0x4a97, 0x4a98, 0x4a9a, 0x4a9b, 0x4a9d, 0x4a9f,
- 0x4aa0, 0x4aa0, 0x4aa0, 0x4aa0, 0x4aa1, 0x4aa1, 0x4aa2, 0x4aa2,
- 0x4aa3, 0x4aa4, 0x4aa5, 0x4aa5, 0x4aa6, 0x4aa7, 0x4aa8, 0x4aa9,
- 0x4aaa, 0x4aab, 0x4aac, 0x4aae, 0x4aaf, 0x4ab0, 0x4ab1, 0x4ab3,
- 0x4ab4, 0x4ab5, 0x4ab7, 0x4ab8, 0x4aba, 0x4abb, 0x4abd, 0x4abf,
- 0x4ac0, 0x4ac0, 0x4ac0, 0x4ac0, 0x4ac1, 0x4ac1, 0x4ac2, 0x4ac2,
- 0x4ac3, 0x4ac4, 0x4ac5, 0x4ac5, 0x4ac6, 0x4ac7, 0x4ac8, 0x4ac9,
- 0x4aca, 0x4acb, 0x4acc, 0x4ace, 0x4acf, 0x4ad0, 0x4ad1, 0x4ad3,
- 0x4ad4, 0x4ad5, 0x4ad7, 0x4ad8, 0x4ada, 0x4adb, 0x4add, 0x4adf,
- 0x4ae0, 0x4ae0, 0x4ae0, 0x4ae0, 0x4ae1, 0x4ae1, 0x4ae2, 0x4ae2,
- 0x4ae3, 0x4ae4, 0x4ae5, 0x4ae5, 0x4ae6, 0x4ae7, 0x4ae8, 0x4ae9,
- 0x4aea, 0x4aeb, 0x4aec, 0x4aee, 0x4aef, 0x4af0, 0x4af1, 0x4af3,
- 0x4af4, 0x4af5, 0x4af7, 0x4af8, 0x4afa, 0x4afb, 0x4afd, 0x4aff,
- 0x4b00, 0x4b00, 0x4b00, 0x4b00, 0x4b01, 0x4b01, 0x4b02, 0x4b02,
- 0x4b03, 0x4b04, 0x4b05, 0x4b05, 0x4b06, 0x4b07, 0x4b08, 0x4b09,
- 0x4b0a, 0x4b0b, 0x4b0c, 0x4b0e, 0x4b0f, 0x4b10, 0x4b11, 0x4b13,
- 0x4b14, 0x4b15, 0x4b17, 0x4b18, 0x4b1a, 0x4b1b, 0x4b1d, 0x4b1f,
- 0x4b20, 0x4b20, 0x4b20, 0x4b20, 0x4b21, 0x4b21, 0x4b22, 0x4b22,
- 0x4b23, 0x4b24, 0x4b25, 0x4b25, 0x4b26, 0x4b27, 0x4b28, 0x4b29,
- 0x4b2a, 0x4b2b, 0x4b2c, 0x4b2e, 0x4b2f, 0x4b30, 0x4b31, 0x4b33,
- 0x4b34, 0x4b35, 0x4b37, 0x4b38, 0x4b3a, 0x4b3b, 0x4b3d, 0x4b3f,
- 0x4b40, 0x4b40, 0x4b40, 0x4b40, 0x4b41, 0x4b41, 0x4b42, 0x4b42,
- 0x4b43, 0x4b44, 0x4b45, 0x4b45, 0x4b46, 0x4b47, 0x4b48, 0x4b49,
- 0x4b4a, 0x4b4b, 0x4b4c, 0x4b4e, 0x4b4f, 0x4b50, 0x4b51, 0x4b53,
- 0x4b54, 0x4b55, 0x4b57, 0x4b58, 0x4b5a, 0x4b5b, 0x4b5d, 0x4b5f,
- 0x4b80, 0x4b80, 0x4b80, 0x4b80, 0x4b81, 0x4b81, 0x4b82, 0x4b82,
- 0x4b83, 0x4b84, 0x4b85, 0x4b85, 0x4b86, 0x4b87, 0x4b88, 0x4b89,
- 0x4b8a, 0x4b8b, 0x4b8c, 0x4b8e, 0x4b8f, 0x4b90, 0x4b91, 0x4b93,
- 0x4b94, 0x4b95, 0x4b97, 0x4b98, 0x4b9a, 0x4b9b, 0x4b9d, 0x4b9f,
- 0x4ba0, 0x4ba0, 0x4ba0, 0x4ba0, 0x4ba1, 0x4ba1, 0x4ba2, 0x4ba2,
- 0x4ba3, 0x4ba4, 0x4ba5, 0x4ba5, 0x4ba6, 0x4ba7, 0x4ba8, 0x4ba9,
- 0x4baa, 0x4bab, 0x4bac, 0x4bae, 0x4baf, 0x4bb0, 0x4bb1, 0x4bb3,
- 0x4bb4, 0x4bb5, 0x4bb7, 0x4bb8, 0x4bba, 0x4bbb, 0x4bbd, 0x4bbf,
- 0x4bc0, 0x4bc0, 0x4bc0, 0x4bc0, 0x4bc1, 0x4bc1, 0x4bc2, 0x4bc2,
- 0x4bc3, 0x4bc4, 0x4bc5, 0x4bc5, 0x4bc6, 0x4bc7, 0x4bc8, 0x4bc9,
- 0x4bca, 0x4bcb, 0x4bcc, 0x4bce, 0x4bcf, 0x4bd0, 0x4bd1, 0x4bd3,
- 0x4bd4, 0x4bd5, 0x4bd7, 0x4bd8, 0x4bda, 0x4bdb, 0x4bdd, 0x4bdf,
- 0x4be0, 0x4be0, 0x4be0, 0x4be0, 0x4be1, 0x4be1, 0x4be2, 0x4be2,
- 0x4be3, 0x4be4, 0x4be5, 0x4be5, 0x4be6, 0x4be7, 0x4be8, 0x4be9,
- 0x4bea, 0x4beb, 0x4bec, 0x4bee, 0x4bef, 0x4bf0, 0x4bf1, 0x4bf3,
- 0x4bf4, 0x4bf5, 0x4bf7, 0x4bf8, 0x4bfa, 0x4bfb, 0x4bfd, 0x4bff,
- 0x4c00, 0x4c00, 0x4c00, 0x4c00, 0x4c01, 0x4c01, 0x4c02, 0x4c02,
- 0x4c03, 0x4c04, 0x4c05, 0x4c05, 0x4c06, 0x4c07, 0x4c08, 0x4c09,
- 0x4c0a, 0x4c0b, 0x4c0c, 0x4c0e, 0x4c0f, 0x4c10, 0x4c11, 0x4c13,
- 0x4c14, 0x4c15, 0x4c17, 0x4c18, 0x4c1a, 0x4c1b, 0x4c1d, 0x4c1f,
- 0x4c40, 0x4c40, 0x4c40, 0x4c40, 0x4c41, 0x4c41, 0x4c42, 0x4c42,
- 0x4c43, 0x4c44, 0x4c45, 0x4c45, 0x4c46, 0x4c47, 0x4c48, 0x4c49,
- 0x4c4a, 0x4c4b, 0x4c4c, 0x4c4e, 0x4c4f, 0x4c50, 0x4c51, 0x4c53,
- 0x4c54, 0x4c55, 0x4c57, 0x4c58, 0x4c5a, 0x4c5b, 0x4c5d, 0x4c5f,
- 0x4c60, 0x4c60, 0x4c60, 0x4c60, 0x4c61, 0x4c61, 0x4c62, 0x4c62,
- 0x4c63, 0x4c64, 0x4c65, 0x4c65, 0x4c66, 0x4c67, 0x4c68, 0x4c69,
- 0x4c6a, 0x4c6b, 0x4c6c, 0x4c6e, 0x4c6f, 0x4c70, 0x4c71, 0x4c73,
- 0x4c74, 0x4c75, 0x4c77, 0x4c78, 0x4c7a, 0x4c7b, 0x4c7d, 0x4c7f,
- 0x4c80, 0x4c80, 0x4c80, 0x4c80, 0x4c81, 0x4c81, 0x4c82, 0x4c82,
- 0x4c83, 0x4c84, 0x4c85, 0x4c85, 0x4c86, 0x4c87, 0x4c88, 0x4c89,
- 0x4c8a, 0x4c8b, 0x4c8c, 0x4c8e, 0x4c8f, 0x4c90, 0x4c91, 0x4c93,
- 0x4c94, 0x4c95, 0x4c97, 0x4c98, 0x4c9a, 0x4c9b, 0x4c9d, 0x4c9f,
- 0x4cc0, 0x4cc0, 0x4cc0, 0x4cc0, 0x4cc1, 0x4cc1, 0x4cc2, 0x4cc2,
- 0x4cc3, 0x4cc4, 0x4cc5, 0x4cc5, 0x4cc6, 0x4cc7, 0x4cc8, 0x4cc9,
- 0x4cca, 0x4ccb, 0x4ccc, 0x4cce, 0x4ccf, 0x4cd0, 0x4cd1, 0x4cd3,
- 0x4cd4, 0x4cd5, 0x4cd7, 0x4cd8, 0x4cda, 0x4cdb, 0x4cdd, 0x4cdf,
- 0x4ce0, 0x4ce0, 0x4ce0, 0x4ce0, 0x4ce1, 0x4ce1, 0x4ce2, 0x4ce2,
- 0x4ce3, 0x4ce4, 0x4ce5, 0x4ce5, 0x4ce6, 0x4ce7, 0x4ce8, 0x4ce9,
- 0x4cea, 0x4ceb, 0x4cec, 0x4cee, 0x4cef, 0x4cf0, 0x4cf1, 0x4cf3,
- 0x4cf4, 0x4cf5, 0x4cf7, 0x4cf8, 0x4cfa, 0x4cfb, 0x4cfd, 0x4cff,
- 0x4d00, 0x4d00, 0x4d00, 0x4d00, 0x4d01, 0x4d01, 0x4d02, 0x4d02,
- 0x4d03, 0x4d04, 0x4d05, 0x4d05, 0x4d06, 0x4d07, 0x4d08, 0x4d09,
- 0x4d0a, 0x4d0b, 0x4d0c, 0x4d0e, 0x4d0f, 0x4d10, 0x4d11, 0x4d13,
- 0x4d14, 0x4d15, 0x4d17, 0x4d18, 0x4d1a, 0x4d1b, 0x4d1d, 0x4d1f,
- 0x4d40, 0x4d40, 0x4d40, 0x4d40, 0x4d41, 0x4d41, 0x4d42, 0x4d42,
- 0x4d43, 0x4d44, 0x4d45, 0x4d45, 0x4d46, 0x4d47, 0x4d48, 0x4d49,
- 0x4d4a, 0x4d4b, 0x4d4c, 0x4d4e, 0x4d4f, 0x4d50, 0x4d51, 0x4d53,
- 0x4d54, 0x4d55, 0x4d57, 0x4d58, 0x4d5a, 0x4d5b, 0x4d5d, 0x4d5f,
- 0x4d60, 0x4d60, 0x4d60, 0x4d60, 0x4d61, 0x4d61, 0x4d62, 0x4d62,
- 0x4d63, 0x4d64, 0x4d65, 0x4d65, 0x4d66, 0x4d67, 0x4d68, 0x4d69,
- 0x4d6a, 0x4d6b, 0x4d6c, 0x4d6e, 0x4d6f, 0x4d70, 0x4d71, 0x4d73,
- 0x4d74, 0x4d75, 0x4d77, 0x4d78, 0x4d7a, 0x4d7b, 0x4d7d, 0x4d7f,
- 0x4d80, 0x4d80, 0x4d80, 0x4d80, 0x4d81, 0x4d81, 0x4d82, 0x4d82,
- 0x4d83, 0x4d84, 0x4d85, 0x4d85, 0x4d86, 0x4d87, 0x4d88, 0x4d89,
- 0x4d8a, 0x4d8b, 0x4d8c, 0x4d8e, 0x4d8f, 0x4d90, 0x4d91, 0x4d93,
- 0x4d94, 0x4d95, 0x4d97, 0x4d98, 0x4d9a, 0x4d9b, 0x4d9d, 0x4d9f,
- 0x4dc0, 0x4dc0, 0x4dc0, 0x4dc0, 0x4dc1, 0x4dc1, 0x4dc2, 0x4dc2,
- 0x4dc3, 0x4dc4, 0x4dc5, 0x4dc5, 0x4dc6, 0x4dc7, 0x4dc8, 0x4dc9,
- 0x4dca, 0x4dcb, 0x4dcc, 0x4dce, 0x4dcf, 0x4dd0, 0x4dd1, 0x4dd3,
- 0x4dd4, 0x4dd5, 0x4dd7, 0x4dd8, 0x4dda, 0x4ddb, 0x4ddd, 0x4ddf,
- 0x4de0, 0x4de0, 0x4de0, 0x4de0, 0x4de1, 0x4de1, 0x4de2, 0x4de2,
- 0x4de3, 0x4de4, 0x4de5, 0x4de5, 0x4de6, 0x4de7, 0x4de8, 0x4de9,
- 0x4dea, 0x4deb, 0x4dec, 0x4dee, 0x4def, 0x4df0, 0x4df1, 0x4df3,
- 0x4df4, 0x4df5, 0x4df7, 0x4df8, 0x4dfa, 0x4dfb, 0x4dfd, 0x4dff,
- 0x4e20, 0x4e20, 0x4e20, 0x4e20, 0x4e21, 0x4e21, 0x4e22, 0x4e22,
- 0x4e23, 0x4e24, 0x4e25, 0x4e25, 0x4e26, 0x4e27, 0x4e28, 0x4e29,
- 0x4e2a, 0x4e2b, 0x4e2c, 0x4e2e, 0x4e2f, 0x4e30, 0x4e31, 0x4e33,
- 0x4e34, 0x4e35, 0x4e37, 0x4e38, 0x4e3a, 0x4e3b, 0x4e3d, 0x4e3f,
- 0x4e40, 0x4e40, 0x4e40, 0x4e40, 0x4e41, 0x4e41, 0x4e42, 0x4e42,
- 0x4e43, 0x4e44, 0x4e45, 0x4e45, 0x4e46, 0x4e47, 0x4e48, 0x4e49,
- 0x4e4a, 0x4e4b, 0x4e4c, 0x4e4e, 0x4e4f, 0x4e50, 0x4e51, 0x4e53,
- 0x4e54, 0x4e55, 0x4e57, 0x4e58, 0x4e5a, 0x4e5b, 0x4e5d, 0x4e5f,
- 0x4e80, 0x4e80, 0x4e80, 0x4e80, 0x4e81, 0x4e81, 0x4e82, 0x4e82,
- 0x4e83, 0x4e84, 0x4e85, 0x4e85, 0x4e86, 0x4e87, 0x4e88, 0x4e89,
- 0x4e8a, 0x4e8b, 0x4e8c, 0x4e8e, 0x4e8f, 0x4e90, 0x4e91, 0x4e93,
- 0x4e94, 0x4e95, 0x4e97, 0x4e98, 0x4e9a, 0x4e9b, 0x4e9d, 0x4e9f,
- 0x4ea0, 0x4ea0, 0x4ea0, 0x4ea0, 0x4ea1, 0x4ea1, 0x4ea2, 0x4ea2,
- 0x4ea3, 0x4ea4, 0x4ea5, 0x4ea5, 0x4ea6, 0x4ea7, 0x4ea8, 0x4ea9,
- 0x4eaa, 0x4eab, 0x4eac, 0x4eae, 0x4eaf, 0x4eb0, 0x4eb1, 0x4eb3,
- 0x4eb4, 0x4eb5, 0x4eb7, 0x4eb8, 0x4eba, 0x4ebb, 0x4ebd, 0x4ebf,
- 0x4ee0, 0x4ee0, 0x4ee0, 0x4ee0, 0x4ee1, 0x4ee1, 0x4ee2, 0x4ee2,
- 0x4ee3, 0x4ee4, 0x4ee5, 0x4ee5, 0x4ee6, 0x4ee7, 0x4ee8, 0x4ee9,
- 0x4eea, 0x4eeb, 0x4eec, 0x4eee, 0x4eef, 0x4ef0, 0x4ef1, 0x4ef3,
- 0x4ef4, 0x4ef5, 0x4ef7, 0x4ef8, 0x4efa, 0x4efb, 0x4efd, 0x4eff,
- 0x4f00, 0x4f00, 0x4f00, 0x4f00, 0x4f01, 0x4f01, 0x4f02, 0x4f02,
- 0x4f03, 0x4f04, 0x4f05, 0x4f05, 0x4f06, 0x4f07, 0x4f08, 0x4f09,
- 0x4f0a, 0x4f0b, 0x4f0c, 0x4f0e, 0x4f0f, 0x4f10, 0x4f11, 0x4f13,
- 0x4f14, 0x4f15, 0x4f17, 0x4f18, 0x4f1a, 0x4f1b, 0x4f1d, 0x4f1f,
- 0x4f40, 0x4f40, 0x4f40, 0x4f40, 0x4f41, 0x4f41, 0x4f42, 0x4f42,
- 0x4f43, 0x4f44, 0x4f45, 0x4f45, 0x4f46, 0x4f47, 0x4f48, 0x4f49,
- 0x4f4a, 0x4f4b, 0x4f4c, 0x4f4e, 0x4f4f, 0x4f50, 0x4f51, 0x4f53,
- 0x4f54, 0x4f55, 0x4f57, 0x4f58, 0x4f5a, 0x4f5b, 0x4f5d, 0x4f5f,
- 0x4f60, 0x4f60, 0x4f60, 0x4f60, 0x4f61, 0x4f61, 0x4f62, 0x4f62,
- 0x4f63, 0x4f64, 0x4f65, 0x4f65, 0x4f66, 0x4f67, 0x4f68, 0x4f69,
- 0x4f6a, 0x4f6b, 0x4f6c, 0x4f6e, 0x4f6f, 0x4f70, 0x4f71, 0x4f73,
- 0x4f74, 0x4f75, 0x4f77, 0x4f78, 0x4f7a, 0x4f7b, 0x4f7d, 0x4f7f,
- 0x4fa0, 0x4fa0, 0x4fa0, 0x4fa0, 0x4fa1, 0x4fa1, 0x4fa2, 0x4fa2,
- 0x4fa3, 0x4fa4, 0x4fa5, 0x4fa5, 0x4fa6, 0x4fa7, 0x4fa8, 0x4fa9,
- 0x4faa, 0x4fab, 0x4fac, 0x4fae, 0x4faf, 0x4fb0, 0x4fb1, 0x4fb3,
- 0x4fb4, 0x4fb5, 0x4fb7, 0x4fb8, 0x4fba, 0x4fbb, 0x4fbd, 0x4fbf,
- 0x4fe0, 0x4fe0, 0x4fe0, 0x4fe0, 0x4fe1, 0x4fe1, 0x4fe2, 0x4fe2,
- 0x4fe3, 0x4fe4, 0x4fe5, 0x4fe5, 0x4fe6, 0x4fe7, 0x4fe8, 0x4fe9,
- 0x4fea, 0x4feb, 0x4fec, 0x4fee, 0x4fef, 0x4ff0, 0x4ff1, 0x4ff3,
- 0x4ff4, 0x4ff5, 0x4ff7, 0x4ff8, 0x4ffa, 0x4ffb, 0x4ffd, 0x4fff,
- 0x5000, 0x5000, 0x5000, 0x5000, 0x5001, 0x5001, 0x5002, 0x5002,
- 0x5003, 0x5004, 0x5005, 0x5005, 0x5006, 0x5007, 0x5008, 0x5009,
- 0x500a, 0x500b, 0x500c, 0x500e, 0x500f, 0x5010, 0x5011, 0x5013,
- 0x5014, 0x5015, 0x5017, 0x5018, 0x501a, 0x501b, 0x501d, 0x501f,
- 0x5000, 0x5000, 0x5000, 0x5000, 0x5001, 0x5001, 0x5002, 0x5002,
- 0x5003, 0x5004, 0x5005, 0x5005, 0x5006, 0x5007, 0x5008, 0x5009,
- 0x500a, 0x500b, 0x500c, 0x500e, 0x500f, 0x5010, 0x5011, 0x5013,
- 0x5014, 0x5015, 0x5017, 0x5018, 0x501a, 0x501b, 0x501d, 0x501f,
- 0x5000, 0x5000, 0x5000, 0x5000, 0x5001, 0x5001, 0x5002, 0x5002,
- 0x5003, 0x5004, 0x5005, 0x5005, 0x5006, 0x5007, 0x5008, 0x5009,
- 0x500a, 0x500b, 0x500c, 0x500e, 0x500f, 0x5010, 0x5011, 0x5013,
- 0x5014, 0x5015, 0x5017, 0x5018, 0x501a, 0x501b, 0x501d, 0x501f,
- 0x5000, 0x5000, 0x5000, 0x5000, 0x5001, 0x5001, 0x5002, 0x5002,
- 0x5003, 0x5004, 0x5005, 0x5005, 0x5006, 0x5007, 0x5008, 0x5009,
- 0x500a, 0x500b, 0x500c, 0x500e, 0x500f, 0x5010, 0x5011, 0x5013,
- 0x5014, 0x5015, 0x5017, 0x5018, 0x501a, 0x501b, 0x501d, 0x501f,
- 0x5000, 0x5000, 0x5000, 0x5000, 0x5001, 0x5001, 0x5002, 0x5002,
- 0x5003, 0x5004, 0x5005, 0x5005, 0x5006, 0x5007, 0x5008, 0x5009,
- 0x500a, 0x500b, 0x500c, 0x500e, 0x500f, 0x5010, 0x5011, 0x5013,
- 0x5014, 0x5015, 0x5017, 0x5018, 0x501a, 0x501b, 0x501d, 0x501f,
- 0x5020, 0x5020, 0x5020, 0x5020, 0x5021, 0x5021, 0x5022, 0x5022,
- 0x5023, 0x5024, 0x5025, 0x5025, 0x5026, 0x5027, 0x5028, 0x5029,
- 0x502a, 0x502b, 0x502c, 0x502e, 0x502f, 0x5030, 0x5031, 0x5033,
- 0x5034, 0x5035, 0x5037, 0x5038, 0x503a, 0x503b, 0x503d, 0x503f,
- 0x5020, 0x5020, 0x5020, 0x5020, 0x5021, 0x5021, 0x5022, 0x5022,
- 0x5023, 0x5024, 0x5025, 0x5025, 0x5026, 0x5027, 0x5028, 0x5029,
- 0x502a, 0x502b, 0x502c, 0x502e, 0x502f, 0x5030, 0x5031, 0x5033,
- 0x5034, 0x5035, 0x5037, 0x5038, 0x503a, 0x503b, 0x503d, 0x503f,
- 0x5020, 0x5020, 0x5020, 0x5020, 0x5021, 0x5021, 0x5022, 0x5022,
- 0x5023, 0x5024, 0x5025, 0x5025, 0x5026, 0x5027, 0x5028, 0x5029,
- 0x502a, 0x502b, 0x502c, 0x502e, 0x502f, 0x5030, 0x5031, 0x5033,
- 0x5034, 0x5035, 0x5037, 0x5038, 0x503a, 0x503b, 0x503d, 0x503f,
- 0x5040, 0x5040, 0x5040, 0x5040, 0x5041, 0x5041, 0x5042, 0x5042,
- 0x5043, 0x5044, 0x5045, 0x5045, 0x5046, 0x5047, 0x5048, 0x5049,
- 0x504a, 0x504b, 0x504c, 0x504e, 0x504f, 0x5050, 0x5051, 0x5053,
- 0x5054, 0x5055, 0x5057, 0x5058, 0x505a, 0x505b, 0x505d, 0x505f,
- 0x5040, 0x5040, 0x5040, 0x5040, 0x5041, 0x5041, 0x5042, 0x5042,
- 0x5043, 0x5044, 0x5045, 0x5045, 0x5046, 0x5047, 0x5048, 0x5049,
- 0x504a, 0x504b, 0x504c, 0x504e, 0x504f, 0x5050, 0x5051, 0x5053,
- 0x5054, 0x5055, 0x5057, 0x5058, 0x505a, 0x505b, 0x505d, 0x505f,
- 0x5060, 0x5060, 0x5060, 0x5060, 0x5061, 0x5061, 0x5062, 0x5062,
- 0x5063, 0x5064, 0x5065, 0x5065, 0x5066, 0x5067, 0x5068, 0x5069,
- 0x506a, 0x506b, 0x506c, 0x506e, 0x506f, 0x5070, 0x5071, 0x5073,
- 0x5074, 0x5075, 0x5077, 0x5078, 0x507a, 0x507b, 0x507d, 0x507f,
- 0x5060, 0x5060, 0x5060, 0x5060, 0x5061, 0x5061, 0x5062, 0x5062,
- 0x5063, 0x5064, 0x5065, 0x5065, 0x5066, 0x5067, 0x5068, 0x5069,
- 0x506a, 0x506b, 0x506c, 0x506e, 0x506f, 0x5070, 0x5071, 0x5073,
- 0x5074, 0x5075, 0x5077, 0x5078, 0x507a, 0x507b, 0x507d, 0x507f,
- 0x5080, 0x5080, 0x5080, 0x5080, 0x5081, 0x5081, 0x5082, 0x5082,
- 0x5083, 0x5084, 0x5085, 0x5085, 0x5086, 0x5087, 0x5088, 0x5089,
- 0x508a, 0x508b, 0x508c, 0x508e, 0x508f, 0x5090, 0x5091, 0x5093,
- 0x5094, 0x5095, 0x5097, 0x5098, 0x509a, 0x509b, 0x509d, 0x509f,
- 0x50a0, 0x50a0, 0x50a0, 0x50a0, 0x50a1, 0x50a1, 0x50a2, 0x50a2,
- 0x50a3, 0x50a4, 0x50a5, 0x50a5, 0x50a6, 0x50a7, 0x50a8, 0x50a9,
- 0x50aa, 0x50ab, 0x50ac, 0x50ae, 0x50af, 0x50b0, 0x50b1, 0x50b3,
- 0x50b4, 0x50b5, 0x50b7, 0x50b8, 0x50ba, 0x50bb, 0x50bd, 0x50bf,
- 0x50a0, 0x50a0, 0x50a0, 0x50a0, 0x50a1, 0x50a1, 0x50a2, 0x50a2,
- 0x50a3, 0x50a4, 0x50a5, 0x50a5, 0x50a6, 0x50a7, 0x50a8, 0x50a9,
- 0x50aa, 0x50ab, 0x50ac, 0x50ae, 0x50af, 0x50b0, 0x50b1, 0x50b3,
- 0x50b4, 0x50b5, 0x50b7, 0x50b8, 0x50ba, 0x50bb, 0x50bd, 0x50bf,
- 0x50c0, 0x50c0, 0x50c0, 0x50c0, 0x50c1, 0x50c1, 0x50c2, 0x50c2,
- 0x50c3, 0x50c4, 0x50c5, 0x50c5, 0x50c6, 0x50c7, 0x50c8, 0x50c9,
- 0x50ca, 0x50cb, 0x50cc, 0x50ce, 0x50cf, 0x50d0, 0x50d1, 0x50d3,
- 0x50d4, 0x50d5, 0x50d7, 0x50d8, 0x50da, 0x50db, 0x50dd, 0x50df,
- 0x50e0, 0x50e0, 0x50e0, 0x50e0, 0x50e1, 0x50e1, 0x50e2, 0x50e2,
- 0x50e3, 0x50e4, 0x50e5, 0x50e5, 0x50e6, 0x50e7, 0x50e8, 0x50e9,
- 0x50ea, 0x50eb, 0x50ec, 0x50ee, 0x50ef, 0x50f0, 0x50f1, 0x50f3,
- 0x50f4, 0x50f5, 0x50f7, 0x50f8, 0x50fa, 0x50fb, 0x50fd, 0x50ff,
- 0x50e0, 0x50e0, 0x50e0, 0x50e0, 0x50e1, 0x50e1, 0x50e2, 0x50e2,
- 0x50e3, 0x50e4, 0x50e5, 0x50e5, 0x50e6, 0x50e7, 0x50e8, 0x50e9,
- 0x50ea, 0x50eb, 0x50ec, 0x50ee, 0x50ef, 0x50f0, 0x50f1, 0x50f3,
- 0x50f4, 0x50f5, 0x50f7, 0x50f8, 0x50fa, 0x50fb, 0x50fd, 0x50ff,
- 0x5100, 0x5100, 0x5100, 0x5100, 0x5101, 0x5101, 0x5102, 0x5102,
- 0x5103, 0x5104, 0x5105, 0x5105, 0x5106, 0x5107, 0x5108, 0x5109,
- 0x510a, 0x510b, 0x510c, 0x510e, 0x510f, 0x5110, 0x5111, 0x5113,
- 0x5114, 0x5115, 0x5117, 0x5118, 0x511a, 0x511b, 0x511d, 0x511f,
- 0x5120, 0x5120, 0x5120, 0x5120, 0x5121, 0x5121, 0x5122, 0x5122,
- 0x5123, 0x5124, 0x5125, 0x5125, 0x5126, 0x5127, 0x5128, 0x5129,
- 0x512a, 0x512b, 0x512c, 0x512e, 0x512f, 0x5130, 0x5131, 0x5133,
- 0x5134, 0x5135, 0x5137, 0x5138, 0x513a, 0x513b, 0x513d, 0x513f,
- 0x5140, 0x5140, 0x5140, 0x5140, 0x5141, 0x5141, 0x5142, 0x5142,
- 0x5143, 0x5144, 0x5145, 0x5145, 0x5146, 0x5147, 0x5148, 0x5149,
- 0x514a, 0x514b, 0x514c, 0x514e, 0x514f, 0x5150, 0x5151, 0x5153,
- 0x5154, 0x5155, 0x5157, 0x5158, 0x515a, 0x515b, 0x515d, 0x515f,
- 0x5140, 0x5140, 0x5140, 0x5140, 0x5141, 0x5141, 0x5142, 0x5142,
- 0x5143, 0x5144, 0x5145, 0x5145, 0x5146, 0x5147, 0x5148, 0x5149,
- 0x514a, 0x514b, 0x514c, 0x514e, 0x514f, 0x5150, 0x5151, 0x5153,
- 0x5154, 0x5155, 0x5157, 0x5158, 0x515a, 0x515b, 0x515d, 0x515f,
- 0x5160, 0x5160, 0x5160, 0x5160, 0x5161, 0x5161, 0x5162, 0x5162,
- 0x5163, 0x5164, 0x5165, 0x5165, 0x5166, 0x5167, 0x5168, 0x5169,
- 0x516a, 0x516b, 0x516c, 0x516e, 0x516f, 0x5170, 0x5171, 0x5173,
- 0x5174, 0x5175, 0x5177, 0x5178, 0x517a, 0x517b, 0x517d, 0x517f,
- 0x5180, 0x5180, 0x5180, 0x5180, 0x5181, 0x5181, 0x5182, 0x5182,
- 0x5183, 0x5184, 0x5185, 0x5185, 0x5186, 0x5187, 0x5188, 0x5189,
- 0x518a, 0x518b, 0x518c, 0x518e, 0x518f, 0x5190, 0x5191, 0x5193,
- 0x5194, 0x5195, 0x5197, 0x5198, 0x519a, 0x519b, 0x519d, 0x519f,
- 0x51a0, 0x51a0, 0x51a0, 0x51a0, 0x51a1, 0x51a1, 0x51a2, 0x51a2,
- 0x51a3, 0x51a4, 0x51a5, 0x51a5, 0x51a6, 0x51a7, 0x51a8, 0x51a9,
- 0x51aa, 0x51ab, 0x51ac, 0x51ae, 0x51af, 0x51b0, 0x51b1, 0x51b3,
- 0x51b4, 0x51b5, 0x51b7, 0x51b8, 0x51ba, 0x51bb, 0x51bd, 0x51bf,
- 0x51c0, 0x51c0, 0x51c0, 0x51c0, 0x51c1, 0x51c1, 0x51c2, 0x51c2,
- 0x51c3, 0x51c4, 0x51c5, 0x51c5, 0x51c6, 0x51c7, 0x51c8, 0x51c9,
- 0x51ca, 0x51cb, 0x51cc, 0x51ce, 0x51cf, 0x51d0, 0x51d1, 0x51d3,
- 0x51d4, 0x51d5, 0x51d7, 0x51d8, 0x51da, 0x51db, 0x51dd, 0x51df,
- 0x51e0, 0x51e0, 0x51e0, 0x51e0, 0x51e1, 0x51e1, 0x51e2, 0x51e2,
- 0x51e3, 0x51e4, 0x51e5, 0x51e5, 0x51e6, 0x51e7, 0x51e8, 0x51e9,
- 0x51ea, 0x51eb, 0x51ec, 0x51ee, 0x51ef, 0x51f0, 0x51f1, 0x51f3,
- 0x51f4, 0x51f5, 0x51f7, 0x51f8, 0x51fa, 0x51fb, 0x51fd, 0x51ff,
- 0x5200, 0x5200, 0x5200, 0x5200, 0x5201, 0x5201, 0x5202, 0x5202,
- 0x5203, 0x5204, 0x5205, 0x5205, 0x5206, 0x5207, 0x5208, 0x5209,
- 0x520a, 0x520b, 0x520c, 0x520e, 0x520f, 0x5210, 0x5211, 0x5213,
- 0x5214, 0x5215, 0x5217, 0x5218, 0x521a, 0x521b, 0x521d, 0x521f,
- 0x5220, 0x5220, 0x5220, 0x5220, 0x5221, 0x5221, 0x5222, 0x5222,
- 0x5223, 0x5224, 0x5225, 0x5225, 0x5226, 0x5227, 0x5228, 0x5229,
- 0x522a, 0x522b, 0x522c, 0x522e, 0x522f, 0x5230, 0x5231, 0x5233,
- 0x5234, 0x5235, 0x5237, 0x5238, 0x523a, 0x523b, 0x523d, 0x523f,
- 0x5240, 0x5240, 0x5240, 0x5240, 0x5241, 0x5241, 0x5242, 0x5242,
- 0x5243, 0x5244, 0x5245, 0x5245, 0x5246, 0x5247, 0x5248, 0x5249,
- 0x524a, 0x524b, 0x524c, 0x524e, 0x524f, 0x5250, 0x5251, 0x5253,
- 0x5254, 0x5255, 0x5257, 0x5258, 0x525a, 0x525b, 0x525d, 0x525f,
- 0x5260, 0x5260, 0x5260, 0x5260, 0x5261, 0x5261, 0x5262, 0x5262,
- 0x5263, 0x5264, 0x5265, 0x5265, 0x5266, 0x5267, 0x5268, 0x5269,
- 0x526a, 0x526b, 0x526c, 0x526e, 0x526f, 0x5270, 0x5271, 0x5273,
- 0x5274, 0x5275, 0x5277, 0x5278, 0x527a, 0x527b, 0x527d, 0x527f,
- 0x5280, 0x5280, 0x5280, 0x5280, 0x5281, 0x5281, 0x5282, 0x5282,
- 0x5283, 0x5284, 0x5285, 0x5285, 0x5286, 0x5287, 0x5288, 0x5289,
- 0x528a, 0x528b, 0x528c, 0x528e, 0x528f, 0x5290, 0x5291, 0x5293,
- 0x5294, 0x5295, 0x5297, 0x5298, 0x529a, 0x529b, 0x529d, 0x529f,
- 0x52a0, 0x52a0, 0x52a0, 0x52a0, 0x52a1, 0x52a1, 0x52a2, 0x52a2,
- 0x52a3, 0x52a4, 0x52a5, 0x52a5, 0x52a6, 0x52a7, 0x52a8, 0x52a9,
- 0x52aa, 0x52ab, 0x52ac, 0x52ae, 0x52af, 0x52b0, 0x52b1, 0x52b3,
- 0x52b4, 0x52b5, 0x52b7, 0x52b8, 0x52ba, 0x52bb, 0x52bd, 0x52bf,
- 0x52c0, 0x52c0, 0x52c0, 0x52c0, 0x52c1, 0x52c1, 0x52c2, 0x52c2,
- 0x52c3, 0x52c4, 0x52c5, 0x52c5, 0x52c6, 0x52c7, 0x52c8, 0x52c9,
- 0x52ca, 0x52cb, 0x52cc, 0x52ce, 0x52cf, 0x52d0, 0x52d1, 0x52d3,
- 0x52d4, 0x52d5, 0x52d7, 0x52d8, 0x52da, 0x52db, 0x52dd, 0x52df,
- 0x52e0, 0x52e0, 0x52e0, 0x52e0, 0x52e1, 0x52e1, 0x52e2, 0x52e2,
- 0x52e3, 0x52e4, 0x52e5, 0x52e5, 0x52e6, 0x52e7, 0x52e8, 0x52e9,
- 0x52ea, 0x52eb, 0x52ec, 0x52ee, 0x52ef, 0x52f0, 0x52f1, 0x52f3,
- 0x52f4, 0x52f5, 0x52f7, 0x52f8, 0x52fa, 0x52fb, 0x52fd, 0x52ff,
- 0x5300, 0x5300, 0x5300, 0x5300, 0x5301, 0x5301, 0x5302, 0x5302,
- 0x5303, 0x5304, 0x5305, 0x5305, 0x5306, 0x5307, 0x5308, 0x5309,
- 0x530a, 0x530b, 0x530c, 0x530e, 0x530f, 0x5310, 0x5311, 0x5313,
- 0x5314, 0x5315, 0x5317, 0x5318, 0x531a, 0x531b, 0x531d, 0x531f,
- 0x5320, 0x5320, 0x5320, 0x5320, 0x5321, 0x5321, 0x5322, 0x5322,
- 0x5323, 0x5324, 0x5325, 0x5325, 0x5326, 0x5327, 0x5328, 0x5329,
- 0x532a, 0x532b, 0x532c, 0x532e, 0x532f, 0x5330, 0x5331, 0x5333,
- 0x5334, 0x5335, 0x5337, 0x5338, 0x533a, 0x533b, 0x533d, 0x533f,
- 0x5340, 0x5340, 0x5340, 0x5340, 0x5341, 0x5341, 0x5342, 0x5342,
- 0x5343, 0x5344, 0x5345, 0x5345, 0x5346, 0x5347, 0x5348, 0x5349,
- 0x534a, 0x534b, 0x534c, 0x534e, 0x534f, 0x5350, 0x5351, 0x5353,
- 0x5354, 0x5355, 0x5357, 0x5358, 0x535a, 0x535b, 0x535d, 0x535f,
- 0x5380, 0x5380, 0x5380, 0x5380, 0x5381, 0x5381, 0x5382, 0x5382,
- 0x5383, 0x5384, 0x5385, 0x5385, 0x5386, 0x5387, 0x5388, 0x5389,
- 0x538a, 0x538b, 0x538c, 0x538e, 0x538f, 0x5390, 0x5391, 0x5393,
- 0x5394, 0x5395, 0x5397, 0x5398, 0x539a, 0x539b, 0x539d, 0x539f,
- 0x53a0, 0x53a0, 0x53a0, 0x53a0, 0x53a1, 0x53a1, 0x53a2, 0x53a2,
- 0x53a3, 0x53a4, 0x53a5, 0x53a5, 0x53a6, 0x53a7, 0x53a8, 0x53a9,
- 0x53aa, 0x53ab, 0x53ac, 0x53ae, 0x53af, 0x53b0, 0x53b1, 0x53b3,
- 0x53b4, 0x53b5, 0x53b7, 0x53b8, 0x53ba, 0x53bb, 0x53bd, 0x53bf,
- 0x53c0, 0x53c0, 0x53c0, 0x53c0, 0x53c1, 0x53c1, 0x53c2, 0x53c2,
- 0x53c3, 0x53c4, 0x53c5, 0x53c5, 0x53c6, 0x53c7, 0x53c8, 0x53c9,
- 0x53ca, 0x53cb, 0x53cc, 0x53ce, 0x53cf, 0x53d0, 0x53d1, 0x53d3,
- 0x53d4, 0x53d5, 0x53d7, 0x53d8, 0x53da, 0x53db, 0x53dd, 0x53df,
- 0x53e0, 0x53e0, 0x53e0, 0x53e0, 0x53e1, 0x53e1, 0x53e2, 0x53e2,
- 0x53e3, 0x53e4, 0x53e5, 0x53e5, 0x53e6, 0x53e7, 0x53e8, 0x53e9,
- 0x53ea, 0x53eb, 0x53ec, 0x53ee, 0x53ef, 0x53f0, 0x53f1, 0x53f3,
- 0x53f4, 0x53f5, 0x53f7, 0x53f8, 0x53fa, 0x53fb, 0x53fd, 0x53ff,
- 0x5400, 0x5400, 0x5400, 0x5400, 0x5401, 0x5401, 0x5402, 0x5402,
- 0x5403, 0x5404, 0x5405, 0x5405, 0x5406, 0x5407, 0x5408, 0x5409,
- 0x540a, 0x540b, 0x540c, 0x540e, 0x540f, 0x5410, 0x5411, 0x5413,
- 0x5414, 0x5415, 0x5417, 0x5418, 0x541a, 0x541b, 0x541d, 0x541f,
- 0x5440, 0x5440, 0x5440, 0x5440, 0x5441, 0x5441, 0x5442, 0x5442,
- 0x5443, 0x5444, 0x5445, 0x5445, 0x5446, 0x5447, 0x5448, 0x5449,
- 0x544a, 0x544b, 0x544c, 0x544e, 0x544f, 0x5450, 0x5451, 0x5453,
- 0x5454, 0x5455, 0x5457, 0x5458, 0x545a, 0x545b, 0x545d, 0x545f,
- 0x5460, 0x5460, 0x5460, 0x5460, 0x5461, 0x5461, 0x5462, 0x5462,
- 0x5463, 0x5464, 0x5465, 0x5465, 0x5466, 0x5467, 0x5468, 0x5469,
- 0x546a, 0x546b, 0x546c, 0x546e, 0x546f, 0x5470, 0x5471, 0x5473,
- 0x5474, 0x5475, 0x5477, 0x5478, 0x547a, 0x547b, 0x547d, 0x547f,
- 0x5480, 0x5480, 0x5480, 0x5480, 0x5481, 0x5481, 0x5482, 0x5482,
- 0x5483, 0x5484, 0x5485, 0x5485, 0x5486, 0x5487, 0x5488, 0x5489,
- 0x548a, 0x548b, 0x548c, 0x548e, 0x548f, 0x5490, 0x5491, 0x5493,
- 0x5494, 0x5495, 0x5497, 0x5498, 0x549a, 0x549b, 0x549d, 0x549f,
- 0x54c0, 0x54c0, 0x54c0, 0x54c0, 0x54c1, 0x54c1, 0x54c2, 0x54c2,
- 0x54c3, 0x54c4, 0x54c5, 0x54c5, 0x54c6, 0x54c7, 0x54c8, 0x54c9,
- 0x54ca, 0x54cb, 0x54cc, 0x54ce, 0x54cf, 0x54d0, 0x54d1, 0x54d3,
- 0x54d4, 0x54d5, 0x54d7, 0x54d8, 0x54da, 0x54db, 0x54dd, 0x54df,
- 0x54e0, 0x54e0, 0x54e0, 0x54e0, 0x54e1, 0x54e1, 0x54e2, 0x54e2,
- 0x54e3, 0x54e4, 0x54e5, 0x54e5, 0x54e6, 0x54e7, 0x54e8, 0x54e9,
- 0x54ea, 0x54eb, 0x54ec, 0x54ee, 0x54ef, 0x54f0, 0x54f1, 0x54f3,
- 0x54f4, 0x54f5, 0x54f7, 0x54f8, 0x54fa, 0x54fb, 0x54fd, 0x54ff,
- 0x5500, 0x5500, 0x5500, 0x5500, 0x5501, 0x5501, 0x5502, 0x5502,
- 0x5503, 0x5504, 0x5505, 0x5505, 0x5506, 0x5507, 0x5508, 0x5509,
- 0x550a, 0x550b, 0x550c, 0x550e, 0x550f, 0x5510, 0x5511, 0x5513,
- 0x5514, 0x5515, 0x5517, 0x5518, 0x551a, 0x551b, 0x551d, 0x551f,
- 0x5540, 0x5540, 0x5540, 0x5540, 0x5541, 0x5541, 0x5542, 0x5542,
- 0x5543, 0x5544, 0x5545, 0x5545, 0x5546, 0x5547, 0x5548, 0x5549,
- 0x554a, 0x554b, 0x554c, 0x554e, 0x554f, 0x5550, 0x5551, 0x5553,
- 0x5554, 0x5555, 0x5557, 0x5558, 0x555a, 0x555b, 0x555d, 0x555f,
- 0x5560, 0x5560, 0x5560, 0x5560, 0x5561, 0x5561, 0x5562, 0x5562,
- 0x5563, 0x5564, 0x5565, 0x5565, 0x5566, 0x5567, 0x5568, 0x5569,
- 0x556a, 0x556b, 0x556c, 0x556e, 0x556f, 0x5570, 0x5571, 0x5573,
- 0x5574, 0x5575, 0x5577, 0x5578, 0x557a, 0x557b, 0x557d, 0x557f,
- 0x5580, 0x5580, 0x5580, 0x5580, 0x5581, 0x5581, 0x5582, 0x5582,
- 0x5583, 0x5584, 0x5585, 0x5585, 0x5586, 0x5587, 0x5588, 0x5589,
- 0x558a, 0x558b, 0x558c, 0x558e, 0x558f, 0x5590, 0x5591, 0x5593,
- 0x5594, 0x5595, 0x5597, 0x5598, 0x559a, 0x559b, 0x559d, 0x559f,
- 0x55c0, 0x55c0, 0x55c0, 0x55c0, 0x55c1, 0x55c1, 0x55c2, 0x55c2,
- 0x55c3, 0x55c4, 0x55c5, 0x55c5, 0x55c6, 0x55c7, 0x55c8, 0x55c9,
- 0x55ca, 0x55cb, 0x55cc, 0x55ce, 0x55cf, 0x55d0, 0x55d1, 0x55d3,
- 0x55d4, 0x55d5, 0x55d7, 0x55d8, 0x55da, 0x55db, 0x55dd, 0x55df,
- 0x55e0, 0x55e0, 0x55e0, 0x55e0, 0x55e1, 0x55e1, 0x55e2, 0x55e2,
- 0x55e3, 0x55e4, 0x55e5, 0x55e5, 0x55e6, 0x55e7, 0x55e8, 0x55e9,
- 0x55ea, 0x55eb, 0x55ec, 0x55ee, 0x55ef, 0x55f0, 0x55f1, 0x55f3,
- 0x55f4, 0x55f5, 0x55f7, 0x55f8, 0x55fa, 0x55fb, 0x55fd, 0x55ff,
- 0x5620, 0x5620, 0x5620, 0x5620, 0x5621, 0x5621, 0x5622, 0x5622,
- 0x5623, 0x5624, 0x5625, 0x5625, 0x5626, 0x5627, 0x5628, 0x5629,
- 0x562a, 0x562b, 0x562c, 0x562e, 0x562f, 0x5630, 0x5631, 0x5633,
- 0x5634, 0x5635, 0x5637, 0x5638, 0x563a, 0x563b, 0x563d, 0x563f,
- 0x5640, 0x5640, 0x5640, 0x5640, 0x5641, 0x5641, 0x5642, 0x5642,
- 0x5643, 0x5644, 0x5645, 0x5645, 0x5646, 0x5647, 0x5648, 0x5649,
- 0x564a, 0x564b, 0x564c, 0x564e, 0x564f, 0x5650, 0x5651, 0x5653,
- 0x5654, 0x5655, 0x5657, 0x5658, 0x565a, 0x565b, 0x565d, 0x565f,
- 0x5680, 0x5680, 0x5680, 0x5680, 0x5681, 0x5681, 0x5682, 0x5682,
- 0x5683, 0x5684, 0x5685, 0x5685, 0x5686, 0x5687, 0x5688, 0x5689,
- 0x568a, 0x568b, 0x568c, 0x568e, 0x568f, 0x5690, 0x5691, 0x5693,
- 0x5694, 0x5695, 0x5697, 0x5698, 0x569a, 0x569b, 0x569d, 0x569f,
- 0x56a0, 0x56a0, 0x56a0, 0x56a0, 0x56a1, 0x56a1, 0x56a2, 0x56a2,
- 0x56a3, 0x56a4, 0x56a5, 0x56a5, 0x56a6, 0x56a7, 0x56a8, 0x56a9,
- 0x56aa, 0x56ab, 0x56ac, 0x56ae, 0x56af, 0x56b0, 0x56b1, 0x56b3,
- 0x56b4, 0x56b5, 0x56b7, 0x56b8, 0x56ba, 0x56bb, 0x56bd, 0x56bf,
- 0x56e0, 0x56e0, 0x56e0, 0x56e0, 0x56e1, 0x56e1, 0x56e2, 0x56e2,
- 0x56e3, 0x56e4, 0x56e5, 0x56e5, 0x56e6, 0x56e7, 0x56e8, 0x56e9,
- 0x56ea, 0x56eb, 0x56ec, 0x56ee, 0x56ef, 0x56f0, 0x56f1, 0x56f3,
- 0x56f4, 0x56f5, 0x56f7, 0x56f8, 0x56fa, 0x56fb, 0x56fd, 0x56ff,
- 0x5700, 0x5700, 0x5700, 0x5700, 0x5701, 0x5701, 0x5702, 0x5702,
- 0x5703, 0x5704, 0x5705, 0x5705, 0x5706, 0x5707, 0x5708, 0x5709,
- 0x570a, 0x570b, 0x570c, 0x570e, 0x570f, 0x5710, 0x5711, 0x5713,
- 0x5714, 0x5715, 0x5717, 0x5718, 0x571a, 0x571b, 0x571d, 0x571f,
- 0x5740, 0x5740, 0x5740, 0x5740, 0x5741, 0x5741, 0x5742, 0x5742,
- 0x5743, 0x5744, 0x5745, 0x5745, 0x5746, 0x5747, 0x5748, 0x5749,
- 0x574a, 0x574b, 0x574c, 0x574e, 0x574f, 0x5750, 0x5751, 0x5753,
- 0x5754, 0x5755, 0x5757, 0x5758, 0x575a, 0x575b, 0x575d, 0x575f,
- 0x5760, 0x5760, 0x5760, 0x5760, 0x5761, 0x5761, 0x5762, 0x5762,
- 0x5763, 0x5764, 0x5765, 0x5765, 0x5766, 0x5767, 0x5768, 0x5769,
- 0x576a, 0x576b, 0x576c, 0x576e, 0x576f, 0x5770, 0x5771, 0x5773,
- 0x5774, 0x5775, 0x5777, 0x5778, 0x577a, 0x577b, 0x577d, 0x577f,
- 0x57a0, 0x57a0, 0x57a0, 0x57a0, 0x57a1, 0x57a1, 0x57a2, 0x57a2,
- 0x57a3, 0x57a4, 0x57a5, 0x57a5, 0x57a6, 0x57a7, 0x57a8, 0x57a9,
- 0x57aa, 0x57ab, 0x57ac, 0x57ae, 0x57af, 0x57b0, 0x57b1, 0x57b3,
- 0x57b4, 0x57b5, 0x57b7, 0x57b8, 0x57ba, 0x57bb, 0x57bd, 0x57bf,
- 0x57e0, 0x57e0, 0x57e0, 0x57e0, 0x57e1, 0x57e1, 0x57e2, 0x57e2,
- 0x57e3, 0x57e4, 0x57e5, 0x57e5, 0x57e6, 0x57e7, 0x57e8, 0x57e9,
- 0x57ea, 0x57eb, 0x57ec, 0x57ee, 0x57ef, 0x57f0, 0x57f1, 0x57f3,
- 0x57f4, 0x57f5, 0x57f7, 0x57f8, 0x57fa, 0x57fb, 0x57fd, 0x57ff,
- 0x5800, 0x5800, 0x5800, 0x5800, 0x5801, 0x5801, 0x5802, 0x5802,
- 0x5803, 0x5804, 0x5805, 0x5805, 0x5806, 0x5807, 0x5808, 0x5809,
- 0x580a, 0x580b, 0x580c, 0x580e, 0x580f, 0x5810, 0x5811, 0x5813,
- 0x5814, 0x5815, 0x5817, 0x5818, 0x581a, 0x581b, 0x581d, 0x581f,
- 0x5800, 0x5800, 0x5800, 0x5800, 0x5801, 0x5801, 0x5802, 0x5802,
- 0x5803, 0x5804, 0x5805, 0x5805, 0x5806, 0x5807, 0x5808, 0x5809,
- 0x580a, 0x580b, 0x580c, 0x580e, 0x580f, 0x5810, 0x5811, 0x5813,
- 0x5814, 0x5815, 0x5817, 0x5818, 0x581a, 0x581b, 0x581d, 0x581f,
- 0x5800, 0x5800, 0x5800, 0x5800, 0x5801, 0x5801, 0x5802, 0x5802,
- 0x5803, 0x5804, 0x5805, 0x5805, 0x5806, 0x5807, 0x5808, 0x5809,
- 0x580a, 0x580b, 0x580c, 0x580e, 0x580f, 0x5810, 0x5811, 0x5813,
- 0x5814, 0x5815, 0x5817, 0x5818, 0x581a, 0x581b, 0x581d, 0x581f,
- 0x5800, 0x5800, 0x5800, 0x5800, 0x5801, 0x5801, 0x5802, 0x5802,
- 0x5803, 0x5804, 0x5805, 0x5805, 0x5806, 0x5807, 0x5808, 0x5809,
- 0x580a, 0x580b, 0x580c, 0x580e, 0x580f, 0x5810, 0x5811, 0x5813,
- 0x5814, 0x5815, 0x5817, 0x5818, 0x581a, 0x581b, 0x581d, 0x581f,
- 0x5800, 0x5800, 0x5800, 0x5800, 0x5801, 0x5801, 0x5802, 0x5802,
- 0x5803, 0x5804, 0x5805, 0x5805, 0x5806, 0x5807, 0x5808, 0x5809,
- 0x580a, 0x580b, 0x580c, 0x580e, 0x580f, 0x5810, 0x5811, 0x5813,
- 0x5814, 0x5815, 0x5817, 0x5818, 0x581a, 0x581b, 0x581d, 0x581f,
- 0x5820, 0x5820, 0x5820, 0x5820, 0x5821, 0x5821, 0x5822, 0x5822,
- 0x5823, 0x5824, 0x5825, 0x5825, 0x5826, 0x5827, 0x5828, 0x5829,
- 0x582a, 0x582b, 0x582c, 0x582e, 0x582f, 0x5830, 0x5831, 0x5833,
- 0x5834, 0x5835, 0x5837, 0x5838, 0x583a, 0x583b, 0x583d, 0x583f,
- 0x5820, 0x5820, 0x5820, 0x5820, 0x5821, 0x5821, 0x5822, 0x5822,
- 0x5823, 0x5824, 0x5825, 0x5825, 0x5826, 0x5827, 0x5828, 0x5829,
- 0x582a, 0x582b, 0x582c, 0x582e, 0x582f, 0x5830, 0x5831, 0x5833,
- 0x5834, 0x5835, 0x5837, 0x5838, 0x583a, 0x583b, 0x583d, 0x583f,
- 0x5820, 0x5820, 0x5820, 0x5820, 0x5821, 0x5821, 0x5822, 0x5822,
- 0x5823, 0x5824, 0x5825, 0x5825, 0x5826, 0x5827, 0x5828, 0x5829,
- 0x582a, 0x582b, 0x582c, 0x582e, 0x582f, 0x5830, 0x5831, 0x5833,
- 0x5834, 0x5835, 0x5837, 0x5838, 0x583a, 0x583b, 0x583d, 0x583f,
- 0x5840, 0x5840, 0x5840, 0x5840, 0x5841, 0x5841, 0x5842, 0x5842,
- 0x5843, 0x5844, 0x5845, 0x5845, 0x5846, 0x5847, 0x5848, 0x5849,
- 0x584a, 0x584b, 0x584c, 0x584e, 0x584f, 0x5850, 0x5851, 0x5853,
- 0x5854, 0x5855, 0x5857, 0x5858, 0x585a, 0x585b, 0x585d, 0x585f,
- 0x5840, 0x5840, 0x5840, 0x5840, 0x5841, 0x5841, 0x5842, 0x5842,
- 0x5843, 0x5844, 0x5845, 0x5845, 0x5846, 0x5847, 0x5848, 0x5849,
- 0x584a, 0x584b, 0x584c, 0x584e, 0x584f, 0x5850, 0x5851, 0x5853,
- 0x5854, 0x5855, 0x5857, 0x5858, 0x585a, 0x585b, 0x585d, 0x585f,
- 0x5860, 0x5860, 0x5860, 0x5860, 0x5861, 0x5861, 0x5862, 0x5862,
- 0x5863, 0x5864, 0x5865, 0x5865, 0x5866, 0x5867, 0x5868, 0x5869,
- 0x586a, 0x586b, 0x586c, 0x586e, 0x586f, 0x5870, 0x5871, 0x5873,
- 0x5874, 0x5875, 0x5877, 0x5878, 0x587a, 0x587b, 0x587d, 0x587f,
- 0x5860, 0x5860, 0x5860, 0x5860, 0x5861, 0x5861, 0x5862, 0x5862,
- 0x5863, 0x5864, 0x5865, 0x5865, 0x5866, 0x5867, 0x5868, 0x5869,
- 0x586a, 0x586b, 0x586c, 0x586e, 0x586f, 0x5870, 0x5871, 0x5873,
- 0x5874, 0x5875, 0x5877, 0x5878, 0x587a, 0x587b, 0x587d, 0x587f,
- 0x5880, 0x5880, 0x5880, 0x5880, 0x5881, 0x5881, 0x5882, 0x5882,
- 0x5883, 0x5884, 0x5885, 0x5885, 0x5886, 0x5887, 0x5888, 0x5889,
- 0x588a, 0x588b, 0x588c, 0x588e, 0x588f, 0x5890, 0x5891, 0x5893,
- 0x5894, 0x5895, 0x5897, 0x5898, 0x589a, 0x589b, 0x589d, 0x589f,
- 0x58a0, 0x58a0, 0x58a0, 0x58a0, 0x58a1, 0x58a1, 0x58a2, 0x58a2,
- 0x58a3, 0x58a4, 0x58a5, 0x58a5, 0x58a6, 0x58a7, 0x58a8, 0x58a9,
- 0x58aa, 0x58ab, 0x58ac, 0x58ae, 0x58af, 0x58b0, 0x58b1, 0x58b3,
- 0x58b4, 0x58b5, 0x58b7, 0x58b8, 0x58ba, 0x58bb, 0x58bd, 0x58bf,
- 0x58a0, 0x58a0, 0x58a0, 0x58a0, 0x58a1, 0x58a1, 0x58a2, 0x58a2,
- 0x58a3, 0x58a4, 0x58a5, 0x58a5, 0x58a6, 0x58a7, 0x58a8, 0x58a9,
- 0x58aa, 0x58ab, 0x58ac, 0x58ae, 0x58af, 0x58b0, 0x58b1, 0x58b3,
- 0x58b4, 0x58b5, 0x58b7, 0x58b8, 0x58ba, 0x58bb, 0x58bd, 0x58bf,
- 0x58c0, 0x58c0, 0x58c0, 0x58c0, 0x58c1, 0x58c1, 0x58c2, 0x58c2,
- 0x58c3, 0x58c4, 0x58c5, 0x58c5, 0x58c6, 0x58c7, 0x58c8, 0x58c9,
- 0x58ca, 0x58cb, 0x58cc, 0x58ce, 0x58cf, 0x58d0, 0x58d1, 0x58d3,
- 0x58d4, 0x58d5, 0x58d7, 0x58d8, 0x58da, 0x58db, 0x58dd, 0x58df,
- 0x58e0, 0x58e0, 0x58e0, 0x58e0, 0x58e1, 0x58e1, 0x58e2, 0x58e2,
- 0x58e3, 0x58e4, 0x58e5, 0x58e5, 0x58e6, 0x58e7, 0x58e8, 0x58e9,
- 0x58ea, 0x58eb, 0x58ec, 0x58ee, 0x58ef, 0x58f0, 0x58f1, 0x58f3,
- 0x58f4, 0x58f5, 0x58f7, 0x58f8, 0x58fa, 0x58fb, 0x58fd, 0x58ff,
- 0x58e0, 0x58e0, 0x58e0, 0x58e0, 0x58e1, 0x58e1, 0x58e2, 0x58e2,
- 0x58e3, 0x58e4, 0x58e5, 0x58e5, 0x58e6, 0x58e7, 0x58e8, 0x58e9,
- 0x58ea, 0x58eb, 0x58ec, 0x58ee, 0x58ef, 0x58f0, 0x58f1, 0x58f3,
- 0x58f4, 0x58f5, 0x58f7, 0x58f8, 0x58fa, 0x58fb, 0x58fd, 0x58ff,
- 0x5900, 0x5900, 0x5900, 0x5900, 0x5901, 0x5901, 0x5902, 0x5902,
- 0x5903, 0x5904, 0x5905, 0x5905, 0x5906, 0x5907, 0x5908, 0x5909,
- 0x590a, 0x590b, 0x590c, 0x590e, 0x590f, 0x5910, 0x5911, 0x5913,
- 0x5914, 0x5915, 0x5917, 0x5918, 0x591a, 0x591b, 0x591d, 0x591f,
- 0x5920, 0x5920, 0x5920, 0x5920, 0x5921, 0x5921, 0x5922, 0x5922,
- 0x5923, 0x5924, 0x5925, 0x5925, 0x5926, 0x5927, 0x5928, 0x5929,
- 0x592a, 0x592b, 0x592c, 0x592e, 0x592f, 0x5930, 0x5931, 0x5933,
- 0x5934, 0x5935, 0x5937, 0x5938, 0x593a, 0x593b, 0x593d, 0x593f,
- 0x5940, 0x5940, 0x5940, 0x5940, 0x5941, 0x5941, 0x5942, 0x5942,
- 0x5943, 0x5944, 0x5945, 0x5945, 0x5946, 0x5947, 0x5948, 0x5949,
- 0x594a, 0x594b, 0x594c, 0x594e, 0x594f, 0x5950, 0x5951, 0x5953,
- 0x5954, 0x5955, 0x5957, 0x5958, 0x595a, 0x595b, 0x595d, 0x595f,
- 0x5940, 0x5940, 0x5940, 0x5940, 0x5941, 0x5941, 0x5942, 0x5942,
- 0x5943, 0x5944, 0x5945, 0x5945, 0x5946, 0x5947, 0x5948, 0x5949,
- 0x594a, 0x594b, 0x594c, 0x594e, 0x594f, 0x5950, 0x5951, 0x5953,
- 0x5954, 0x5955, 0x5957, 0x5958, 0x595a, 0x595b, 0x595d, 0x595f,
- 0x5960, 0x5960, 0x5960, 0x5960, 0x5961, 0x5961, 0x5962, 0x5962,
- 0x5963, 0x5964, 0x5965, 0x5965, 0x5966, 0x5967, 0x5968, 0x5969,
- 0x596a, 0x596b, 0x596c, 0x596e, 0x596f, 0x5970, 0x5971, 0x5973,
- 0x5974, 0x5975, 0x5977, 0x5978, 0x597a, 0x597b, 0x597d, 0x597f,
- 0x5980, 0x5980, 0x5980, 0x5980, 0x5981, 0x5981, 0x5982, 0x5982,
- 0x5983, 0x5984, 0x5985, 0x5985, 0x5986, 0x5987, 0x5988, 0x5989,
- 0x598a, 0x598b, 0x598c, 0x598e, 0x598f, 0x5990, 0x5991, 0x5993,
- 0x5994, 0x5995, 0x5997, 0x5998, 0x599a, 0x599b, 0x599d, 0x599f,
- 0x59a0, 0x59a0, 0x59a0, 0x59a0, 0x59a1, 0x59a1, 0x59a2, 0x59a2,
- 0x59a3, 0x59a4, 0x59a5, 0x59a5, 0x59a6, 0x59a7, 0x59a8, 0x59a9,
- 0x59aa, 0x59ab, 0x59ac, 0x59ae, 0x59af, 0x59b0, 0x59b1, 0x59b3,
- 0x59b4, 0x59b5, 0x59b7, 0x59b8, 0x59ba, 0x59bb, 0x59bd, 0x59bf,
- 0x59c0, 0x59c0, 0x59c0, 0x59c0, 0x59c1, 0x59c1, 0x59c2, 0x59c2,
- 0x59c3, 0x59c4, 0x59c5, 0x59c5, 0x59c6, 0x59c7, 0x59c8, 0x59c9,
- 0x59ca, 0x59cb, 0x59cc, 0x59ce, 0x59cf, 0x59d0, 0x59d1, 0x59d3,
- 0x59d4, 0x59d5, 0x59d7, 0x59d8, 0x59da, 0x59db, 0x59dd, 0x59df,
- 0x59e0, 0x59e0, 0x59e0, 0x59e0, 0x59e1, 0x59e1, 0x59e2, 0x59e2,
- 0x59e3, 0x59e4, 0x59e5, 0x59e5, 0x59e6, 0x59e7, 0x59e8, 0x59e9,
- 0x59ea, 0x59eb, 0x59ec, 0x59ee, 0x59ef, 0x59f0, 0x59f1, 0x59f3,
- 0x59f4, 0x59f5, 0x59f7, 0x59f8, 0x59fa, 0x59fb, 0x59fd, 0x59ff,
- 0x5a00, 0x5a00, 0x5a00, 0x5a00, 0x5a01, 0x5a01, 0x5a02, 0x5a02,
- 0x5a03, 0x5a04, 0x5a05, 0x5a05, 0x5a06, 0x5a07, 0x5a08, 0x5a09,
- 0x5a0a, 0x5a0b, 0x5a0c, 0x5a0e, 0x5a0f, 0x5a10, 0x5a11, 0x5a13,
- 0x5a14, 0x5a15, 0x5a17, 0x5a18, 0x5a1a, 0x5a1b, 0x5a1d, 0x5a1f,
- 0x5a20, 0x5a20, 0x5a20, 0x5a20, 0x5a21, 0x5a21, 0x5a22, 0x5a22,
- 0x5a23, 0x5a24, 0x5a25, 0x5a25, 0x5a26, 0x5a27, 0x5a28, 0x5a29,
- 0x5a2a, 0x5a2b, 0x5a2c, 0x5a2e, 0x5a2f, 0x5a30, 0x5a31, 0x5a33,
- 0x5a34, 0x5a35, 0x5a37, 0x5a38, 0x5a3a, 0x5a3b, 0x5a3d, 0x5a3f,
- 0x5a40, 0x5a40, 0x5a40, 0x5a40, 0x5a41, 0x5a41, 0x5a42, 0x5a42,
- 0x5a43, 0x5a44, 0x5a45, 0x5a45, 0x5a46, 0x5a47, 0x5a48, 0x5a49,
- 0x5a4a, 0x5a4b, 0x5a4c, 0x5a4e, 0x5a4f, 0x5a50, 0x5a51, 0x5a53,
- 0x5a54, 0x5a55, 0x5a57, 0x5a58, 0x5a5a, 0x5a5b, 0x5a5d, 0x5a5f,
- 0x5a60, 0x5a60, 0x5a60, 0x5a60, 0x5a61, 0x5a61, 0x5a62, 0x5a62,
- 0x5a63, 0x5a64, 0x5a65, 0x5a65, 0x5a66, 0x5a67, 0x5a68, 0x5a69,
- 0x5a6a, 0x5a6b, 0x5a6c, 0x5a6e, 0x5a6f, 0x5a70, 0x5a71, 0x5a73,
- 0x5a74, 0x5a75, 0x5a77, 0x5a78, 0x5a7a, 0x5a7b, 0x5a7d, 0x5a7f,
- 0x5a80, 0x5a80, 0x5a80, 0x5a80, 0x5a81, 0x5a81, 0x5a82, 0x5a82,
- 0x5a83, 0x5a84, 0x5a85, 0x5a85, 0x5a86, 0x5a87, 0x5a88, 0x5a89,
- 0x5a8a, 0x5a8b, 0x5a8c, 0x5a8e, 0x5a8f, 0x5a90, 0x5a91, 0x5a93,
- 0x5a94, 0x5a95, 0x5a97, 0x5a98, 0x5a9a, 0x5a9b, 0x5a9d, 0x5a9f,
- 0x5aa0, 0x5aa0, 0x5aa0, 0x5aa0, 0x5aa1, 0x5aa1, 0x5aa2, 0x5aa2,
- 0x5aa3, 0x5aa4, 0x5aa5, 0x5aa5, 0x5aa6, 0x5aa7, 0x5aa8, 0x5aa9,
- 0x5aaa, 0x5aab, 0x5aac, 0x5aae, 0x5aaf, 0x5ab0, 0x5ab1, 0x5ab3,
- 0x5ab4, 0x5ab5, 0x5ab7, 0x5ab8, 0x5aba, 0x5abb, 0x5abd, 0x5abf,
- 0x5ac0, 0x5ac0, 0x5ac0, 0x5ac0, 0x5ac1, 0x5ac1, 0x5ac2, 0x5ac2,
- 0x5ac3, 0x5ac4, 0x5ac5, 0x5ac5, 0x5ac6, 0x5ac7, 0x5ac8, 0x5ac9,
- 0x5aca, 0x5acb, 0x5acc, 0x5ace, 0x5acf, 0x5ad0, 0x5ad1, 0x5ad3,
- 0x5ad4, 0x5ad5, 0x5ad7, 0x5ad8, 0x5ada, 0x5adb, 0x5add, 0x5adf,
- 0x5ae0, 0x5ae0, 0x5ae0, 0x5ae0, 0x5ae1, 0x5ae1, 0x5ae2, 0x5ae2,
- 0x5ae3, 0x5ae4, 0x5ae5, 0x5ae5, 0x5ae6, 0x5ae7, 0x5ae8, 0x5ae9,
- 0x5aea, 0x5aeb, 0x5aec, 0x5aee, 0x5aef, 0x5af0, 0x5af1, 0x5af3,
- 0x5af4, 0x5af5, 0x5af7, 0x5af8, 0x5afa, 0x5afb, 0x5afd, 0x5aff,
- 0x5b00, 0x5b00, 0x5b00, 0x5b00, 0x5b01, 0x5b01, 0x5b02, 0x5b02,
- 0x5b03, 0x5b04, 0x5b05, 0x5b05, 0x5b06, 0x5b07, 0x5b08, 0x5b09,
- 0x5b0a, 0x5b0b, 0x5b0c, 0x5b0e, 0x5b0f, 0x5b10, 0x5b11, 0x5b13,
- 0x5b14, 0x5b15, 0x5b17, 0x5b18, 0x5b1a, 0x5b1b, 0x5b1d, 0x5b1f,
- 0x5b20, 0x5b20, 0x5b20, 0x5b20, 0x5b21, 0x5b21, 0x5b22, 0x5b22,
- 0x5b23, 0x5b24, 0x5b25, 0x5b25, 0x5b26, 0x5b27, 0x5b28, 0x5b29,
- 0x5b2a, 0x5b2b, 0x5b2c, 0x5b2e, 0x5b2f, 0x5b30, 0x5b31, 0x5b33,
- 0x5b34, 0x5b35, 0x5b37, 0x5b38, 0x5b3a, 0x5b3b, 0x5b3d, 0x5b3f,
- 0x5b40, 0x5b40, 0x5b40, 0x5b40, 0x5b41, 0x5b41, 0x5b42, 0x5b42,
- 0x5b43, 0x5b44, 0x5b45, 0x5b45, 0x5b46, 0x5b47, 0x5b48, 0x5b49,
- 0x5b4a, 0x5b4b, 0x5b4c, 0x5b4e, 0x5b4f, 0x5b50, 0x5b51, 0x5b53,
- 0x5b54, 0x5b55, 0x5b57, 0x5b58, 0x5b5a, 0x5b5b, 0x5b5d, 0x5b5f,
- 0x5b80, 0x5b80, 0x5b80, 0x5b80, 0x5b81, 0x5b81, 0x5b82, 0x5b82,
- 0x5b83, 0x5b84, 0x5b85, 0x5b85, 0x5b86, 0x5b87, 0x5b88, 0x5b89,
- 0x5b8a, 0x5b8b, 0x5b8c, 0x5b8e, 0x5b8f, 0x5b90, 0x5b91, 0x5b93,
- 0x5b94, 0x5b95, 0x5b97, 0x5b98, 0x5b9a, 0x5b9b, 0x5b9d, 0x5b9f,
- 0x5ba0, 0x5ba0, 0x5ba0, 0x5ba0, 0x5ba1, 0x5ba1, 0x5ba2, 0x5ba2,
- 0x5ba3, 0x5ba4, 0x5ba5, 0x5ba5, 0x5ba6, 0x5ba7, 0x5ba8, 0x5ba9,
- 0x5baa, 0x5bab, 0x5bac, 0x5bae, 0x5baf, 0x5bb0, 0x5bb1, 0x5bb3,
- 0x5bb4, 0x5bb5, 0x5bb7, 0x5bb8, 0x5bba, 0x5bbb, 0x5bbd, 0x5bbf,
- 0x5bc0, 0x5bc0, 0x5bc0, 0x5bc0, 0x5bc1, 0x5bc1, 0x5bc2, 0x5bc2,
- 0x5bc3, 0x5bc4, 0x5bc5, 0x5bc5, 0x5bc6, 0x5bc7, 0x5bc8, 0x5bc9,
- 0x5bca, 0x5bcb, 0x5bcc, 0x5bce, 0x5bcf, 0x5bd0, 0x5bd1, 0x5bd3,
- 0x5bd4, 0x5bd5, 0x5bd7, 0x5bd8, 0x5bda, 0x5bdb, 0x5bdd, 0x5bdf,
- 0x5be0, 0x5be0, 0x5be0, 0x5be0, 0x5be1, 0x5be1, 0x5be2, 0x5be2,
- 0x5be3, 0x5be4, 0x5be5, 0x5be5, 0x5be6, 0x5be7, 0x5be8, 0x5be9,
- 0x5bea, 0x5beb, 0x5bec, 0x5bee, 0x5bef, 0x5bf0, 0x5bf1, 0x5bf3,
- 0x5bf4, 0x5bf5, 0x5bf7, 0x5bf8, 0x5bfa, 0x5bfb, 0x5bfd, 0x5bff,
- 0x5c00, 0x5c00, 0x5c00, 0x5c00, 0x5c01, 0x5c01, 0x5c02, 0x5c02,
- 0x5c03, 0x5c04, 0x5c05, 0x5c05, 0x5c06, 0x5c07, 0x5c08, 0x5c09,
- 0x5c0a, 0x5c0b, 0x5c0c, 0x5c0e, 0x5c0f, 0x5c10, 0x5c11, 0x5c13,
- 0x5c14, 0x5c15, 0x5c17, 0x5c18, 0x5c1a, 0x5c1b, 0x5c1d, 0x5c1f,
- 0x5c40, 0x5c40, 0x5c40, 0x5c40, 0x5c41, 0x5c41, 0x5c42, 0x5c42,
- 0x5c43, 0x5c44, 0x5c45, 0x5c45, 0x5c46, 0x5c47, 0x5c48, 0x5c49,
- 0x5c4a, 0x5c4b, 0x5c4c, 0x5c4e, 0x5c4f, 0x5c50, 0x5c51, 0x5c53,
- 0x5c54, 0x5c55, 0x5c57, 0x5c58, 0x5c5a, 0x5c5b, 0x5c5d, 0x5c5f,
- 0x5c60, 0x5c60, 0x5c60, 0x5c60, 0x5c61, 0x5c61, 0x5c62, 0x5c62,
- 0x5c63, 0x5c64, 0x5c65, 0x5c65, 0x5c66, 0x5c67, 0x5c68, 0x5c69,
- 0x5c6a, 0x5c6b, 0x5c6c, 0x5c6e, 0x5c6f, 0x5c70, 0x5c71, 0x5c73,
- 0x5c74, 0x5c75, 0x5c77, 0x5c78, 0x5c7a, 0x5c7b, 0x5c7d, 0x5c7f,
- 0x5c80, 0x5c80, 0x5c80, 0x5c80, 0x5c81, 0x5c81, 0x5c82, 0x5c82,
- 0x5c83, 0x5c84, 0x5c85, 0x5c85, 0x5c86, 0x5c87, 0x5c88, 0x5c89,
- 0x5c8a, 0x5c8b, 0x5c8c, 0x5c8e, 0x5c8f, 0x5c90, 0x5c91, 0x5c93,
- 0x5c94, 0x5c95, 0x5c97, 0x5c98, 0x5c9a, 0x5c9b, 0x5c9d, 0x5c9f,
- 0x5cc0, 0x5cc0, 0x5cc0, 0x5cc0, 0x5cc1, 0x5cc1, 0x5cc2, 0x5cc2,
- 0x5cc3, 0x5cc4, 0x5cc5, 0x5cc5, 0x5cc6, 0x5cc7, 0x5cc8, 0x5cc9,
- 0x5cca, 0x5ccb, 0x5ccc, 0x5cce, 0x5ccf, 0x5cd0, 0x5cd1, 0x5cd3,
- 0x5cd4, 0x5cd5, 0x5cd7, 0x5cd8, 0x5cda, 0x5cdb, 0x5cdd, 0x5cdf,
- 0x5ce0, 0x5ce0, 0x5ce0, 0x5ce0, 0x5ce1, 0x5ce1, 0x5ce2, 0x5ce2,
- 0x5ce3, 0x5ce4, 0x5ce5, 0x5ce5, 0x5ce6, 0x5ce7, 0x5ce8, 0x5ce9,
- 0x5cea, 0x5ceb, 0x5cec, 0x5cee, 0x5cef, 0x5cf0, 0x5cf1, 0x5cf3,
- 0x5cf4, 0x5cf5, 0x5cf7, 0x5cf8, 0x5cfa, 0x5cfb, 0x5cfd, 0x5cff,
- 0x5d00, 0x5d00, 0x5d00, 0x5d00, 0x5d01, 0x5d01, 0x5d02, 0x5d02,
- 0x5d03, 0x5d04, 0x5d05, 0x5d05, 0x5d06, 0x5d07, 0x5d08, 0x5d09,
- 0x5d0a, 0x5d0b, 0x5d0c, 0x5d0e, 0x5d0f, 0x5d10, 0x5d11, 0x5d13,
- 0x5d14, 0x5d15, 0x5d17, 0x5d18, 0x5d1a, 0x5d1b, 0x5d1d, 0x5d1f,
- 0x5d40, 0x5d40, 0x5d40, 0x5d40, 0x5d41, 0x5d41, 0x5d42, 0x5d42,
- 0x5d43, 0x5d44, 0x5d45, 0x5d45, 0x5d46, 0x5d47, 0x5d48, 0x5d49,
- 0x5d4a, 0x5d4b, 0x5d4c, 0x5d4e, 0x5d4f, 0x5d50, 0x5d51, 0x5d53,
- 0x5d54, 0x5d55, 0x5d57, 0x5d58, 0x5d5a, 0x5d5b, 0x5d5d, 0x5d5f,
- 0x5d60, 0x5d60, 0x5d60, 0x5d60, 0x5d61, 0x5d61, 0x5d62, 0x5d62,
- 0x5d63, 0x5d64, 0x5d65, 0x5d65, 0x5d66, 0x5d67, 0x5d68, 0x5d69,
- 0x5d6a, 0x5d6b, 0x5d6c, 0x5d6e, 0x5d6f, 0x5d70, 0x5d71, 0x5d73,
- 0x5d74, 0x5d75, 0x5d77, 0x5d78, 0x5d7a, 0x5d7b, 0x5d7d, 0x5d7f,
- 0x5d80, 0x5d80, 0x5d80, 0x5d80, 0x5d81, 0x5d81, 0x5d82, 0x5d82,
- 0x5d83, 0x5d84, 0x5d85, 0x5d85, 0x5d86, 0x5d87, 0x5d88, 0x5d89,
- 0x5d8a, 0x5d8b, 0x5d8c, 0x5d8e, 0x5d8f, 0x5d90, 0x5d91, 0x5d93,
- 0x5d94, 0x5d95, 0x5d97, 0x5d98, 0x5d9a, 0x5d9b, 0x5d9d, 0x5d9f,
- 0x5dc0, 0x5dc0, 0x5dc0, 0x5dc0, 0x5dc1, 0x5dc1, 0x5dc2, 0x5dc2,
- 0x5dc3, 0x5dc4, 0x5dc5, 0x5dc5, 0x5dc6, 0x5dc7, 0x5dc8, 0x5dc9,
- 0x5dca, 0x5dcb, 0x5dcc, 0x5dce, 0x5dcf, 0x5dd0, 0x5dd1, 0x5dd3,
- 0x5dd4, 0x5dd5, 0x5dd7, 0x5dd8, 0x5dda, 0x5ddb, 0x5ddd, 0x5ddf,
- 0x5de0, 0x5de0, 0x5de0, 0x5de0, 0x5de1, 0x5de1, 0x5de2, 0x5de2,
- 0x5de3, 0x5de4, 0x5de5, 0x5de5, 0x5de6, 0x5de7, 0x5de8, 0x5de9,
- 0x5dea, 0x5deb, 0x5dec, 0x5dee, 0x5def, 0x5df0, 0x5df1, 0x5df3,
- 0x5df4, 0x5df5, 0x5df7, 0x5df8, 0x5dfa, 0x5dfb, 0x5dfd, 0x5dff,
- 0x5e20, 0x5e20, 0x5e20, 0x5e20, 0x5e21, 0x5e21, 0x5e22, 0x5e22,
- 0x5e23, 0x5e24, 0x5e25, 0x5e25, 0x5e26, 0x5e27, 0x5e28, 0x5e29,
- 0x5e2a, 0x5e2b, 0x5e2c, 0x5e2e, 0x5e2f, 0x5e30, 0x5e31, 0x5e33,
- 0x5e34, 0x5e35, 0x5e37, 0x5e38, 0x5e3a, 0x5e3b, 0x5e3d, 0x5e3f,
- 0x5e40, 0x5e40, 0x5e40, 0x5e40, 0x5e41, 0x5e41, 0x5e42, 0x5e42,
- 0x5e43, 0x5e44, 0x5e45, 0x5e45, 0x5e46, 0x5e47, 0x5e48, 0x5e49,
- 0x5e4a, 0x5e4b, 0x5e4c, 0x5e4e, 0x5e4f, 0x5e50, 0x5e51, 0x5e53,
- 0x5e54, 0x5e55, 0x5e57, 0x5e58, 0x5e5a, 0x5e5b, 0x5e5d, 0x5e5f,
- 0x5e80, 0x5e80, 0x5e80, 0x5e80, 0x5e81, 0x5e81, 0x5e82, 0x5e82,
- 0x5e83, 0x5e84, 0x5e85, 0x5e85, 0x5e86, 0x5e87, 0x5e88, 0x5e89,
- 0x5e8a, 0x5e8b, 0x5e8c, 0x5e8e, 0x5e8f, 0x5e90, 0x5e91, 0x5e93,
- 0x5e94, 0x5e95, 0x5e97, 0x5e98, 0x5e9a, 0x5e9b, 0x5e9d, 0x5e9f,
- 0x5ea0, 0x5ea0, 0x5ea0, 0x5ea0, 0x5ea1, 0x5ea1, 0x5ea2, 0x5ea2,
- 0x5ea3, 0x5ea4, 0x5ea5, 0x5ea5, 0x5ea6, 0x5ea7, 0x5ea8, 0x5ea9,
- 0x5eaa, 0x5eab, 0x5eac, 0x5eae, 0x5eaf, 0x5eb0, 0x5eb1, 0x5eb3,
- 0x5eb4, 0x5eb5, 0x5eb7, 0x5eb8, 0x5eba, 0x5ebb, 0x5ebd, 0x5ebf,
- 0x5ee0, 0x5ee0, 0x5ee0, 0x5ee0, 0x5ee1, 0x5ee1, 0x5ee2, 0x5ee2,
- 0x5ee3, 0x5ee4, 0x5ee5, 0x5ee5, 0x5ee6, 0x5ee7, 0x5ee8, 0x5ee9,
- 0x5eea, 0x5eeb, 0x5eec, 0x5eee, 0x5eef, 0x5ef0, 0x5ef1, 0x5ef3,
- 0x5ef4, 0x5ef5, 0x5ef7, 0x5ef8, 0x5efa, 0x5efb, 0x5efd, 0x5eff,
- 0x5f00, 0x5f00, 0x5f00, 0x5f00, 0x5f01, 0x5f01, 0x5f02, 0x5f02,
- 0x5f03, 0x5f04, 0x5f05, 0x5f05, 0x5f06, 0x5f07, 0x5f08, 0x5f09,
- 0x5f0a, 0x5f0b, 0x5f0c, 0x5f0e, 0x5f0f, 0x5f10, 0x5f11, 0x5f13,
- 0x5f14, 0x5f15, 0x5f17, 0x5f18, 0x5f1a, 0x5f1b, 0x5f1d, 0x5f1f,
- 0x5f40, 0x5f40, 0x5f40, 0x5f40, 0x5f41, 0x5f41, 0x5f42, 0x5f42,
- 0x5f43, 0x5f44, 0x5f45, 0x5f45, 0x5f46, 0x5f47, 0x5f48, 0x5f49,
- 0x5f4a, 0x5f4b, 0x5f4c, 0x5f4e, 0x5f4f, 0x5f50, 0x5f51, 0x5f53,
- 0x5f54, 0x5f55, 0x5f57, 0x5f58, 0x5f5a, 0x5f5b, 0x5f5d, 0x5f5f,
- 0x5f60, 0x5f60, 0x5f60, 0x5f60, 0x5f61, 0x5f61, 0x5f62, 0x5f62,
- 0x5f63, 0x5f64, 0x5f65, 0x5f65, 0x5f66, 0x5f67, 0x5f68, 0x5f69,
- 0x5f6a, 0x5f6b, 0x5f6c, 0x5f6e, 0x5f6f, 0x5f70, 0x5f71, 0x5f73,
- 0x5f74, 0x5f75, 0x5f77, 0x5f78, 0x5f7a, 0x5f7b, 0x5f7d, 0x5f7f,
- 0x5fa0, 0x5fa0, 0x5fa0, 0x5fa0, 0x5fa1, 0x5fa1, 0x5fa2, 0x5fa2,
- 0x5fa3, 0x5fa4, 0x5fa5, 0x5fa5, 0x5fa6, 0x5fa7, 0x5fa8, 0x5fa9,
- 0x5faa, 0x5fab, 0x5fac, 0x5fae, 0x5faf, 0x5fb0, 0x5fb1, 0x5fb3,
- 0x5fb4, 0x5fb5, 0x5fb7, 0x5fb8, 0x5fba, 0x5fbb, 0x5fbd, 0x5fbf,
- 0x5fe0, 0x5fe0, 0x5fe0, 0x5fe0, 0x5fe1, 0x5fe1, 0x5fe2, 0x5fe2,
- 0x5fe3, 0x5fe4, 0x5fe5, 0x5fe5, 0x5fe6, 0x5fe7, 0x5fe8, 0x5fe9,
- 0x5fea, 0x5feb, 0x5fec, 0x5fee, 0x5fef, 0x5ff0, 0x5ff1, 0x5ff3,
- 0x5ff4, 0x5ff5, 0x5ff7, 0x5ff8, 0x5ffa, 0x5ffb, 0x5ffd, 0x5fff,
- 0x6000, 0x6000, 0x6000, 0x6000, 0x6001, 0x6001, 0x6002, 0x6002,
- 0x6003, 0x6004, 0x6005, 0x6005, 0x6006, 0x6007, 0x6008, 0x6009,
- 0x600a, 0x600b, 0x600c, 0x600e, 0x600f, 0x6010, 0x6011, 0x6013,
- 0x6014, 0x6015, 0x6017, 0x6018, 0x601a, 0x601b, 0x601d, 0x601f,
- 0x6000, 0x6000, 0x6000, 0x6000, 0x6001, 0x6001, 0x6002, 0x6002,
- 0x6003, 0x6004, 0x6005, 0x6005, 0x6006, 0x6007, 0x6008, 0x6009,
- 0x600a, 0x600b, 0x600c, 0x600e, 0x600f, 0x6010, 0x6011, 0x6013,
- 0x6014, 0x6015, 0x6017, 0x6018, 0x601a, 0x601b, 0x601d, 0x601f,
- 0x6000, 0x6000, 0x6000, 0x6000, 0x6001, 0x6001, 0x6002, 0x6002,
- 0x6003, 0x6004, 0x6005, 0x6005, 0x6006, 0x6007, 0x6008, 0x6009,
- 0x600a, 0x600b, 0x600c, 0x600e, 0x600f, 0x6010, 0x6011, 0x6013,
- 0x6014, 0x6015, 0x6017, 0x6018, 0x601a, 0x601b, 0x601d, 0x601f,
- 0x6000, 0x6000, 0x6000, 0x6000, 0x6001, 0x6001, 0x6002, 0x6002,
- 0x6003, 0x6004, 0x6005, 0x6005, 0x6006, 0x6007, 0x6008, 0x6009,
- 0x600a, 0x600b, 0x600c, 0x600e, 0x600f, 0x6010, 0x6011, 0x6013,
- 0x6014, 0x6015, 0x6017, 0x6018, 0x601a, 0x601b, 0x601d, 0x601f,
- 0x6000, 0x6000, 0x6000, 0x6000, 0x6001, 0x6001, 0x6002, 0x6002,
- 0x6003, 0x6004, 0x6005, 0x6005, 0x6006, 0x6007, 0x6008, 0x6009,
- 0x600a, 0x600b, 0x600c, 0x600e, 0x600f, 0x6010, 0x6011, 0x6013,
- 0x6014, 0x6015, 0x6017, 0x6018, 0x601a, 0x601b, 0x601d, 0x601f,
- 0x6020, 0x6020, 0x6020, 0x6020, 0x6021, 0x6021, 0x6022, 0x6022,
- 0x6023, 0x6024, 0x6025, 0x6025, 0x6026, 0x6027, 0x6028, 0x6029,
- 0x602a, 0x602b, 0x602c, 0x602e, 0x602f, 0x6030, 0x6031, 0x6033,
- 0x6034, 0x6035, 0x6037, 0x6038, 0x603a, 0x603b, 0x603d, 0x603f,
- 0x6020, 0x6020, 0x6020, 0x6020, 0x6021, 0x6021, 0x6022, 0x6022,
- 0x6023, 0x6024, 0x6025, 0x6025, 0x6026, 0x6027, 0x6028, 0x6029,
- 0x602a, 0x602b, 0x602c, 0x602e, 0x602f, 0x6030, 0x6031, 0x6033,
- 0x6034, 0x6035, 0x6037, 0x6038, 0x603a, 0x603b, 0x603d, 0x603f,
- 0x6020, 0x6020, 0x6020, 0x6020, 0x6021, 0x6021, 0x6022, 0x6022,
- 0x6023, 0x6024, 0x6025, 0x6025, 0x6026, 0x6027, 0x6028, 0x6029,
- 0x602a, 0x602b, 0x602c, 0x602e, 0x602f, 0x6030, 0x6031, 0x6033,
- 0x6034, 0x6035, 0x6037, 0x6038, 0x603a, 0x603b, 0x603d, 0x603f,
- 0x6040, 0x6040, 0x6040, 0x6040, 0x6041, 0x6041, 0x6042, 0x6042,
- 0x6043, 0x6044, 0x6045, 0x6045, 0x6046, 0x6047, 0x6048, 0x6049,
- 0x604a, 0x604b, 0x604c, 0x604e, 0x604f, 0x6050, 0x6051, 0x6053,
- 0x6054, 0x6055, 0x6057, 0x6058, 0x605a, 0x605b, 0x605d, 0x605f,
- 0x6040, 0x6040, 0x6040, 0x6040, 0x6041, 0x6041, 0x6042, 0x6042,
- 0x6043, 0x6044, 0x6045, 0x6045, 0x6046, 0x6047, 0x6048, 0x6049,
- 0x604a, 0x604b, 0x604c, 0x604e, 0x604f, 0x6050, 0x6051, 0x6053,
- 0x6054, 0x6055, 0x6057, 0x6058, 0x605a, 0x605b, 0x605d, 0x605f,
- 0x6060, 0x6060, 0x6060, 0x6060, 0x6061, 0x6061, 0x6062, 0x6062,
- 0x6063, 0x6064, 0x6065, 0x6065, 0x6066, 0x6067, 0x6068, 0x6069,
- 0x606a, 0x606b, 0x606c, 0x606e, 0x606f, 0x6070, 0x6071, 0x6073,
- 0x6074, 0x6075, 0x6077, 0x6078, 0x607a, 0x607b, 0x607d, 0x607f,
- 0x6060, 0x6060, 0x6060, 0x6060, 0x6061, 0x6061, 0x6062, 0x6062,
- 0x6063, 0x6064, 0x6065, 0x6065, 0x6066, 0x6067, 0x6068, 0x6069,
- 0x606a, 0x606b, 0x606c, 0x606e, 0x606f, 0x6070, 0x6071, 0x6073,
- 0x6074, 0x6075, 0x6077, 0x6078, 0x607a, 0x607b, 0x607d, 0x607f,
- 0x6080, 0x6080, 0x6080, 0x6080, 0x6081, 0x6081, 0x6082, 0x6082,
- 0x6083, 0x6084, 0x6085, 0x6085, 0x6086, 0x6087, 0x6088, 0x6089,
- 0x608a, 0x608b, 0x608c, 0x608e, 0x608f, 0x6090, 0x6091, 0x6093,
- 0x6094, 0x6095, 0x6097, 0x6098, 0x609a, 0x609b, 0x609d, 0x609f,
- 0x60a0, 0x60a0, 0x60a0, 0x60a0, 0x60a1, 0x60a1, 0x60a2, 0x60a2,
- 0x60a3, 0x60a4, 0x60a5, 0x60a5, 0x60a6, 0x60a7, 0x60a8, 0x60a9,
- 0x60aa, 0x60ab, 0x60ac, 0x60ae, 0x60af, 0x60b0, 0x60b1, 0x60b3,
- 0x60b4, 0x60b5, 0x60b7, 0x60b8, 0x60ba, 0x60bb, 0x60bd, 0x60bf,
- 0x60a0, 0x60a0, 0x60a0, 0x60a0, 0x60a1, 0x60a1, 0x60a2, 0x60a2,
- 0x60a3, 0x60a4, 0x60a5, 0x60a5, 0x60a6, 0x60a7, 0x60a8, 0x60a9,
- 0x60aa, 0x60ab, 0x60ac, 0x60ae, 0x60af, 0x60b0, 0x60b1, 0x60b3,
- 0x60b4, 0x60b5, 0x60b7, 0x60b8, 0x60ba, 0x60bb, 0x60bd, 0x60bf,
- 0x60c0, 0x60c0, 0x60c0, 0x60c0, 0x60c1, 0x60c1, 0x60c2, 0x60c2,
- 0x60c3, 0x60c4, 0x60c5, 0x60c5, 0x60c6, 0x60c7, 0x60c8, 0x60c9,
- 0x60ca, 0x60cb, 0x60cc, 0x60ce, 0x60cf, 0x60d0, 0x60d1, 0x60d3,
- 0x60d4, 0x60d5, 0x60d7, 0x60d8, 0x60da, 0x60db, 0x60dd, 0x60df,
- 0x60e0, 0x60e0, 0x60e0, 0x60e0, 0x60e1, 0x60e1, 0x60e2, 0x60e2,
- 0x60e3, 0x60e4, 0x60e5, 0x60e5, 0x60e6, 0x60e7, 0x60e8, 0x60e9,
- 0x60ea, 0x60eb, 0x60ec, 0x60ee, 0x60ef, 0x60f0, 0x60f1, 0x60f3,
- 0x60f4, 0x60f5, 0x60f7, 0x60f8, 0x60fa, 0x60fb, 0x60fd, 0x60ff,
- 0x60e0, 0x60e0, 0x60e0, 0x60e0, 0x60e1, 0x60e1, 0x60e2, 0x60e2,
- 0x60e3, 0x60e4, 0x60e5, 0x60e5, 0x60e6, 0x60e7, 0x60e8, 0x60e9,
- 0x60ea, 0x60eb, 0x60ec, 0x60ee, 0x60ef, 0x60f0, 0x60f1, 0x60f3,
- 0x60f4, 0x60f5, 0x60f7, 0x60f8, 0x60fa, 0x60fb, 0x60fd, 0x60ff,
- 0x6100, 0x6100, 0x6100, 0x6100, 0x6101, 0x6101, 0x6102, 0x6102,
- 0x6103, 0x6104, 0x6105, 0x6105, 0x6106, 0x6107, 0x6108, 0x6109,
- 0x610a, 0x610b, 0x610c, 0x610e, 0x610f, 0x6110, 0x6111, 0x6113,
- 0x6114, 0x6115, 0x6117, 0x6118, 0x611a, 0x611b, 0x611d, 0x611f,
- 0x6120, 0x6120, 0x6120, 0x6120, 0x6121, 0x6121, 0x6122, 0x6122,
- 0x6123, 0x6124, 0x6125, 0x6125, 0x6126, 0x6127, 0x6128, 0x6129,
- 0x612a, 0x612b, 0x612c, 0x612e, 0x612f, 0x6130, 0x6131, 0x6133,
- 0x6134, 0x6135, 0x6137, 0x6138, 0x613a, 0x613b, 0x613d, 0x613f,
- 0x6140, 0x6140, 0x6140, 0x6140, 0x6141, 0x6141, 0x6142, 0x6142,
- 0x6143, 0x6144, 0x6145, 0x6145, 0x6146, 0x6147, 0x6148, 0x6149,
- 0x614a, 0x614b, 0x614c, 0x614e, 0x614f, 0x6150, 0x6151, 0x6153,
- 0x6154, 0x6155, 0x6157, 0x6158, 0x615a, 0x615b, 0x615d, 0x615f,
- 0x6140, 0x6140, 0x6140, 0x6140, 0x6141, 0x6141, 0x6142, 0x6142,
- 0x6143, 0x6144, 0x6145, 0x6145, 0x6146, 0x6147, 0x6148, 0x6149,
- 0x614a, 0x614b, 0x614c, 0x614e, 0x614f, 0x6150, 0x6151, 0x6153,
- 0x6154, 0x6155, 0x6157, 0x6158, 0x615a, 0x615b, 0x615d, 0x615f,
- 0x6160, 0x6160, 0x6160, 0x6160, 0x6161, 0x6161, 0x6162, 0x6162,
- 0x6163, 0x6164, 0x6165, 0x6165, 0x6166, 0x6167, 0x6168, 0x6169,
- 0x616a, 0x616b, 0x616c, 0x616e, 0x616f, 0x6170, 0x6171, 0x6173,
- 0x6174, 0x6175, 0x6177, 0x6178, 0x617a, 0x617b, 0x617d, 0x617f,
- 0x6180, 0x6180, 0x6180, 0x6180, 0x6181, 0x6181, 0x6182, 0x6182,
- 0x6183, 0x6184, 0x6185, 0x6185, 0x6186, 0x6187, 0x6188, 0x6189,
- 0x618a, 0x618b, 0x618c, 0x618e, 0x618f, 0x6190, 0x6191, 0x6193,
- 0x6194, 0x6195, 0x6197, 0x6198, 0x619a, 0x619b, 0x619d, 0x619f,
- 0x61a0, 0x61a0, 0x61a0, 0x61a0, 0x61a1, 0x61a1, 0x61a2, 0x61a2,
- 0x61a3, 0x61a4, 0x61a5, 0x61a5, 0x61a6, 0x61a7, 0x61a8, 0x61a9,
- 0x61aa, 0x61ab, 0x61ac, 0x61ae, 0x61af, 0x61b0, 0x61b1, 0x61b3,
- 0x61b4, 0x61b5, 0x61b7, 0x61b8, 0x61ba, 0x61bb, 0x61bd, 0x61bf,
- 0x61c0, 0x61c0, 0x61c0, 0x61c0, 0x61c1, 0x61c1, 0x61c2, 0x61c2,
- 0x61c3, 0x61c4, 0x61c5, 0x61c5, 0x61c6, 0x61c7, 0x61c8, 0x61c9,
- 0x61ca, 0x61cb, 0x61cc, 0x61ce, 0x61cf, 0x61d0, 0x61d1, 0x61d3,
- 0x61d4, 0x61d5, 0x61d7, 0x61d8, 0x61da, 0x61db, 0x61dd, 0x61df,
- 0x61e0, 0x61e0, 0x61e0, 0x61e0, 0x61e1, 0x61e1, 0x61e2, 0x61e2,
- 0x61e3, 0x61e4, 0x61e5, 0x61e5, 0x61e6, 0x61e7, 0x61e8, 0x61e9,
- 0x61ea, 0x61eb, 0x61ec, 0x61ee, 0x61ef, 0x61f0, 0x61f1, 0x61f3,
- 0x61f4, 0x61f5, 0x61f7, 0x61f8, 0x61fa, 0x61fb, 0x61fd, 0x61ff,
- 0x6200, 0x6200, 0x6200, 0x6200, 0x6201, 0x6201, 0x6202, 0x6202,
- 0x6203, 0x6204, 0x6205, 0x6205, 0x6206, 0x6207, 0x6208, 0x6209,
- 0x620a, 0x620b, 0x620c, 0x620e, 0x620f, 0x6210, 0x6211, 0x6213,
- 0x6214, 0x6215, 0x6217, 0x6218, 0x621a, 0x621b, 0x621d, 0x621f,
- 0x6220, 0x6220, 0x6220, 0x6220, 0x6221, 0x6221, 0x6222, 0x6222,
- 0x6223, 0x6224, 0x6225, 0x6225, 0x6226, 0x6227, 0x6228, 0x6229,
- 0x622a, 0x622b, 0x622c, 0x622e, 0x622f, 0x6230, 0x6231, 0x6233,
- 0x6234, 0x6235, 0x6237, 0x6238, 0x623a, 0x623b, 0x623d, 0x623f,
- 0x6240, 0x6240, 0x6240, 0x6240, 0x6241, 0x6241, 0x6242, 0x6242,
- 0x6243, 0x6244, 0x6245, 0x6245, 0x6246, 0x6247, 0x6248, 0x6249,
- 0x624a, 0x624b, 0x624c, 0x624e, 0x624f, 0x6250, 0x6251, 0x6253,
- 0x6254, 0x6255, 0x6257, 0x6258, 0x625a, 0x625b, 0x625d, 0x625f,
- 0x6260, 0x6260, 0x6260, 0x6260, 0x6261, 0x6261, 0x6262, 0x6262,
- 0x6263, 0x6264, 0x6265, 0x6265, 0x6266, 0x6267, 0x6268, 0x6269,
- 0x626a, 0x626b, 0x626c, 0x626e, 0x626f, 0x6270, 0x6271, 0x6273,
- 0x6274, 0x6275, 0x6277, 0x6278, 0x627a, 0x627b, 0x627d, 0x627f,
- 0x6280, 0x6280, 0x6280, 0x6280, 0x6281, 0x6281, 0x6282, 0x6282,
- 0x6283, 0x6284, 0x6285, 0x6285, 0x6286, 0x6287, 0x6288, 0x6289,
- 0x628a, 0x628b, 0x628c, 0x628e, 0x628f, 0x6290, 0x6291, 0x6293,
- 0x6294, 0x6295, 0x6297, 0x6298, 0x629a, 0x629b, 0x629d, 0x629f,
- 0x62a0, 0x62a0, 0x62a0, 0x62a0, 0x62a1, 0x62a1, 0x62a2, 0x62a2,
- 0x62a3, 0x62a4, 0x62a5, 0x62a5, 0x62a6, 0x62a7, 0x62a8, 0x62a9,
- 0x62aa, 0x62ab, 0x62ac, 0x62ae, 0x62af, 0x62b0, 0x62b1, 0x62b3,
- 0x62b4, 0x62b5, 0x62b7, 0x62b8, 0x62ba, 0x62bb, 0x62bd, 0x62bf,
- 0x62c0, 0x62c0, 0x62c0, 0x62c0, 0x62c1, 0x62c1, 0x62c2, 0x62c2,
- 0x62c3, 0x62c4, 0x62c5, 0x62c5, 0x62c6, 0x62c7, 0x62c8, 0x62c9,
- 0x62ca, 0x62cb, 0x62cc, 0x62ce, 0x62cf, 0x62d0, 0x62d1, 0x62d3,
- 0x62d4, 0x62d5, 0x62d7, 0x62d8, 0x62da, 0x62db, 0x62dd, 0x62df,
- 0x62e0, 0x62e0, 0x62e0, 0x62e0, 0x62e1, 0x62e1, 0x62e2, 0x62e2,
- 0x62e3, 0x62e4, 0x62e5, 0x62e5, 0x62e6, 0x62e7, 0x62e8, 0x62e9,
- 0x62ea, 0x62eb, 0x62ec, 0x62ee, 0x62ef, 0x62f0, 0x62f1, 0x62f3,
- 0x62f4, 0x62f5, 0x62f7, 0x62f8, 0x62fa, 0x62fb, 0x62fd, 0x62ff,
- 0x6300, 0x6300, 0x6300, 0x6300, 0x6301, 0x6301, 0x6302, 0x6302,
- 0x6303, 0x6304, 0x6305, 0x6305, 0x6306, 0x6307, 0x6308, 0x6309,
- 0x630a, 0x630b, 0x630c, 0x630e, 0x630f, 0x6310, 0x6311, 0x6313,
- 0x6314, 0x6315, 0x6317, 0x6318, 0x631a, 0x631b, 0x631d, 0x631f,
- 0x6320, 0x6320, 0x6320, 0x6320, 0x6321, 0x6321, 0x6322, 0x6322,
- 0x6323, 0x6324, 0x6325, 0x6325, 0x6326, 0x6327, 0x6328, 0x6329,
- 0x632a, 0x632b, 0x632c, 0x632e, 0x632f, 0x6330, 0x6331, 0x6333,
- 0x6334, 0x6335, 0x6337, 0x6338, 0x633a, 0x633b, 0x633d, 0x633f,
- 0x6340, 0x6340, 0x6340, 0x6340, 0x6341, 0x6341, 0x6342, 0x6342,
- 0x6343, 0x6344, 0x6345, 0x6345, 0x6346, 0x6347, 0x6348, 0x6349,
- 0x634a, 0x634b, 0x634c, 0x634e, 0x634f, 0x6350, 0x6351, 0x6353,
- 0x6354, 0x6355, 0x6357, 0x6358, 0x635a, 0x635b, 0x635d, 0x635f,
- 0x6380, 0x6380, 0x6380, 0x6380, 0x6381, 0x6381, 0x6382, 0x6382,
- 0x6383, 0x6384, 0x6385, 0x6385, 0x6386, 0x6387, 0x6388, 0x6389,
- 0x638a, 0x638b, 0x638c, 0x638e, 0x638f, 0x6390, 0x6391, 0x6393,
- 0x6394, 0x6395, 0x6397, 0x6398, 0x639a, 0x639b, 0x639d, 0x639f,
- 0x63a0, 0x63a0, 0x63a0, 0x63a0, 0x63a1, 0x63a1, 0x63a2, 0x63a2,
- 0x63a3, 0x63a4, 0x63a5, 0x63a5, 0x63a6, 0x63a7, 0x63a8, 0x63a9,
- 0x63aa, 0x63ab, 0x63ac, 0x63ae, 0x63af, 0x63b0, 0x63b1, 0x63b3,
- 0x63b4, 0x63b5, 0x63b7, 0x63b8, 0x63ba, 0x63bb, 0x63bd, 0x63bf,
- 0x63c0, 0x63c0, 0x63c0, 0x63c0, 0x63c1, 0x63c1, 0x63c2, 0x63c2,
- 0x63c3, 0x63c4, 0x63c5, 0x63c5, 0x63c6, 0x63c7, 0x63c8, 0x63c9,
- 0x63ca, 0x63cb, 0x63cc, 0x63ce, 0x63cf, 0x63d0, 0x63d1, 0x63d3,
- 0x63d4, 0x63d5, 0x63d7, 0x63d8, 0x63da, 0x63db, 0x63dd, 0x63df,
- 0x63e0, 0x63e0, 0x63e0, 0x63e0, 0x63e1, 0x63e1, 0x63e2, 0x63e2,
- 0x63e3, 0x63e4, 0x63e5, 0x63e5, 0x63e6, 0x63e7, 0x63e8, 0x63e9,
- 0x63ea, 0x63eb, 0x63ec, 0x63ee, 0x63ef, 0x63f0, 0x63f1, 0x63f3,
- 0x63f4, 0x63f5, 0x63f7, 0x63f8, 0x63fa, 0x63fb, 0x63fd, 0x63ff,
- 0x6400, 0x6400, 0x6400, 0x6400, 0x6401, 0x6401, 0x6402, 0x6402,
- 0x6403, 0x6404, 0x6405, 0x6405, 0x6406, 0x6407, 0x6408, 0x6409,
- 0x640a, 0x640b, 0x640c, 0x640e, 0x640f, 0x6410, 0x6411, 0x6413,
- 0x6414, 0x6415, 0x6417, 0x6418, 0x641a, 0x641b, 0x641d, 0x641f,
- 0x6440, 0x6440, 0x6440, 0x6440, 0x6441, 0x6441, 0x6442, 0x6442,
- 0x6443, 0x6444, 0x6445, 0x6445, 0x6446, 0x6447, 0x6448, 0x6449,
- 0x644a, 0x644b, 0x644c, 0x644e, 0x644f, 0x6450, 0x6451, 0x6453,
- 0x6454, 0x6455, 0x6457, 0x6458, 0x645a, 0x645b, 0x645d, 0x645f,
- 0x6460, 0x6460, 0x6460, 0x6460, 0x6461, 0x6461, 0x6462, 0x6462,
- 0x6463, 0x6464, 0x6465, 0x6465, 0x6466, 0x6467, 0x6468, 0x6469,
- 0x646a, 0x646b, 0x646c, 0x646e, 0x646f, 0x6470, 0x6471, 0x6473,
- 0x6474, 0x6475, 0x6477, 0x6478, 0x647a, 0x647b, 0x647d, 0x647f,
- 0x6480, 0x6480, 0x6480, 0x6480, 0x6481, 0x6481, 0x6482, 0x6482,
- 0x6483, 0x6484, 0x6485, 0x6485, 0x6486, 0x6487, 0x6488, 0x6489,
- 0x648a, 0x648b, 0x648c, 0x648e, 0x648f, 0x6490, 0x6491, 0x6493,
- 0x6494, 0x6495, 0x6497, 0x6498, 0x649a, 0x649b, 0x649d, 0x649f,
- 0x64c0, 0x64c0, 0x64c0, 0x64c0, 0x64c1, 0x64c1, 0x64c2, 0x64c2,
- 0x64c3, 0x64c4, 0x64c5, 0x64c5, 0x64c6, 0x64c7, 0x64c8, 0x64c9,
- 0x64ca, 0x64cb, 0x64cc, 0x64ce, 0x64cf, 0x64d0, 0x64d1, 0x64d3,
- 0x64d4, 0x64d5, 0x64d7, 0x64d8, 0x64da, 0x64db, 0x64dd, 0x64df,
- 0x64e0, 0x64e0, 0x64e0, 0x64e0, 0x64e1, 0x64e1, 0x64e2, 0x64e2,
- 0x64e3, 0x64e4, 0x64e5, 0x64e5, 0x64e6, 0x64e7, 0x64e8, 0x64e9,
- 0x64ea, 0x64eb, 0x64ec, 0x64ee, 0x64ef, 0x64f0, 0x64f1, 0x64f3,
- 0x64f4, 0x64f5, 0x64f7, 0x64f8, 0x64fa, 0x64fb, 0x64fd, 0x64ff,
- 0x6500, 0x6500, 0x6500, 0x6500, 0x6501, 0x6501, 0x6502, 0x6502,
- 0x6503, 0x6504, 0x6505, 0x6505, 0x6506, 0x6507, 0x6508, 0x6509,
- 0x650a, 0x650b, 0x650c, 0x650e, 0x650f, 0x6510, 0x6511, 0x6513,
- 0x6514, 0x6515, 0x6517, 0x6518, 0x651a, 0x651b, 0x651d, 0x651f,
- 0x6540, 0x6540, 0x6540, 0x6540, 0x6541, 0x6541, 0x6542, 0x6542,
- 0x6543, 0x6544, 0x6545, 0x6545, 0x6546, 0x6547, 0x6548, 0x6549,
- 0x654a, 0x654b, 0x654c, 0x654e, 0x654f, 0x6550, 0x6551, 0x6553,
- 0x6554, 0x6555, 0x6557, 0x6558, 0x655a, 0x655b, 0x655d, 0x655f,
- 0x6560, 0x6560, 0x6560, 0x6560, 0x6561, 0x6561, 0x6562, 0x6562,
- 0x6563, 0x6564, 0x6565, 0x6565, 0x6566, 0x6567, 0x6568, 0x6569,
- 0x656a, 0x656b, 0x656c, 0x656e, 0x656f, 0x6570, 0x6571, 0x6573,
- 0x6574, 0x6575, 0x6577, 0x6578, 0x657a, 0x657b, 0x657d, 0x657f,
- 0x6580, 0x6580, 0x6580, 0x6580, 0x6581, 0x6581, 0x6582, 0x6582,
- 0x6583, 0x6584, 0x6585, 0x6585, 0x6586, 0x6587, 0x6588, 0x6589,
- 0x658a, 0x658b, 0x658c, 0x658e, 0x658f, 0x6590, 0x6591, 0x6593,
- 0x6594, 0x6595, 0x6597, 0x6598, 0x659a, 0x659b, 0x659d, 0x659f,
- 0x65c0, 0x65c0, 0x65c0, 0x65c0, 0x65c1, 0x65c1, 0x65c2, 0x65c2,
- 0x65c3, 0x65c4, 0x65c5, 0x65c5, 0x65c6, 0x65c7, 0x65c8, 0x65c9,
- 0x65ca, 0x65cb, 0x65cc, 0x65ce, 0x65cf, 0x65d0, 0x65d1, 0x65d3,
- 0x65d4, 0x65d5, 0x65d7, 0x65d8, 0x65da, 0x65db, 0x65dd, 0x65df,
- 0x65e0, 0x65e0, 0x65e0, 0x65e0, 0x65e1, 0x65e1, 0x65e2, 0x65e2,
- 0x65e3, 0x65e4, 0x65e5, 0x65e5, 0x65e6, 0x65e7, 0x65e8, 0x65e9,
- 0x65ea, 0x65eb, 0x65ec, 0x65ee, 0x65ef, 0x65f0, 0x65f1, 0x65f3,
- 0x65f4, 0x65f5, 0x65f7, 0x65f8, 0x65fa, 0x65fb, 0x65fd, 0x65ff,
- 0x6620, 0x6620, 0x6620, 0x6620, 0x6621, 0x6621, 0x6622, 0x6622,
- 0x6623, 0x6624, 0x6625, 0x6625, 0x6626, 0x6627, 0x6628, 0x6629,
- 0x662a, 0x662b, 0x662c, 0x662e, 0x662f, 0x6630, 0x6631, 0x6633,
- 0x6634, 0x6635, 0x6637, 0x6638, 0x663a, 0x663b, 0x663d, 0x663f,
- 0x6640, 0x6640, 0x6640, 0x6640, 0x6641, 0x6641, 0x6642, 0x6642,
- 0x6643, 0x6644, 0x6645, 0x6645, 0x6646, 0x6647, 0x6648, 0x6649,
- 0x664a, 0x664b, 0x664c, 0x664e, 0x664f, 0x6650, 0x6651, 0x6653,
- 0x6654, 0x6655, 0x6657, 0x6658, 0x665a, 0x665b, 0x665d, 0x665f,
- 0x6680, 0x6680, 0x6680, 0x6680, 0x6681, 0x6681, 0x6682, 0x6682,
- 0x6683, 0x6684, 0x6685, 0x6685, 0x6686, 0x6687, 0x6688, 0x6689,
- 0x668a, 0x668b, 0x668c, 0x668e, 0x668f, 0x6690, 0x6691, 0x6693,
- 0x6694, 0x6695, 0x6697, 0x6698, 0x669a, 0x669b, 0x669d, 0x669f,
- 0x66a0, 0x66a0, 0x66a0, 0x66a0, 0x66a1, 0x66a1, 0x66a2, 0x66a2,
- 0x66a3, 0x66a4, 0x66a5, 0x66a5, 0x66a6, 0x66a7, 0x66a8, 0x66a9,
- 0x66aa, 0x66ab, 0x66ac, 0x66ae, 0x66af, 0x66b0, 0x66b1, 0x66b3,
- 0x66b4, 0x66b5, 0x66b7, 0x66b8, 0x66ba, 0x66bb, 0x66bd, 0x66bf,
- 0x66e0, 0x66e0, 0x66e0, 0x66e0, 0x66e1, 0x66e1, 0x66e2, 0x66e2,
- 0x66e3, 0x66e4, 0x66e5, 0x66e5, 0x66e6, 0x66e7, 0x66e8, 0x66e9,
- 0x66ea, 0x66eb, 0x66ec, 0x66ee, 0x66ef, 0x66f0, 0x66f1, 0x66f3,
- 0x66f4, 0x66f5, 0x66f7, 0x66f8, 0x66fa, 0x66fb, 0x66fd, 0x66ff,
- 0x6700, 0x6700, 0x6700, 0x6700, 0x6701, 0x6701, 0x6702, 0x6702,
- 0x6703, 0x6704, 0x6705, 0x6705, 0x6706, 0x6707, 0x6708, 0x6709,
- 0x670a, 0x670b, 0x670c, 0x670e, 0x670f, 0x6710, 0x6711, 0x6713,
- 0x6714, 0x6715, 0x6717, 0x6718, 0x671a, 0x671b, 0x671d, 0x671f,
- 0x6740, 0x6740, 0x6740, 0x6740, 0x6741, 0x6741, 0x6742, 0x6742,
- 0x6743, 0x6744, 0x6745, 0x6745, 0x6746, 0x6747, 0x6748, 0x6749,
- 0x674a, 0x674b, 0x674c, 0x674e, 0x674f, 0x6750, 0x6751, 0x6753,
- 0x6754, 0x6755, 0x6757, 0x6758, 0x675a, 0x675b, 0x675d, 0x675f,
- 0x6760, 0x6760, 0x6760, 0x6760, 0x6761, 0x6761, 0x6762, 0x6762,
- 0x6763, 0x6764, 0x6765, 0x6765, 0x6766, 0x6767, 0x6768, 0x6769,
- 0x676a, 0x676b, 0x676c, 0x676e, 0x676f, 0x6770, 0x6771, 0x6773,
- 0x6774, 0x6775, 0x6777, 0x6778, 0x677a, 0x677b, 0x677d, 0x677f,
- 0x67a0, 0x67a0, 0x67a0, 0x67a0, 0x67a1, 0x67a1, 0x67a2, 0x67a2,
- 0x67a3, 0x67a4, 0x67a5, 0x67a5, 0x67a6, 0x67a7, 0x67a8, 0x67a9,
- 0x67aa, 0x67ab, 0x67ac, 0x67ae, 0x67af, 0x67b0, 0x67b1, 0x67b3,
- 0x67b4, 0x67b5, 0x67b7, 0x67b8, 0x67ba, 0x67bb, 0x67bd, 0x67bf,
- 0x67e0, 0x67e0, 0x67e0, 0x67e0, 0x67e1, 0x67e1, 0x67e2, 0x67e2,
- 0x67e3, 0x67e4, 0x67e5, 0x67e5, 0x67e6, 0x67e7, 0x67e8, 0x67e9,
- 0x67ea, 0x67eb, 0x67ec, 0x67ee, 0x67ef, 0x67f0, 0x67f1, 0x67f3,
- 0x67f4, 0x67f5, 0x67f7, 0x67f8, 0x67fa, 0x67fb, 0x67fd, 0x67ff,
- 0x7000, 0x7000, 0x7000, 0x7000, 0x7001, 0x7001, 0x7002, 0x7002,
- 0x7003, 0x7004, 0x7005, 0x7005, 0x7006, 0x7007, 0x7008, 0x7009,
- 0x700a, 0x700b, 0x700c, 0x700e, 0x700f, 0x7010, 0x7011, 0x7013,
- 0x7014, 0x7015, 0x7017, 0x7018, 0x701a, 0x701b, 0x701d, 0x701f,
- 0x7000, 0x7000, 0x7000, 0x7000, 0x7001, 0x7001, 0x7002, 0x7002,
- 0x7003, 0x7004, 0x7005, 0x7005, 0x7006, 0x7007, 0x7008, 0x7009,
- 0x700a, 0x700b, 0x700c, 0x700e, 0x700f, 0x7010, 0x7011, 0x7013,
- 0x7014, 0x7015, 0x7017, 0x7018, 0x701a, 0x701b, 0x701d, 0x701f,
- 0x7000, 0x7000, 0x7000, 0x7000, 0x7001, 0x7001, 0x7002, 0x7002,
- 0x7003, 0x7004, 0x7005, 0x7005, 0x7006, 0x7007, 0x7008, 0x7009,
- 0x700a, 0x700b, 0x700c, 0x700e, 0x700f, 0x7010, 0x7011, 0x7013,
- 0x7014, 0x7015, 0x7017, 0x7018, 0x701a, 0x701b, 0x701d, 0x701f,
- 0x7000, 0x7000, 0x7000, 0x7000, 0x7001, 0x7001, 0x7002, 0x7002,
- 0x7003, 0x7004, 0x7005, 0x7005, 0x7006, 0x7007, 0x7008, 0x7009,
- 0x700a, 0x700b, 0x700c, 0x700e, 0x700f, 0x7010, 0x7011, 0x7013,
- 0x7014, 0x7015, 0x7017, 0x7018, 0x701a, 0x701b, 0x701d, 0x701f,
- 0x7000, 0x7000, 0x7000, 0x7000, 0x7001, 0x7001, 0x7002, 0x7002,
- 0x7003, 0x7004, 0x7005, 0x7005, 0x7006, 0x7007, 0x7008, 0x7009,
- 0x700a, 0x700b, 0x700c, 0x700e, 0x700f, 0x7010, 0x7011, 0x7013,
- 0x7014, 0x7015, 0x7017, 0x7018, 0x701a, 0x701b, 0x701d, 0x701f,
- 0x7020, 0x7020, 0x7020, 0x7020, 0x7021, 0x7021, 0x7022, 0x7022,
- 0x7023, 0x7024, 0x7025, 0x7025, 0x7026, 0x7027, 0x7028, 0x7029,
- 0x702a, 0x702b, 0x702c, 0x702e, 0x702f, 0x7030, 0x7031, 0x7033,
- 0x7034, 0x7035, 0x7037, 0x7038, 0x703a, 0x703b, 0x703d, 0x703f,
- 0x7020, 0x7020, 0x7020, 0x7020, 0x7021, 0x7021, 0x7022, 0x7022,
- 0x7023, 0x7024, 0x7025, 0x7025, 0x7026, 0x7027, 0x7028, 0x7029,
- 0x702a, 0x702b, 0x702c, 0x702e, 0x702f, 0x7030, 0x7031, 0x7033,
- 0x7034, 0x7035, 0x7037, 0x7038, 0x703a, 0x703b, 0x703d, 0x703f,
- 0x7020, 0x7020, 0x7020, 0x7020, 0x7021, 0x7021, 0x7022, 0x7022,
- 0x7023, 0x7024, 0x7025, 0x7025, 0x7026, 0x7027, 0x7028, 0x7029,
- 0x702a, 0x702b, 0x702c, 0x702e, 0x702f, 0x7030, 0x7031, 0x7033,
- 0x7034, 0x7035, 0x7037, 0x7038, 0x703a, 0x703b, 0x703d, 0x703f,
- 0x7040, 0x7040, 0x7040, 0x7040, 0x7041, 0x7041, 0x7042, 0x7042,
- 0x7043, 0x7044, 0x7045, 0x7045, 0x7046, 0x7047, 0x7048, 0x7049,
- 0x704a, 0x704b, 0x704c, 0x704e, 0x704f, 0x7050, 0x7051, 0x7053,
- 0x7054, 0x7055, 0x7057, 0x7058, 0x705a, 0x705b, 0x705d, 0x705f,
- 0x7040, 0x7040, 0x7040, 0x7040, 0x7041, 0x7041, 0x7042, 0x7042,
- 0x7043, 0x7044, 0x7045, 0x7045, 0x7046, 0x7047, 0x7048, 0x7049,
- 0x704a, 0x704b, 0x704c, 0x704e, 0x704f, 0x7050, 0x7051, 0x7053,
- 0x7054, 0x7055, 0x7057, 0x7058, 0x705a, 0x705b, 0x705d, 0x705f,
- 0x7060, 0x7060, 0x7060, 0x7060, 0x7061, 0x7061, 0x7062, 0x7062,
- 0x7063, 0x7064, 0x7065, 0x7065, 0x7066, 0x7067, 0x7068, 0x7069,
- 0x706a, 0x706b, 0x706c, 0x706e, 0x706f, 0x7070, 0x7071, 0x7073,
- 0x7074, 0x7075, 0x7077, 0x7078, 0x707a, 0x707b, 0x707d, 0x707f,
- 0x7060, 0x7060, 0x7060, 0x7060, 0x7061, 0x7061, 0x7062, 0x7062,
- 0x7063, 0x7064, 0x7065, 0x7065, 0x7066, 0x7067, 0x7068, 0x7069,
- 0x706a, 0x706b, 0x706c, 0x706e, 0x706f, 0x7070, 0x7071, 0x7073,
- 0x7074, 0x7075, 0x7077, 0x7078, 0x707a, 0x707b, 0x707d, 0x707f,
- 0x7080, 0x7080, 0x7080, 0x7080, 0x7081, 0x7081, 0x7082, 0x7082,
- 0x7083, 0x7084, 0x7085, 0x7085, 0x7086, 0x7087, 0x7088, 0x7089,
- 0x708a, 0x708b, 0x708c, 0x708e, 0x708f, 0x7090, 0x7091, 0x7093,
- 0x7094, 0x7095, 0x7097, 0x7098, 0x709a, 0x709b, 0x709d, 0x709f,
- 0x70a0, 0x70a0, 0x70a0, 0x70a0, 0x70a1, 0x70a1, 0x70a2, 0x70a2,
- 0x70a3, 0x70a4, 0x70a5, 0x70a5, 0x70a6, 0x70a7, 0x70a8, 0x70a9,
- 0x70aa, 0x70ab, 0x70ac, 0x70ae, 0x70af, 0x70b0, 0x70b1, 0x70b3,
- 0x70b4, 0x70b5, 0x70b7, 0x70b8, 0x70ba, 0x70bb, 0x70bd, 0x70bf,
- 0x70a0, 0x70a0, 0x70a0, 0x70a0, 0x70a1, 0x70a1, 0x70a2, 0x70a2,
- 0x70a3, 0x70a4, 0x70a5, 0x70a5, 0x70a6, 0x70a7, 0x70a8, 0x70a9,
- 0x70aa, 0x70ab, 0x70ac, 0x70ae, 0x70af, 0x70b0, 0x70b1, 0x70b3,
- 0x70b4, 0x70b5, 0x70b7, 0x70b8, 0x70ba, 0x70bb, 0x70bd, 0x70bf,
- 0x70c0, 0x70c0, 0x70c0, 0x70c0, 0x70c1, 0x70c1, 0x70c2, 0x70c2,
- 0x70c3, 0x70c4, 0x70c5, 0x70c5, 0x70c6, 0x70c7, 0x70c8, 0x70c9,
- 0x70ca, 0x70cb, 0x70cc, 0x70ce, 0x70cf, 0x70d0, 0x70d1, 0x70d3,
- 0x70d4, 0x70d5, 0x70d7, 0x70d8, 0x70da, 0x70db, 0x70dd, 0x70df,
- 0x70e0, 0x70e0, 0x70e0, 0x70e0, 0x70e1, 0x70e1, 0x70e2, 0x70e2,
- 0x70e3, 0x70e4, 0x70e5, 0x70e5, 0x70e6, 0x70e7, 0x70e8, 0x70e9,
- 0x70ea, 0x70eb, 0x70ec, 0x70ee, 0x70ef, 0x70f0, 0x70f1, 0x70f3,
- 0x70f4, 0x70f5, 0x70f7, 0x70f8, 0x70fa, 0x70fb, 0x70fd, 0x70ff,
- 0x70e0, 0x70e0, 0x70e0, 0x70e0, 0x70e1, 0x70e1, 0x70e2, 0x70e2,
- 0x70e3, 0x70e4, 0x70e5, 0x70e5, 0x70e6, 0x70e7, 0x70e8, 0x70e9,
- 0x70ea, 0x70eb, 0x70ec, 0x70ee, 0x70ef, 0x70f0, 0x70f1, 0x70f3,
- 0x70f4, 0x70f5, 0x70f7, 0x70f8, 0x70fa, 0x70fb, 0x70fd, 0x70ff,
- 0x7100, 0x7100, 0x7100, 0x7100, 0x7101, 0x7101, 0x7102, 0x7102,
- 0x7103, 0x7104, 0x7105, 0x7105, 0x7106, 0x7107, 0x7108, 0x7109,
- 0x710a, 0x710b, 0x710c, 0x710e, 0x710f, 0x7110, 0x7111, 0x7113,
- 0x7114, 0x7115, 0x7117, 0x7118, 0x711a, 0x711b, 0x711d, 0x711f,
- 0x7120, 0x7120, 0x7120, 0x7120, 0x7121, 0x7121, 0x7122, 0x7122,
- 0x7123, 0x7124, 0x7125, 0x7125, 0x7126, 0x7127, 0x7128, 0x7129,
- 0x712a, 0x712b, 0x712c, 0x712e, 0x712f, 0x7130, 0x7131, 0x7133,
- 0x7134, 0x7135, 0x7137, 0x7138, 0x713a, 0x713b, 0x713d, 0x713f,
- 0x7140, 0x7140, 0x7140, 0x7140, 0x7141, 0x7141, 0x7142, 0x7142,
- 0x7143, 0x7144, 0x7145, 0x7145, 0x7146, 0x7147, 0x7148, 0x7149,
- 0x714a, 0x714b, 0x714c, 0x714e, 0x714f, 0x7150, 0x7151, 0x7153,
- 0x7154, 0x7155, 0x7157, 0x7158, 0x715a, 0x715b, 0x715d, 0x715f,
- 0x7140, 0x7140, 0x7140, 0x7140, 0x7141, 0x7141, 0x7142, 0x7142,
- 0x7143, 0x7144, 0x7145, 0x7145, 0x7146, 0x7147, 0x7148, 0x7149,
- 0x714a, 0x714b, 0x714c, 0x714e, 0x714f, 0x7150, 0x7151, 0x7153,
- 0x7154, 0x7155, 0x7157, 0x7158, 0x715a, 0x715b, 0x715d, 0x715f,
- 0x7160, 0x7160, 0x7160, 0x7160, 0x7161, 0x7161, 0x7162, 0x7162,
- 0x7163, 0x7164, 0x7165, 0x7165, 0x7166, 0x7167, 0x7168, 0x7169,
- 0x716a, 0x716b, 0x716c, 0x716e, 0x716f, 0x7170, 0x7171, 0x7173,
- 0x7174, 0x7175, 0x7177, 0x7178, 0x717a, 0x717b, 0x717d, 0x717f,
- 0x7180, 0x7180, 0x7180, 0x7180, 0x7181, 0x7181, 0x7182, 0x7182,
- 0x7183, 0x7184, 0x7185, 0x7185, 0x7186, 0x7187, 0x7188, 0x7189,
- 0x718a, 0x718b, 0x718c, 0x718e, 0x718f, 0x7190, 0x7191, 0x7193,
- 0x7194, 0x7195, 0x7197, 0x7198, 0x719a, 0x719b, 0x719d, 0x719f,
- 0x71a0, 0x71a0, 0x71a0, 0x71a0, 0x71a1, 0x71a1, 0x71a2, 0x71a2,
- 0x71a3, 0x71a4, 0x71a5, 0x71a5, 0x71a6, 0x71a7, 0x71a8, 0x71a9,
- 0x71aa, 0x71ab, 0x71ac, 0x71ae, 0x71af, 0x71b0, 0x71b1, 0x71b3,
- 0x71b4, 0x71b5, 0x71b7, 0x71b8, 0x71ba, 0x71bb, 0x71bd, 0x71bf,
- 0x71c0, 0x71c0, 0x71c0, 0x71c0, 0x71c1, 0x71c1, 0x71c2, 0x71c2,
- 0x71c3, 0x71c4, 0x71c5, 0x71c5, 0x71c6, 0x71c7, 0x71c8, 0x71c9,
- 0x71ca, 0x71cb, 0x71cc, 0x71ce, 0x71cf, 0x71d0, 0x71d1, 0x71d3,
- 0x71d4, 0x71d5, 0x71d7, 0x71d8, 0x71da, 0x71db, 0x71dd, 0x71df,
- 0x71e0, 0x71e0, 0x71e0, 0x71e0, 0x71e1, 0x71e1, 0x71e2, 0x71e2,
- 0x71e3, 0x71e4, 0x71e5, 0x71e5, 0x71e6, 0x71e7, 0x71e8, 0x71e9,
- 0x71ea, 0x71eb, 0x71ec, 0x71ee, 0x71ef, 0x71f0, 0x71f1, 0x71f3,
- 0x71f4, 0x71f5, 0x71f7, 0x71f8, 0x71fa, 0x71fb, 0x71fd, 0x71ff,
- 0x7200, 0x7200, 0x7200, 0x7200, 0x7201, 0x7201, 0x7202, 0x7202,
- 0x7203, 0x7204, 0x7205, 0x7205, 0x7206, 0x7207, 0x7208, 0x7209,
- 0x720a, 0x720b, 0x720c, 0x720e, 0x720f, 0x7210, 0x7211, 0x7213,
- 0x7214, 0x7215, 0x7217, 0x7218, 0x721a, 0x721b, 0x721d, 0x721f,
- 0x7220, 0x7220, 0x7220, 0x7220, 0x7221, 0x7221, 0x7222, 0x7222,
- 0x7223, 0x7224, 0x7225, 0x7225, 0x7226, 0x7227, 0x7228, 0x7229,
- 0x722a, 0x722b, 0x722c, 0x722e, 0x722f, 0x7230, 0x7231, 0x7233,
- 0x7234, 0x7235, 0x7237, 0x7238, 0x723a, 0x723b, 0x723d, 0x723f,
- 0x7240, 0x7240, 0x7240, 0x7240, 0x7241, 0x7241, 0x7242, 0x7242,
- 0x7243, 0x7244, 0x7245, 0x7245, 0x7246, 0x7247, 0x7248, 0x7249,
- 0x724a, 0x724b, 0x724c, 0x724e, 0x724f, 0x7250, 0x7251, 0x7253,
- 0x7254, 0x7255, 0x7257, 0x7258, 0x725a, 0x725b, 0x725d, 0x725f,
- 0x7260, 0x7260, 0x7260, 0x7260, 0x7261, 0x7261, 0x7262, 0x7262,
- 0x7263, 0x7264, 0x7265, 0x7265, 0x7266, 0x7267, 0x7268, 0x7269,
- 0x726a, 0x726b, 0x726c, 0x726e, 0x726f, 0x7270, 0x7271, 0x7273,
- 0x7274, 0x7275, 0x7277, 0x7278, 0x727a, 0x727b, 0x727d, 0x727f,
- 0x7280, 0x7280, 0x7280, 0x7280, 0x7281, 0x7281, 0x7282, 0x7282,
- 0x7283, 0x7284, 0x7285, 0x7285, 0x7286, 0x7287, 0x7288, 0x7289,
- 0x728a, 0x728b, 0x728c, 0x728e, 0x728f, 0x7290, 0x7291, 0x7293,
- 0x7294, 0x7295, 0x7297, 0x7298, 0x729a, 0x729b, 0x729d, 0x729f,
- 0x72a0, 0x72a0, 0x72a0, 0x72a0, 0x72a1, 0x72a1, 0x72a2, 0x72a2,
- 0x72a3, 0x72a4, 0x72a5, 0x72a5, 0x72a6, 0x72a7, 0x72a8, 0x72a9,
- 0x72aa, 0x72ab, 0x72ac, 0x72ae, 0x72af, 0x72b0, 0x72b1, 0x72b3,
- 0x72b4, 0x72b5, 0x72b7, 0x72b8, 0x72ba, 0x72bb, 0x72bd, 0x72bf,
- 0x72c0, 0x72c0, 0x72c0, 0x72c0, 0x72c1, 0x72c1, 0x72c2, 0x72c2,
- 0x72c3, 0x72c4, 0x72c5, 0x72c5, 0x72c6, 0x72c7, 0x72c8, 0x72c9,
- 0x72ca, 0x72cb, 0x72cc, 0x72ce, 0x72cf, 0x72d0, 0x72d1, 0x72d3,
- 0x72d4, 0x72d5, 0x72d7, 0x72d8, 0x72da, 0x72db, 0x72dd, 0x72df,
- 0x72e0, 0x72e0, 0x72e0, 0x72e0, 0x72e1, 0x72e1, 0x72e2, 0x72e2,
- 0x72e3, 0x72e4, 0x72e5, 0x72e5, 0x72e6, 0x72e7, 0x72e8, 0x72e9,
- 0x72ea, 0x72eb, 0x72ec, 0x72ee, 0x72ef, 0x72f0, 0x72f1, 0x72f3,
- 0x72f4, 0x72f5, 0x72f7, 0x72f8, 0x72fa, 0x72fb, 0x72fd, 0x72ff,
- 0x7300, 0x7300, 0x7300, 0x7300, 0x7301, 0x7301, 0x7302, 0x7302,
- 0x7303, 0x7304, 0x7305, 0x7305, 0x7306, 0x7307, 0x7308, 0x7309,
- 0x730a, 0x730b, 0x730c, 0x730e, 0x730f, 0x7310, 0x7311, 0x7313,
- 0x7314, 0x7315, 0x7317, 0x7318, 0x731a, 0x731b, 0x731d, 0x731f,
- 0x7320, 0x7320, 0x7320, 0x7320, 0x7321, 0x7321, 0x7322, 0x7322,
- 0x7323, 0x7324, 0x7325, 0x7325, 0x7326, 0x7327, 0x7328, 0x7329,
- 0x732a, 0x732b, 0x732c, 0x732e, 0x732f, 0x7330, 0x7331, 0x7333,
- 0x7334, 0x7335, 0x7337, 0x7338, 0x733a, 0x733b, 0x733d, 0x733f,
- 0x7340, 0x7340, 0x7340, 0x7340, 0x7341, 0x7341, 0x7342, 0x7342,
- 0x7343, 0x7344, 0x7345, 0x7345, 0x7346, 0x7347, 0x7348, 0x7349,
- 0x734a, 0x734b, 0x734c, 0x734e, 0x734f, 0x7350, 0x7351, 0x7353,
- 0x7354, 0x7355, 0x7357, 0x7358, 0x735a, 0x735b, 0x735d, 0x735f,
- 0x7380, 0x7380, 0x7380, 0x7380, 0x7381, 0x7381, 0x7382, 0x7382,
- 0x7383, 0x7384, 0x7385, 0x7385, 0x7386, 0x7387, 0x7388, 0x7389,
- 0x738a, 0x738b, 0x738c, 0x738e, 0x738f, 0x7390, 0x7391, 0x7393,
- 0x7394, 0x7395, 0x7397, 0x7398, 0x739a, 0x739b, 0x739d, 0x739f,
- 0x73a0, 0x73a0, 0x73a0, 0x73a0, 0x73a1, 0x73a1, 0x73a2, 0x73a2,
- 0x73a3, 0x73a4, 0x73a5, 0x73a5, 0x73a6, 0x73a7, 0x73a8, 0x73a9,
- 0x73aa, 0x73ab, 0x73ac, 0x73ae, 0x73af, 0x73b0, 0x73b1, 0x73b3,
- 0x73b4, 0x73b5, 0x73b7, 0x73b8, 0x73ba, 0x73bb, 0x73bd, 0x73bf,
- 0x73c0, 0x73c0, 0x73c0, 0x73c0, 0x73c1, 0x73c1, 0x73c2, 0x73c2,
- 0x73c3, 0x73c4, 0x73c5, 0x73c5, 0x73c6, 0x73c7, 0x73c8, 0x73c9,
- 0x73ca, 0x73cb, 0x73cc, 0x73ce, 0x73cf, 0x73d0, 0x73d1, 0x73d3,
- 0x73d4, 0x73d5, 0x73d7, 0x73d8, 0x73da, 0x73db, 0x73dd, 0x73df,
- 0x73e0, 0x73e0, 0x73e0, 0x73e0, 0x73e1, 0x73e1, 0x73e2, 0x73e2,
- 0x73e3, 0x73e4, 0x73e5, 0x73e5, 0x73e6, 0x73e7, 0x73e8, 0x73e9,
- 0x73ea, 0x73eb, 0x73ec, 0x73ee, 0x73ef, 0x73f0, 0x73f1, 0x73f3,
- 0x73f4, 0x73f5, 0x73f7, 0x73f8, 0x73fa, 0x73fb, 0x73fd, 0x73ff,
- 0x7400, 0x7400, 0x7400, 0x7400, 0x7401, 0x7401, 0x7402, 0x7402,
- 0x7403, 0x7404, 0x7405, 0x7405, 0x7406, 0x7407, 0x7408, 0x7409,
- 0x740a, 0x740b, 0x740c, 0x740e, 0x740f, 0x7410, 0x7411, 0x7413,
- 0x7414, 0x7415, 0x7417, 0x7418, 0x741a, 0x741b, 0x741d, 0x741f,
- 0x7440, 0x7440, 0x7440, 0x7440, 0x7441, 0x7441, 0x7442, 0x7442,
- 0x7443, 0x7444, 0x7445, 0x7445, 0x7446, 0x7447, 0x7448, 0x7449,
- 0x744a, 0x744b, 0x744c, 0x744e, 0x744f, 0x7450, 0x7451, 0x7453,
- 0x7454, 0x7455, 0x7457, 0x7458, 0x745a, 0x745b, 0x745d, 0x745f,
- 0x7460, 0x7460, 0x7460, 0x7460, 0x7461, 0x7461, 0x7462, 0x7462,
- 0x7463, 0x7464, 0x7465, 0x7465, 0x7466, 0x7467, 0x7468, 0x7469,
- 0x746a, 0x746b, 0x746c, 0x746e, 0x746f, 0x7470, 0x7471, 0x7473,
- 0x7474, 0x7475, 0x7477, 0x7478, 0x747a, 0x747b, 0x747d, 0x747f,
- 0x7480, 0x7480, 0x7480, 0x7480, 0x7481, 0x7481, 0x7482, 0x7482,
- 0x7483, 0x7484, 0x7485, 0x7485, 0x7486, 0x7487, 0x7488, 0x7489,
- 0x748a, 0x748b, 0x748c, 0x748e, 0x748f, 0x7490, 0x7491, 0x7493,
- 0x7494, 0x7495, 0x7497, 0x7498, 0x749a, 0x749b, 0x749d, 0x749f,
- 0x74c0, 0x74c0, 0x74c0, 0x74c0, 0x74c1, 0x74c1, 0x74c2, 0x74c2,
- 0x74c3, 0x74c4, 0x74c5, 0x74c5, 0x74c6, 0x74c7, 0x74c8, 0x74c9,
- 0x74ca, 0x74cb, 0x74cc, 0x74ce, 0x74cf, 0x74d0, 0x74d1, 0x74d3,
- 0x74d4, 0x74d5, 0x74d7, 0x74d8, 0x74da, 0x74db, 0x74dd, 0x74df,
- 0x74e0, 0x74e0, 0x74e0, 0x74e0, 0x74e1, 0x74e1, 0x74e2, 0x74e2,
- 0x74e3, 0x74e4, 0x74e5, 0x74e5, 0x74e6, 0x74e7, 0x74e8, 0x74e9,
- 0x74ea, 0x74eb, 0x74ec, 0x74ee, 0x74ef, 0x74f0, 0x74f1, 0x74f3,
- 0x74f4, 0x74f5, 0x74f7, 0x74f8, 0x74fa, 0x74fb, 0x74fd, 0x74ff,
- 0x7500, 0x7500, 0x7500, 0x7500, 0x7501, 0x7501, 0x7502, 0x7502,
- 0x7503, 0x7504, 0x7505, 0x7505, 0x7506, 0x7507, 0x7508, 0x7509,
- 0x750a, 0x750b, 0x750c, 0x750e, 0x750f, 0x7510, 0x7511, 0x7513,
- 0x7514, 0x7515, 0x7517, 0x7518, 0x751a, 0x751b, 0x751d, 0x751f,
- 0x7540, 0x7540, 0x7540, 0x7540, 0x7541, 0x7541, 0x7542, 0x7542,
- 0x7543, 0x7544, 0x7545, 0x7545, 0x7546, 0x7547, 0x7548, 0x7549,
- 0x754a, 0x754b, 0x754c, 0x754e, 0x754f, 0x7550, 0x7551, 0x7553,
- 0x7554, 0x7555, 0x7557, 0x7558, 0x755a, 0x755b, 0x755d, 0x755f,
- 0x7560, 0x7560, 0x7560, 0x7560, 0x7561, 0x7561, 0x7562, 0x7562,
- 0x7563, 0x7564, 0x7565, 0x7565, 0x7566, 0x7567, 0x7568, 0x7569,
- 0x756a, 0x756b, 0x756c, 0x756e, 0x756f, 0x7570, 0x7571, 0x7573,
- 0x7574, 0x7575, 0x7577, 0x7578, 0x757a, 0x757b, 0x757d, 0x757f,
- 0x7580, 0x7580, 0x7580, 0x7580, 0x7581, 0x7581, 0x7582, 0x7582,
- 0x7583, 0x7584, 0x7585, 0x7585, 0x7586, 0x7587, 0x7588, 0x7589,
- 0x758a, 0x758b, 0x758c, 0x758e, 0x758f, 0x7590, 0x7591, 0x7593,
- 0x7594, 0x7595, 0x7597, 0x7598, 0x759a, 0x759b, 0x759d, 0x759f,
- 0x75c0, 0x75c0, 0x75c0, 0x75c0, 0x75c1, 0x75c1, 0x75c2, 0x75c2,
- 0x75c3, 0x75c4, 0x75c5, 0x75c5, 0x75c6, 0x75c7, 0x75c8, 0x75c9,
- 0x75ca, 0x75cb, 0x75cc, 0x75ce, 0x75cf, 0x75d0, 0x75d1, 0x75d3,
- 0x75d4, 0x75d5, 0x75d7, 0x75d8, 0x75da, 0x75db, 0x75dd, 0x75df,
- 0x75e0, 0x75e0, 0x75e0, 0x75e0, 0x75e1, 0x75e1, 0x75e2, 0x75e2,
- 0x75e3, 0x75e4, 0x75e5, 0x75e5, 0x75e6, 0x75e7, 0x75e8, 0x75e9,
- 0x75ea, 0x75eb, 0x75ec, 0x75ee, 0x75ef, 0x75f0, 0x75f1, 0x75f3,
- 0x75f4, 0x75f5, 0x75f7, 0x75f8, 0x75fa, 0x75fb, 0x75fd, 0x75ff,
- 0x7620, 0x7620, 0x7620, 0x7620, 0x7621, 0x7621, 0x7622, 0x7622,
- 0x7623, 0x7624, 0x7625, 0x7625, 0x7626, 0x7627, 0x7628, 0x7629,
- 0x762a, 0x762b, 0x762c, 0x762e, 0x762f, 0x7630, 0x7631, 0x7633,
- 0x7634, 0x7635, 0x7637, 0x7638, 0x763a, 0x763b, 0x763d, 0x763f,
- 0x7640, 0x7640, 0x7640, 0x7640, 0x7641, 0x7641, 0x7642, 0x7642,
- 0x7643, 0x7644, 0x7645, 0x7645, 0x7646, 0x7647, 0x7648, 0x7649,
- 0x764a, 0x764b, 0x764c, 0x764e, 0x764f, 0x7650, 0x7651, 0x7653,
- 0x7654, 0x7655, 0x7657, 0x7658, 0x765a, 0x765b, 0x765d, 0x765f,
- 0x7680, 0x7680, 0x7680, 0x7680, 0x7681, 0x7681, 0x7682, 0x7682,
- 0x7683, 0x7684, 0x7685, 0x7685, 0x7686, 0x7687, 0x7688, 0x7689,
- 0x768a, 0x768b, 0x768c, 0x768e, 0x768f, 0x7690, 0x7691, 0x7693,
- 0x7694, 0x7695, 0x7697, 0x7698, 0x769a, 0x769b, 0x769d, 0x769f,
- 0x76a0, 0x76a0, 0x76a0, 0x76a0, 0x76a1, 0x76a1, 0x76a2, 0x76a2,
- 0x76a3, 0x76a4, 0x76a5, 0x76a5, 0x76a6, 0x76a7, 0x76a8, 0x76a9,
- 0x76aa, 0x76ab, 0x76ac, 0x76ae, 0x76af, 0x76b0, 0x76b1, 0x76b3,
- 0x76b4, 0x76b5, 0x76b7, 0x76b8, 0x76ba, 0x76bb, 0x76bd, 0x76bf,
- 0x76e0, 0x76e0, 0x76e0, 0x76e0, 0x76e1, 0x76e1, 0x76e2, 0x76e2,
- 0x76e3, 0x76e4, 0x76e5, 0x76e5, 0x76e6, 0x76e7, 0x76e8, 0x76e9,
- 0x76ea, 0x76eb, 0x76ec, 0x76ee, 0x76ef, 0x76f0, 0x76f1, 0x76f3,
- 0x76f4, 0x76f5, 0x76f7, 0x76f8, 0x76fa, 0x76fb, 0x76fd, 0x76ff,
- 0x7700, 0x7700, 0x7700, 0x7700, 0x7701, 0x7701, 0x7702, 0x7702,
- 0x7703, 0x7704, 0x7705, 0x7705, 0x7706, 0x7707, 0x7708, 0x7709,
- 0x770a, 0x770b, 0x770c, 0x770e, 0x770f, 0x7710, 0x7711, 0x7713,
- 0x7714, 0x7715, 0x7717, 0x7718, 0x771a, 0x771b, 0x771d, 0x771f,
- 0x7740, 0x7740, 0x7740, 0x7740, 0x7741, 0x7741, 0x7742, 0x7742,
- 0x7743, 0x7744, 0x7745, 0x7745, 0x7746, 0x7747, 0x7748, 0x7749,
- 0x774a, 0x774b, 0x774c, 0x774e, 0x774f, 0x7750, 0x7751, 0x7753,
- 0x7754, 0x7755, 0x7757, 0x7758, 0x775a, 0x775b, 0x775d, 0x775f,
- 0x7760, 0x7760, 0x7760, 0x7760, 0x7761, 0x7761, 0x7762, 0x7762,
- 0x7763, 0x7764, 0x7765, 0x7765, 0x7766, 0x7767, 0x7768, 0x7769,
- 0x776a, 0x776b, 0x776c, 0x776e, 0x776f, 0x7770, 0x7771, 0x7773,
- 0x7774, 0x7775, 0x7777, 0x7778, 0x777a, 0x777b, 0x777d, 0x777f,
- 0x77a0, 0x77a0, 0x77a0, 0x77a0, 0x77a1, 0x77a1, 0x77a2, 0x77a2,
- 0x77a3, 0x77a4, 0x77a5, 0x77a5, 0x77a6, 0x77a7, 0x77a8, 0x77a9,
- 0x77aa, 0x77ab, 0x77ac, 0x77ae, 0x77af, 0x77b0, 0x77b1, 0x77b3,
- 0x77b4, 0x77b5, 0x77b7, 0x77b8, 0x77ba, 0x77bb, 0x77bd, 0x77bf,
- 0x77e0, 0x77e0, 0x77e0, 0x77e0, 0x77e1, 0x77e1, 0x77e2, 0x77e2,
- 0x77e3, 0x77e4, 0x77e5, 0x77e5, 0x77e6, 0x77e7, 0x77e8, 0x77e9,
- 0x77ea, 0x77eb, 0x77ec, 0x77ee, 0x77ef, 0x77f0, 0x77f1, 0x77f3,
- 0x77f4, 0x77f5, 0x77f7, 0x77f8, 0x77fa, 0x77fb, 0x77fd, 0x77ff,
- 0x7800, 0x7800, 0x7800, 0x7800, 0x7801, 0x7801, 0x7802, 0x7802,
- 0x7803, 0x7804, 0x7805, 0x7805, 0x7806, 0x7807, 0x7808, 0x7809,
- 0x780a, 0x780b, 0x780c, 0x780e, 0x780f, 0x7810, 0x7811, 0x7813,
- 0x7814, 0x7815, 0x7817, 0x7818, 0x781a, 0x781b, 0x781d, 0x781f,
- 0x7800, 0x7800, 0x7800, 0x7800, 0x7801, 0x7801, 0x7802, 0x7802,
- 0x7803, 0x7804, 0x7805, 0x7805, 0x7806, 0x7807, 0x7808, 0x7809,
- 0x780a, 0x780b, 0x780c, 0x780e, 0x780f, 0x7810, 0x7811, 0x7813,
- 0x7814, 0x7815, 0x7817, 0x7818, 0x781a, 0x781b, 0x781d, 0x781f,
- 0x7800, 0x7800, 0x7800, 0x7800, 0x7801, 0x7801, 0x7802, 0x7802,
- 0x7803, 0x7804, 0x7805, 0x7805, 0x7806, 0x7807, 0x7808, 0x7809,
- 0x780a, 0x780b, 0x780c, 0x780e, 0x780f, 0x7810, 0x7811, 0x7813,
- 0x7814, 0x7815, 0x7817, 0x7818, 0x781a, 0x781b, 0x781d, 0x781f,
- 0x7800, 0x7800, 0x7800, 0x7800, 0x7801, 0x7801, 0x7802, 0x7802,
- 0x7803, 0x7804, 0x7805, 0x7805, 0x7806, 0x7807, 0x7808, 0x7809,
- 0x780a, 0x780b, 0x780c, 0x780e, 0x780f, 0x7810, 0x7811, 0x7813,
- 0x7814, 0x7815, 0x7817, 0x7818, 0x781a, 0x781b, 0x781d, 0x781f,
- 0x7800, 0x7800, 0x7800, 0x7800, 0x7801, 0x7801, 0x7802, 0x7802,
- 0x7803, 0x7804, 0x7805, 0x7805, 0x7806, 0x7807, 0x7808, 0x7809,
- 0x780a, 0x780b, 0x780c, 0x780e, 0x780f, 0x7810, 0x7811, 0x7813,
- 0x7814, 0x7815, 0x7817, 0x7818, 0x781a, 0x781b, 0x781d, 0x781f,
- 0x7820, 0x7820, 0x7820, 0x7820, 0x7821, 0x7821, 0x7822, 0x7822,
- 0x7823, 0x7824, 0x7825, 0x7825, 0x7826, 0x7827, 0x7828, 0x7829,
- 0x782a, 0x782b, 0x782c, 0x782e, 0x782f, 0x7830, 0x7831, 0x7833,
- 0x7834, 0x7835, 0x7837, 0x7838, 0x783a, 0x783b, 0x783d, 0x783f,
- 0x7820, 0x7820, 0x7820, 0x7820, 0x7821, 0x7821, 0x7822, 0x7822,
- 0x7823, 0x7824, 0x7825, 0x7825, 0x7826, 0x7827, 0x7828, 0x7829,
- 0x782a, 0x782b, 0x782c, 0x782e, 0x782f, 0x7830, 0x7831, 0x7833,
- 0x7834, 0x7835, 0x7837, 0x7838, 0x783a, 0x783b, 0x783d, 0x783f,
- 0x7820, 0x7820, 0x7820, 0x7820, 0x7821, 0x7821, 0x7822, 0x7822,
- 0x7823, 0x7824, 0x7825, 0x7825, 0x7826, 0x7827, 0x7828, 0x7829,
- 0x782a, 0x782b, 0x782c, 0x782e, 0x782f, 0x7830, 0x7831, 0x7833,
- 0x7834, 0x7835, 0x7837, 0x7838, 0x783a, 0x783b, 0x783d, 0x783f,
- 0x7840, 0x7840, 0x7840, 0x7840, 0x7841, 0x7841, 0x7842, 0x7842,
- 0x7843, 0x7844, 0x7845, 0x7845, 0x7846, 0x7847, 0x7848, 0x7849,
- 0x784a, 0x784b, 0x784c, 0x784e, 0x784f, 0x7850, 0x7851, 0x7853,
- 0x7854, 0x7855, 0x7857, 0x7858, 0x785a, 0x785b, 0x785d, 0x785f,
- 0x7840, 0x7840, 0x7840, 0x7840, 0x7841, 0x7841, 0x7842, 0x7842,
- 0x7843, 0x7844, 0x7845, 0x7845, 0x7846, 0x7847, 0x7848, 0x7849,
- 0x784a, 0x784b, 0x784c, 0x784e, 0x784f, 0x7850, 0x7851, 0x7853,
- 0x7854, 0x7855, 0x7857, 0x7858, 0x785a, 0x785b, 0x785d, 0x785f,
- 0x7860, 0x7860, 0x7860, 0x7860, 0x7861, 0x7861, 0x7862, 0x7862,
- 0x7863, 0x7864, 0x7865, 0x7865, 0x7866, 0x7867, 0x7868, 0x7869,
- 0x786a, 0x786b, 0x786c, 0x786e, 0x786f, 0x7870, 0x7871, 0x7873,
- 0x7874, 0x7875, 0x7877, 0x7878, 0x787a, 0x787b, 0x787d, 0x787f,
- 0x7860, 0x7860, 0x7860, 0x7860, 0x7861, 0x7861, 0x7862, 0x7862,
- 0x7863, 0x7864, 0x7865, 0x7865, 0x7866, 0x7867, 0x7868, 0x7869,
- 0x786a, 0x786b, 0x786c, 0x786e, 0x786f, 0x7870, 0x7871, 0x7873,
- 0x7874, 0x7875, 0x7877, 0x7878, 0x787a, 0x787b, 0x787d, 0x787f,
- 0x7880, 0x7880, 0x7880, 0x7880, 0x7881, 0x7881, 0x7882, 0x7882,
- 0x7883, 0x7884, 0x7885, 0x7885, 0x7886, 0x7887, 0x7888, 0x7889,
- 0x788a, 0x788b, 0x788c, 0x788e, 0x788f, 0x7890, 0x7891, 0x7893,
- 0x7894, 0x7895, 0x7897, 0x7898, 0x789a, 0x789b, 0x789d, 0x789f,
- 0x78a0, 0x78a0, 0x78a0, 0x78a0, 0x78a1, 0x78a1, 0x78a2, 0x78a2,
- 0x78a3, 0x78a4, 0x78a5, 0x78a5, 0x78a6, 0x78a7, 0x78a8, 0x78a9,
- 0x78aa, 0x78ab, 0x78ac, 0x78ae, 0x78af, 0x78b0, 0x78b1, 0x78b3,
- 0x78b4, 0x78b5, 0x78b7, 0x78b8, 0x78ba, 0x78bb, 0x78bd, 0x78bf,
- 0x78a0, 0x78a0, 0x78a0, 0x78a0, 0x78a1, 0x78a1, 0x78a2, 0x78a2,
- 0x78a3, 0x78a4, 0x78a5, 0x78a5, 0x78a6, 0x78a7, 0x78a8, 0x78a9,
- 0x78aa, 0x78ab, 0x78ac, 0x78ae, 0x78af, 0x78b0, 0x78b1, 0x78b3,
- 0x78b4, 0x78b5, 0x78b7, 0x78b8, 0x78ba, 0x78bb, 0x78bd, 0x78bf,
- 0x78c0, 0x78c0, 0x78c0, 0x78c0, 0x78c1, 0x78c1, 0x78c2, 0x78c2,
- 0x78c3, 0x78c4, 0x78c5, 0x78c5, 0x78c6, 0x78c7, 0x78c8, 0x78c9,
- 0x78ca, 0x78cb, 0x78cc, 0x78ce, 0x78cf, 0x78d0, 0x78d1, 0x78d3,
- 0x78d4, 0x78d5, 0x78d7, 0x78d8, 0x78da, 0x78db, 0x78dd, 0x78df,
- 0x78e0, 0x78e0, 0x78e0, 0x78e0, 0x78e1, 0x78e1, 0x78e2, 0x78e2,
- 0x78e3, 0x78e4, 0x78e5, 0x78e5, 0x78e6, 0x78e7, 0x78e8, 0x78e9,
- 0x78ea, 0x78eb, 0x78ec, 0x78ee, 0x78ef, 0x78f0, 0x78f1, 0x78f3,
- 0x78f4, 0x78f5, 0x78f7, 0x78f8, 0x78fa, 0x78fb, 0x78fd, 0x78ff,
- 0x78e0, 0x78e0, 0x78e0, 0x78e0, 0x78e1, 0x78e1, 0x78e2, 0x78e2,
- 0x78e3, 0x78e4, 0x78e5, 0x78e5, 0x78e6, 0x78e7, 0x78e8, 0x78e9,
- 0x78ea, 0x78eb, 0x78ec, 0x78ee, 0x78ef, 0x78f0, 0x78f1, 0x78f3,
- 0x78f4, 0x78f5, 0x78f7, 0x78f8, 0x78fa, 0x78fb, 0x78fd, 0x78ff,
- 0x7900, 0x7900, 0x7900, 0x7900, 0x7901, 0x7901, 0x7902, 0x7902,
- 0x7903, 0x7904, 0x7905, 0x7905, 0x7906, 0x7907, 0x7908, 0x7909,
- 0x790a, 0x790b, 0x790c, 0x790e, 0x790f, 0x7910, 0x7911, 0x7913,
- 0x7914, 0x7915, 0x7917, 0x7918, 0x791a, 0x791b, 0x791d, 0x791f,
- 0x7920, 0x7920, 0x7920, 0x7920, 0x7921, 0x7921, 0x7922, 0x7922,
- 0x7923, 0x7924, 0x7925, 0x7925, 0x7926, 0x7927, 0x7928, 0x7929,
- 0x792a, 0x792b, 0x792c, 0x792e, 0x792f, 0x7930, 0x7931, 0x7933,
- 0x7934, 0x7935, 0x7937, 0x7938, 0x793a, 0x793b, 0x793d, 0x793f,
- 0x7940, 0x7940, 0x7940, 0x7940, 0x7941, 0x7941, 0x7942, 0x7942,
- 0x7943, 0x7944, 0x7945, 0x7945, 0x7946, 0x7947, 0x7948, 0x7949,
- 0x794a, 0x794b, 0x794c, 0x794e, 0x794f, 0x7950, 0x7951, 0x7953,
- 0x7954, 0x7955, 0x7957, 0x7958, 0x795a, 0x795b, 0x795d, 0x795f,
- 0x7940, 0x7940, 0x7940, 0x7940, 0x7941, 0x7941, 0x7942, 0x7942,
- 0x7943, 0x7944, 0x7945, 0x7945, 0x7946, 0x7947, 0x7948, 0x7949,
- 0x794a, 0x794b, 0x794c, 0x794e, 0x794f, 0x7950, 0x7951, 0x7953,
- 0x7954, 0x7955, 0x7957, 0x7958, 0x795a, 0x795b, 0x795d, 0x795f,
- 0x7960, 0x7960, 0x7960, 0x7960, 0x7961, 0x7961, 0x7962, 0x7962,
- 0x7963, 0x7964, 0x7965, 0x7965, 0x7966, 0x7967, 0x7968, 0x7969,
- 0x796a, 0x796b, 0x796c, 0x796e, 0x796f, 0x7970, 0x7971, 0x7973,
- 0x7974, 0x7975, 0x7977, 0x7978, 0x797a, 0x797b, 0x797d, 0x797f,
- 0x7980, 0x7980, 0x7980, 0x7980, 0x7981, 0x7981, 0x7982, 0x7982,
- 0x7983, 0x7984, 0x7985, 0x7985, 0x7986, 0x7987, 0x7988, 0x7989,
- 0x798a, 0x798b, 0x798c, 0x798e, 0x798f, 0x7990, 0x7991, 0x7993,
- 0x7994, 0x7995, 0x7997, 0x7998, 0x799a, 0x799b, 0x799d, 0x799f,
- 0x79a0, 0x79a0, 0x79a0, 0x79a0, 0x79a1, 0x79a1, 0x79a2, 0x79a2,
- 0x79a3, 0x79a4, 0x79a5, 0x79a5, 0x79a6, 0x79a7, 0x79a8, 0x79a9,
- 0x79aa, 0x79ab, 0x79ac, 0x79ae, 0x79af, 0x79b0, 0x79b1, 0x79b3,
- 0x79b4, 0x79b5, 0x79b7, 0x79b8, 0x79ba, 0x79bb, 0x79bd, 0x79bf,
- 0x79c0, 0x79c0, 0x79c0, 0x79c0, 0x79c1, 0x79c1, 0x79c2, 0x79c2,
- 0x79c3, 0x79c4, 0x79c5, 0x79c5, 0x79c6, 0x79c7, 0x79c8, 0x79c9,
- 0x79ca, 0x79cb, 0x79cc, 0x79ce, 0x79cf, 0x79d0, 0x79d1, 0x79d3,
- 0x79d4, 0x79d5, 0x79d7, 0x79d8, 0x79da, 0x79db, 0x79dd, 0x79df,
- 0x79e0, 0x79e0, 0x79e0, 0x79e0, 0x79e1, 0x79e1, 0x79e2, 0x79e2,
- 0x79e3, 0x79e4, 0x79e5, 0x79e5, 0x79e6, 0x79e7, 0x79e8, 0x79e9,
- 0x79ea, 0x79eb, 0x79ec, 0x79ee, 0x79ef, 0x79f0, 0x79f1, 0x79f3,
- 0x79f4, 0x79f5, 0x79f7, 0x79f8, 0x79fa, 0x79fb, 0x79fd, 0x79ff,
- 0x7a00, 0x7a00, 0x7a00, 0x7a00, 0x7a01, 0x7a01, 0x7a02, 0x7a02,
- 0x7a03, 0x7a04, 0x7a05, 0x7a05, 0x7a06, 0x7a07, 0x7a08, 0x7a09,
- 0x7a0a, 0x7a0b, 0x7a0c, 0x7a0e, 0x7a0f, 0x7a10, 0x7a11, 0x7a13,
- 0x7a14, 0x7a15, 0x7a17, 0x7a18, 0x7a1a, 0x7a1b, 0x7a1d, 0x7a1f,
- 0x7a20, 0x7a20, 0x7a20, 0x7a20, 0x7a21, 0x7a21, 0x7a22, 0x7a22,
- 0x7a23, 0x7a24, 0x7a25, 0x7a25, 0x7a26, 0x7a27, 0x7a28, 0x7a29,
- 0x7a2a, 0x7a2b, 0x7a2c, 0x7a2e, 0x7a2f, 0x7a30, 0x7a31, 0x7a33,
- 0x7a34, 0x7a35, 0x7a37, 0x7a38, 0x7a3a, 0x7a3b, 0x7a3d, 0x7a3f,
- 0x7a40, 0x7a40, 0x7a40, 0x7a40, 0x7a41, 0x7a41, 0x7a42, 0x7a42,
- 0x7a43, 0x7a44, 0x7a45, 0x7a45, 0x7a46, 0x7a47, 0x7a48, 0x7a49,
- 0x7a4a, 0x7a4b, 0x7a4c, 0x7a4e, 0x7a4f, 0x7a50, 0x7a51, 0x7a53,
- 0x7a54, 0x7a55, 0x7a57, 0x7a58, 0x7a5a, 0x7a5b, 0x7a5d, 0x7a5f,
- 0x7a60, 0x7a60, 0x7a60, 0x7a60, 0x7a61, 0x7a61, 0x7a62, 0x7a62,
- 0x7a63, 0x7a64, 0x7a65, 0x7a65, 0x7a66, 0x7a67, 0x7a68, 0x7a69,
- 0x7a6a, 0x7a6b, 0x7a6c, 0x7a6e, 0x7a6f, 0x7a70, 0x7a71, 0x7a73,
- 0x7a74, 0x7a75, 0x7a77, 0x7a78, 0x7a7a, 0x7a7b, 0x7a7d, 0x7a7f,
- 0x7a80, 0x7a80, 0x7a80, 0x7a80, 0x7a81, 0x7a81, 0x7a82, 0x7a82,
- 0x7a83, 0x7a84, 0x7a85, 0x7a85, 0x7a86, 0x7a87, 0x7a88, 0x7a89,
- 0x7a8a, 0x7a8b, 0x7a8c, 0x7a8e, 0x7a8f, 0x7a90, 0x7a91, 0x7a93,
- 0x7a94, 0x7a95, 0x7a97, 0x7a98, 0x7a9a, 0x7a9b, 0x7a9d, 0x7a9f,
- 0x7aa0, 0x7aa0, 0x7aa0, 0x7aa0, 0x7aa1, 0x7aa1, 0x7aa2, 0x7aa2,
- 0x7aa3, 0x7aa4, 0x7aa5, 0x7aa5, 0x7aa6, 0x7aa7, 0x7aa8, 0x7aa9,
- 0x7aaa, 0x7aab, 0x7aac, 0x7aae, 0x7aaf, 0x7ab0, 0x7ab1, 0x7ab3,
- 0x7ab4, 0x7ab5, 0x7ab7, 0x7ab8, 0x7aba, 0x7abb, 0x7abd, 0x7abf,
- 0x7ac0, 0x7ac0, 0x7ac0, 0x7ac0, 0x7ac1, 0x7ac1, 0x7ac2, 0x7ac2,
- 0x7ac3, 0x7ac4, 0x7ac5, 0x7ac5, 0x7ac6, 0x7ac7, 0x7ac8, 0x7ac9,
- 0x7aca, 0x7acb, 0x7acc, 0x7ace, 0x7acf, 0x7ad0, 0x7ad1, 0x7ad3,
- 0x7ad4, 0x7ad5, 0x7ad7, 0x7ad8, 0x7ada, 0x7adb, 0x7add, 0x7adf,
- 0x7ae0, 0x7ae0, 0x7ae0, 0x7ae0, 0x7ae1, 0x7ae1, 0x7ae2, 0x7ae2,
- 0x7ae3, 0x7ae4, 0x7ae5, 0x7ae5, 0x7ae6, 0x7ae7, 0x7ae8, 0x7ae9,
- 0x7aea, 0x7aeb, 0x7aec, 0x7aee, 0x7aef, 0x7af0, 0x7af1, 0x7af3,
- 0x7af4, 0x7af5, 0x7af7, 0x7af8, 0x7afa, 0x7afb, 0x7afd, 0x7aff,
- 0x7b00, 0x7b00, 0x7b00, 0x7b00, 0x7b01, 0x7b01, 0x7b02, 0x7b02,
- 0x7b03, 0x7b04, 0x7b05, 0x7b05, 0x7b06, 0x7b07, 0x7b08, 0x7b09,
- 0x7b0a, 0x7b0b, 0x7b0c, 0x7b0e, 0x7b0f, 0x7b10, 0x7b11, 0x7b13,
- 0x7b14, 0x7b15, 0x7b17, 0x7b18, 0x7b1a, 0x7b1b, 0x7b1d, 0x7b1f,
- 0x7b20, 0x7b20, 0x7b20, 0x7b20, 0x7b21, 0x7b21, 0x7b22, 0x7b22,
- 0x7b23, 0x7b24, 0x7b25, 0x7b25, 0x7b26, 0x7b27, 0x7b28, 0x7b29,
- 0x7b2a, 0x7b2b, 0x7b2c, 0x7b2e, 0x7b2f, 0x7b30, 0x7b31, 0x7b33,
- 0x7b34, 0x7b35, 0x7b37, 0x7b38, 0x7b3a, 0x7b3b, 0x7b3d, 0x7b3f,
- 0x7b40, 0x7b40, 0x7b40, 0x7b40, 0x7b41, 0x7b41, 0x7b42, 0x7b42,
- 0x7b43, 0x7b44, 0x7b45, 0x7b45, 0x7b46, 0x7b47, 0x7b48, 0x7b49,
- 0x7b4a, 0x7b4b, 0x7b4c, 0x7b4e, 0x7b4f, 0x7b50, 0x7b51, 0x7b53,
- 0x7b54, 0x7b55, 0x7b57, 0x7b58, 0x7b5a, 0x7b5b, 0x7b5d, 0x7b5f,
- 0x7b80, 0x7b80, 0x7b80, 0x7b80, 0x7b81, 0x7b81, 0x7b82, 0x7b82,
- 0x7b83, 0x7b84, 0x7b85, 0x7b85, 0x7b86, 0x7b87, 0x7b88, 0x7b89,
- 0x7b8a, 0x7b8b, 0x7b8c, 0x7b8e, 0x7b8f, 0x7b90, 0x7b91, 0x7b93,
- 0x7b94, 0x7b95, 0x7b97, 0x7b98, 0x7b9a, 0x7b9b, 0x7b9d, 0x7b9f,
- 0x7ba0, 0x7ba0, 0x7ba0, 0x7ba0, 0x7ba1, 0x7ba1, 0x7ba2, 0x7ba2,
- 0x7ba3, 0x7ba4, 0x7ba5, 0x7ba5, 0x7ba6, 0x7ba7, 0x7ba8, 0x7ba9,
- 0x7baa, 0x7bab, 0x7bac, 0x7bae, 0x7baf, 0x7bb0, 0x7bb1, 0x7bb3,
- 0x7bb4, 0x7bb5, 0x7bb7, 0x7bb8, 0x7bba, 0x7bbb, 0x7bbd, 0x7bbf,
- 0x7bc0, 0x7bc0, 0x7bc0, 0x7bc0, 0x7bc1, 0x7bc1, 0x7bc2, 0x7bc2,
- 0x7bc3, 0x7bc4, 0x7bc5, 0x7bc5, 0x7bc6, 0x7bc7, 0x7bc8, 0x7bc9,
- 0x7bca, 0x7bcb, 0x7bcc, 0x7bce, 0x7bcf, 0x7bd0, 0x7bd1, 0x7bd3,
- 0x7bd4, 0x7bd5, 0x7bd7, 0x7bd8, 0x7bda, 0x7bdb, 0x7bdd, 0x7bdf,
- 0x7be0, 0x7be0, 0x7be0, 0x7be0, 0x7be1, 0x7be1, 0x7be2, 0x7be2,
- 0x7be3, 0x7be4, 0x7be5, 0x7be5, 0x7be6, 0x7be7, 0x7be8, 0x7be9,
- 0x7bea, 0x7beb, 0x7bec, 0x7bee, 0x7bef, 0x7bf0, 0x7bf1, 0x7bf3,
- 0x7bf4, 0x7bf5, 0x7bf7, 0x7bf8, 0x7bfa, 0x7bfb, 0x7bfd, 0x7bff,
- 0x7c00, 0x7c00, 0x7c00, 0x7c00, 0x7c01, 0x7c01, 0x7c02, 0x7c02,
- 0x7c03, 0x7c04, 0x7c05, 0x7c05, 0x7c06, 0x7c07, 0x7c08, 0x7c09,
- 0x7c0a, 0x7c0b, 0x7c0c, 0x7c0e, 0x7c0f, 0x7c10, 0x7c11, 0x7c13,
- 0x7c14, 0x7c15, 0x7c17, 0x7c18, 0x7c1a, 0x7c1b, 0x7c1d, 0x7c1f,
- 0x7c40, 0x7c40, 0x7c40, 0x7c40, 0x7c41, 0x7c41, 0x7c42, 0x7c42,
- 0x7c43, 0x7c44, 0x7c45, 0x7c45, 0x7c46, 0x7c47, 0x7c48, 0x7c49,
- 0x7c4a, 0x7c4b, 0x7c4c, 0x7c4e, 0x7c4f, 0x7c50, 0x7c51, 0x7c53,
- 0x7c54, 0x7c55, 0x7c57, 0x7c58, 0x7c5a, 0x7c5b, 0x7c5d, 0x7c5f,
- 0x7c60, 0x7c60, 0x7c60, 0x7c60, 0x7c61, 0x7c61, 0x7c62, 0x7c62,
- 0x7c63, 0x7c64, 0x7c65, 0x7c65, 0x7c66, 0x7c67, 0x7c68, 0x7c69,
- 0x7c6a, 0x7c6b, 0x7c6c, 0x7c6e, 0x7c6f, 0x7c70, 0x7c71, 0x7c73,
- 0x7c74, 0x7c75, 0x7c77, 0x7c78, 0x7c7a, 0x7c7b, 0x7c7d, 0x7c7f,
- 0x7c80, 0x7c80, 0x7c80, 0x7c80, 0x7c81, 0x7c81, 0x7c82, 0x7c82,
- 0x7c83, 0x7c84, 0x7c85, 0x7c85, 0x7c86, 0x7c87, 0x7c88, 0x7c89,
- 0x7c8a, 0x7c8b, 0x7c8c, 0x7c8e, 0x7c8f, 0x7c90, 0x7c91, 0x7c93,
- 0x7c94, 0x7c95, 0x7c97, 0x7c98, 0x7c9a, 0x7c9b, 0x7c9d, 0x7c9f,
- 0x7cc0, 0x7cc0, 0x7cc0, 0x7cc0, 0x7cc1, 0x7cc1, 0x7cc2, 0x7cc2,
- 0x7cc3, 0x7cc4, 0x7cc5, 0x7cc5, 0x7cc6, 0x7cc7, 0x7cc8, 0x7cc9,
- 0x7cca, 0x7ccb, 0x7ccc, 0x7cce, 0x7ccf, 0x7cd0, 0x7cd1, 0x7cd3,
- 0x7cd4, 0x7cd5, 0x7cd7, 0x7cd8, 0x7cda, 0x7cdb, 0x7cdd, 0x7cdf,
- 0x7ce0, 0x7ce0, 0x7ce0, 0x7ce0, 0x7ce1, 0x7ce1, 0x7ce2, 0x7ce2,
- 0x7ce3, 0x7ce4, 0x7ce5, 0x7ce5, 0x7ce6, 0x7ce7, 0x7ce8, 0x7ce9,
- 0x7cea, 0x7ceb, 0x7cec, 0x7cee, 0x7cef, 0x7cf0, 0x7cf1, 0x7cf3,
- 0x7cf4, 0x7cf5, 0x7cf7, 0x7cf8, 0x7cfa, 0x7cfb, 0x7cfd, 0x7cff,
- 0x7d00, 0x7d00, 0x7d00, 0x7d00, 0x7d01, 0x7d01, 0x7d02, 0x7d02,
- 0x7d03, 0x7d04, 0x7d05, 0x7d05, 0x7d06, 0x7d07, 0x7d08, 0x7d09,
- 0x7d0a, 0x7d0b, 0x7d0c, 0x7d0e, 0x7d0f, 0x7d10, 0x7d11, 0x7d13,
- 0x7d14, 0x7d15, 0x7d17, 0x7d18, 0x7d1a, 0x7d1b, 0x7d1d, 0x7d1f,
- 0x7d40, 0x7d40, 0x7d40, 0x7d40, 0x7d41, 0x7d41, 0x7d42, 0x7d42,
- 0x7d43, 0x7d44, 0x7d45, 0x7d45, 0x7d46, 0x7d47, 0x7d48, 0x7d49,
- 0x7d4a, 0x7d4b, 0x7d4c, 0x7d4e, 0x7d4f, 0x7d50, 0x7d51, 0x7d53,
- 0x7d54, 0x7d55, 0x7d57, 0x7d58, 0x7d5a, 0x7d5b, 0x7d5d, 0x7d5f,
- 0x7d60, 0x7d60, 0x7d60, 0x7d60, 0x7d61, 0x7d61, 0x7d62, 0x7d62,
- 0x7d63, 0x7d64, 0x7d65, 0x7d65, 0x7d66, 0x7d67, 0x7d68, 0x7d69,
- 0x7d6a, 0x7d6b, 0x7d6c, 0x7d6e, 0x7d6f, 0x7d70, 0x7d71, 0x7d73,
- 0x7d74, 0x7d75, 0x7d77, 0x7d78, 0x7d7a, 0x7d7b, 0x7d7d, 0x7d7f,
- 0x7d80, 0x7d80, 0x7d80, 0x7d80, 0x7d81, 0x7d81, 0x7d82, 0x7d82,
- 0x7d83, 0x7d84, 0x7d85, 0x7d85, 0x7d86, 0x7d87, 0x7d88, 0x7d89,
- 0x7d8a, 0x7d8b, 0x7d8c, 0x7d8e, 0x7d8f, 0x7d90, 0x7d91, 0x7d93,
- 0x7d94, 0x7d95, 0x7d97, 0x7d98, 0x7d9a, 0x7d9b, 0x7d9d, 0x7d9f,
- 0x7dc0, 0x7dc0, 0x7dc0, 0x7dc0, 0x7dc1, 0x7dc1, 0x7dc2, 0x7dc2,
- 0x7dc3, 0x7dc4, 0x7dc5, 0x7dc5, 0x7dc6, 0x7dc7, 0x7dc8, 0x7dc9,
- 0x7dca, 0x7dcb, 0x7dcc, 0x7dce, 0x7dcf, 0x7dd0, 0x7dd1, 0x7dd3,
- 0x7dd4, 0x7dd5, 0x7dd7, 0x7dd8, 0x7dda, 0x7ddb, 0x7ddd, 0x7ddf,
- 0x7de0, 0x7de0, 0x7de0, 0x7de0, 0x7de1, 0x7de1, 0x7de2, 0x7de2,
- 0x7de3, 0x7de4, 0x7de5, 0x7de5, 0x7de6, 0x7de7, 0x7de8, 0x7de9,
- 0x7dea, 0x7deb, 0x7dec, 0x7dee, 0x7def, 0x7df0, 0x7df1, 0x7df3,
- 0x7df4, 0x7df5, 0x7df7, 0x7df8, 0x7dfa, 0x7dfb, 0x7dfd, 0x7dff,
- 0x7e20, 0x7e20, 0x7e20, 0x7e20, 0x7e21, 0x7e21, 0x7e22, 0x7e22,
- 0x7e23, 0x7e24, 0x7e25, 0x7e25, 0x7e26, 0x7e27, 0x7e28, 0x7e29,
- 0x7e2a, 0x7e2b, 0x7e2c, 0x7e2e, 0x7e2f, 0x7e30, 0x7e31, 0x7e33,
- 0x7e34, 0x7e35, 0x7e37, 0x7e38, 0x7e3a, 0x7e3b, 0x7e3d, 0x7e3f,
- 0x7e40, 0x7e40, 0x7e40, 0x7e40, 0x7e41, 0x7e41, 0x7e42, 0x7e42,
- 0x7e43, 0x7e44, 0x7e45, 0x7e45, 0x7e46, 0x7e47, 0x7e48, 0x7e49,
- 0x7e4a, 0x7e4b, 0x7e4c, 0x7e4e, 0x7e4f, 0x7e50, 0x7e51, 0x7e53,
- 0x7e54, 0x7e55, 0x7e57, 0x7e58, 0x7e5a, 0x7e5b, 0x7e5d, 0x7e5f,
- 0x7e80, 0x7e80, 0x7e80, 0x7e80, 0x7e81, 0x7e81, 0x7e82, 0x7e82,
- 0x7e83, 0x7e84, 0x7e85, 0x7e85, 0x7e86, 0x7e87, 0x7e88, 0x7e89,
- 0x7e8a, 0x7e8b, 0x7e8c, 0x7e8e, 0x7e8f, 0x7e90, 0x7e91, 0x7e93,
- 0x7e94, 0x7e95, 0x7e97, 0x7e98, 0x7e9a, 0x7e9b, 0x7e9d, 0x7e9f,
- 0x7ea0, 0x7ea0, 0x7ea0, 0x7ea0, 0x7ea1, 0x7ea1, 0x7ea2, 0x7ea2,
- 0x7ea3, 0x7ea4, 0x7ea5, 0x7ea5, 0x7ea6, 0x7ea7, 0x7ea8, 0x7ea9,
- 0x7eaa, 0x7eab, 0x7eac, 0x7eae, 0x7eaf, 0x7eb0, 0x7eb1, 0x7eb3,
- 0x7eb4, 0x7eb5, 0x7eb7, 0x7eb8, 0x7eba, 0x7ebb, 0x7ebd, 0x7ebf,
- 0x7ee0, 0x7ee0, 0x7ee0, 0x7ee0, 0x7ee1, 0x7ee1, 0x7ee2, 0x7ee2,
- 0x7ee3, 0x7ee4, 0x7ee5, 0x7ee5, 0x7ee6, 0x7ee7, 0x7ee8, 0x7ee9,
- 0x7eea, 0x7eeb, 0x7eec, 0x7eee, 0x7eef, 0x7ef0, 0x7ef1, 0x7ef3,
- 0x7ef4, 0x7ef5, 0x7ef7, 0x7ef8, 0x7efa, 0x7efb, 0x7efd, 0x7eff,
- 0x7f00, 0x7f00, 0x7f00, 0x7f00, 0x7f01, 0x7f01, 0x7f02, 0x7f02,
- 0x7f03, 0x7f04, 0x7f05, 0x7f05, 0x7f06, 0x7f07, 0x7f08, 0x7f09,
- 0x7f0a, 0x7f0b, 0x7f0c, 0x7f0e, 0x7f0f, 0x7f10, 0x7f11, 0x7f13,
- 0x7f14, 0x7f15, 0x7f17, 0x7f18, 0x7f1a, 0x7f1b, 0x7f1d, 0x7f1f,
- 0x7f40, 0x7f40, 0x7f40, 0x7f40, 0x7f41, 0x7f41, 0x7f42, 0x7f42,
- 0x7f43, 0x7f44, 0x7f45, 0x7f45, 0x7f46, 0x7f47, 0x7f48, 0x7f49,
- 0x7f4a, 0x7f4b, 0x7f4c, 0x7f4e, 0x7f4f, 0x7f50, 0x7f51, 0x7f53,
- 0x7f54, 0x7f55, 0x7f57, 0x7f58, 0x7f5a, 0x7f5b, 0x7f5d, 0x7f5f,
- 0x7f60, 0x7f60, 0x7f60, 0x7f60, 0x7f61, 0x7f61, 0x7f62, 0x7f62,
- 0x7f63, 0x7f64, 0x7f65, 0x7f65, 0x7f66, 0x7f67, 0x7f68, 0x7f69,
- 0x7f6a, 0x7f6b, 0x7f6c, 0x7f6e, 0x7f6f, 0x7f70, 0x7f71, 0x7f73,
- 0x7f74, 0x7f75, 0x7f77, 0x7f78, 0x7f7a, 0x7f7b, 0x7f7d, 0x7f7f,
- 0x7fa0, 0x7fa0, 0x7fa0, 0x7fa0, 0x7fa1, 0x7fa1, 0x7fa2, 0x7fa2,
- 0x7fa3, 0x7fa4, 0x7fa5, 0x7fa5, 0x7fa6, 0x7fa7, 0x7fa8, 0x7fa9,
- 0x7faa, 0x7fab, 0x7fac, 0x7fae, 0x7faf, 0x7fb0, 0x7fb1, 0x7fb3,
- 0x7fb4, 0x7fb5, 0x7fb7, 0x7fb8, 0x7fba, 0x7fbb, 0x7fbd, 0x7fbf,
- 0x7fe0, 0x7fe0, 0x7fe0, 0x7fe0, 0x7fe1, 0x7fe1, 0x7fe2, 0x7fe2,
- 0x7fe3, 0x7fe4, 0x7fe5, 0x7fe5, 0x7fe6, 0x7fe7, 0x7fe8, 0x7fe9,
- 0x7fea, 0x7feb, 0x7fec, 0x7fee, 0x7fef, 0x7ff0, 0x7ff1, 0x7ff3,
- 0x7ff4, 0x7ff5, 0x7ff7, 0x7ff8, 0x7ffa, 0x7ffb, 0x7ffd, 0x7fff,
- 0x8000, 0x8000, 0x8000, 0x8000, 0x8001, 0x8001, 0x8002, 0x8002,
- 0x8003, 0x8004, 0x8005, 0x8005, 0x8006, 0x8007, 0x8008, 0x8009,
- 0x800a, 0x800b, 0x800c, 0x800e, 0x800f, 0x8010, 0x8011, 0x8013,
- 0x8014, 0x8015, 0x8017, 0x8018, 0x801a, 0x801b, 0x801d, 0x801f,
- 0x8000, 0x8000, 0x8000, 0x8000, 0x8001, 0x8001, 0x8002, 0x8002,
- 0x8003, 0x8004, 0x8005, 0x8005, 0x8006, 0x8007, 0x8008, 0x8009,
- 0x800a, 0x800b, 0x800c, 0x800e, 0x800f, 0x8010, 0x8011, 0x8013,
- 0x8014, 0x8015, 0x8017, 0x8018, 0x801a, 0x801b, 0x801d, 0x801f,
- 0x8000, 0x8000, 0x8000, 0x8000, 0x8001, 0x8001, 0x8002, 0x8002,
- 0x8003, 0x8004, 0x8005, 0x8005, 0x8006, 0x8007, 0x8008, 0x8009,
- 0x800a, 0x800b, 0x800c, 0x800e, 0x800f, 0x8010, 0x8011, 0x8013,
- 0x8014, 0x8015, 0x8017, 0x8018, 0x801a, 0x801b, 0x801d, 0x801f,
- 0x8000, 0x8000, 0x8000, 0x8000, 0x8001, 0x8001, 0x8002, 0x8002,
- 0x8003, 0x8004, 0x8005, 0x8005, 0x8006, 0x8007, 0x8008, 0x8009,
- 0x800a, 0x800b, 0x800c, 0x800e, 0x800f, 0x8010, 0x8011, 0x8013,
- 0x8014, 0x8015, 0x8017, 0x8018, 0x801a, 0x801b, 0x801d, 0x801f,
- 0x8000, 0x8000, 0x8000, 0x8000, 0x8001, 0x8001, 0x8002, 0x8002,
- 0x8003, 0x8004, 0x8005, 0x8005, 0x8006, 0x8007, 0x8008, 0x8009,
- 0x800a, 0x800b, 0x800c, 0x800e, 0x800f, 0x8010, 0x8011, 0x8013,
- 0x8014, 0x8015, 0x8017, 0x8018, 0x801a, 0x801b, 0x801d, 0x801f,
- 0x8020, 0x8020, 0x8020, 0x8020, 0x8021, 0x8021, 0x8022, 0x8022,
- 0x8023, 0x8024, 0x8025, 0x8025, 0x8026, 0x8027, 0x8028, 0x8029,
- 0x802a, 0x802b, 0x802c, 0x802e, 0x802f, 0x8030, 0x8031, 0x8033,
- 0x8034, 0x8035, 0x8037, 0x8038, 0x803a, 0x803b, 0x803d, 0x803f,
- 0x8020, 0x8020, 0x8020, 0x8020, 0x8021, 0x8021, 0x8022, 0x8022,
- 0x8023, 0x8024, 0x8025, 0x8025, 0x8026, 0x8027, 0x8028, 0x8029,
- 0x802a, 0x802b, 0x802c, 0x802e, 0x802f, 0x8030, 0x8031, 0x8033,
- 0x8034, 0x8035, 0x8037, 0x8038, 0x803a, 0x803b, 0x803d, 0x803f,
- 0x8020, 0x8020, 0x8020, 0x8020, 0x8021, 0x8021, 0x8022, 0x8022,
- 0x8023, 0x8024, 0x8025, 0x8025, 0x8026, 0x8027, 0x8028, 0x8029,
- 0x802a, 0x802b, 0x802c, 0x802e, 0x802f, 0x8030, 0x8031, 0x8033,
- 0x8034, 0x8035, 0x8037, 0x8038, 0x803a, 0x803b, 0x803d, 0x803f,
- 0x8040, 0x8040, 0x8040, 0x8040, 0x8041, 0x8041, 0x8042, 0x8042,
- 0x8043, 0x8044, 0x8045, 0x8045, 0x8046, 0x8047, 0x8048, 0x8049,
- 0x804a, 0x804b, 0x804c, 0x804e, 0x804f, 0x8050, 0x8051, 0x8053,
- 0x8054, 0x8055, 0x8057, 0x8058, 0x805a, 0x805b, 0x805d, 0x805f,
- 0x8040, 0x8040, 0x8040, 0x8040, 0x8041, 0x8041, 0x8042, 0x8042,
- 0x8043, 0x8044, 0x8045, 0x8045, 0x8046, 0x8047, 0x8048, 0x8049,
- 0x804a, 0x804b, 0x804c, 0x804e, 0x804f, 0x8050, 0x8051, 0x8053,
- 0x8054, 0x8055, 0x8057, 0x8058, 0x805a, 0x805b, 0x805d, 0x805f,
- 0x8060, 0x8060, 0x8060, 0x8060, 0x8061, 0x8061, 0x8062, 0x8062,
- 0x8063, 0x8064, 0x8065, 0x8065, 0x8066, 0x8067, 0x8068, 0x8069,
- 0x806a, 0x806b, 0x806c, 0x806e, 0x806f, 0x8070, 0x8071, 0x8073,
- 0x8074, 0x8075, 0x8077, 0x8078, 0x807a, 0x807b, 0x807d, 0x807f,
- 0x8060, 0x8060, 0x8060, 0x8060, 0x8061, 0x8061, 0x8062, 0x8062,
- 0x8063, 0x8064, 0x8065, 0x8065, 0x8066, 0x8067, 0x8068, 0x8069,
- 0x806a, 0x806b, 0x806c, 0x806e, 0x806f, 0x8070, 0x8071, 0x8073,
- 0x8074, 0x8075, 0x8077, 0x8078, 0x807a, 0x807b, 0x807d, 0x807f,
- 0x8080, 0x8080, 0x8080, 0x8080, 0x8081, 0x8081, 0x8082, 0x8082,
- 0x8083, 0x8084, 0x8085, 0x8085, 0x8086, 0x8087, 0x8088, 0x8089,
- 0x808a, 0x808b, 0x808c, 0x808e, 0x808f, 0x8090, 0x8091, 0x8093,
- 0x8094, 0x8095, 0x8097, 0x8098, 0x809a, 0x809b, 0x809d, 0x809f,
- 0x80a0, 0x80a0, 0x80a0, 0x80a0, 0x80a1, 0x80a1, 0x80a2, 0x80a2,
- 0x80a3, 0x80a4, 0x80a5, 0x80a5, 0x80a6, 0x80a7, 0x80a8, 0x80a9,
- 0x80aa, 0x80ab, 0x80ac, 0x80ae, 0x80af, 0x80b0, 0x80b1, 0x80b3,
- 0x80b4, 0x80b5, 0x80b7, 0x80b8, 0x80ba, 0x80bb, 0x80bd, 0x80bf,
- 0x80a0, 0x80a0, 0x80a0, 0x80a0, 0x80a1, 0x80a1, 0x80a2, 0x80a2,
- 0x80a3, 0x80a4, 0x80a5, 0x80a5, 0x80a6, 0x80a7, 0x80a8, 0x80a9,
- 0x80aa, 0x80ab, 0x80ac, 0x80ae, 0x80af, 0x80b0, 0x80b1, 0x80b3,
- 0x80b4, 0x80b5, 0x80b7, 0x80b8, 0x80ba, 0x80bb, 0x80bd, 0x80bf,
- 0x80c0, 0x80c0, 0x80c0, 0x80c0, 0x80c1, 0x80c1, 0x80c2, 0x80c2,
- 0x80c3, 0x80c4, 0x80c5, 0x80c5, 0x80c6, 0x80c7, 0x80c8, 0x80c9,
- 0x80ca, 0x80cb, 0x80cc, 0x80ce, 0x80cf, 0x80d0, 0x80d1, 0x80d3,
- 0x80d4, 0x80d5, 0x80d7, 0x80d8, 0x80da, 0x80db, 0x80dd, 0x80df,
- 0x80e0, 0x80e0, 0x80e0, 0x80e0, 0x80e1, 0x80e1, 0x80e2, 0x80e2,
- 0x80e3, 0x80e4, 0x80e5, 0x80e5, 0x80e6, 0x80e7, 0x80e8, 0x80e9,
- 0x80ea, 0x80eb, 0x80ec, 0x80ee, 0x80ef, 0x80f0, 0x80f1, 0x80f3,
- 0x80f4, 0x80f5, 0x80f7, 0x80f8, 0x80fa, 0x80fb, 0x80fd, 0x80ff,
- 0x80e0, 0x80e0, 0x80e0, 0x80e0, 0x80e1, 0x80e1, 0x80e2, 0x80e2,
- 0x80e3, 0x80e4, 0x80e5, 0x80e5, 0x80e6, 0x80e7, 0x80e8, 0x80e9,
- 0x80ea, 0x80eb, 0x80ec, 0x80ee, 0x80ef, 0x80f0, 0x80f1, 0x80f3,
- 0x80f4, 0x80f5, 0x80f7, 0x80f8, 0x80fa, 0x80fb, 0x80fd, 0x80ff,
- 0x8100, 0x8100, 0x8100, 0x8100, 0x8101, 0x8101, 0x8102, 0x8102,
- 0x8103, 0x8104, 0x8105, 0x8105, 0x8106, 0x8107, 0x8108, 0x8109,
- 0x810a, 0x810b, 0x810c, 0x810e, 0x810f, 0x8110, 0x8111, 0x8113,
- 0x8114, 0x8115, 0x8117, 0x8118, 0x811a, 0x811b, 0x811d, 0x811f,
- 0x8120, 0x8120, 0x8120, 0x8120, 0x8121, 0x8121, 0x8122, 0x8122,
- 0x8123, 0x8124, 0x8125, 0x8125, 0x8126, 0x8127, 0x8128, 0x8129,
- 0x812a, 0x812b, 0x812c, 0x812e, 0x812f, 0x8130, 0x8131, 0x8133,
- 0x8134, 0x8135, 0x8137, 0x8138, 0x813a, 0x813b, 0x813d, 0x813f,
- 0x8140, 0x8140, 0x8140, 0x8140, 0x8141, 0x8141, 0x8142, 0x8142,
- 0x8143, 0x8144, 0x8145, 0x8145, 0x8146, 0x8147, 0x8148, 0x8149,
- 0x814a, 0x814b, 0x814c, 0x814e, 0x814f, 0x8150, 0x8151, 0x8153,
- 0x8154, 0x8155, 0x8157, 0x8158, 0x815a, 0x815b, 0x815d, 0x815f,
- 0x8140, 0x8140, 0x8140, 0x8140, 0x8141, 0x8141, 0x8142, 0x8142,
- 0x8143, 0x8144, 0x8145, 0x8145, 0x8146, 0x8147, 0x8148, 0x8149,
- 0x814a, 0x814b, 0x814c, 0x814e, 0x814f, 0x8150, 0x8151, 0x8153,
- 0x8154, 0x8155, 0x8157, 0x8158, 0x815a, 0x815b, 0x815d, 0x815f,
- 0x8160, 0x8160, 0x8160, 0x8160, 0x8161, 0x8161, 0x8162, 0x8162,
- 0x8163, 0x8164, 0x8165, 0x8165, 0x8166, 0x8167, 0x8168, 0x8169,
- 0x816a, 0x816b, 0x816c, 0x816e, 0x816f, 0x8170, 0x8171, 0x8173,
- 0x8174, 0x8175, 0x8177, 0x8178, 0x817a, 0x817b, 0x817d, 0x817f,
- 0x8180, 0x8180, 0x8180, 0x8180, 0x8181, 0x8181, 0x8182, 0x8182,
- 0x8183, 0x8184, 0x8185, 0x8185, 0x8186, 0x8187, 0x8188, 0x8189,
- 0x818a, 0x818b, 0x818c, 0x818e, 0x818f, 0x8190, 0x8191, 0x8193,
- 0x8194, 0x8195, 0x8197, 0x8198, 0x819a, 0x819b, 0x819d, 0x819f,
- 0x81a0, 0x81a0, 0x81a0, 0x81a0, 0x81a1, 0x81a1, 0x81a2, 0x81a2,
- 0x81a3, 0x81a4, 0x81a5, 0x81a5, 0x81a6, 0x81a7, 0x81a8, 0x81a9,
- 0x81aa, 0x81ab, 0x81ac, 0x81ae, 0x81af, 0x81b0, 0x81b1, 0x81b3,
- 0x81b4, 0x81b5, 0x81b7, 0x81b8, 0x81ba, 0x81bb, 0x81bd, 0x81bf,
- 0x81c0, 0x81c0, 0x81c0, 0x81c0, 0x81c1, 0x81c1, 0x81c2, 0x81c2,
- 0x81c3, 0x81c4, 0x81c5, 0x81c5, 0x81c6, 0x81c7, 0x81c8, 0x81c9,
- 0x81ca, 0x81cb, 0x81cc, 0x81ce, 0x81cf, 0x81d0, 0x81d1, 0x81d3,
- 0x81d4, 0x81d5, 0x81d7, 0x81d8, 0x81da, 0x81db, 0x81dd, 0x81df,
- 0x81e0, 0x81e0, 0x81e0, 0x81e0, 0x81e1, 0x81e1, 0x81e2, 0x81e2,
- 0x81e3, 0x81e4, 0x81e5, 0x81e5, 0x81e6, 0x81e7, 0x81e8, 0x81e9,
- 0x81ea, 0x81eb, 0x81ec, 0x81ee, 0x81ef, 0x81f0, 0x81f1, 0x81f3,
- 0x81f4, 0x81f5, 0x81f7, 0x81f8, 0x81fa, 0x81fb, 0x81fd, 0x81ff,
- 0x8200, 0x8200, 0x8200, 0x8200, 0x8201, 0x8201, 0x8202, 0x8202,
- 0x8203, 0x8204, 0x8205, 0x8205, 0x8206, 0x8207, 0x8208, 0x8209,
- 0x820a, 0x820b, 0x820c, 0x820e, 0x820f, 0x8210, 0x8211, 0x8213,
- 0x8214, 0x8215, 0x8217, 0x8218, 0x821a, 0x821b, 0x821d, 0x821f,
- 0x8220, 0x8220, 0x8220, 0x8220, 0x8221, 0x8221, 0x8222, 0x8222,
- 0x8223, 0x8224, 0x8225, 0x8225, 0x8226, 0x8227, 0x8228, 0x8229,
- 0x822a, 0x822b, 0x822c, 0x822e, 0x822f, 0x8230, 0x8231, 0x8233,
- 0x8234, 0x8235, 0x8237, 0x8238, 0x823a, 0x823b, 0x823d, 0x823f,
- 0x8240, 0x8240, 0x8240, 0x8240, 0x8241, 0x8241, 0x8242, 0x8242,
- 0x8243, 0x8244, 0x8245, 0x8245, 0x8246, 0x8247, 0x8248, 0x8249,
- 0x824a, 0x824b, 0x824c, 0x824e, 0x824f, 0x8250, 0x8251, 0x8253,
- 0x8254, 0x8255, 0x8257, 0x8258, 0x825a, 0x825b, 0x825d, 0x825f,
- 0x8260, 0x8260, 0x8260, 0x8260, 0x8261, 0x8261, 0x8262, 0x8262,
- 0x8263, 0x8264, 0x8265, 0x8265, 0x8266, 0x8267, 0x8268, 0x8269,
- 0x826a, 0x826b, 0x826c, 0x826e, 0x826f, 0x8270, 0x8271, 0x8273,
- 0x8274, 0x8275, 0x8277, 0x8278, 0x827a, 0x827b, 0x827d, 0x827f,
- 0x8280, 0x8280, 0x8280, 0x8280, 0x8281, 0x8281, 0x8282, 0x8282,
- 0x8283, 0x8284, 0x8285, 0x8285, 0x8286, 0x8287, 0x8288, 0x8289,
- 0x828a, 0x828b, 0x828c, 0x828e, 0x828f, 0x8290, 0x8291, 0x8293,
- 0x8294, 0x8295, 0x8297, 0x8298, 0x829a, 0x829b, 0x829d, 0x829f,
- 0x82a0, 0x82a0, 0x82a0, 0x82a0, 0x82a1, 0x82a1, 0x82a2, 0x82a2,
- 0x82a3, 0x82a4, 0x82a5, 0x82a5, 0x82a6, 0x82a7, 0x82a8, 0x82a9,
- 0x82aa, 0x82ab, 0x82ac, 0x82ae, 0x82af, 0x82b0, 0x82b1, 0x82b3,
- 0x82b4, 0x82b5, 0x82b7, 0x82b8, 0x82ba, 0x82bb, 0x82bd, 0x82bf,
- 0x82c0, 0x82c0, 0x82c0, 0x82c0, 0x82c1, 0x82c1, 0x82c2, 0x82c2,
- 0x82c3, 0x82c4, 0x82c5, 0x82c5, 0x82c6, 0x82c7, 0x82c8, 0x82c9,
- 0x82ca, 0x82cb, 0x82cc, 0x82ce, 0x82cf, 0x82d0, 0x82d1, 0x82d3,
- 0x82d4, 0x82d5, 0x82d7, 0x82d8, 0x82da, 0x82db, 0x82dd, 0x82df,
- 0x82e0, 0x82e0, 0x82e0, 0x82e0, 0x82e1, 0x82e1, 0x82e2, 0x82e2,
- 0x82e3, 0x82e4, 0x82e5, 0x82e5, 0x82e6, 0x82e7, 0x82e8, 0x82e9,
- 0x82ea, 0x82eb, 0x82ec, 0x82ee, 0x82ef, 0x82f0, 0x82f1, 0x82f3,
- 0x82f4, 0x82f5, 0x82f7, 0x82f8, 0x82fa, 0x82fb, 0x82fd, 0x82ff,
- 0x8300, 0x8300, 0x8300, 0x8300, 0x8301, 0x8301, 0x8302, 0x8302,
- 0x8303, 0x8304, 0x8305, 0x8305, 0x8306, 0x8307, 0x8308, 0x8309,
- 0x830a, 0x830b, 0x830c, 0x830e, 0x830f, 0x8310, 0x8311, 0x8313,
- 0x8314, 0x8315, 0x8317, 0x8318, 0x831a, 0x831b, 0x831d, 0x831f,
- 0x8320, 0x8320, 0x8320, 0x8320, 0x8321, 0x8321, 0x8322, 0x8322,
- 0x8323, 0x8324, 0x8325, 0x8325, 0x8326, 0x8327, 0x8328, 0x8329,
- 0x832a, 0x832b, 0x832c, 0x832e, 0x832f, 0x8330, 0x8331, 0x8333,
- 0x8334, 0x8335, 0x8337, 0x8338, 0x833a, 0x833b, 0x833d, 0x833f,
- 0x8340, 0x8340, 0x8340, 0x8340, 0x8341, 0x8341, 0x8342, 0x8342,
- 0x8343, 0x8344, 0x8345, 0x8345, 0x8346, 0x8347, 0x8348, 0x8349,
- 0x834a, 0x834b, 0x834c, 0x834e, 0x834f, 0x8350, 0x8351, 0x8353,
- 0x8354, 0x8355, 0x8357, 0x8358, 0x835a, 0x835b, 0x835d, 0x835f,
- 0x8380, 0x8380, 0x8380, 0x8380, 0x8381, 0x8381, 0x8382, 0x8382,
- 0x8383, 0x8384, 0x8385, 0x8385, 0x8386, 0x8387, 0x8388, 0x8389,
- 0x838a, 0x838b, 0x838c, 0x838e, 0x838f, 0x8390, 0x8391, 0x8393,
- 0x8394, 0x8395, 0x8397, 0x8398, 0x839a, 0x839b, 0x839d, 0x839f,
- 0x83a0, 0x83a0, 0x83a0, 0x83a0, 0x83a1, 0x83a1, 0x83a2, 0x83a2,
- 0x83a3, 0x83a4, 0x83a5, 0x83a5, 0x83a6, 0x83a7, 0x83a8, 0x83a9,
- 0x83aa, 0x83ab, 0x83ac, 0x83ae, 0x83af, 0x83b0, 0x83b1, 0x83b3,
- 0x83b4, 0x83b5, 0x83b7, 0x83b8, 0x83ba, 0x83bb, 0x83bd, 0x83bf,
- 0x83c0, 0x83c0, 0x83c0, 0x83c0, 0x83c1, 0x83c1, 0x83c2, 0x83c2,
- 0x83c3, 0x83c4, 0x83c5, 0x83c5, 0x83c6, 0x83c7, 0x83c8, 0x83c9,
- 0x83ca, 0x83cb, 0x83cc, 0x83ce, 0x83cf, 0x83d0, 0x83d1, 0x83d3,
- 0x83d4, 0x83d5, 0x83d7, 0x83d8, 0x83da, 0x83db, 0x83dd, 0x83df,
- 0x83e0, 0x83e0, 0x83e0, 0x83e0, 0x83e1, 0x83e1, 0x83e2, 0x83e2,
- 0x83e3, 0x83e4, 0x83e5, 0x83e5, 0x83e6, 0x83e7, 0x83e8, 0x83e9,
- 0x83ea, 0x83eb, 0x83ec, 0x83ee, 0x83ef, 0x83f0, 0x83f1, 0x83f3,
- 0x83f4, 0x83f5, 0x83f7, 0x83f8, 0x83fa, 0x83fb, 0x83fd, 0x83ff,
- 0x8400, 0x8400, 0x8400, 0x8400, 0x8401, 0x8401, 0x8402, 0x8402,
- 0x8403, 0x8404, 0x8405, 0x8405, 0x8406, 0x8407, 0x8408, 0x8409,
- 0x840a, 0x840b, 0x840c, 0x840e, 0x840f, 0x8410, 0x8411, 0x8413,
- 0x8414, 0x8415, 0x8417, 0x8418, 0x841a, 0x841b, 0x841d, 0x841f,
- 0x8440, 0x8440, 0x8440, 0x8440, 0x8441, 0x8441, 0x8442, 0x8442,
- 0x8443, 0x8444, 0x8445, 0x8445, 0x8446, 0x8447, 0x8448, 0x8449,
- 0x844a, 0x844b, 0x844c, 0x844e, 0x844f, 0x8450, 0x8451, 0x8453,
- 0x8454, 0x8455, 0x8457, 0x8458, 0x845a, 0x845b, 0x845d, 0x845f,
- 0x8460, 0x8460, 0x8460, 0x8460, 0x8461, 0x8461, 0x8462, 0x8462,
- 0x8463, 0x8464, 0x8465, 0x8465, 0x8466, 0x8467, 0x8468, 0x8469,
- 0x846a, 0x846b, 0x846c, 0x846e, 0x846f, 0x8470, 0x8471, 0x8473,
- 0x8474, 0x8475, 0x8477, 0x8478, 0x847a, 0x847b, 0x847d, 0x847f,
- 0x8480, 0x8480, 0x8480, 0x8480, 0x8481, 0x8481, 0x8482, 0x8482,
- 0x8483, 0x8484, 0x8485, 0x8485, 0x8486, 0x8487, 0x8488, 0x8489,
- 0x848a, 0x848b, 0x848c, 0x848e, 0x848f, 0x8490, 0x8491, 0x8493,
- 0x8494, 0x8495, 0x8497, 0x8498, 0x849a, 0x849b, 0x849d, 0x849f,
- 0x84c0, 0x84c0, 0x84c0, 0x84c0, 0x84c1, 0x84c1, 0x84c2, 0x84c2,
- 0x84c3, 0x84c4, 0x84c5, 0x84c5, 0x84c6, 0x84c7, 0x84c8, 0x84c9,
- 0x84ca, 0x84cb, 0x84cc, 0x84ce, 0x84cf, 0x84d0, 0x84d1, 0x84d3,
- 0x84d4, 0x84d5, 0x84d7, 0x84d8, 0x84da, 0x84db, 0x84dd, 0x84df,
- 0x84e0, 0x84e0, 0x84e0, 0x84e0, 0x84e1, 0x84e1, 0x84e2, 0x84e2,
- 0x84e3, 0x84e4, 0x84e5, 0x84e5, 0x84e6, 0x84e7, 0x84e8, 0x84e9,
- 0x84ea, 0x84eb, 0x84ec, 0x84ee, 0x84ef, 0x84f0, 0x84f1, 0x84f3,
- 0x84f4, 0x84f5, 0x84f7, 0x84f8, 0x84fa, 0x84fb, 0x84fd, 0x84ff,
- 0x8500, 0x8500, 0x8500, 0x8500, 0x8501, 0x8501, 0x8502, 0x8502,
- 0x8503, 0x8504, 0x8505, 0x8505, 0x8506, 0x8507, 0x8508, 0x8509,
- 0x850a, 0x850b, 0x850c, 0x850e, 0x850f, 0x8510, 0x8511, 0x8513,
- 0x8514, 0x8515, 0x8517, 0x8518, 0x851a, 0x851b, 0x851d, 0x851f,
- 0x8540, 0x8540, 0x8540, 0x8540, 0x8541, 0x8541, 0x8542, 0x8542,
- 0x8543, 0x8544, 0x8545, 0x8545, 0x8546, 0x8547, 0x8548, 0x8549,
- 0x854a, 0x854b, 0x854c, 0x854e, 0x854f, 0x8550, 0x8551, 0x8553,
- 0x8554, 0x8555, 0x8557, 0x8558, 0x855a, 0x855b, 0x855d, 0x855f,
- 0x8560, 0x8560, 0x8560, 0x8560, 0x8561, 0x8561, 0x8562, 0x8562,
- 0x8563, 0x8564, 0x8565, 0x8565, 0x8566, 0x8567, 0x8568, 0x8569,
- 0x856a, 0x856b, 0x856c, 0x856e, 0x856f, 0x8570, 0x8571, 0x8573,
- 0x8574, 0x8575, 0x8577, 0x8578, 0x857a, 0x857b, 0x857d, 0x857f,
- 0x8580, 0x8580, 0x8580, 0x8580, 0x8581, 0x8581, 0x8582, 0x8582,
- 0x8583, 0x8584, 0x8585, 0x8585, 0x8586, 0x8587, 0x8588, 0x8589,
- 0x858a, 0x858b, 0x858c, 0x858e, 0x858f, 0x8590, 0x8591, 0x8593,
- 0x8594, 0x8595, 0x8597, 0x8598, 0x859a, 0x859b, 0x859d, 0x859f,
- 0x85c0, 0x85c0, 0x85c0, 0x85c0, 0x85c1, 0x85c1, 0x85c2, 0x85c2,
- 0x85c3, 0x85c4, 0x85c5, 0x85c5, 0x85c6, 0x85c7, 0x85c8, 0x85c9,
- 0x85ca, 0x85cb, 0x85cc, 0x85ce, 0x85cf, 0x85d0, 0x85d1, 0x85d3,
- 0x85d4, 0x85d5, 0x85d7, 0x85d8, 0x85da, 0x85db, 0x85dd, 0x85df,
- 0x85e0, 0x85e0, 0x85e0, 0x85e0, 0x85e1, 0x85e1, 0x85e2, 0x85e2,
- 0x85e3, 0x85e4, 0x85e5, 0x85e5, 0x85e6, 0x85e7, 0x85e8, 0x85e9,
- 0x85ea, 0x85eb, 0x85ec, 0x85ee, 0x85ef, 0x85f0, 0x85f1, 0x85f3,
- 0x85f4, 0x85f5, 0x85f7, 0x85f8, 0x85fa, 0x85fb, 0x85fd, 0x85ff,
- 0x8620, 0x8620, 0x8620, 0x8620, 0x8621, 0x8621, 0x8622, 0x8622,
- 0x8623, 0x8624, 0x8625, 0x8625, 0x8626, 0x8627, 0x8628, 0x8629,
- 0x862a, 0x862b, 0x862c, 0x862e, 0x862f, 0x8630, 0x8631, 0x8633,
- 0x8634, 0x8635, 0x8637, 0x8638, 0x863a, 0x863b, 0x863d, 0x863f,
- 0x8640, 0x8640, 0x8640, 0x8640, 0x8641, 0x8641, 0x8642, 0x8642,
- 0x8643, 0x8644, 0x8645, 0x8645, 0x8646, 0x8647, 0x8648, 0x8649,
- 0x864a, 0x864b, 0x864c, 0x864e, 0x864f, 0x8650, 0x8651, 0x8653,
- 0x8654, 0x8655, 0x8657, 0x8658, 0x865a, 0x865b, 0x865d, 0x865f,
- 0x8680, 0x8680, 0x8680, 0x8680, 0x8681, 0x8681, 0x8682, 0x8682,
- 0x8683, 0x8684, 0x8685, 0x8685, 0x8686, 0x8687, 0x8688, 0x8689,
- 0x868a, 0x868b, 0x868c, 0x868e, 0x868f, 0x8690, 0x8691, 0x8693,
- 0x8694, 0x8695, 0x8697, 0x8698, 0x869a, 0x869b, 0x869d, 0x869f,
- 0x86a0, 0x86a0, 0x86a0, 0x86a0, 0x86a1, 0x86a1, 0x86a2, 0x86a2,
- 0x86a3, 0x86a4, 0x86a5, 0x86a5, 0x86a6, 0x86a7, 0x86a8, 0x86a9,
- 0x86aa, 0x86ab, 0x86ac, 0x86ae, 0x86af, 0x86b0, 0x86b1, 0x86b3,
- 0x86b4, 0x86b5, 0x86b7, 0x86b8, 0x86ba, 0x86bb, 0x86bd, 0x86bf,
- 0x86e0, 0x86e0, 0x86e0, 0x86e0, 0x86e1, 0x86e1, 0x86e2, 0x86e2,
- 0x86e3, 0x86e4, 0x86e5, 0x86e5, 0x86e6, 0x86e7, 0x86e8, 0x86e9,
- 0x86ea, 0x86eb, 0x86ec, 0x86ee, 0x86ef, 0x86f0, 0x86f1, 0x86f3,
- 0x86f4, 0x86f5, 0x86f7, 0x86f8, 0x86fa, 0x86fb, 0x86fd, 0x86ff,
- 0x8700, 0x8700, 0x8700, 0x8700, 0x8701, 0x8701, 0x8702, 0x8702,
- 0x8703, 0x8704, 0x8705, 0x8705, 0x8706, 0x8707, 0x8708, 0x8709,
- 0x870a, 0x870b, 0x870c, 0x870e, 0x870f, 0x8710, 0x8711, 0x8713,
- 0x8714, 0x8715, 0x8717, 0x8718, 0x871a, 0x871b, 0x871d, 0x871f,
- 0x8740, 0x8740, 0x8740, 0x8740, 0x8741, 0x8741, 0x8742, 0x8742,
- 0x8743, 0x8744, 0x8745, 0x8745, 0x8746, 0x8747, 0x8748, 0x8749,
- 0x874a, 0x874b, 0x874c, 0x874e, 0x874f, 0x8750, 0x8751, 0x8753,
- 0x8754, 0x8755, 0x8757, 0x8758, 0x875a, 0x875b, 0x875d, 0x875f,
- 0x8760, 0x8760, 0x8760, 0x8760, 0x8761, 0x8761, 0x8762, 0x8762,
- 0x8763, 0x8764, 0x8765, 0x8765, 0x8766, 0x8767, 0x8768, 0x8769,
- 0x876a, 0x876b, 0x876c, 0x876e, 0x876f, 0x8770, 0x8771, 0x8773,
- 0x8774, 0x8775, 0x8777, 0x8778, 0x877a, 0x877b, 0x877d, 0x877f,
- 0x87a0, 0x87a0, 0x87a0, 0x87a0, 0x87a1, 0x87a1, 0x87a2, 0x87a2,
- 0x87a3, 0x87a4, 0x87a5, 0x87a5, 0x87a6, 0x87a7, 0x87a8, 0x87a9,
- 0x87aa, 0x87ab, 0x87ac, 0x87ae, 0x87af, 0x87b0, 0x87b1, 0x87b3,
- 0x87b4, 0x87b5, 0x87b7, 0x87b8, 0x87ba, 0x87bb, 0x87bd, 0x87bf,
- 0x87e0, 0x87e0, 0x87e0, 0x87e0, 0x87e1, 0x87e1, 0x87e2, 0x87e2,
- 0x87e3, 0x87e4, 0x87e5, 0x87e5, 0x87e6, 0x87e7, 0x87e8, 0x87e9,
- 0x87ea, 0x87eb, 0x87ec, 0x87ee, 0x87ef, 0x87f0, 0x87f1, 0x87f3,
- 0x87f4, 0x87f5, 0x87f7, 0x87f8, 0x87fa, 0x87fb, 0x87fd, 0x87ff,
- 0x8800, 0x8800, 0x8800, 0x8800, 0x8801, 0x8801, 0x8802, 0x8802,
- 0x8803, 0x8804, 0x8805, 0x8805, 0x8806, 0x8807, 0x8808, 0x8809,
- 0x880a, 0x880b, 0x880c, 0x880e, 0x880f, 0x8810, 0x8811, 0x8813,
- 0x8814, 0x8815, 0x8817, 0x8818, 0x881a, 0x881b, 0x881d, 0x881f,
- 0x8800, 0x8800, 0x8800, 0x8800, 0x8801, 0x8801, 0x8802, 0x8802,
- 0x8803, 0x8804, 0x8805, 0x8805, 0x8806, 0x8807, 0x8808, 0x8809,
- 0x880a, 0x880b, 0x880c, 0x880e, 0x880f, 0x8810, 0x8811, 0x8813,
- 0x8814, 0x8815, 0x8817, 0x8818, 0x881a, 0x881b, 0x881d, 0x881f,
- 0x8800, 0x8800, 0x8800, 0x8800, 0x8801, 0x8801, 0x8802, 0x8802,
- 0x8803, 0x8804, 0x8805, 0x8805, 0x8806, 0x8807, 0x8808, 0x8809,
- 0x880a, 0x880b, 0x880c, 0x880e, 0x880f, 0x8810, 0x8811, 0x8813,
- 0x8814, 0x8815, 0x8817, 0x8818, 0x881a, 0x881b, 0x881d, 0x881f,
- 0x8800, 0x8800, 0x8800, 0x8800, 0x8801, 0x8801, 0x8802, 0x8802,
- 0x8803, 0x8804, 0x8805, 0x8805, 0x8806, 0x8807, 0x8808, 0x8809,
- 0x880a, 0x880b, 0x880c, 0x880e, 0x880f, 0x8810, 0x8811, 0x8813,
- 0x8814, 0x8815, 0x8817, 0x8818, 0x881a, 0x881b, 0x881d, 0x881f,
- 0x8800, 0x8800, 0x8800, 0x8800, 0x8801, 0x8801, 0x8802, 0x8802,
- 0x8803, 0x8804, 0x8805, 0x8805, 0x8806, 0x8807, 0x8808, 0x8809,
- 0x880a, 0x880b, 0x880c, 0x880e, 0x880f, 0x8810, 0x8811, 0x8813,
- 0x8814, 0x8815, 0x8817, 0x8818, 0x881a, 0x881b, 0x881d, 0x881f,
- 0x8820, 0x8820, 0x8820, 0x8820, 0x8821, 0x8821, 0x8822, 0x8822,
- 0x8823, 0x8824, 0x8825, 0x8825, 0x8826, 0x8827, 0x8828, 0x8829,
- 0x882a, 0x882b, 0x882c, 0x882e, 0x882f, 0x8830, 0x8831, 0x8833,
- 0x8834, 0x8835, 0x8837, 0x8838, 0x883a, 0x883b, 0x883d, 0x883f,
- 0x8820, 0x8820, 0x8820, 0x8820, 0x8821, 0x8821, 0x8822, 0x8822,
- 0x8823, 0x8824, 0x8825, 0x8825, 0x8826, 0x8827, 0x8828, 0x8829,
- 0x882a, 0x882b, 0x882c, 0x882e, 0x882f, 0x8830, 0x8831, 0x8833,
- 0x8834, 0x8835, 0x8837, 0x8838, 0x883a, 0x883b, 0x883d, 0x883f,
- 0x8820, 0x8820, 0x8820, 0x8820, 0x8821, 0x8821, 0x8822, 0x8822,
- 0x8823, 0x8824, 0x8825, 0x8825, 0x8826, 0x8827, 0x8828, 0x8829,
- 0x882a, 0x882b, 0x882c, 0x882e, 0x882f, 0x8830, 0x8831, 0x8833,
- 0x8834, 0x8835, 0x8837, 0x8838, 0x883a, 0x883b, 0x883d, 0x883f,
- 0x8840, 0x8840, 0x8840, 0x8840, 0x8841, 0x8841, 0x8842, 0x8842,
- 0x8843, 0x8844, 0x8845, 0x8845, 0x8846, 0x8847, 0x8848, 0x8849,
- 0x884a, 0x884b, 0x884c, 0x884e, 0x884f, 0x8850, 0x8851, 0x8853,
- 0x8854, 0x8855, 0x8857, 0x8858, 0x885a, 0x885b, 0x885d, 0x885f,
- 0x8840, 0x8840, 0x8840, 0x8840, 0x8841, 0x8841, 0x8842, 0x8842,
- 0x8843, 0x8844, 0x8845, 0x8845, 0x8846, 0x8847, 0x8848, 0x8849,
- 0x884a, 0x884b, 0x884c, 0x884e, 0x884f, 0x8850, 0x8851, 0x8853,
- 0x8854, 0x8855, 0x8857, 0x8858, 0x885a, 0x885b, 0x885d, 0x885f,
- 0x8860, 0x8860, 0x8860, 0x8860, 0x8861, 0x8861, 0x8862, 0x8862,
- 0x8863, 0x8864, 0x8865, 0x8865, 0x8866, 0x8867, 0x8868, 0x8869,
- 0x886a, 0x886b, 0x886c, 0x886e, 0x886f, 0x8870, 0x8871, 0x8873,
- 0x8874, 0x8875, 0x8877, 0x8878, 0x887a, 0x887b, 0x887d, 0x887f,
- 0x8860, 0x8860, 0x8860, 0x8860, 0x8861, 0x8861, 0x8862, 0x8862,
- 0x8863, 0x8864, 0x8865, 0x8865, 0x8866, 0x8867, 0x8868, 0x8869,
- 0x886a, 0x886b, 0x886c, 0x886e, 0x886f, 0x8870, 0x8871, 0x8873,
- 0x8874, 0x8875, 0x8877, 0x8878, 0x887a, 0x887b, 0x887d, 0x887f,
- 0x8880, 0x8880, 0x8880, 0x8880, 0x8881, 0x8881, 0x8882, 0x8882,
- 0x8883, 0x8884, 0x8885, 0x8885, 0x8886, 0x8887, 0x8888, 0x8889,
- 0x888a, 0x888b, 0x888c, 0x888e, 0x888f, 0x8890, 0x8891, 0x8893,
- 0x8894, 0x8895, 0x8897, 0x8898, 0x889a, 0x889b, 0x889d, 0x889f,
- 0x88a0, 0x88a0, 0x88a0, 0x88a0, 0x88a1, 0x88a1, 0x88a2, 0x88a2,
- 0x88a3, 0x88a4, 0x88a5, 0x88a5, 0x88a6, 0x88a7, 0x88a8, 0x88a9,
- 0x88aa, 0x88ab, 0x88ac, 0x88ae, 0x88af, 0x88b0, 0x88b1, 0x88b3,
- 0x88b4, 0x88b5, 0x88b7, 0x88b8, 0x88ba, 0x88bb, 0x88bd, 0x88bf,
- 0x88a0, 0x88a0, 0x88a0, 0x88a0, 0x88a1, 0x88a1, 0x88a2, 0x88a2,
- 0x88a3, 0x88a4, 0x88a5, 0x88a5, 0x88a6, 0x88a7, 0x88a8, 0x88a9,
- 0x88aa, 0x88ab, 0x88ac, 0x88ae, 0x88af, 0x88b0, 0x88b1, 0x88b3,
- 0x88b4, 0x88b5, 0x88b7, 0x88b8, 0x88ba, 0x88bb, 0x88bd, 0x88bf,
- 0x88c0, 0x88c0, 0x88c0, 0x88c0, 0x88c1, 0x88c1, 0x88c2, 0x88c2,
- 0x88c3, 0x88c4, 0x88c5, 0x88c5, 0x88c6, 0x88c7, 0x88c8, 0x88c9,
- 0x88ca, 0x88cb, 0x88cc, 0x88ce, 0x88cf, 0x88d0, 0x88d1, 0x88d3,
- 0x88d4, 0x88d5, 0x88d7, 0x88d8, 0x88da, 0x88db, 0x88dd, 0x88df,
- 0x88e0, 0x88e0, 0x88e0, 0x88e0, 0x88e1, 0x88e1, 0x88e2, 0x88e2,
- 0x88e3, 0x88e4, 0x88e5, 0x88e5, 0x88e6, 0x88e7, 0x88e8, 0x88e9,
- 0x88ea, 0x88eb, 0x88ec, 0x88ee, 0x88ef, 0x88f0, 0x88f1, 0x88f3,
- 0x88f4, 0x88f5, 0x88f7, 0x88f8, 0x88fa, 0x88fb, 0x88fd, 0x88ff,
- 0x88e0, 0x88e0, 0x88e0, 0x88e0, 0x88e1, 0x88e1, 0x88e2, 0x88e2,
- 0x88e3, 0x88e4, 0x88e5, 0x88e5, 0x88e6, 0x88e7, 0x88e8, 0x88e9,
- 0x88ea, 0x88eb, 0x88ec, 0x88ee, 0x88ef, 0x88f0, 0x88f1, 0x88f3,
- 0x88f4, 0x88f5, 0x88f7, 0x88f8, 0x88fa, 0x88fb, 0x88fd, 0x88ff,
- 0x8900, 0x8900, 0x8900, 0x8900, 0x8901, 0x8901, 0x8902, 0x8902,
- 0x8903, 0x8904, 0x8905, 0x8905, 0x8906, 0x8907, 0x8908, 0x8909,
- 0x890a, 0x890b, 0x890c, 0x890e, 0x890f, 0x8910, 0x8911, 0x8913,
- 0x8914, 0x8915, 0x8917, 0x8918, 0x891a, 0x891b, 0x891d, 0x891f,
- 0x8920, 0x8920, 0x8920, 0x8920, 0x8921, 0x8921, 0x8922, 0x8922,
- 0x8923, 0x8924, 0x8925, 0x8925, 0x8926, 0x8927, 0x8928, 0x8929,
- 0x892a, 0x892b, 0x892c, 0x892e, 0x892f, 0x8930, 0x8931, 0x8933,
- 0x8934, 0x8935, 0x8937, 0x8938, 0x893a, 0x893b, 0x893d, 0x893f,
- 0x8940, 0x8940, 0x8940, 0x8940, 0x8941, 0x8941, 0x8942, 0x8942,
- 0x8943, 0x8944, 0x8945, 0x8945, 0x8946, 0x8947, 0x8948, 0x8949,
- 0x894a, 0x894b, 0x894c, 0x894e, 0x894f, 0x8950, 0x8951, 0x8953,
- 0x8954, 0x8955, 0x8957, 0x8958, 0x895a, 0x895b, 0x895d, 0x895f,
- 0x8940, 0x8940, 0x8940, 0x8940, 0x8941, 0x8941, 0x8942, 0x8942,
- 0x8943, 0x8944, 0x8945, 0x8945, 0x8946, 0x8947, 0x8948, 0x8949,
- 0x894a, 0x894b, 0x894c, 0x894e, 0x894f, 0x8950, 0x8951, 0x8953,
- 0x8954, 0x8955, 0x8957, 0x8958, 0x895a, 0x895b, 0x895d, 0x895f,
- 0x8960, 0x8960, 0x8960, 0x8960, 0x8961, 0x8961, 0x8962, 0x8962,
- 0x8963, 0x8964, 0x8965, 0x8965, 0x8966, 0x8967, 0x8968, 0x8969,
- 0x896a, 0x896b, 0x896c, 0x896e, 0x896f, 0x8970, 0x8971, 0x8973,
- 0x8974, 0x8975, 0x8977, 0x8978, 0x897a, 0x897b, 0x897d, 0x897f,
- 0x8980, 0x8980, 0x8980, 0x8980, 0x8981, 0x8981, 0x8982, 0x8982,
- 0x8983, 0x8984, 0x8985, 0x8985, 0x8986, 0x8987, 0x8988, 0x8989,
- 0x898a, 0x898b, 0x898c, 0x898e, 0x898f, 0x8990, 0x8991, 0x8993,
- 0x8994, 0x8995, 0x8997, 0x8998, 0x899a, 0x899b, 0x899d, 0x899f,
- 0x89a0, 0x89a0, 0x89a0, 0x89a0, 0x89a1, 0x89a1, 0x89a2, 0x89a2,
- 0x89a3, 0x89a4, 0x89a5, 0x89a5, 0x89a6, 0x89a7, 0x89a8, 0x89a9,
- 0x89aa, 0x89ab, 0x89ac, 0x89ae, 0x89af, 0x89b0, 0x89b1, 0x89b3,
- 0x89b4, 0x89b5, 0x89b7, 0x89b8, 0x89ba, 0x89bb, 0x89bd, 0x89bf,
- 0x89c0, 0x89c0, 0x89c0, 0x89c0, 0x89c1, 0x89c1, 0x89c2, 0x89c2,
- 0x89c3, 0x89c4, 0x89c5, 0x89c5, 0x89c6, 0x89c7, 0x89c8, 0x89c9,
- 0x89ca, 0x89cb, 0x89cc, 0x89ce, 0x89cf, 0x89d0, 0x89d1, 0x89d3,
- 0x89d4, 0x89d5, 0x89d7, 0x89d8, 0x89da, 0x89db, 0x89dd, 0x89df,
- 0x89e0, 0x89e0, 0x89e0, 0x89e0, 0x89e1, 0x89e1, 0x89e2, 0x89e2,
- 0x89e3, 0x89e4, 0x89e5, 0x89e5, 0x89e6, 0x89e7, 0x89e8, 0x89e9,
- 0x89ea, 0x89eb, 0x89ec, 0x89ee, 0x89ef, 0x89f0, 0x89f1, 0x89f3,
- 0x89f4, 0x89f5, 0x89f7, 0x89f8, 0x89fa, 0x89fb, 0x89fd, 0x89ff,
- 0x8a00, 0x8a00, 0x8a00, 0x8a00, 0x8a01, 0x8a01, 0x8a02, 0x8a02,
- 0x8a03, 0x8a04, 0x8a05, 0x8a05, 0x8a06, 0x8a07, 0x8a08, 0x8a09,
- 0x8a0a, 0x8a0b, 0x8a0c, 0x8a0e, 0x8a0f, 0x8a10, 0x8a11, 0x8a13,
- 0x8a14, 0x8a15, 0x8a17, 0x8a18, 0x8a1a, 0x8a1b, 0x8a1d, 0x8a1f,
- 0x8a20, 0x8a20, 0x8a20, 0x8a20, 0x8a21, 0x8a21, 0x8a22, 0x8a22,
- 0x8a23, 0x8a24, 0x8a25, 0x8a25, 0x8a26, 0x8a27, 0x8a28, 0x8a29,
- 0x8a2a, 0x8a2b, 0x8a2c, 0x8a2e, 0x8a2f, 0x8a30, 0x8a31, 0x8a33,
- 0x8a34, 0x8a35, 0x8a37, 0x8a38, 0x8a3a, 0x8a3b, 0x8a3d, 0x8a3f,
- 0x8a40, 0x8a40, 0x8a40, 0x8a40, 0x8a41, 0x8a41, 0x8a42, 0x8a42,
- 0x8a43, 0x8a44, 0x8a45, 0x8a45, 0x8a46, 0x8a47, 0x8a48, 0x8a49,
- 0x8a4a, 0x8a4b, 0x8a4c, 0x8a4e, 0x8a4f, 0x8a50, 0x8a51, 0x8a53,
- 0x8a54, 0x8a55, 0x8a57, 0x8a58, 0x8a5a, 0x8a5b, 0x8a5d, 0x8a5f,
- 0x8a60, 0x8a60, 0x8a60, 0x8a60, 0x8a61, 0x8a61, 0x8a62, 0x8a62,
- 0x8a63, 0x8a64, 0x8a65, 0x8a65, 0x8a66, 0x8a67, 0x8a68, 0x8a69,
- 0x8a6a, 0x8a6b, 0x8a6c, 0x8a6e, 0x8a6f, 0x8a70, 0x8a71, 0x8a73,
- 0x8a74, 0x8a75, 0x8a77, 0x8a78, 0x8a7a, 0x8a7b, 0x8a7d, 0x8a7f,
- 0x8a80, 0x8a80, 0x8a80, 0x8a80, 0x8a81, 0x8a81, 0x8a82, 0x8a82,
- 0x8a83, 0x8a84, 0x8a85, 0x8a85, 0x8a86, 0x8a87, 0x8a88, 0x8a89,
- 0x8a8a, 0x8a8b, 0x8a8c, 0x8a8e, 0x8a8f, 0x8a90, 0x8a91, 0x8a93,
- 0x8a94, 0x8a95, 0x8a97, 0x8a98, 0x8a9a, 0x8a9b, 0x8a9d, 0x8a9f,
- 0x8aa0, 0x8aa0, 0x8aa0, 0x8aa0, 0x8aa1, 0x8aa1, 0x8aa2, 0x8aa2,
- 0x8aa3, 0x8aa4, 0x8aa5, 0x8aa5, 0x8aa6, 0x8aa7, 0x8aa8, 0x8aa9,
- 0x8aaa, 0x8aab, 0x8aac, 0x8aae, 0x8aaf, 0x8ab0, 0x8ab1, 0x8ab3,
- 0x8ab4, 0x8ab5, 0x8ab7, 0x8ab8, 0x8aba, 0x8abb, 0x8abd, 0x8abf,
- 0x8ac0, 0x8ac0, 0x8ac0, 0x8ac0, 0x8ac1, 0x8ac1, 0x8ac2, 0x8ac2,
- 0x8ac3, 0x8ac4, 0x8ac5, 0x8ac5, 0x8ac6, 0x8ac7, 0x8ac8, 0x8ac9,
- 0x8aca, 0x8acb, 0x8acc, 0x8ace, 0x8acf, 0x8ad0, 0x8ad1, 0x8ad3,
- 0x8ad4, 0x8ad5, 0x8ad7, 0x8ad8, 0x8ada, 0x8adb, 0x8add, 0x8adf,
- 0x8ae0, 0x8ae0, 0x8ae0, 0x8ae0, 0x8ae1, 0x8ae1, 0x8ae2, 0x8ae2,
- 0x8ae3, 0x8ae4, 0x8ae5, 0x8ae5, 0x8ae6, 0x8ae7, 0x8ae8, 0x8ae9,
- 0x8aea, 0x8aeb, 0x8aec, 0x8aee, 0x8aef, 0x8af0, 0x8af1, 0x8af3,
- 0x8af4, 0x8af5, 0x8af7, 0x8af8, 0x8afa, 0x8afb, 0x8afd, 0x8aff,
- 0x8b00, 0x8b00, 0x8b00, 0x8b00, 0x8b01, 0x8b01, 0x8b02, 0x8b02,
- 0x8b03, 0x8b04, 0x8b05, 0x8b05, 0x8b06, 0x8b07, 0x8b08, 0x8b09,
- 0x8b0a, 0x8b0b, 0x8b0c, 0x8b0e, 0x8b0f, 0x8b10, 0x8b11, 0x8b13,
- 0x8b14, 0x8b15, 0x8b17, 0x8b18, 0x8b1a, 0x8b1b, 0x8b1d, 0x8b1f,
- 0x8b20, 0x8b20, 0x8b20, 0x8b20, 0x8b21, 0x8b21, 0x8b22, 0x8b22,
- 0x8b23, 0x8b24, 0x8b25, 0x8b25, 0x8b26, 0x8b27, 0x8b28, 0x8b29,
- 0x8b2a, 0x8b2b, 0x8b2c, 0x8b2e, 0x8b2f, 0x8b30, 0x8b31, 0x8b33,
- 0x8b34, 0x8b35, 0x8b37, 0x8b38, 0x8b3a, 0x8b3b, 0x8b3d, 0x8b3f,
- 0x8b40, 0x8b40, 0x8b40, 0x8b40, 0x8b41, 0x8b41, 0x8b42, 0x8b42,
- 0x8b43, 0x8b44, 0x8b45, 0x8b45, 0x8b46, 0x8b47, 0x8b48, 0x8b49,
- 0x8b4a, 0x8b4b, 0x8b4c, 0x8b4e, 0x8b4f, 0x8b50, 0x8b51, 0x8b53,
- 0x8b54, 0x8b55, 0x8b57, 0x8b58, 0x8b5a, 0x8b5b, 0x8b5d, 0x8b5f,
- 0x8b80, 0x8b80, 0x8b80, 0x8b80, 0x8b81, 0x8b81, 0x8b82, 0x8b82,
- 0x8b83, 0x8b84, 0x8b85, 0x8b85, 0x8b86, 0x8b87, 0x8b88, 0x8b89,
- 0x8b8a, 0x8b8b, 0x8b8c, 0x8b8e, 0x8b8f, 0x8b90, 0x8b91, 0x8b93,
- 0x8b94, 0x8b95, 0x8b97, 0x8b98, 0x8b9a, 0x8b9b, 0x8b9d, 0x8b9f,
- 0x8ba0, 0x8ba0, 0x8ba0, 0x8ba0, 0x8ba1, 0x8ba1, 0x8ba2, 0x8ba2,
- 0x8ba3, 0x8ba4, 0x8ba5, 0x8ba5, 0x8ba6, 0x8ba7, 0x8ba8, 0x8ba9,
- 0x8baa, 0x8bab, 0x8bac, 0x8bae, 0x8baf, 0x8bb0, 0x8bb1, 0x8bb3,
- 0x8bb4, 0x8bb5, 0x8bb7, 0x8bb8, 0x8bba, 0x8bbb, 0x8bbd, 0x8bbf,
- 0x8bc0, 0x8bc0, 0x8bc0, 0x8bc0, 0x8bc1, 0x8bc1, 0x8bc2, 0x8bc2,
- 0x8bc3, 0x8bc4, 0x8bc5, 0x8bc5, 0x8bc6, 0x8bc7, 0x8bc8, 0x8bc9,
- 0x8bca, 0x8bcb, 0x8bcc, 0x8bce, 0x8bcf, 0x8bd0, 0x8bd1, 0x8bd3,
- 0x8bd4, 0x8bd5, 0x8bd7, 0x8bd8, 0x8bda, 0x8bdb, 0x8bdd, 0x8bdf,
- 0x8be0, 0x8be0, 0x8be0, 0x8be0, 0x8be1, 0x8be1, 0x8be2, 0x8be2,
- 0x8be3, 0x8be4, 0x8be5, 0x8be5, 0x8be6, 0x8be7, 0x8be8, 0x8be9,
- 0x8bea, 0x8beb, 0x8bec, 0x8bee, 0x8bef, 0x8bf0, 0x8bf1, 0x8bf3,
- 0x8bf4, 0x8bf5, 0x8bf7, 0x8bf8, 0x8bfa, 0x8bfb, 0x8bfd, 0x8bff,
- 0x8c00, 0x8c00, 0x8c00, 0x8c00, 0x8c01, 0x8c01, 0x8c02, 0x8c02,
- 0x8c03, 0x8c04, 0x8c05, 0x8c05, 0x8c06, 0x8c07, 0x8c08, 0x8c09,
- 0x8c0a, 0x8c0b, 0x8c0c, 0x8c0e, 0x8c0f, 0x8c10, 0x8c11, 0x8c13,
- 0x8c14, 0x8c15, 0x8c17, 0x8c18, 0x8c1a, 0x8c1b, 0x8c1d, 0x8c1f,
- 0x8c40, 0x8c40, 0x8c40, 0x8c40, 0x8c41, 0x8c41, 0x8c42, 0x8c42,
- 0x8c43, 0x8c44, 0x8c45, 0x8c45, 0x8c46, 0x8c47, 0x8c48, 0x8c49,
- 0x8c4a, 0x8c4b, 0x8c4c, 0x8c4e, 0x8c4f, 0x8c50, 0x8c51, 0x8c53,
- 0x8c54, 0x8c55, 0x8c57, 0x8c58, 0x8c5a, 0x8c5b, 0x8c5d, 0x8c5f,
- 0x8c60, 0x8c60, 0x8c60, 0x8c60, 0x8c61, 0x8c61, 0x8c62, 0x8c62,
- 0x8c63, 0x8c64, 0x8c65, 0x8c65, 0x8c66, 0x8c67, 0x8c68, 0x8c69,
- 0x8c6a, 0x8c6b, 0x8c6c, 0x8c6e, 0x8c6f, 0x8c70, 0x8c71, 0x8c73,
- 0x8c74, 0x8c75, 0x8c77, 0x8c78, 0x8c7a, 0x8c7b, 0x8c7d, 0x8c7f,
- 0x8c80, 0x8c80, 0x8c80, 0x8c80, 0x8c81, 0x8c81, 0x8c82, 0x8c82,
- 0x8c83, 0x8c84, 0x8c85, 0x8c85, 0x8c86, 0x8c87, 0x8c88, 0x8c89,
- 0x8c8a, 0x8c8b, 0x8c8c, 0x8c8e, 0x8c8f, 0x8c90, 0x8c91, 0x8c93,
- 0x8c94, 0x8c95, 0x8c97, 0x8c98, 0x8c9a, 0x8c9b, 0x8c9d, 0x8c9f,
- 0x8cc0, 0x8cc0, 0x8cc0, 0x8cc0, 0x8cc1, 0x8cc1, 0x8cc2, 0x8cc2,
- 0x8cc3, 0x8cc4, 0x8cc5, 0x8cc5, 0x8cc6, 0x8cc7, 0x8cc8, 0x8cc9,
- 0x8cca, 0x8ccb, 0x8ccc, 0x8cce, 0x8ccf, 0x8cd0, 0x8cd1, 0x8cd3,
- 0x8cd4, 0x8cd5, 0x8cd7, 0x8cd8, 0x8cda, 0x8cdb, 0x8cdd, 0x8cdf,
- 0x8ce0, 0x8ce0, 0x8ce0, 0x8ce0, 0x8ce1, 0x8ce1, 0x8ce2, 0x8ce2,
- 0x8ce3, 0x8ce4, 0x8ce5, 0x8ce5, 0x8ce6, 0x8ce7, 0x8ce8, 0x8ce9,
- 0x8cea, 0x8ceb, 0x8cec, 0x8cee, 0x8cef, 0x8cf0, 0x8cf1, 0x8cf3,
- 0x8cf4, 0x8cf5, 0x8cf7, 0x8cf8, 0x8cfa, 0x8cfb, 0x8cfd, 0x8cff,
- 0x8d00, 0x8d00, 0x8d00, 0x8d00, 0x8d01, 0x8d01, 0x8d02, 0x8d02,
- 0x8d03, 0x8d04, 0x8d05, 0x8d05, 0x8d06, 0x8d07, 0x8d08, 0x8d09,
- 0x8d0a, 0x8d0b, 0x8d0c, 0x8d0e, 0x8d0f, 0x8d10, 0x8d11, 0x8d13,
- 0x8d14, 0x8d15, 0x8d17, 0x8d18, 0x8d1a, 0x8d1b, 0x8d1d, 0x8d1f,
- 0x8d40, 0x8d40, 0x8d40, 0x8d40, 0x8d41, 0x8d41, 0x8d42, 0x8d42,
- 0x8d43, 0x8d44, 0x8d45, 0x8d45, 0x8d46, 0x8d47, 0x8d48, 0x8d49,
- 0x8d4a, 0x8d4b, 0x8d4c, 0x8d4e, 0x8d4f, 0x8d50, 0x8d51, 0x8d53,
- 0x8d54, 0x8d55, 0x8d57, 0x8d58, 0x8d5a, 0x8d5b, 0x8d5d, 0x8d5f,
- 0x8d60, 0x8d60, 0x8d60, 0x8d60, 0x8d61, 0x8d61, 0x8d62, 0x8d62,
- 0x8d63, 0x8d64, 0x8d65, 0x8d65, 0x8d66, 0x8d67, 0x8d68, 0x8d69,
- 0x8d6a, 0x8d6b, 0x8d6c, 0x8d6e, 0x8d6f, 0x8d70, 0x8d71, 0x8d73,
- 0x8d74, 0x8d75, 0x8d77, 0x8d78, 0x8d7a, 0x8d7b, 0x8d7d, 0x8d7f,
- 0x8d80, 0x8d80, 0x8d80, 0x8d80, 0x8d81, 0x8d81, 0x8d82, 0x8d82,
- 0x8d83, 0x8d84, 0x8d85, 0x8d85, 0x8d86, 0x8d87, 0x8d88, 0x8d89,
- 0x8d8a, 0x8d8b, 0x8d8c, 0x8d8e, 0x8d8f, 0x8d90, 0x8d91, 0x8d93,
- 0x8d94, 0x8d95, 0x8d97, 0x8d98, 0x8d9a, 0x8d9b, 0x8d9d, 0x8d9f,
- 0x8dc0, 0x8dc0, 0x8dc0, 0x8dc0, 0x8dc1, 0x8dc1, 0x8dc2, 0x8dc2,
- 0x8dc3, 0x8dc4, 0x8dc5, 0x8dc5, 0x8dc6, 0x8dc7, 0x8dc8, 0x8dc9,
- 0x8dca, 0x8dcb, 0x8dcc, 0x8dce, 0x8dcf, 0x8dd0, 0x8dd1, 0x8dd3,
- 0x8dd4, 0x8dd5, 0x8dd7, 0x8dd8, 0x8dda, 0x8ddb, 0x8ddd, 0x8ddf,
- 0x8de0, 0x8de0, 0x8de0, 0x8de0, 0x8de1, 0x8de1, 0x8de2, 0x8de2,
- 0x8de3, 0x8de4, 0x8de5, 0x8de5, 0x8de6, 0x8de7, 0x8de8, 0x8de9,
- 0x8dea, 0x8deb, 0x8dec, 0x8dee, 0x8def, 0x8df0, 0x8df1, 0x8df3,
- 0x8df4, 0x8df5, 0x8df7, 0x8df8, 0x8dfa, 0x8dfb, 0x8dfd, 0x8dff,
- 0x8e20, 0x8e20, 0x8e20, 0x8e20, 0x8e21, 0x8e21, 0x8e22, 0x8e22,
- 0x8e23, 0x8e24, 0x8e25, 0x8e25, 0x8e26, 0x8e27, 0x8e28, 0x8e29,
- 0x8e2a, 0x8e2b, 0x8e2c, 0x8e2e, 0x8e2f, 0x8e30, 0x8e31, 0x8e33,
- 0x8e34, 0x8e35, 0x8e37, 0x8e38, 0x8e3a, 0x8e3b, 0x8e3d, 0x8e3f,
- 0x8e40, 0x8e40, 0x8e40, 0x8e40, 0x8e41, 0x8e41, 0x8e42, 0x8e42,
- 0x8e43, 0x8e44, 0x8e45, 0x8e45, 0x8e46, 0x8e47, 0x8e48, 0x8e49,
- 0x8e4a, 0x8e4b, 0x8e4c, 0x8e4e, 0x8e4f, 0x8e50, 0x8e51, 0x8e53,
- 0x8e54, 0x8e55, 0x8e57, 0x8e58, 0x8e5a, 0x8e5b, 0x8e5d, 0x8e5f,
- 0x8e80, 0x8e80, 0x8e80, 0x8e80, 0x8e81, 0x8e81, 0x8e82, 0x8e82,
- 0x8e83, 0x8e84, 0x8e85, 0x8e85, 0x8e86, 0x8e87, 0x8e88, 0x8e89,
- 0x8e8a, 0x8e8b, 0x8e8c, 0x8e8e, 0x8e8f, 0x8e90, 0x8e91, 0x8e93,
- 0x8e94, 0x8e95, 0x8e97, 0x8e98, 0x8e9a, 0x8e9b, 0x8e9d, 0x8e9f,
- 0x8ea0, 0x8ea0, 0x8ea0, 0x8ea0, 0x8ea1, 0x8ea1, 0x8ea2, 0x8ea2,
- 0x8ea3, 0x8ea4, 0x8ea5, 0x8ea5, 0x8ea6, 0x8ea7, 0x8ea8, 0x8ea9,
- 0x8eaa, 0x8eab, 0x8eac, 0x8eae, 0x8eaf, 0x8eb0, 0x8eb1, 0x8eb3,
- 0x8eb4, 0x8eb5, 0x8eb7, 0x8eb8, 0x8eba, 0x8ebb, 0x8ebd, 0x8ebf,
- 0x8ee0, 0x8ee0, 0x8ee0, 0x8ee0, 0x8ee1, 0x8ee1, 0x8ee2, 0x8ee2,
- 0x8ee3, 0x8ee4, 0x8ee5, 0x8ee5, 0x8ee6, 0x8ee7, 0x8ee8, 0x8ee9,
- 0x8eea, 0x8eeb, 0x8eec, 0x8eee, 0x8eef, 0x8ef0, 0x8ef1, 0x8ef3,
- 0x8ef4, 0x8ef5, 0x8ef7, 0x8ef8, 0x8efa, 0x8efb, 0x8efd, 0x8eff,
- 0x8f00, 0x8f00, 0x8f00, 0x8f00, 0x8f01, 0x8f01, 0x8f02, 0x8f02,
- 0x8f03, 0x8f04, 0x8f05, 0x8f05, 0x8f06, 0x8f07, 0x8f08, 0x8f09,
- 0x8f0a, 0x8f0b, 0x8f0c, 0x8f0e, 0x8f0f, 0x8f10, 0x8f11, 0x8f13,
- 0x8f14, 0x8f15, 0x8f17, 0x8f18, 0x8f1a, 0x8f1b, 0x8f1d, 0x8f1f,
- 0x8f40, 0x8f40, 0x8f40, 0x8f40, 0x8f41, 0x8f41, 0x8f42, 0x8f42,
- 0x8f43, 0x8f44, 0x8f45, 0x8f45, 0x8f46, 0x8f47, 0x8f48, 0x8f49,
- 0x8f4a, 0x8f4b, 0x8f4c, 0x8f4e, 0x8f4f, 0x8f50, 0x8f51, 0x8f53,
- 0x8f54, 0x8f55, 0x8f57, 0x8f58, 0x8f5a, 0x8f5b, 0x8f5d, 0x8f5f,
- 0x8f60, 0x8f60, 0x8f60, 0x8f60, 0x8f61, 0x8f61, 0x8f62, 0x8f62,
- 0x8f63, 0x8f64, 0x8f65, 0x8f65, 0x8f66, 0x8f67, 0x8f68, 0x8f69,
- 0x8f6a, 0x8f6b, 0x8f6c, 0x8f6e, 0x8f6f, 0x8f70, 0x8f71, 0x8f73,
- 0x8f74, 0x8f75, 0x8f77, 0x8f78, 0x8f7a, 0x8f7b, 0x8f7d, 0x8f7f,
- 0x8fa0, 0x8fa0, 0x8fa0, 0x8fa0, 0x8fa1, 0x8fa1, 0x8fa2, 0x8fa2,
- 0x8fa3, 0x8fa4, 0x8fa5, 0x8fa5, 0x8fa6, 0x8fa7, 0x8fa8, 0x8fa9,
- 0x8faa, 0x8fab, 0x8fac, 0x8fae, 0x8faf, 0x8fb0, 0x8fb1, 0x8fb3,
- 0x8fb4, 0x8fb5, 0x8fb7, 0x8fb8, 0x8fba, 0x8fbb, 0x8fbd, 0x8fbf,
- 0x8fe0, 0x8fe0, 0x8fe0, 0x8fe0, 0x8fe1, 0x8fe1, 0x8fe2, 0x8fe2,
- 0x8fe3, 0x8fe4, 0x8fe5, 0x8fe5, 0x8fe6, 0x8fe7, 0x8fe8, 0x8fe9,
- 0x8fea, 0x8feb, 0x8fec, 0x8fee, 0x8fef, 0x8ff0, 0x8ff1, 0x8ff3,
- 0x8ff4, 0x8ff5, 0x8ff7, 0x8ff8, 0x8ffa, 0x8ffb, 0x8ffd, 0x8fff,
- 0x9800, 0x9800, 0x9800, 0x9800, 0x9801, 0x9801, 0x9802, 0x9802,
- 0x9803, 0x9804, 0x9805, 0x9805, 0x9806, 0x9807, 0x9808, 0x9809,
- 0x980a, 0x980b, 0x980c, 0x980e, 0x980f, 0x9810, 0x9811, 0x9813,
- 0x9814, 0x9815, 0x9817, 0x9818, 0x981a, 0x981b, 0x981d, 0x981f,
- 0x9800, 0x9800, 0x9800, 0x9800, 0x9801, 0x9801, 0x9802, 0x9802,
- 0x9803, 0x9804, 0x9805, 0x9805, 0x9806, 0x9807, 0x9808, 0x9809,
- 0x980a, 0x980b, 0x980c, 0x980e, 0x980f, 0x9810, 0x9811, 0x9813,
- 0x9814, 0x9815, 0x9817, 0x9818, 0x981a, 0x981b, 0x981d, 0x981f,
- 0x9800, 0x9800, 0x9800, 0x9800, 0x9801, 0x9801, 0x9802, 0x9802,
- 0x9803, 0x9804, 0x9805, 0x9805, 0x9806, 0x9807, 0x9808, 0x9809,
- 0x980a, 0x980b, 0x980c, 0x980e, 0x980f, 0x9810, 0x9811, 0x9813,
- 0x9814, 0x9815, 0x9817, 0x9818, 0x981a, 0x981b, 0x981d, 0x981f,
- 0x9800, 0x9800, 0x9800, 0x9800, 0x9801, 0x9801, 0x9802, 0x9802,
- 0x9803, 0x9804, 0x9805, 0x9805, 0x9806, 0x9807, 0x9808, 0x9809,
- 0x980a, 0x980b, 0x980c, 0x980e, 0x980f, 0x9810, 0x9811, 0x9813,
- 0x9814, 0x9815, 0x9817, 0x9818, 0x981a, 0x981b, 0x981d, 0x981f,
- 0x9800, 0x9800, 0x9800, 0x9800, 0x9801, 0x9801, 0x9802, 0x9802,
- 0x9803, 0x9804, 0x9805, 0x9805, 0x9806, 0x9807, 0x9808, 0x9809,
- 0x980a, 0x980b, 0x980c, 0x980e, 0x980f, 0x9810, 0x9811, 0x9813,
- 0x9814, 0x9815, 0x9817, 0x9818, 0x981a, 0x981b, 0x981d, 0x981f,
- 0x9820, 0x9820, 0x9820, 0x9820, 0x9821, 0x9821, 0x9822, 0x9822,
- 0x9823, 0x9824, 0x9825, 0x9825, 0x9826, 0x9827, 0x9828, 0x9829,
- 0x982a, 0x982b, 0x982c, 0x982e, 0x982f, 0x9830, 0x9831, 0x9833,
- 0x9834, 0x9835, 0x9837, 0x9838, 0x983a, 0x983b, 0x983d, 0x983f,
- 0x9820, 0x9820, 0x9820, 0x9820, 0x9821, 0x9821, 0x9822, 0x9822,
- 0x9823, 0x9824, 0x9825, 0x9825, 0x9826, 0x9827, 0x9828, 0x9829,
- 0x982a, 0x982b, 0x982c, 0x982e, 0x982f, 0x9830, 0x9831, 0x9833,
- 0x9834, 0x9835, 0x9837, 0x9838, 0x983a, 0x983b, 0x983d, 0x983f,
- 0x9820, 0x9820, 0x9820, 0x9820, 0x9821, 0x9821, 0x9822, 0x9822,
- 0x9823, 0x9824, 0x9825, 0x9825, 0x9826, 0x9827, 0x9828, 0x9829,
- 0x982a, 0x982b, 0x982c, 0x982e, 0x982f, 0x9830, 0x9831, 0x9833,
- 0x9834, 0x9835, 0x9837, 0x9838, 0x983a, 0x983b, 0x983d, 0x983f,
- 0x9840, 0x9840, 0x9840, 0x9840, 0x9841, 0x9841, 0x9842, 0x9842,
- 0x9843, 0x9844, 0x9845, 0x9845, 0x9846, 0x9847, 0x9848, 0x9849,
- 0x984a, 0x984b, 0x984c, 0x984e, 0x984f, 0x9850, 0x9851, 0x9853,
- 0x9854, 0x9855, 0x9857, 0x9858, 0x985a, 0x985b, 0x985d, 0x985f,
- 0x9840, 0x9840, 0x9840, 0x9840, 0x9841, 0x9841, 0x9842, 0x9842,
- 0x9843, 0x9844, 0x9845, 0x9845, 0x9846, 0x9847, 0x9848, 0x9849,
- 0x984a, 0x984b, 0x984c, 0x984e, 0x984f, 0x9850, 0x9851, 0x9853,
- 0x9854, 0x9855, 0x9857, 0x9858, 0x985a, 0x985b, 0x985d, 0x985f,
- 0x9860, 0x9860, 0x9860, 0x9860, 0x9861, 0x9861, 0x9862, 0x9862,
- 0x9863, 0x9864, 0x9865, 0x9865, 0x9866, 0x9867, 0x9868, 0x9869,
- 0x986a, 0x986b, 0x986c, 0x986e, 0x986f, 0x9870, 0x9871, 0x9873,
- 0x9874, 0x9875, 0x9877, 0x9878, 0x987a, 0x987b, 0x987d, 0x987f,
- 0x9860, 0x9860, 0x9860, 0x9860, 0x9861, 0x9861, 0x9862, 0x9862,
- 0x9863, 0x9864, 0x9865, 0x9865, 0x9866, 0x9867, 0x9868, 0x9869,
- 0x986a, 0x986b, 0x986c, 0x986e, 0x986f, 0x9870, 0x9871, 0x9873,
- 0x9874, 0x9875, 0x9877, 0x9878, 0x987a, 0x987b, 0x987d, 0x987f,
- 0x9880, 0x9880, 0x9880, 0x9880, 0x9881, 0x9881, 0x9882, 0x9882,
- 0x9883, 0x9884, 0x9885, 0x9885, 0x9886, 0x9887, 0x9888, 0x9889,
- 0x988a, 0x988b, 0x988c, 0x988e, 0x988f, 0x9890, 0x9891, 0x9893,
- 0x9894, 0x9895, 0x9897, 0x9898, 0x989a, 0x989b, 0x989d, 0x989f,
- 0x98a0, 0x98a0, 0x98a0, 0x98a0, 0x98a1, 0x98a1, 0x98a2, 0x98a2,
- 0x98a3, 0x98a4, 0x98a5, 0x98a5, 0x98a6, 0x98a7, 0x98a8, 0x98a9,
- 0x98aa, 0x98ab, 0x98ac, 0x98ae, 0x98af, 0x98b0, 0x98b1, 0x98b3,
- 0x98b4, 0x98b5, 0x98b7, 0x98b8, 0x98ba, 0x98bb, 0x98bd, 0x98bf,
- 0x98a0, 0x98a0, 0x98a0, 0x98a0, 0x98a1, 0x98a1, 0x98a2, 0x98a2,
- 0x98a3, 0x98a4, 0x98a5, 0x98a5, 0x98a6, 0x98a7, 0x98a8, 0x98a9,
- 0x98aa, 0x98ab, 0x98ac, 0x98ae, 0x98af, 0x98b0, 0x98b1, 0x98b3,
- 0x98b4, 0x98b5, 0x98b7, 0x98b8, 0x98ba, 0x98bb, 0x98bd, 0x98bf,
- 0x98c0, 0x98c0, 0x98c0, 0x98c0, 0x98c1, 0x98c1, 0x98c2, 0x98c2,
- 0x98c3, 0x98c4, 0x98c5, 0x98c5, 0x98c6, 0x98c7, 0x98c8, 0x98c9,
- 0x98ca, 0x98cb, 0x98cc, 0x98ce, 0x98cf, 0x98d0, 0x98d1, 0x98d3,
- 0x98d4, 0x98d5, 0x98d7, 0x98d8, 0x98da, 0x98db, 0x98dd, 0x98df,
- 0x98e0, 0x98e0, 0x98e0, 0x98e0, 0x98e1, 0x98e1, 0x98e2, 0x98e2,
- 0x98e3, 0x98e4, 0x98e5, 0x98e5, 0x98e6, 0x98e7, 0x98e8, 0x98e9,
- 0x98ea, 0x98eb, 0x98ec, 0x98ee, 0x98ef, 0x98f0, 0x98f1, 0x98f3,
- 0x98f4, 0x98f5, 0x98f7, 0x98f8, 0x98fa, 0x98fb, 0x98fd, 0x98ff,
- 0x98e0, 0x98e0, 0x98e0, 0x98e0, 0x98e1, 0x98e1, 0x98e2, 0x98e2,
- 0x98e3, 0x98e4, 0x98e5, 0x98e5, 0x98e6, 0x98e7, 0x98e8, 0x98e9,
- 0x98ea, 0x98eb, 0x98ec, 0x98ee, 0x98ef, 0x98f0, 0x98f1, 0x98f3,
- 0x98f4, 0x98f5, 0x98f7, 0x98f8, 0x98fa, 0x98fb, 0x98fd, 0x98ff,
- 0x9900, 0x9900, 0x9900, 0x9900, 0x9901, 0x9901, 0x9902, 0x9902,
- 0x9903, 0x9904, 0x9905, 0x9905, 0x9906, 0x9907, 0x9908, 0x9909,
- 0x990a, 0x990b, 0x990c, 0x990e, 0x990f, 0x9910, 0x9911, 0x9913,
- 0x9914, 0x9915, 0x9917, 0x9918, 0x991a, 0x991b, 0x991d, 0x991f,
- 0x9920, 0x9920, 0x9920, 0x9920, 0x9921, 0x9921, 0x9922, 0x9922,
- 0x9923, 0x9924, 0x9925, 0x9925, 0x9926, 0x9927, 0x9928, 0x9929,
- 0x992a, 0x992b, 0x992c, 0x992e, 0x992f, 0x9930, 0x9931, 0x9933,
- 0x9934, 0x9935, 0x9937, 0x9938, 0x993a, 0x993b, 0x993d, 0x993f,
- 0x9940, 0x9940, 0x9940, 0x9940, 0x9941, 0x9941, 0x9942, 0x9942,
- 0x9943, 0x9944, 0x9945, 0x9945, 0x9946, 0x9947, 0x9948, 0x9949,
- 0x994a, 0x994b, 0x994c, 0x994e, 0x994f, 0x9950, 0x9951, 0x9953,
- 0x9954, 0x9955, 0x9957, 0x9958, 0x995a, 0x995b, 0x995d, 0x995f,
- 0x9940, 0x9940, 0x9940, 0x9940, 0x9941, 0x9941, 0x9942, 0x9942,
- 0x9943, 0x9944, 0x9945, 0x9945, 0x9946, 0x9947, 0x9948, 0x9949,
- 0x994a, 0x994b, 0x994c, 0x994e, 0x994f, 0x9950, 0x9951, 0x9953,
- 0x9954, 0x9955, 0x9957, 0x9958, 0x995a, 0x995b, 0x995d, 0x995f,
- 0x9960, 0x9960, 0x9960, 0x9960, 0x9961, 0x9961, 0x9962, 0x9962,
- 0x9963, 0x9964, 0x9965, 0x9965, 0x9966, 0x9967, 0x9968, 0x9969,
- 0x996a, 0x996b, 0x996c, 0x996e, 0x996f, 0x9970, 0x9971, 0x9973,
- 0x9974, 0x9975, 0x9977, 0x9978, 0x997a, 0x997b, 0x997d, 0x997f,
- 0x9980, 0x9980, 0x9980, 0x9980, 0x9981, 0x9981, 0x9982, 0x9982,
- 0x9983, 0x9984, 0x9985, 0x9985, 0x9986, 0x9987, 0x9988, 0x9989,
- 0x998a, 0x998b, 0x998c, 0x998e, 0x998f, 0x9990, 0x9991, 0x9993,
- 0x9994, 0x9995, 0x9997, 0x9998, 0x999a, 0x999b, 0x999d, 0x999f,
- 0x99a0, 0x99a0, 0x99a0, 0x99a0, 0x99a1, 0x99a1, 0x99a2, 0x99a2,
- 0x99a3, 0x99a4, 0x99a5, 0x99a5, 0x99a6, 0x99a7, 0x99a8, 0x99a9,
- 0x99aa, 0x99ab, 0x99ac, 0x99ae, 0x99af, 0x99b0, 0x99b1, 0x99b3,
- 0x99b4, 0x99b5, 0x99b7, 0x99b8, 0x99ba, 0x99bb, 0x99bd, 0x99bf,
- 0x99c0, 0x99c0, 0x99c0, 0x99c0, 0x99c1, 0x99c1, 0x99c2, 0x99c2,
- 0x99c3, 0x99c4, 0x99c5, 0x99c5, 0x99c6, 0x99c7, 0x99c8, 0x99c9,
- 0x99ca, 0x99cb, 0x99cc, 0x99ce, 0x99cf, 0x99d0, 0x99d1, 0x99d3,
- 0x99d4, 0x99d5, 0x99d7, 0x99d8, 0x99da, 0x99db, 0x99dd, 0x99df,
- 0x99e0, 0x99e0, 0x99e0, 0x99e0, 0x99e1, 0x99e1, 0x99e2, 0x99e2,
- 0x99e3, 0x99e4, 0x99e5, 0x99e5, 0x99e6, 0x99e7, 0x99e8, 0x99e9,
- 0x99ea, 0x99eb, 0x99ec, 0x99ee, 0x99ef, 0x99f0, 0x99f1, 0x99f3,
- 0x99f4, 0x99f5, 0x99f7, 0x99f8, 0x99fa, 0x99fb, 0x99fd, 0x99ff,
- 0x9a00, 0x9a00, 0x9a00, 0x9a00, 0x9a01, 0x9a01, 0x9a02, 0x9a02,
- 0x9a03, 0x9a04, 0x9a05, 0x9a05, 0x9a06, 0x9a07, 0x9a08, 0x9a09,
- 0x9a0a, 0x9a0b, 0x9a0c, 0x9a0e, 0x9a0f, 0x9a10, 0x9a11, 0x9a13,
- 0x9a14, 0x9a15, 0x9a17, 0x9a18, 0x9a1a, 0x9a1b, 0x9a1d, 0x9a1f,
- 0x9a20, 0x9a20, 0x9a20, 0x9a20, 0x9a21, 0x9a21, 0x9a22, 0x9a22,
- 0x9a23, 0x9a24, 0x9a25, 0x9a25, 0x9a26, 0x9a27, 0x9a28, 0x9a29,
- 0x9a2a, 0x9a2b, 0x9a2c, 0x9a2e, 0x9a2f, 0x9a30, 0x9a31, 0x9a33,
- 0x9a34, 0x9a35, 0x9a37, 0x9a38, 0x9a3a, 0x9a3b, 0x9a3d, 0x9a3f,
- 0x9a40, 0x9a40, 0x9a40, 0x9a40, 0x9a41, 0x9a41, 0x9a42, 0x9a42,
- 0x9a43, 0x9a44, 0x9a45, 0x9a45, 0x9a46, 0x9a47, 0x9a48, 0x9a49,
- 0x9a4a, 0x9a4b, 0x9a4c, 0x9a4e, 0x9a4f, 0x9a50, 0x9a51, 0x9a53,
- 0x9a54, 0x9a55, 0x9a57, 0x9a58, 0x9a5a, 0x9a5b, 0x9a5d, 0x9a5f,
- 0x9a60, 0x9a60, 0x9a60, 0x9a60, 0x9a61, 0x9a61, 0x9a62, 0x9a62,
- 0x9a63, 0x9a64, 0x9a65, 0x9a65, 0x9a66, 0x9a67, 0x9a68, 0x9a69,
- 0x9a6a, 0x9a6b, 0x9a6c, 0x9a6e, 0x9a6f, 0x9a70, 0x9a71, 0x9a73,
- 0x9a74, 0x9a75, 0x9a77, 0x9a78, 0x9a7a, 0x9a7b, 0x9a7d, 0x9a7f,
- 0x9a80, 0x9a80, 0x9a80, 0x9a80, 0x9a81, 0x9a81, 0x9a82, 0x9a82,
- 0x9a83, 0x9a84, 0x9a85, 0x9a85, 0x9a86, 0x9a87, 0x9a88, 0x9a89,
- 0x9a8a, 0x9a8b, 0x9a8c, 0x9a8e, 0x9a8f, 0x9a90, 0x9a91, 0x9a93,
- 0x9a94, 0x9a95, 0x9a97, 0x9a98, 0x9a9a, 0x9a9b, 0x9a9d, 0x9a9f,
- 0x9aa0, 0x9aa0, 0x9aa0, 0x9aa0, 0x9aa1, 0x9aa1, 0x9aa2, 0x9aa2,
- 0x9aa3, 0x9aa4, 0x9aa5, 0x9aa5, 0x9aa6, 0x9aa7, 0x9aa8, 0x9aa9,
- 0x9aaa, 0x9aab, 0x9aac, 0x9aae, 0x9aaf, 0x9ab0, 0x9ab1, 0x9ab3,
- 0x9ab4, 0x9ab5, 0x9ab7, 0x9ab8, 0x9aba, 0x9abb, 0x9abd, 0x9abf,
- 0x9ac0, 0x9ac0, 0x9ac0, 0x9ac0, 0x9ac1, 0x9ac1, 0x9ac2, 0x9ac2,
- 0x9ac3, 0x9ac4, 0x9ac5, 0x9ac5, 0x9ac6, 0x9ac7, 0x9ac8, 0x9ac9,
- 0x9aca, 0x9acb, 0x9acc, 0x9ace, 0x9acf, 0x9ad0, 0x9ad1, 0x9ad3,
- 0x9ad4, 0x9ad5, 0x9ad7, 0x9ad8, 0x9ada, 0x9adb, 0x9add, 0x9adf,
- 0x9ae0, 0x9ae0, 0x9ae0, 0x9ae0, 0x9ae1, 0x9ae1, 0x9ae2, 0x9ae2,
- 0x9ae3, 0x9ae4, 0x9ae5, 0x9ae5, 0x9ae6, 0x9ae7, 0x9ae8, 0x9ae9,
- 0x9aea, 0x9aeb, 0x9aec, 0x9aee, 0x9aef, 0x9af0, 0x9af1, 0x9af3,
- 0x9af4, 0x9af5, 0x9af7, 0x9af8, 0x9afa, 0x9afb, 0x9afd, 0x9aff,
- 0x9b00, 0x9b00, 0x9b00, 0x9b00, 0x9b01, 0x9b01, 0x9b02, 0x9b02,
- 0x9b03, 0x9b04, 0x9b05, 0x9b05, 0x9b06, 0x9b07, 0x9b08, 0x9b09,
- 0x9b0a, 0x9b0b, 0x9b0c, 0x9b0e, 0x9b0f, 0x9b10, 0x9b11, 0x9b13,
- 0x9b14, 0x9b15, 0x9b17, 0x9b18, 0x9b1a, 0x9b1b, 0x9b1d, 0x9b1f,
- 0x9b20, 0x9b20, 0x9b20, 0x9b20, 0x9b21, 0x9b21, 0x9b22, 0x9b22,
- 0x9b23, 0x9b24, 0x9b25, 0x9b25, 0x9b26, 0x9b27, 0x9b28, 0x9b29,
- 0x9b2a, 0x9b2b, 0x9b2c, 0x9b2e, 0x9b2f, 0x9b30, 0x9b31, 0x9b33,
- 0x9b34, 0x9b35, 0x9b37, 0x9b38, 0x9b3a, 0x9b3b, 0x9b3d, 0x9b3f,
- 0x9b40, 0x9b40, 0x9b40, 0x9b40, 0x9b41, 0x9b41, 0x9b42, 0x9b42,
- 0x9b43, 0x9b44, 0x9b45, 0x9b45, 0x9b46, 0x9b47, 0x9b48, 0x9b49,
- 0x9b4a, 0x9b4b, 0x9b4c, 0x9b4e, 0x9b4f, 0x9b50, 0x9b51, 0x9b53,
- 0x9b54, 0x9b55, 0x9b57, 0x9b58, 0x9b5a, 0x9b5b, 0x9b5d, 0x9b5f,
- 0x9b80, 0x9b80, 0x9b80, 0x9b80, 0x9b81, 0x9b81, 0x9b82, 0x9b82,
- 0x9b83, 0x9b84, 0x9b85, 0x9b85, 0x9b86, 0x9b87, 0x9b88, 0x9b89,
- 0x9b8a, 0x9b8b, 0x9b8c, 0x9b8e, 0x9b8f, 0x9b90, 0x9b91, 0x9b93,
- 0x9b94, 0x9b95, 0x9b97, 0x9b98, 0x9b9a, 0x9b9b, 0x9b9d, 0x9b9f,
- 0x9ba0, 0x9ba0, 0x9ba0, 0x9ba0, 0x9ba1, 0x9ba1, 0x9ba2, 0x9ba2,
- 0x9ba3, 0x9ba4, 0x9ba5, 0x9ba5, 0x9ba6, 0x9ba7, 0x9ba8, 0x9ba9,
- 0x9baa, 0x9bab, 0x9bac, 0x9bae, 0x9baf, 0x9bb0, 0x9bb1, 0x9bb3,
- 0x9bb4, 0x9bb5, 0x9bb7, 0x9bb8, 0x9bba, 0x9bbb, 0x9bbd, 0x9bbf,
- 0x9bc0, 0x9bc0, 0x9bc0, 0x9bc0, 0x9bc1, 0x9bc1, 0x9bc2, 0x9bc2,
- 0x9bc3, 0x9bc4, 0x9bc5, 0x9bc5, 0x9bc6, 0x9bc7, 0x9bc8, 0x9bc9,
- 0x9bca, 0x9bcb, 0x9bcc, 0x9bce, 0x9bcf, 0x9bd0, 0x9bd1, 0x9bd3,
- 0x9bd4, 0x9bd5, 0x9bd7, 0x9bd8, 0x9bda, 0x9bdb, 0x9bdd, 0x9bdf,
- 0x9be0, 0x9be0, 0x9be0, 0x9be0, 0x9be1, 0x9be1, 0x9be2, 0x9be2,
- 0x9be3, 0x9be4, 0x9be5, 0x9be5, 0x9be6, 0x9be7, 0x9be8, 0x9be9,
- 0x9bea, 0x9beb, 0x9bec, 0x9bee, 0x9bef, 0x9bf0, 0x9bf1, 0x9bf3,
- 0x9bf4, 0x9bf5, 0x9bf7, 0x9bf8, 0x9bfa, 0x9bfb, 0x9bfd, 0x9bff,
- 0x9c00, 0x9c00, 0x9c00, 0x9c00, 0x9c01, 0x9c01, 0x9c02, 0x9c02,
- 0x9c03, 0x9c04, 0x9c05, 0x9c05, 0x9c06, 0x9c07, 0x9c08, 0x9c09,
- 0x9c0a, 0x9c0b, 0x9c0c, 0x9c0e, 0x9c0f, 0x9c10, 0x9c11, 0x9c13,
- 0x9c14, 0x9c15, 0x9c17, 0x9c18, 0x9c1a, 0x9c1b, 0x9c1d, 0x9c1f,
- 0x9c40, 0x9c40, 0x9c40, 0x9c40, 0x9c41, 0x9c41, 0x9c42, 0x9c42,
- 0x9c43, 0x9c44, 0x9c45, 0x9c45, 0x9c46, 0x9c47, 0x9c48, 0x9c49,
- 0x9c4a, 0x9c4b, 0x9c4c, 0x9c4e, 0x9c4f, 0x9c50, 0x9c51, 0x9c53,
- 0x9c54, 0x9c55, 0x9c57, 0x9c58, 0x9c5a, 0x9c5b, 0x9c5d, 0x9c5f,
- 0x9c60, 0x9c60, 0x9c60, 0x9c60, 0x9c61, 0x9c61, 0x9c62, 0x9c62,
- 0x9c63, 0x9c64, 0x9c65, 0x9c65, 0x9c66, 0x9c67, 0x9c68, 0x9c69,
- 0x9c6a, 0x9c6b, 0x9c6c, 0x9c6e, 0x9c6f, 0x9c70, 0x9c71, 0x9c73,
- 0x9c74, 0x9c75, 0x9c77, 0x9c78, 0x9c7a, 0x9c7b, 0x9c7d, 0x9c7f,
- 0x9c80, 0x9c80, 0x9c80, 0x9c80, 0x9c81, 0x9c81, 0x9c82, 0x9c82,
- 0x9c83, 0x9c84, 0x9c85, 0x9c85, 0x9c86, 0x9c87, 0x9c88, 0x9c89,
- 0x9c8a, 0x9c8b, 0x9c8c, 0x9c8e, 0x9c8f, 0x9c90, 0x9c91, 0x9c93,
- 0x9c94, 0x9c95, 0x9c97, 0x9c98, 0x9c9a, 0x9c9b, 0x9c9d, 0x9c9f,
- 0x9cc0, 0x9cc0, 0x9cc0, 0x9cc0, 0x9cc1, 0x9cc1, 0x9cc2, 0x9cc2,
- 0x9cc3, 0x9cc4, 0x9cc5, 0x9cc5, 0x9cc6, 0x9cc7, 0x9cc8, 0x9cc9,
- 0x9cca, 0x9ccb, 0x9ccc, 0x9cce, 0x9ccf, 0x9cd0, 0x9cd1, 0x9cd3,
- 0x9cd4, 0x9cd5, 0x9cd7, 0x9cd8, 0x9cda, 0x9cdb, 0x9cdd, 0x9cdf,
- 0x9ce0, 0x9ce0, 0x9ce0, 0x9ce0, 0x9ce1, 0x9ce1, 0x9ce2, 0x9ce2,
- 0x9ce3, 0x9ce4, 0x9ce5, 0x9ce5, 0x9ce6, 0x9ce7, 0x9ce8, 0x9ce9,
- 0x9cea, 0x9ceb, 0x9cec, 0x9cee, 0x9cef, 0x9cf0, 0x9cf1, 0x9cf3,
- 0x9cf4, 0x9cf5, 0x9cf7, 0x9cf8, 0x9cfa, 0x9cfb, 0x9cfd, 0x9cff,
- 0x9d00, 0x9d00, 0x9d00, 0x9d00, 0x9d01, 0x9d01, 0x9d02, 0x9d02,
- 0x9d03, 0x9d04, 0x9d05, 0x9d05, 0x9d06, 0x9d07, 0x9d08, 0x9d09,
- 0x9d0a, 0x9d0b, 0x9d0c, 0x9d0e, 0x9d0f, 0x9d10, 0x9d11, 0x9d13,
- 0x9d14, 0x9d15, 0x9d17, 0x9d18, 0x9d1a, 0x9d1b, 0x9d1d, 0x9d1f,
- 0x9d40, 0x9d40, 0x9d40, 0x9d40, 0x9d41, 0x9d41, 0x9d42, 0x9d42,
- 0x9d43, 0x9d44, 0x9d45, 0x9d45, 0x9d46, 0x9d47, 0x9d48, 0x9d49,
- 0x9d4a, 0x9d4b, 0x9d4c, 0x9d4e, 0x9d4f, 0x9d50, 0x9d51, 0x9d53,
- 0x9d54, 0x9d55, 0x9d57, 0x9d58, 0x9d5a, 0x9d5b, 0x9d5d, 0x9d5f,
- 0x9d60, 0x9d60, 0x9d60, 0x9d60, 0x9d61, 0x9d61, 0x9d62, 0x9d62,
- 0x9d63, 0x9d64, 0x9d65, 0x9d65, 0x9d66, 0x9d67, 0x9d68, 0x9d69,
- 0x9d6a, 0x9d6b, 0x9d6c, 0x9d6e, 0x9d6f, 0x9d70, 0x9d71, 0x9d73,
- 0x9d74, 0x9d75, 0x9d77, 0x9d78, 0x9d7a, 0x9d7b, 0x9d7d, 0x9d7f,
- 0x9d80, 0x9d80, 0x9d80, 0x9d80, 0x9d81, 0x9d81, 0x9d82, 0x9d82,
- 0x9d83, 0x9d84, 0x9d85, 0x9d85, 0x9d86, 0x9d87, 0x9d88, 0x9d89,
- 0x9d8a, 0x9d8b, 0x9d8c, 0x9d8e, 0x9d8f, 0x9d90, 0x9d91, 0x9d93,
- 0x9d94, 0x9d95, 0x9d97, 0x9d98, 0x9d9a, 0x9d9b, 0x9d9d, 0x9d9f,
- 0x9dc0, 0x9dc0, 0x9dc0, 0x9dc0, 0x9dc1, 0x9dc1, 0x9dc2, 0x9dc2,
- 0x9dc3, 0x9dc4, 0x9dc5, 0x9dc5, 0x9dc6, 0x9dc7, 0x9dc8, 0x9dc9,
- 0x9dca, 0x9dcb, 0x9dcc, 0x9dce, 0x9dcf, 0x9dd0, 0x9dd1, 0x9dd3,
- 0x9dd4, 0x9dd5, 0x9dd7, 0x9dd8, 0x9dda, 0x9ddb, 0x9ddd, 0x9ddf,
- 0x9de0, 0x9de0, 0x9de0, 0x9de0, 0x9de1, 0x9de1, 0x9de2, 0x9de2,
- 0x9de3, 0x9de4, 0x9de5, 0x9de5, 0x9de6, 0x9de7, 0x9de8, 0x9de9,
- 0x9dea, 0x9deb, 0x9dec, 0x9dee, 0x9def, 0x9df0, 0x9df1, 0x9df3,
- 0x9df4, 0x9df5, 0x9df7, 0x9df8, 0x9dfa, 0x9dfb, 0x9dfd, 0x9dff,
- 0x9e20, 0x9e20, 0x9e20, 0x9e20, 0x9e21, 0x9e21, 0x9e22, 0x9e22,
- 0x9e23, 0x9e24, 0x9e25, 0x9e25, 0x9e26, 0x9e27, 0x9e28, 0x9e29,
- 0x9e2a, 0x9e2b, 0x9e2c, 0x9e2e, 0x9e2f, 0x9e30, 0x9e31, 0x9e33,
- 0x9e34, 0x9e35, 0x9e37, 0x9e38, 0x9e3a, 0x9e3b, 0x9e3d, 0x9e3f,
- 0x9e40, 0x9e40, 0x9e40, 0x9e40, 0x9e41, 0x9e41, 0x9e42, 0x9e42,
- 0x9e43, 0x9e44, 0x9e45, 0x9e45, 0x9e46, 0x9e47, 0x9e48, 0x9e49,
- 0x9e4a, 0x9e4b, 0x9e4c, 0x9e4e, 0x9e4f, 0x9e50, 0x9e51, 0x9e53,
- 0x9e54, 0x9e55, 0x9e57, 0x9e58, 0x9e5a, 0x9e5b, 0x9e5d, 0x9e5f,
- 0x9e80, 0x9e80, 0x9e80, 0x9e80, 0x9e81, 0x9e81, 0x9e82, 0x9e82,
- 0x9e83, 0x9e84, 0x9e85, 0x9e85, 0x9e86, 0x9e87, 0x9e88, 0x9e89,
- 0x9e8a, 0x9e8b, 0x9e8c, 0x9e8e, 0x9e8f, 0x9e90, 0x9e91, 0x9e93,
- 0x9e94, 0x9e95, 0x9e97, 0x9e98, 0x9e9a, 0x9e9b, 0x9e9d, 0x9e9f,
- 0x9ea0, 0x9ea0, 0x9ea0, 0x9ea0, 0x9ea1, 0x9ea1, 0x9ea2, 0x9ea2,
- 0x9ea3, 0x9ea4, 0x9ea5, 0x9ea5, 0x9ea6, 0x9ea7, 0x9ea8, 0x9ea9,
- 0x9eaa, 0x9eab, 0x9eac, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb1, 0x9eb3,
- 0x9eb4, 0x9eb5, 0x9eb7, 0x9eb8, 0x9eba, 0x9ebb, 0x9ebd, 0x9ebf,
- 0x9ee0, 0x9ee0, 0x9ee0, 0x9ee0, 0x9ee1, 0x9ee1, 0x9ee2, 0x9ee2,
- 0x9ee3, 0x9ee4, 0x9ee5, 0x9ee5, 0x9ee6, 0x9ee7, 0x9ee8, 0x9ee9,
- 0x9eea, 0x9eeb, 0x9eec, 0x9eee, 0x9eef, 0x9ef0, 0x9ef1, 0x9ef3,
- 0x9ef4, 0x9ef5, 0x9ef7, 0x9ef8, 0x9efa, 0x9efb, 0x9efd, 0x9eff,
- 0x9f00, 0x9f00, 0x9f00, 0x9f00, 0x9f01, 0x9f01, 0x9f02, 0x9f02,
- 0x9f03, 0x9f04, 0x9f05, 0x9f05, 0x9f06, 0x9f07, 0x9f08, 0x9f09,
- 0x9f0a, 0x9f0b, 0x9f0c, 0x9f0e, 0x9f0f, 0x9f10, 0x9f11, 0x9f13,
- 0x9f14, 0x9f15, 0x9f17, 0x9f18, 0x9f1a, 0x9f1b, 0x9f1d, 0x9f1f,
- 0x9f40, 0x9f40, 0x9f40, 0x9f40, 0x9f41, 0x9f41, 0x9f42, 0x9f42,
- 0x9f43, 0x9f44, 0x9f45, 0x9f45, 0x9f46, 0x9f47, 0x9f48, 0x9f49,
- 0x9f4a, 0x9f4b, 0x9f4c, 0x9f4e, 0x9f4f, 0x9f50, 0x9f51, 0x9f53,
- 0x9f54, 0x9f55, 0x9f57, 0x9f58, 0x9f5a, 0x9f5b, 0x9f5d, 0x9f5f,
- 0x9f60, 0x9f60, 0x9f60, 0x9f60, 0x9f61, 0x9f61, 0x9f62, 0x9f62,
- 0x9f63, 0x9f64, 0x9f65, 0x9f65, 0x9f66, 0x9f67, 0x9f68, 0x9f69,
- 0x9f6a, 0x9f6b, 0x9f6c, 0x9f6e, 0x9f6f, 0x9f70, 0x9f71, 0x9f73,
- 0x9f74, 0x9f75, 0x9f77, 0x9f78, 0x9f7a, 0x9f7b, 0x9f7d, 0x9f7f,
- 0x9fa0, 0x9fa0, 0x9fa0, 0x9fa0, 0x9fa1, 0x9fa1, 0x9fa2, 0x9fa2,
- 0x9fa3, 0x9fa4, 0x9fa5, 0x9fa5, 0x9fa6, 0x9fa7, 0x9fa8, 0x9fa9,
- 0x9faa, 0x9fab, 0x9fac, 0x9fae, 0x9faf, 0x9fb0, 0x9fb1, 0x9fb3,
- 0x9fb4, 0x9fb5, 0x9fb7, 0x9fb8, 0x9fba, 0x9fbb, 0x9fbd, 0x9fbf,
- 0x9fe0, 0x9fe0, 0x9fe0, 0x9fe0, 0x9fe1, 0x9fe1, 0x9fe2, 0x9fe2,
- 0x9fe3, 0x9fe4, 0x9fe5, 0x9fe5, 0x9fe6, 0x9fe7, 0x9fe8, 0x9fe9,
- 0x9fea, 0x9feb, 0x9fec, 0x9fee, 0x9fef, 0x9ff0, 0x9ff1, 0x9ff3,
- 0x9ff4, 0x9ff5, 0x9ff7, 0x9ff8, 0x9ffa, 0x9ffb, 0x9ffd, 0x9fff,
- 0xa000, 0xa000, 0xa000, 0xa000, 0xa001, 0xa001, 0xa002, 0xa002,
- 0xa003, 0xa004, 0xa005, 0xa005, 0xa006, 0xa007, 0xa008, 0xa009,
- 0xa00a, 0xa00b, 0xa00c, 0xa00e, 0xa00f, 0xa010, 0xa011, 0xa013,
- 0xa014, 0xa015, 0xa017, 0xa018, 0xa01a, 0xa01b, 0xa01d, 0xa01f,
- 0xa000, 0xa000, 0xa000, 0xa000, 0xa001, 0xa001, 0xa002, 0xa002,
- 0xa003, 0xa004, 0xa005, 0xa005, 0xa006, 0xa007, 0xa008, 0xa009,
- 0xa00a, 0xa00b, 0xa00c, 0xa00e, 0xa00f, 0xa010, 0xa011, 0xa013,
- 0xa014, 0xa015, 0xa017, 0xa018, 0xa01a, 0xa01b, 0xa01d, 0xa01f,
- 0xa000, 0xa000, 0xa000, 0xa000, 0xa001, 0xa001, 0xa002, 0xa002,
- 0xa003, 0xa004, 0xa005, 0xa005, 0xa006, 0xa007, 0xa008, 0xa009,
- 0xa00a, 0xa00b, 0xa00c, 0xa00e, 0xa00f, 0xa010, 0xa011, 0xa013,
- 0xa014, 0xa015, 0xa017, 0xa018, 0xa01a, 0xa01b, 0xa01d, 0xa01f,
- 0xa000, 0xa000, 0xa000, 0xa000, 0xa001, 0xa001, 0xa002, 0xa002,
- 0xa003, 0xa004, 0xa005, 0xa005, 0xa006, 0xa007, 0xa008, 0xa009,
- 0xa00a, 0xa00b, 0xa00c, 0xa00e, 0xa00f, 0xa010, 0xa011, 0xa013,
- 0xa014, 0xa015, 0xa017, 0xa018, 0xa01a, 0xa01b, 0xa01d, 0xa01f,
- 0xa000, 0xa000, 0xa000, 0xa000, 0xa001, 0xa001, 0xa002, 0xa002,
- 0xa003, 0xa004, 0xa005, 0xa005, 0xa006, 0xa007, 0xa008, 0xa009,
- 0xa00a, 0xa00b, 0xa00c, 0xa00e, 0xa00f, 0xa010, 0xa011, 0xa013,
- 0xa014, 0xa015, 0xa017, 0xa018, 0xa01a, 0xa01b, 0xa01d, 0xa01f,
- 0xa020, 0xa020, 0xa020, 0xa020, 0xa021, 0xa021, 0xa022, 0xa022,
- 0xa023, 0xa024, 0xa025, 0xa025, 0xa026, 0xa027, 0xa028, 0xa029,
- 0xa02a, 0xa02b, 0xa02c, 0xa02e, 0xa02f, 0xa030, 0xa031, 0xa033,
- 0xa034, 0xa035, 0xa037, 0xa038, 0xa03a, 0xa03b, 0xa03d, 0xa03f,
- 0xa020, 0xa020, 0xa020, 0xa020, 0xa021, 0xa021, 0xa022, 0xa022,
- 0xa023, 0xa024, 0xa025, 0xa025, 0xa026, 0xa027, 0xa028, 0xa029,
- 0xa02a, 0xa02b, 0xa02c, 0xa02e, 0xa02f, 0xa030, 0xa031, 0xa033,
- 0xa034, 0xa035, 0xa037, 0xa038, 0xa03a, 0xa03b, 0xa03d, 0xa03f,
- 0xa020, 0xa020, 0xa020, 0xa020, 0xa021, 0xa021, 0xa022, 0xa022,
- 0xa023, 0xa024, 0xa025, 0xa025, 0xa026, 0xa027, 0xa028, 0xa029,
- 0xa02a, 0xa02b, 0xa02c, 0xa02e, 0xa02f, 0xa030, 0xa031, 0xa033,
- 0xa034, 0xa035, 0xa037, 0xa038, 0xa03a, 0xa03b, 0xa03d, 0xa03f,
- 0xa040, 0xa040, 0xa040, 0xa040, 0xa041, 0xa041, 0xa042, 0xa042,
- 0xa043, 0xa044, 0xa045, 0xa045, 0xa046, 0xa047, 0xa048, 0xa049,
- 0xa04a, 0xa04b, 0xa04c, 0xa04e, 0xa04f, 0xa050, 0xa051, 0xa053,
- 0xa054, 0xa055, 0xa057, 0xa058, 0xa05a, 0xa05b, 0xa05d, 0xa05f,
- 0xa040, 0xa040, 0xa040, 0xa040, 0xa041, 0xa041, 0xa042, 0xa042,
- 0xa043, 0xa044, 0xa045, 0xa045, 0xa046, 0xa047, 0xa048, 0xa049,
- 0xa04a, 0xa04b, 0xa04c, 0xa04e, 0xa04f, 0xa050, 0xa051, 0xa053,
- 0xa054, 0xa055, 0xa057, 0xa058, 0xa05a, 0xa05b, 0xa05d, 0xa05f,
- 0xa060, 0xa060, 0xa060, 0xa060, 0xa061, 0xa061, 0xa062, 0xa062,
- 0xa063, 0xa064, 0xa065, 0xa065, 0xa066, 0xa067, 0xa068, 0xa069,
- 0xa06a, 0xa06b, 0xa06c, 0xa06e, 0xa06f, 0xa070, 0xa071, 0xa073,
- 0xa074, 0xa075, 0xa077, 0xa078, 0xa07a, 0xa07b, 0xa07d, 0xa07f,
- 0xa060, 0xa060, 0xa060, 0xa060, 0xa061, 0xa061, 0xa062, 0xa062,
- 0xa063, 0xa064, 0xa065, 0xa065, 0xa066, 0xa067, 0xa068, 0xa069,
- 0xa06a, 0xa06b, 0xa06c, 0xa06e, 0xa06f, 0xa070, 0xa071, 0xa073,
- 0xa074, 0xa075, 0xa077, 0xa078, 0xa07a, 0xa07b, 0xa07d, 0xa07f,
- 0xa080, 0xa080, 0xa080, 0xa080, 0xa081, 0xa081, 0xa082, 0xa082,
- 0xa083, 0xa084, 0xa085, 0xa085, 0xa086, 0xa087, 0xa088, 0xa089,
- 0xa08a, 0xa08b, 0xa08c, 0xa08e, 0xa08f, 0xa090, 0xa091, 0xa093,
- 0xa094, 0xa095, 0xa097, 0xa098, 0xa09a, 0xa09b, 0xa09d, 0xa09f,
- 0xa0a0, 0xa0a0, 0xa0a0, 0xa0a0, 0xa0a1, 0xa0a1, 0xa0a2, 0xa0a2,
- 0xa0a3, 0xa0a4, 0xa0a5, 0xa0a5, 0xa0a6, 0xa0a7, 0xa0a8, 0xa0a9,
- 0xa0aa, 0xa0ab, 0xa0ac, 0xa0ae, 0xa0af, 0xa0b0, 0xa0b1, 0xa0b3,
- 0xa0b4, 0xa0b5, 0xa0b7, 0xa0b8, 0xa0ba, 0xa0bb, 0xa0bd, 0xa0bf,
- 0xa0a0, 0xa0a0, 0xa0a0, 0xa0a0, 0xa0a1, 0xa0a1, 0xa0a2, 0xa0a2,
- 0xa0a3, 0xa0a4, 0xa0a5, 0xa0a5, 0xa0a6, 0xa0a7, 0xa0a8, 0xa0a9,
- 0xa0aa, 0xa0ab, 0xa0ac, 0xa0ae, 0xa0af, 0xa0b0, 0xa0b1, 0xa0b3,
- 0xa0b4, 0xa0b5, 0xa0b7, 0xa0b8, 0xa0ba, 0xa0bb, 0xa0bd, 0xa0bf,
- 0xa0c0, 0xa0c0, 0xa0c0, 0xa0c0, 0xa0c1, 0xa0c1, 0xa0c2, 0xa0c2,
- 0xa0c3, 0xa0c4, 0xa0c5, 0xa0c5, 0xa0c6, 0xa0c7, 0xa0c8, 0xa0c9,
- 0xa0ca, 0xa0cb, 0xa0cc, 0xa0ce, 0xa0cf, 0xa0d0, 0xa0d1, 0xa0d3,
- 0xa0d4, 0xa0d5, 0xa0d7, 0xa0d8, 0xa0da, 0xa0db, 0xa0dd, 0xa0df,
- 0xa0e0, 0xa0e0, 0xa0e0, 0xa0e0, 0xa0e1, 0xa0e1, 0xa0e2, 0xa0e2,
- 0xa0e3, 0xa0e4, 0xa0e5, 0xa0e5, 0xa0e6, 0xa0e7, 0xa0e8, 0xa0e9,
- 0xa0ea, 0xa0eb, 0xa0ec, 0xa0ee, 0xa0ef, 0xa0f0, 0xa0f1, 0xa0f3,
- 0xa0f4, 0xa0f5, 0xa0f7, 0xa0f8, 0xa0fa, 0xa0fb, 0xa0fd, 0xa0ff,
- 0xa0e0, 0xa0e0, 0xa0e0, 0xa0e0, 0xa0e1, 0xa0e1, 0xa0e2, 0xa0e2,
- 0xa0e3, 0xa0e4, 0xa0e5, 0xa0e5, 0xa0e6, 0xa0e7, 0xa0e8, 0xa0e9,
- 0xa0ea, 0xa0eb, 0xa0ec, 0xa0ee, 0xa0ef, 0xa0f0, 0xa0f1, 0xa0f3,
- 0xa0f4, 0xa0f5, 0xa0f7, 0xa0f8, 0xa0fa, 0xa0fb, 0xa0fd, 0xa0ff,
- 0xa100, 0xa100, 0xa100, 0xa100, 0xa101, 0xa101, 0xa102, 0xa102,
- 0xa103, 0xa104, 0xa105, 0xa105, 0xa106, 0xa107, 0xa108, 0xa109,
- 0xa10a, 0xa10b, 0xa10c, 0xa10e, 0xa10f, 0xa110, 0xa111, 0xa113,
- 0xa114, 0xa115, 0xa117, 0xa118, 0xa11a, 0xa11b, 0xa11d, 0xa11f,
- 0xa120, 0xa120, 0xa120, 0xa120, 0xa121, 0xa121, 0xa122, 0xa122,
- 0xa123, 0xa124, 0xa125, 0xa125, 0xa126, 0xa127, 0xa128, 0xa129,
- 0xa12a, 0xa12b, 0xa12c, 0xa12e, 0xa12f, 0xa130, 0xa131, 0xa133,
- 0xa134, 0xa135, 0xa137, 0xa138, 0xa13a, 0xa13b, 0xa13d, 0xa13f,
- 0xa140, 0xa140, 0xa140, 0xa140, 0xa141, 0xa141, 0xa142, 0xa142,
- 0xa143, 0xa144, 0xa145, 0xa145, 0xa146, 0xa147, 0xa148, 0xa149,
- 0xa14a, 0xa14b, 0xa14c, 0xa14e, 0xa14f, 0xa150, 0xa151, 0xa153,
- 0xa154, 0xa155, 0xa157, 0xa158, 0xa15a, 0xa15b, 0xa15d, 0xa15f,
- 0xa140, 0xa140, 0xa140, 0xa140, 0xa141, 0xa141, 0xa142, 0xa142,
- 0xa143, 0xa144, 0xa145, 0xa145, 0xa146, 0xa147, 0xa148, 0xa149,
- 0xa14a, 0xa14b, 0xa14c, 0xa14e, 0xa14f, 0xa150, 0xa151, 0xa153,
- 0xa154, 0xa155, 0xa157, 0xa158, 0xa15a, 0xa15b, 0xa15d, 0xa15f,
- 0xa160, 0xa160, 0xa160, 0xa160, 0xa161, 0xa161, 0xa162, 0xa162,
- 0xa163, 0xa164, 0xa165, 0xa165, 0xa166, 0xa167, 0xa168, 0xa169,
- 0xa16a, 0xa16b, 0xa16c, 0xa16e, 0xa16f, 0xa170, 0xa171, 0xa173,
- 0xa174, 0xa175, 0xa177, 0xa178, 0xa17a, 0xa17b, 0xa17d, 0xa17f,
- 0xa180, 0xa180, 0xa180, 0xa180, 0xa181, 0xa181, 0xa182, 0xa182,
- 0xa183, 0xa184, 0xa185, 0xa185, 0xa186, 0xa187, 0xa188, 0xa189,
- 0xa18a, 0xa18b, 0xa18c, 0xa18e, 0xa18f, 0xa190, 0xa191, 0xa193,
- 0xa194, 0xa195, 0xa197, 0xa198, 0xa19a, 0xa19b, 0xa19d, 0xa19f,
- 0xa1a0, 0xa1a0, 0xa1a0, 0xa1a0, 0xa1a1, 0xa1a1, 0xa1a2, 0xa1a2,
- 0xa1a3, 0xa1a4, 0xa1a5, 0xa1a5, 0xa1a6, 0xa1a7, 0xa1a8, 0xa1a9,
- 0xa1aa, 0xa1ab, 0xa1ac, 0xa1ae, 0xa1af, 0xa1b0, 0xa1b1, 0xa1b3,
- 0xa1b4, 0xa1b5, 0xa1b7, 0xa1b8, 0xa1ba, 0xa1bb, 0xa1bd, 0xa1bf,
- 0xa1c0, 0xa1c0, 0xa1c0, 0xa1c0, 0xa1c1, 0xa1c1, 0xa1c2, 0xa1c2,
- 0xa1c3, 0xa1c4, 0xa1c5, 0xa1c5, 0xa1c6, 0xa1c7, 0xa1c8, 0xa1c9,
- 0xa1ca, 0xa1cb, 0xa1cc, 0xa1ce, 0xa1cf, 0xa1d0, 0xa1d1, 0xa1d3,
- 0xa1d4, 0xa1d5, 0xa1d7, 0xa1d8, 0xa1da, 0xa1db, 0xa1dd, 0xa1df,
- 0xa1e0, 0xa1e0, 0xa1e0, 0xa1e0, 0xa1e1, 0xa1e1, 0xa1e2, 0xa1e2,
- 0xa1e3, 0xa1e4, 0xa1e5, 0xa1e5, 0xa1e6, 0xa1e7, 0xa1e8, 0xa1e9,
- 0xa1ea, 0xa1eb, 0xa1ec, 0xa1ee, 0xa1ef, 0xa1f0, 0xa1f1, 0xa1f3,
- 0xa1f4, 0xa1f5, 0xa1f7, 0xa1f8, 0xa1fa, 0xa1fb, 0xa1fd, 0xa1ff,
- 0xa200, 0xa200, 0xa200, 0xa200, 0xa201, 0xa201, 0xa202, 0xa202,
- 0xa203, 0xa204, 0xa205, 0xa205, 0xa206, 0xa207, 0xa208, 0xa209,
- 0xa20a, 0xa20b, 0xa20c, 0xa20e, 0xa20f, 0xa210, 0xa211, 0xa213,
- 0xa214, 0xa215, 0xa217, 0xa218, 0xa21a, 0xa21b, 0xa21d, 0xa21f,
- 0xa220, 0xa220, 0xa220, 0xa220, 0xa221, 0xa221, 0xa222, 0xa222,
- 0xa223, 0xa224, 0xa225, 0xa225, 0xa226, 0xa227, 0xa228, 0xa229,
- 0xa22a, 0xa22b, 0xa22c, 0xa22e, 0xa22f, 0xa230, 0xa231, 0xa233,
- 0xa234, 0xa235, 0xa237, 0xa238, 0xa23a, 0xa23b, 0xa23d, 0xa23f,
- 0xa240, 0xa240, 0xa240, 0xa240, 0xa241, 0xa241, 0xa242, 0xa242,
- 0xa243, 0xa244, 0xa245, 0xa245, 0xa246, 0xa247, 0xa248, 0xa249,
- 0xa24a, 0xa24b, 0xa24c, 0xa24e, 0xa24f, 0xa250, 0xa251, 0xa253,
- 0xa254, 0xa255, 0xa257, 0xa258, 0xa25a, 0xa25b, 0xa25d, 0xa25f,
- 0xa260, 0xa260, 0xa260, 0xa260, 0xa261, 0xa261, 0xa262, 0xa262,
- 0xa263, 0xa264, 0xa265, 0xa265, 0xa266, 0xa267, 0xa268, 0xa269,
- 0xa26a, 0xa26b, 0xa26c, 0xa26e, 0xa26f, 0xa270, 0xa271, 0xa273,
- 0xa274, 0xa275, 0xa277, 0xa278, 0xa27a, 0xa27b, 0xa27d, 0xa27f,
- 0xa280, 0xa280, 0xa280, 0xa280, 0xa281, 0xa281, 0xa282, 0xa282,
- 0xa283, 0xa284, 0xa285, 0xa285, 0xa286, 0xa287, 0xa288, 0xa289,
- 0xa28a, 0xa28b, 0xa28c, 0xa28e, 0xa28f, 0xa290, 0xa291, 0xa293,
- 0xa294, 0xa295, 0xa297, 0xa298, 0xa29a, 0xa29b, 0xa29d, 0xa29f,
- 0xa2a0, 0xa2a0, 0xa2a0, 0xa2a0, 0xa2a1, 0xa2a1, 0xa2a2, 0xa2a2,
- 0xa2a3, 0xa2a4, 0xa2a5, 0xa2a5, 0xa2a6, 0xa2a7, 0xa2a8, 0xa2a9,
- 0xa2aa, 0xa2ab, 0xa2ac, 0xa2ae, 0xa2af, 0xa2b0, 0xa2b1, 0xa2b3,
- 0xa2b4, 0xa2b5, 0xa2b7, 0xa2b8, 0xa2ba, 0xa2bb, 0xa2bd, 0xa2bf,
- 0xa2c0, 0xa2c0, 0xa2c0, 0xa2c0, 0xa2c1, 0xa2c1, 0xa2c2, 0xa2c2,
- 0xa2c3, 0xa2c4, 0xa2c5, 0xa2c5, 0xa2c6, 0xa2c7, 0xa2c8, 0xa2c9,
- 0xa2ca, 0xa2cb, 0xa2cc, 0xa2ce, 0xa2cf, 0xa2d0, 0xa2d1, 0xa2d3,
- 0xa2d4, 0xa2d5, 0xa2d7, 0xa2d8, 0xa2da, 0xa2db, 0xa2dd, 0xa2df,
- 0xa2e0, 0xa2e0, 0xa2e0, 0xa2e0, 0xa2e1, 0xa2e1, 0xa2e2, 0xa2e2,
- 0xa2e3, 0xa2e4, 0xa2e5, 0xa2e5, 0xa2e6, 0xa2e7, 0xa2e8, 0xa2e9,
- 0xa2ea, 0xa2eb, 0xa2ec, 0xa2ee, 0xa2ef, 0xa2f0, 0xa2f1, 0xa2f3,
- 0xa2f4, 0xa2f5, 0xa2f7, 0xa2f8, 0xa2fa, 0xa2fb, 0xa2fd, 0xa2ff,
- 0xa300, 0xa300, 0xa300, 0xa300, 0xa301, 0xa301, 0xa302, 0xa302,
- 0xa303, 0xa304, 0xa305, 0xa305, 0xa306, 0xa307, 0xa308, 0xa309,
- 0xa30a, 0xa30b, 0xa30c, 0xa30e, 0xa30f, 0xa310, 0xa311, 0xa313,
- 0xa314, 0xa315, 0xa317, 0xa318, 0xa31a, 0xa31b, 0xa31d, 0xa31f,
- 0xa320, 0xa320, 0xa320, 0xa320, 0xa321, 0xa321, 0xa322, 0xa322,
- 0xa323, 0xa324, 0xa325, 0xa325, 0xa326, 0xa327, 0xa328, 0xa329,
- 0xa32a, 0xa32b, 0xa32c, 0xa32e, 0xa32f, 0xa330, 0xa331, 0xa333,
- 0xa334, 0xa335, 0xa337, 0xa338, 0xa33a, 0xa33b, 0xa33d, 0xa33f,
- 0xa340, 0xa340, 0xa340, 0xa340, 0xa341, 0xa341, 0xa342, 0xa342,
- 0xa343, 0xa344, 0xa345, 0xa345, 0xa346, 0xa347, 0xa348, 0xa349,
- 0xa34a, 0xa34b, 0xa34c, 0xa34e, 0xa34f, 0xa350, 0xa351, 0xa353,
- 0xa354, 0xa355, 0xa357, 0xa358, 0xa35a, 0xa35b, 0xa35d, 0xa35f,
- 0xa380, 0xa380, 0xa380, 0xa380, 0xa381, 0xa381, 0xa382, 0xa382,
- 0xa383, 0xa384, 0xa385, 0xa385, 0xa386, 0xa387, 0xa388, 0xa389,
- 0xa38a, 0xa38b, 0xa38c, 0xa38e, 0xa38f, 0xa390, 0xa391, 0xa393,
- 0xa394, 0xa395, 0xa397, 0xa398, 0xa39a, 0xa39b, 0xa39d, 0xa39f,
- 0xa3a0, 0xa3a0, 0xa3a0, 0xa3a0, 0xa3a1, 0xa3a1, 0xa3a2, 0xa3a2,
- 0xa3a3, 0xa3a4, 0xa3a5, 0xa3a5, 0xa3a6, 0xa3a7, 0xa3a8, 0xa3a9,
- 0xa3aa, 0xa3ab, 0xa3ac, 0xa3ae, 0xa3af, 0xa3b0, 0xa3b1, 0xa3b3,
- 0xa3b4, 0xa3b5, 0xa3b7, 0xa3b8, 0xa3ba, 0xa3bb, 0xa3bd, 0xa3bf,
- 0xa3c0, 0xa3c0, 0xa3c0, 0xa3c0, 0xa3c1, 0xa3c1, 0xa3c2, 0xa3c2,
- 0xa3c3, 0xa3c4, 0xa3c5, 0xa3c5, 0xa3c6, 0xa3c7, 0xa3c8, 0xa3c9,
- 0xa3ca, 0xa3cb, 0xa3cc, 0xa3ce, 0xa3cf, 0xa3d0, 0xa3d1, 0xa3d3,
- 0xa3d4, 0xa3d5, 0xa3d7, 0xa3d8, 0xa3da, 0xa3db, 0xa3dd, 0xa3df,
- 0xa3e0, 0xa3e0, 0xa3e0, 0xa3e0, 0xa3e1, 0xa3e1, 0xa3e2, 0xa3e2,
- 0xa3e3, 0xa3e4, 0xa3e5, 0xa3e5, 0xa3e6, 0xa3e7, 0xa3e8, 0xa3e9,
- 0xa3ea, 0xa3eb, 0xa3ec, 0xa3ee, 0xa3ef, 0xa3f0, 0xa3f1, 0xa3f3,
- 0xa3f4, 0xa3f5, 0xa3f7, 0xa3f8, 0xa3fa, 0xa3fb, 0xa3fd, 0xa3ff,
- 0xa400, 0xa400, 0xa400, 0xa400, 0xa401, 0xa401, 0xa402, 0xa402,
- 0xa403, 0xa404, 0xa405, 0xa405, 0xa406, 0xa407, 0xa408, 0xa409,
- 0xa40a, 0xa40b, 0xa40c, 0xa40e, 0xa40f, 0xa410, 0xa411, 0xa413,
- 0xa414, 0xa415, 0xa417, 0xa418, 0xa41a, 0xa41b, 0xa41d, 0xa41f,
- 0xa440, 0xa440, 0xa440, 0xa440, 0xa441, 0xa441, 0xa442, 0xa442,
- 0xa443, 0xa444, 0xa445, 0xa445, 0xa446, 0xa447, 0xa448, 0xa449,
- 0xa44a, 0xa44b, 0xa44c, 0xa44e, 0xa44f, 0xa450, 0xa451, 0xa453,
- 0xa454, 0xa455, 0xa457, 0xa458, 0xa45a, 0xa45b, 0xa45d, 0xa45f,
- 0xa460, 0xa460, 0xa460, 0xa460, 0xa461, 0xa461, 0xa462, 0xa462,
- 0xa463, 0xa464, 0xa465, 0xa465, 0xa466, 0xa467, 0xa468, 0xa469,
- 0xa46a, 0xa46b, 0xa46c, 0xa46e, 0xa46f, 0xa470, 0xa471, 0xa473,
- 0xa474, 0xa475, 0xa477, 0xa478, 0xa47a, 0xa47b, 0xa47d, 0xa47f,
- 0xa480, 0xa480, 0xa480, 0xa480, 0xa481, 0xa481, 0xa482, 0xa482,
- 0xa483, 0xa484, 0xa485, 0xa485, 0xa486, 0xa487, 0xa488, 0xa489,
- 0xa48a, 0xa48b, 0xa48c, 0xa48e, 0xa48f, 0xa490, 0xa491, 0xa493,
- 0xa494, 0xa495, 0xa497, 0xa498, 0xa49a, 0xa49b, 0xa49d, 0xa49f,
- 0xa4c0, 0xa4c0, 0xa4c0, 0xa4c0, 0xa4c1, 0xa4c1, 0xa4c2, 0xa4c2,
- 0xa4c3, 0xa4c4, 0xa4c5, 0xa4c5, 0xa4c6, 0xa4c7, 0xa4c8, 0xa4c9,
- 0xa4ca, 0xa4cb, 0xa4cc, 0xa4ce, 0xa4cf, 0xa4d0, 0xa4d1, 0xa4d3,
- 0xa4d4, 0xa4d5, 0xa4d7, 0xa4d8, 0xa4da, 0xa4db, 0xa4dd, 0xa4df,
- 0xa4e0, 0xa4e0, 0xa4e0, 0xa4e0, 0xa4e1, 0xa4e1, 0xa4e2, 0xa4e2,
- 0xa4e3, 0xa4e4, 0xa4e5, 0xa4e5, 0xa4e6, 0xa4e7, 0xa4e8, 0xa4e9,
- 0xa4ea, 0xa4eb, 0xa4ec, 0xa4ee, 0xa4ef, 0xa4f0, 0xa4f1, 0xa4f3,
- 0xa4f4, 0xa4f5, 0xa4f7, 0xa4f8, 0xa4fa, 0xa4fb, 0xa4fd, 0xa4ff,
- 0xa500, 0xa500, 0xa500, 0xa500, 0xa501, 0xa501, 0xa502, 0xa502,
- 0xa503, 0xa504, 0xa505, 0xa505, 0xa506, 0xa507, 0xa508, 0xa509,
- 0xa50a, 0xa50b, 0xa50c, 0xa50e, 0xa50f, 0xa510, 0xa511, 0xa513,
- 0xa514, 0xa515, 0xa517, 0xa518, 0xa51a, 0xa51b, 0xa51d, 0xa51f,
- 0xa540, 0xa540, 0xa540, 0xa540, 0xa541, 0xa541, 0xa542, 0xa542,
- 0xa543, 0xa544, 0xa545, 0xa545, 0xa546, 0xa547, 0xa548, 0xa549,
- 0xa54a, 0xa54b, 0xa54c, 0xa54e, 0xa54f, 0xa550, 0xa551, 0xa553,
- 0xa554, 0xa555, 0xa557, 0xa558, 0xa55a, 0xa55b, 0xa55d, 0xa55f,
- 0xa560, 0xa560, 0xa560, 0xa560, 0xa561, 0xa561, 0xa562, 0xa562,
- 0xa563, 0xa564, 0xa565, 0xa565, 0xa566, 0xa567, 0xa568, 0xa569,
- 0xa56a, 0xa56b, 0xa56c, 0xa56e, 0xa56f, 0xa570, 0xa571, 0xa573,
- 0xa574, 0xa575, 0xa577, 0xa578, 0xa57a, 0xa57b, 0xa57d, 0xa57f,
- 0xa580, 0xa580, 0xa580, 0xa580, 0xa581, 0xa581, 0xa582, 0xa582,
- 0xa583, 0xa584, 0xa585, 0xa585, 0xa586, 0xa587, 0xa588, 0xa589,
- 0xa58a, 0xa58b, 0xa58c, 0xa58e, 0xa58f, 0xa590, 0xa591, 0xa593,
- 0xa594, 0xa595, 0xa597, 0xa598, 0xa59a, 0xa59b, 0xa59d, 0xa59f,
- 0xa5c0, 0xa5c0, 0xa5c0, 0xa5c0, 0xa5c1, 0xa5c1, 0xa5c2, 0xa5c2,
- 0xa5c3, 0xa5c4, 0xa5c5, 0xa5c5, 0xa5c6, 0xa5c7, 0xa5c8, 0xa5c9,
- 0xa5ca, 0xa5cb, 0xa5cc, 0xa5ce, 0xa5cf, 0xa5d0, 0xa5d1, 0xa5d3,
- 0xa5d4, 0xa5d5, 0xa5d7, 0xa5d8, 0xa5da, 0xa5db, 0xa5dd, 0xa5df,
- 0xa5e0, 0xa5e0, 0xa5e0, 0xa5e0, 0xa5e1, 0xa5e1, 0xa5e2, 0xa5e2,
- 0xa5e3, 0xa5e4, 0xa5e5, 0xa5e5, 0xa5e6, 0xa5e7, 0xa5e8, 0xa5e9,
- 0xa5ea, 0xa5eb, 0xa5ec, 0xa5ee, 0xa5ef, 0xa5f0, 0xa5f1, 0xa5f3,
- 0xa5f4, 0xa5f5, 0xa5f7, 0xa5f8, 0xa5fa, 0xa5fb, 0xa5fd, 0xa5ff,
- 0xa620, 0xa620, 0xa620, 0xa620, 0xa621, 0xa621, 0xa622, 0xa622,
- 0xa623, 0xa624, 0xa625, 0xa625, 0xa626, 0xa627, 0xa628, 0xa629,
- 0xa62a, 0xa62b, 0xa62c, 0xa62e, 0xa62f, 0xa630, 0xa631, 0xa633,
- 0xa634, 0xa635, 0xa637, 0xa638, 0xa63a, 0xa63b, 0xa63d, 0xa63f,
- 0xa640, 0xa640, 0xa640, 0xa640, 0xa641, 0xa641, 0xa642, 0xa642,
- 0xa643, 0xa644, 0xa645, 0xa645, 0xa646, 0xa647, 0xa648, 0xa649,
- 0xa64a, 0xa64b, 0xa64c, 0xa64e, 0xa64f, 0xa650, 0xa651, 0xa653,
- 0xa654, 0xa655, 0xa657, 0xa658, 0xa65a, 0xa65b, 0xa65d, 0xa65f,
- 0xa680, 0xa680, 0xa680, 0xa680, 0xa681, 0xa681, 0xa682, 0xa682,
- 0xa683, 0xa684, 0xa685, 0xa685, 0xa686, 0xa687, 0xa688, 0xa689,
- 0xa68a, 0xa68b, 0xa68c, 0xa68e, 0xa68f, 0xa690, 0xa691, 0xa693,
- 0xa694, 0xa695, 0xa697, 0xa698, 0xa69a, 0xa69b, 0xa69d, 0xa69f,
- 0xa6a0, 0xa6a0, 0xa6a0, 0xa6a0, 0xa6a1, 0xa6a1, 0xa6a2, 0xa6a2,
- 0xa6a3, 0xa6a4, 0xa6a5, 0xa6a5, 0xa6a6, 0xa6a7, 0xa6a8, 0xa6a9,
- 0xa6aa, 0xa6ab, 0xa6ac, 0xa6ae, 0xa6af, 0xa6b0, 0xa6b1, 0xa6b3,
- 0xa6b4, 0xa6b5, 0xa6b7, 0xa6b8, 0xa6ba, 0xa6bb, 0xa6bd, 0xa6bf,
- 0xa6e0, 0xa6e0, 0xa6e0, 0xa6e0, 0xa6e1, 0xa6e1, 0xa6e2, 0xa6e2,
- 0xa6e3, 0xa6e4, 0xa6e5, 0xa6e5, 0xa6e6, 0xa6e7, 0xa6e8, 0xa6e9,
- 0xa6ea, 0xa6eb, 0xa6ec, 0xa6ee, 0xa6ef, 0xa6f0, 0xa6f1, 0xa6f3,
- 0xa6f4, 0xa6f5, 0xa6f7, 0xa6f8, 0xa6fa, 0xa6fb, 0xa6fd, 0xa6ff,
- 0xa700, 0xa700, 0xa700, 0xa700, 0xa701, 0xa701, 0xa702, 0xa702,
- 0xa703, 0xa704, 0xa705, 0xa705, 0xa706, 0xa707, 0xa708, 0xa709,
- 0xa70a, 0xa70b, 0xa70c, 0xa70e, 0xa70f, 0xa710, 0xa711, 0xa713,
- 0xa714, 0xa715, 0xa717, 0xa718, 0xa71a, 0xa71b, 0xa71d, 0xa71f,
- 0xa740, 0xa740, 0xa740, 0xa740, 0xa741, 0xa741, 0xa742, 0xa742,
- 0xa743, 0xa744, 0xa745, 0xa745, 0xa746, 0xa747, 0xa748, 0xa749,
- 0xa74a, 0xa74b, 0xa74c, 0xa74e, 0xa74f, 0xa750, 0xa751, 0xa753,
- 0xa754, 0xa755, 0xa757, 0xa758, 0xa75a, 0xa75b, 0xa75d, 0xa75f,
- 0xa760, 0xa760, 0xa760, 0xa760, 0xa761, 0xa761, 0xa762, 0xa762,
- 0xa763, 0xa764, 0xa765, 0xa765, 0xa766, 0xa767, 0xa768, 0xa769,
- 0xa76a, 0xa76b, 0xa76c, 0xa76e, 0xa76f, 0xa770, 0xa771, 0xa773,
- 0xa774, 0xa775, 0xa777, 0xa778, 0xa77a, 0xa77b, 0xa77d, 0xa77f,
- 0xa7a0, 0xa7a0, 0xa7a0, 0xa7a0, 0xa7a1, 0xa7a1, 0xa7a2, 0xa7a2,
- 0xa7a3, 0xa7a4, 0xa7a5, 0xa7a5, 0xa7a6, 0xa7a7, 0xa7a8, 0xa7a9,
- 0xa7aa, 0xa7ab, 0xa7ac, 0xa7ae, 0xa7af, 0xa7b0, 0xa7b1, 0xa7b3,
- 0xa7b4, 0xa7b5, 0xa7b7, 0xa7b8, 0xa7ba, 0xa7bb, 0xa7bd, 0xa7bf,
- 0xa7e0, 0xa7e0, 0xa7e0, 0xa7e0, 0xa7e1, 0xa7e1, 0xa7e2, 0xa7e2,
- 0xa7e3, 0xa7e4, 0xa7e5, 0xa7e5, 0xa7e6, 0xa7e7, 0xa7e8, 0xa7e9,
- 0xa7ea, 0xa7eb, 0xa7ec, 0xa7ee, 0xa7ef, 0xa7f0, 0xa7f1, 0xa7f3,
- 0xa7f4, 0xa7f5, 0xa7f7, 0xa7f8, 0xa7fa, 0xa7fb, 0xa7fd, 0xa7ff,
- 0xa800, 0xa800, 0xa800, 0xa800, 0xa801, 0xa801, 0xa802, 0xa802,
- 0xa803, 0xa804, 0xa805, 0xa805, 0xa806, 0xa807, 0xa808, 0xa809,
- 0xa80a, 0xa80b, 0xa80c, 0xa80e, 0xa80f, 0xa810, 0xa811, 0xa813,
- 0xa814, 0xa815, 0xa817, 0xa818, 0xa81a, 0xa81b, 0xa81d, 0xa81f,
- 0xa800, 0xa800, 0xa800, 0xa800, 0xa801, 0xa801, 0xa802, 0xa802,
- 0xa803, 0xa804, 0xa805, 0xa805, 0xa806, 0xa807, 0xa808, 0xa809,
- 0xa80a, 0xa80b, 0xa80c, 0xa80e, 0xa80f, 0xa810, 0xa811, 0xa813,
- 0xa814, 0xa815, 0xa817, 0xa818, 0xa81a, 0xa81b, 0xa81d, 0xa81f,
- 0xa800, 0xa800, 0xa800, 0xa800, 0xa801, 0xa801, 0xa802, 0xa802,
- 0xa803, 0xa804, 0xa805, 0xa805, 0xa806, 0xa807, 0xa808, 0xa809,
- 0xa80a, 0xa80b, 0xa80c, 0xa80e, 0xa80f, 0xa810, 0xa811, 0xa813,
- 0xa814, 0xa815, 0xa817, 0xa818, 0xa81a, 0xa81b, 0xa81d, 0xa81f,
- 0xa800, 0xa800, 0xa800, 0xa800, 0xa801, 0xa801, 0xa802, 0xa802,
- 0xa803, 0xa804, 0xa805, 0xa805, 0xa806, 0xa807, 0xa808, 0xa809,
- 0xa80a, 0xa80b, 0xa80c, 0xa80e, 0xa80f, 0xa810, 0xa811, 0xa813,
- 0xa814, 0xa815, 0xa817, 0xa818, 0xa81a, 0xa81b, 0xa81d, 0xa81f,
- 0xa800, 0xa800, 0xa800, 0xa800, 0xa801, 0xa801, 0xa802, 0xa802,
- 0xa803, 0xa804, 0xa805, 0xa805, 0xa806, 0xa807, 0xa808, 0xa809,
- 0xa80a, 0xa80b, 0xa80c, 0xa80e, 0xa80f, 0xa810, 0xa811, 0xa813,
- 0xa814, 0xa815, 0xa817, 0xa818, 0xa81a, 0xa81b, 0xa81d, 0xa81f,
- 0xa820, 0xa820, 0xa820, 0xa820, 0xa821, 0xa821, 0xa822, 0xa822,
- 0xa823, 0xa824, 0xa825, 0xa825, 0xa826, 0xa827, 0xa828, 0xa829,
- 0xa82a, 0xa82b, 0xa82c, 0xa82e, 0xa82f, 0xa830, 0xa831, 0xa833,
- 0xa834, 0xa835, 0xa837, 0xa838, 0xa83a, 0xa83b, 0xa83d, 0xa83f,
- 0xa820, 0xa820, 0xa820, 0xa820, 0xa821, 0xa821, 0xa822, 0xa822,
- 0xa823, 0xa824, 0xa825, 0xa825, 0xa826, 0xa827, 0xa828, 0xa829,
- 0xa82a, 0xa82b, 0xa82c, 0xa82e, 0xa82f, 0xa830, 0xa831, 0xa833,
- 0xa834, 0xa835, 0xa837, 0xa838, 0xa83a, 0xa83b, 0xa83d, 0xa83f,
- 0xa820, 0xa820, 0xa820, 0xa820, 0xa821, 0xa821, 0xa822, 0xa822,
- 0xa823, 0xa824, 0xa825, 0xa825, 0xa826, 0xa827, 0xa828, 0xa829,
- 0xa82a, 0xa82b, 0xa82c, 0xa82e, 0xa82f, 0xa830, 0xa831, 0xa833,
- 0xa834, 0xa835, 0xa837, 0xa838, 0xa83a, 0xa83b, 0xa83d, 0xa83f,
- 0xa840, 0xa840, 0xa840, 0xa840, 0xa841, 0xa841, 0xa842, 0xa842,
- 0xa843, 0xa844, 0xa845, 0xa845, 0xa846, 0xa847, 0xa848, 0xa849,
- 0xa84a, 0xa84b, 0xa84c, 0xa84e, 0xa84f, 0xa850, 0xa851, 0xa853,
- 0xa854, 0xa855, 0xa857, 0xa858, 0xa85a, 0xa85b, 0xa85d, 0xa85f,
- 0xa840, 0xa840, 0xa840, 0xa840, 0xa841, 0xa841, 0xa842, 0xa842,
- 0xa843, 0xa844, 0xa845, 0xa845, 0xa846, 0xa847, 0xa848, 0xa849,
- 0xa84a, 0xa84b, 0xa84c, 0xa84e, 0xa84f, 0xa850, 0xa851, 0xa853,
- 0xa854, 0xa855, 0xa857, 0xa858, 0xa85a, 0xa85b, 0xa85d, 0xa85f,
- 0xa860, 0xa860, 0xa860, 0xa860, 0xa861, 0xa861, 0xa862, 0xa862,
- 0xa863, 0xa864, 0xa865, 0xa865, 0xa866, 0xa867, 0xa868, 0xa869,
- 0xa86a, 0xa86b, 0xa86c, 0xa86e, 0xa86f, 0xa870, 0xa871, 0xa873,
- 0xa874, 0xa875, 0xa877, 0xa878, 0xa87a, 0xa87b, 0xa87d, 0xa87f,
- 0xa860, 0xa860, 0xa860, 0xa860, 0xa861, 0xa861, 0xa862, 0xa862,
- 0xa863, 0xa864, 0xa865, 0xa865, 0xa866, 0xa867, 0xa868, 0xa869,
- 0xa86a, 0xa86b, 0xa86c, 0xa86e, 0xa86f, 0xa870, 0xa871, 0xa873,
- 0xa874, 0xa875, 0xa877, 0xa878, 0xa87a, 0xa87b, 0xa87d, 0xa87f,
- 0xa880, 0xa880, 0xa880, 0xa880, 0xa881, 0xa881, 0xa882, 0xa882,
- 0xa883, 0xa884, 0xa885, 0xa885, 0xa886, 0xa887, 0xa888, 0xa889,
- 0xa88a, 0xa88b, 0xa88c, 0xa88e, 0xa88f, 0xa890, 0xa891, 0xa893,
- 0xa894, 0xa895, 0xa897, 0xa898, 0xa89a, 0xa89b, 0xa89d, 0xa89f,
- 0xa8a0, 0xa8a0, 0xa8a0, 0xa8a0, 0xa8a1, 0xa8a1, 0xa8a2, 0xa8a2,
- 0xa8a3, 0xa8a4, 0xa8a5, 0xa8a5, 0xa8a6, 0xa8a7, 0xa8a8, 0xa8a9,
- 0xa8aa, 0xa8ab, 0xa8ac, 0xa8ae, 0xa8af, 0xa8b0, 0xa8b1, 0xa8b3,
- 0xa8b4, 0xa8b5, 0xa8b7, 0xa8b8, 0xa8ba, 0xa8bb, 0xa8bd, 0xa8bf,
- 0xa8a0, 0xa8a0, 0xa8a0, 0xa8a0, 0xa8a1, 0xa8a1, 0xa8a2, 0xa8a2,
- 0xa8a3, 0xa8a4, 0xa8a5, 0xa8a5, 0xa8a6, 0xa8a7, 0xa8a8, 0xa8a9,
- 0xa8aa, 0xa8ab, 0xa8ac, 0xa8ae, 0xa8af, 0xa8b0, 0xa8b1, 0xa8b3,
- 0xa8b4, 0xa8b5, 0xa8b7, 0xa8b8, 0xa8ba, 0xa8bb, 0xa8bd, 0xa8bf,
- 0xa8c0, 0xa8c0, 0xa8c0, 0xa8c0, 0xa8c1, 0xa8c1, 0xa8c2, 0xa8c2,
- 0xa8c3, 0xa8c4, 0xa8c5, 0xa8c5, 0xa8c6, 0xa8c7, 0xa8c8, 0xa8c9,
- 0xa8ca, 0xa8cb, 0xa8cc, 0xa8ce, 0xa8cf, 0xa8d0, 0xa8d1, 0xa8d3,
- 0xa8d4, 0xa8d5, 0xa8d7, 0xa8d8, 0xa8da, 0xa8db, 0xa8dd, 0xa8df,
- 0xa8e0, 0xa8e0, 0xa8e0, 0xa8e0, 0xa8e1, 0xa8e1, 0xa8e2, 0xa8e2,
- 0xa8e3, 0xa8e4, 0xa8e5, 0xa8e5, 0xa8e6, 0xa8e7, 0xa8e8, 0xa8e9,
- 0xa8ea, 0xa8eb, 0xa8ec, 0xa8ee, 0xa8ef, 0xa8f0, 0xa8f1, 0xa8f3,
- 0xa8f4, 0xa8f5, 0xa8f7, 0xa8f8, 0xa8fa, 0xa8fb, 0xa8fd, 0xa8ff,
- 0xa8e0, 0xa8e0, 0xa8e0, 0xa8e0, 0xa8e1, 0xa8e1, 0xa8e2, 0xa8e2,
- 0xa8e3, 0xa8e4, 0xa8e5, 0xa8e5, 0xa8e6, 0xa8e7, 0xa8e8, 0xa8e9,
- 0xa8ea, 0xa8eb, 0xa8ec, 0xa8ee, 0xa8ef, 0xa8f0, 0xa8f1, 0xa8f3,
- 0xa8f4, 0xa8f5, 0xa8f7, 0xa8f8, 0xa8fa, 0xa8fb, 0xa8fd, 0xa8ff,
- 0xa900, 0xa900, 0xa900, 0xa900, 0xa901, 0xa901, 0xa902, 0xa902,
- 0xa903, 0xa904, 0xa905, 0xa905, 0xa906, 0xa907, 0xa908, 0xa909,
- 0xa90a, 0xa90b, 0xa90c, 0xa90e, 0xa90f, 0xa910, 0xa911, 0xa913,
- 0xa914, 0xa915, 0xa917, 0xa918, 0xa91a, 0xa91b, 0xa91d, 0xa91f,
- 0xa920, 0xa920, 0xa920, 0xa920, 0xa921, 0xa921, 0xa922, 0xa922,
- 0xa923, 0xa924, 0xa925, 0xa925, 0xa926, 0xa927, 0xa928, 0xa929,
- 0xa92a, 0xa92b, 0xa92c, 0xa92e, 0xa92f, 0xa930, 0xa931, 0xa933,
- 0xa934, 0xa935, 0xa937, 0xa938, 0xa93a, 0xa93b, 0xa93d, 0xa93f,
- 0xa940, 0xa940, 0xa940, 0xa940, 0xa941, 0xa941, 0xa942, 0xa942,
- 0xa943, 0xa944, 0xa945, 0xa945, 0xa946, 0xa947, 0xa948, 0xa949,
- 0xa94a, 0xa94b, 0xa94c, 0xa94e, 0xa94f, 0xa950, 0xa951, 0xa953,
- 0xa954, 0xa955, 0xa957, 0xa958, 0xa95a, 0xa95b, 0xa95d, 0xa95f,
- 0xa940, 0xa940, 0xa940, 0xa940, 0xa941, 0xa941, 0xa942, 0xa942,
- 0xa943, 0xa944, 0xa945, 0xa945, 0xa946, 0xa947, 0xa948, 0xa949,
- 0xa94a, 0xa94b, 0xa94c, 0xa94e, 0xa94f, 0xa950, 0xa951, 0xa953,
- 0xa954, 0xa955, 0xa957, 0xa958, 0xa95a, 0xa95b, 0xa95d, 0xa95f,
- 0xa960, 0xa960, 0xa960, 0xa960, 0xa961, 0xa961, 0xa962, 0xa962,
- 0xa963, 0xa964, 0xa965, 0xa965, 0xa966, 0xa967, 0xa968, 0xa969,
- 0xa96a, 0xa96b, 0xa96c, 0xa96e, 0xa96f, 0xa970, 0xa971, 0xa973,
- 0xa974, 0xa975, 0xa977, 0xa978, 0xa97a, 0xa97b, 0xa97d, 0xa97f,
- 0xa980, 0xa980, 0xa980, 0xa980, 0xa981, 0xa981, 0xa982, 0xa982,
- 0xa983, 0xa984, 0xa985, 0xa985, 0xa986, 0xa987, 0xa988, 0xa989,
- 0xa98a, 0xa98b, 0xa98c, 0xa98e, 0xa98f, 0xa990, 0xa991, 0xa993,
- 0xa994, 0xa995, 0xa997, 0xa998, 0xa99a, 0xa99b, 0xa99d, 0xa99f,
- 0xa9a0, 0xa9a0, 0xa9a0, 0xa9a0, 0xa9a1, 0xa9a1, 0xa9a2, 0xa9a2,
- 0xa9a3, 0xa9a4, 0xa9a5, 0xa9a5, 0xa9a6, 0xa9a7, 0xa9a8, 0xa9a9,
- 0xa9aa, 0xa9ab, 0xa9ac, 0xa9ae, 0xa9af, 0xa9b0, 0xa9b1, 0xa9b3,
- 0xa9b4, 0xa9b5, 0xa9b7, 0xa9b8, 0xa9ba, 0xa9bb, 0xa9bd, 0xa9bf,
- 0xa9c0, 0xa9c0, 0xa9c0, 0xa9c0, 0xa9c1, 0xa9c1, 0xa9c2, 0xa9c2,
- 0xa9c3, 0xa9c4, 0xa9c5, 0xa9c5, 0xa9c6, 0xa9c7, 0xa9c8, 0xa9c9,
- 0xa9ca, 0xa9cb, 0xa9cc, 0xa9ce, 0xa9cf, 0xa9d0, 0xa9d1, 0xa9d3,
- 0xa9d4, 0xa9d5, 0xa9d7, 0xa9d8, 0xa9da, 0xa9db, 0xa9dd, 0xa9df,
- 0xa9e0, 0xa9e0, 0xa9e0, 0xa9e0, 0xa9e1, 0xa9e1, 0xa9e2, 0xa9e2,
- 0xa9e3, 0xa9e4, 0xa9e5, 0xa9e5, 0xa9e6, 0xa9e7, 0xa9e8, 0xa9e9,
- 0xa9ea, 0xa9eb, 0xa9ec, 0xa9ee, 0xa9ef, 0xa9f0, 0xa9f1, 0xa9f3,
- 0xa9f4, 0xa9f5, 0xa9f7, 0xa9f8, 0xa9fa, 0xa9fb, 0xa9fd, 0xa9ff,
- 0xaa00, 0xaa00, 0xaa00, 0xaa00, 0xaa01, 0xaa01, 0xaa02, 0xaa02,
- 0xaa03, 0xaa04, 0xaa05, 0xaa05, 0xaa06, 0xaa07, 0xaa08, 0xaa09,
- 0xaa0a, 0xaa0b, 0xaa0c, 0xaa0e, 0xaa0f, 0xaa10, 0xaa11, 0xaa13,
- 0xaa14, 0xaa15, 0xaa17, 0xaa18, 0xaa1a, 0xaa1b, 0xaa1d, 0xaa1f,
- 0xaa20, 0xaa20, 0xaa20, 0xaa20, 0xaa21, 0xaa21, 0xaa22, 0xaa22,
- 0xaa23, 0xaa24, 0xaa25, 0xaa25, 0xaa26, 0xaa27, 0xaa28, 0xaa29,
- 0xaa2a, 0xaa2b, 0xaa2c, 0xaa2e, 0xaa2f, 0xaa30, 0xaa31, 0xaa33,
- 0xaa34, 0xaa35, 0xaa37, 0xaa38, 0xaa3a, 0xaa3b, 0xaa3d, 0xaa3f,
- 0xaa40, 0xaa40, 0xaa40, 0xaa40, 0xaa41, 0xaa41, 0xaa42, 0xaa42,
- 0xaa43, 0xaa44, 0xaa45, 0xaa45, 0xaa46, 0xaa47, 0xaa48, 0xaa49,
- 0xaa4a, 0xaa4b, 0xaa4c, 0xaa4e, 0xaa4f, 0xaa50, 0xaa51, 0xaa53,
- 0xaa54, 0xaa55, 0xaa57, 0xaa58, 0xaa5a, 0xaa5b, 0xaa5d, 0xaa5f,
- 0xaa60, 0xaa60, 0xaa60, 0xaa60, 0xaa61, 0xaa61, 0xaa62, 0xaa62,
- 0xaa63, 0xaa64, 0xaa65, 0xaa65, 0xaa66, 0xaa67, 0xaa68, 0xaa69,
- 0xaa6a, 0xaa6b, 0xaa6c, 0xaa6e, 0xaa6f, 0xaa70, 0xaa71, 0xaa73,
- 0xaa74, 0xaa75, 0xaa77, 0xaa78, 0xaa7a, 0xaa7b, 0xaa7d, 0xaa7f,
- 0xaa80, 0xaa80, 0xaa80, 0xaa80, 0xaa81, 0xaa81, 0xaa82, 0xaa82,
- 0xaa83, 0xaa84, 0xaa85, 0xaa85, 0xaa86, 0xaa87, 0xaa88, 0xaa89,
- 0xaa8a, 0xaa8b, 0xaa8c, 0xaa8e, 0xaa8f, 0xaa90, 0xaa91, 0xaa93,
- 0xaa94, 0xaa95, 0xaa97, 0xaa98, 0xaa9a, 0xaa9b, 0xaa9d, 0xaa9f,
- 0xaaa0, 0xaaa0, 0xaaa0, 0xaaa0, 0xaaa1, 0xaaa1, 0xaaa2, 0xaaa2,
- 0xaaa3, 0xaaa4, 0xaaa5, 0xaaa5, 0xaaa6, 0xaaa7, 0xaaa8, 0xaaa9,
- 0xaaaa, 0xaaab, 0xaaac, 0xaaae, 0xaaaf, 0xaab0, 0xaab1, 0xaab3,
- 0xaab4, 0xaab5, 0xaab7, 0xaab8, 0xaaba, 0xaabb, 0xaabd, 0xaabf,
- 0xaac0, 0xaac0, 0xaac0, 0xaac0, 0xaac1, 0xaac1, 0xaac2, 0xaac2,
- 0xaac3, 0xaac4, 0xaac5, 0xaac5, 0xaac6, 0xaac7, 0xaac8, 0xaac9,
- 0xaaca, 0xaacb, 0xaacc, 0xaace, 0xaacf, 0xaad0, 0xaad1, 0xaad3,
- 0xaad4, 0xaad5, 0xaad7, 0xaad8, 0xaada, 0xaadb, 0xaadd, 0xaadf,
- 0xaae0, 0xaae0, 0xaae0, 0xaae0, 0xaae1, 0xaae1, 0xaae2, 0xaae2,
- 0xaae3, 0xaae4, 0xaae5, 0xaae5, 0xaae6, 0xaae7, 0xaae8, 0xaae9,
- 0xaaea, 0xaaeb, 0xaaec, 0xaaee, 0xaaef, 0xaaf0, 0xaaf1, 0xaaf3,
- 0xaaf4, 0xaaf5, 0xaaf7, 0xaaf8, 0xaafa, 0xaafb, 0xaafd, 0xaaff,
- 0xab00, 0xab00, 0xab00, 0xab00, 0xab01, 0xab01, 0xab02, 0xab02,
- 0xab03, 0xab04, 0xab05, 0xab05, 0xab06, 0xab07, 0xab08, 0xab09,
- 0xab0a, 0xab0b, 0xab0c, 0xab0e, 0xab0f, 0xab10, 0xab11, 0xab13,
- 0xab14, 0xab15, 0xab17, 0xab18, 0xab1a, 0xab1b, 0xab1d, 0xab1f,
- 0xab20, 0xab20, 0xab20, 0xab20, 0xab21, 0xab21, 0xab22, 0xab22,
- 0xab23, 0xab24, 0xab25, 0xab25, 0xab26, 0xab27, 0xab28, 0xab29,
- 0xab2a, 0xab2b, 0xab2c, 0xab2e, 0xab2f, 0xab30, 0xab31, 0xab33,
- 0xab34, 0xab35, 0xab37, 0xab38, 0xab3a, 0xab3b, 0xab3d, 0xab3f,
- 0xab40, 0xab40, 0xab40, 0xab40, 0xab41, 0xab41, 0xab42, 0xab42,
- 0xab43, 0xab44, 0xab45, 0xab45, 0xab46, 0xab47, 0xab48, 0xab49,
- 0xab4a, 0xab4b, 0xab4c, 0xab4e, 0xab4f, 0xab50, 0xab51, 0xab53,
- 0xab54, 0xab55, 0xab57, 0xab58, 0xab5a, 0xab5b, 0xab5d, 0xab5f,
- 0xab80, 0xab80, 0xab80, 0xab80, 0xab81, 0xab81, 0xab82, 0xab82,
- 0xab83, 0xab84, 0xab85, 0xab85, 0xab86, 0xab87, 0xab88, 0xab89,
- 0xab8a, 0xab8b, 0xab8c, 0xab8e, 0xab8f, 0xab90, 0xab91, 0xab93,
- 0xab94, 0xab95, 0xab97, 0xab98, 0xab9a, 0xab9b, 0xab9d, 0xab9f,
- 0xaba0, 0xaba0, 0xaba0, 0xaba0, 0xaba1, 0xaba1, 0xaba2, 0xaba2,
- 0xaba3, 0xaba4, 0xaba5, 0xaba5, 0xaba6, 0xaba7, 0xaba8, 0xaba9,
- 0xabaa, 0xabab, 0xabac, 0xabae, 0xabaf, 0xabb0, 0xabb1, 0xabb3,
- 0xabb4, 0xabb5, 0xabb7, 0xabb8, 0xabba, 0xabbb, 0xabbd, 0xabbf,
- 0xabc0, 0xabc0, 0xabc0, 0xabc0, 0xabc1, 0xabc1, 0xabc2, 0xabc2,
- 0xabc3, 0xabc4, 0xabc5, 0xabc5, 0xabc6, 0xabc7, 0xabc8, 0xabc9,
- 0xabca, 0xabcb, 0xabcc, 0xabce, 0xabcf, 0xabd0, 0xabd1, 0xabd3,
- 0xabd4, 0xabd5, 0xabd7, 0xabd8, 0xabda, 0xabdb, 0xabdd, 0xabdf,
- 0xabe0, 0xabe0, 0xabe0, 0xabe0, 0xabe1, 0xabe1, 0xabe2, 0xabe2,
- 0xabe3, 0xabe4, 0xabe5, 0xabe5, 0xabe6, 0xabe7, 0xabe8, 0xabe9,
- 0xabea, 0xabeb, 0xabec, 0xabee, 0xabef, 0xabf0, 0xabf1, 0xabf3,
- 0xabf4, 0xabf5, 0xabf7, 0xabf8, 0xabfa, 0xabfb, 0xabfd, 0xabff,
- 0xac00, 0xac00, 0xac00, 0xac00, 0xac01, 0xac01, 0xac02, 0xac02,
- 0xac03, 0xac04, 0xac05, 0xac05, 0xac06, 0xac07, 0xac08, 0xac09,
- 0xac0a, 0xac0b, 0xac0c, 0xac0e, 0xac0f, 0xac10, 0xac11, 0xac13,
- 0xac14, 0xac15, 0xac17, 0xac18, 0xac1a, 0xac1b, 0xac1d, 0xac1f,
- 0xac40, 0xac40, 0xac40, 0xac40, 0xac41, 0xac41, 0xac42, 0xac42,
- 0xac43, 0xac44, 0xac45, 0xac45, 0xac46, 0xac47, 0xac48, 0xac49,
- 0xac4a, 0xac4b, 0xac4c, 0xac4e, 0xac4f, 0xac50, 0xac51, 0xac53,
- 0xac54, 0xac55, 0xac57, 0xac58, 0xac5a, 0xac5b, 0xac5d, 0xac5f,
- 0xac60, 0xac60, 0xac60, 0xac60, 0xac61, 0xac61, 0xac62, 0xac62,
- 0xac63, 0xac64, 0xac65, 0xac65, 0xac66, 0xac67, 0xac68, 0xac69,
- 0xac6a, 0xac6b, 0xac6c, 0xac6e, 0xac6f, 0xac70, 0xac71, 0xac73,
- 0xac74, 0xac75, 0xac77, 0xac78, 0xac7a, 0xac7b, 0xac7d, 0xac7f,
- 0xac80, 0xac80, 0xac80, 0xac80, 0xac81, 0xac81, 0xac82, 0xac82,
- 0xac83, 0xac84, 0xac85, 0xac85, 0xac86, 0xac87, 0xac88, 0xac89,
- 0xac8a, 0xac8b, 0xac8c, 0xac8e, 0xac8f, 0xac90, 0xac91, 0xac93,
- 0xac94, 0xac95, 0xac97, 0xac98, 0xac9a, 0xac9b, 0xac9d, 0xac9f,
- 0xacc0, 0xacc0, 0xacc0, 0xacc0, 0xacc1, 0xacc1, 0xacc2, 0xacc2,
- 0xacc3, 0xacc4, 0xacc5, 0xacc5, 0xacc6, 0xacc7, 0xacc8, 0xacc9,
- 0xacca, 0xaccb, 0xaccc, 0xacce, 0xaccf, 0xacd0, 0xacd1, 0xacd3,
- 0xacd4, 0xacd5, 0xacd7, 0xacd8, 0xacda, 0xacdb, 0xacdd, 0xacdf,
- 0xace0, 0xace0, 0xace0, 0xace0, 0xace1, 0xace1, 0xace2, 0xace2,
- 0xace3, 0xace4, 0xace5, 0xace5, 0xace6, 0xace7, 0xace8, 0xace9,
- 0xacea, 0xaceb, 0xacec, 0xacee, 0xacef, 0xacf0, 0xacf1, 0xacf3,
- 0xacf4, 0xacf5, 0xacf7, 0xacf8, 0xacfa, 0xacfb, 0xacfd, 0xacff,
- 0xad00, 0xad00, 0xad00, 0xad00, 0xad01, 0xad01, 0xad02, 0xad02,
- 0xad03, 0xad04, 0xad05, 0xad05, 0xad06, 0xad07, 0xad08, 0xad09,
- 0xad0a, 0xad0b, 0xad0c, 0xad0e, 0xad0f, 0xad10, 0xad11, 0xad13,
- 0xad14, 0xad15, 0xad17, 0xad18, 0xad1a, 0xad1b, 0xad1d, 0xad1f,
- 0xad40, 0xad40, 0xad40, 0xad40, 0xad41, 0xad41, 0xad42, 0xad42,
- 0xad43, 0xad44, 0xad45, 0xad45, 0xad46, 0xad47, 0xad48, 0xad49,
- 0xad4a, 0xad4b, 0xad4c, 0xad4e, 0xad4f, 0xad50, 0xad51, 0xad53,
- 0xad54, 0xad55, 0xad57, 0xad58, 0xad5a, 0xad5b, 0xad5d, 0xad5f,
- 0xad60, 0xad60, 0xad60, 0xad60, 0xad61, 0xad61, 0xad62, 0xad62,
- 0xad63, 0xad64, 0xad65, 0xad65, 0xad66, 0xad67, 0xad68, 0xad69,
- 0xad6a, 0xad6b, 0xad6c, 0xad6e, 0xad6f, 0xad70, 0xad71, 0xad73,
- 0xad74, 0xad75, 0xad77, 0xad78, 0xad7a, 0xad7b, 0xad7d, 0xad7f,
- 0xad80, 0xad80, 0xad80, 0xad80, 0xad81, 0xad81, 0xad82, 0xad82,
- 0xad83, 0xad84, 0xad85, 0xad85, 0xad86, 0xad87, 0xad88, 0xad89,
- 0xad8a, 0xad8b, 0xad8c, 0xad8e, 0xad8f, 0xad90, 0xad91, 0xad93,
- 0xad94, 0xad95, 0xad97, 0xad98, 0xad9a, 0xad9b, 0xad9d, 0xad9f,
- 0xadc0, 0xadc0, 0xadc0, 0xadc0, 0xadc1, 0xadc1, 0xadc2, 0xadc2,
- 0xadc3, 0xadc4, 0xadc5, 0xadc5, 0xadc6, 0xadc7, 0xadc8, 0xadc9,
- 0xadca, 0xadcb, 0xadcc, 0xadce, 0xadcf, 0xadd0, 0xadd1, 0xadd3,
- 0xadd4, 0xadd5, 0xadd7, 0xadd8, 0xadda, 0xaddb, 0xaddd, 0xaddf,
- 0xade0, 0xade0, 0xade0, 0xade0, 0xade1, 0xade1, 0xade2, 0xade2,
- 0xade3, 0xade4, 0xade5, 0xade5, 0xade6, 0xade7, 0xade8, 0xade9,
- 0xadea, 0xadeb, 0xadec, 0xadee, 0xadef, 0xadf0, 0xadf1, 0xadf3,
- 0xadf4, 0xadf5, 0xadf7, 0xadf8, 0xadfa, 0xadfb, 0xadfd, 0xadff,
- 0xae20, 0xae20, 0xae20, 0xae20, 0xae21, 0xae21, 0xae22, 0xae22,
- 0xae23, 0xae24, 0xae25, 0xae25, 0xae26, 0xae27, 0xae28, 0xae29,
- 0xae2a, 0xae2b, 0xae2c, 0xae2e, 0xae2f, 0xae30, 0xae31, 0xae33,
- 0xae34, 0xae35, 0xae37, 0xae38, 0xae3a, 0xae3b, 0xae3d, 0xae3f,
- 0xae40, 0xae40, 0xae40, 0xae40, 0xae41, 0xae41, 0xae42, 0xae42,
- 0xae43, 0xae44, 0xae45, 0xae45, 0xae46, 0xae47, 0xae48, 0xae49,
- 0xae4a, 0xae4b, 0xae4c, 0xae4e, 0xae4f, 0xae50, 0xae51, 0xae53,
- 0xae54, 0xae55, 0xae57, 0xae58, 0xae5a, 0xae5b, 0xae5d, 0xae5f,
- 0xae80, 0xae80, 0xae80, 0xae80, 0xae81, 0xae81, 0xae82, 0xae82,
- 0xae83, 0xae84, 0xae85, 0xae85, 0xae86, 0xae87, 0xae88, 0xae89,
- 0xae8a, 0xae8b, 0xae8c, 0xae8e, 0xae8f, 0xae90, 0xae91, 0xae93,
- 0xae94, 0xae95, 0xae97, 0xae98, 0xae9a, 0xae9b, 0xae9d, 0xae9f,
- 0xaea0, 0xaea0, 0xaea0, 0xaea0, 0xaea1, 0xaea1, 0xaea2, 0xaea2,
- 0xaea3, 0xaea4, 0xaea5, 0xaea5, 0xaea6, 0xaea7, 0xaea8, 0xaea9,
- 0xaeaa, 0xaeab, 0xaeac, 0xaeae, 0xaeaf, 0xaeb0, 0xaeb1, 0xaeb3,
- 0xaeb4, 0xaeb5, 0xaeb7, 0xaeb8, 0xaeba, 0xaebb, 0xaebd, 0xaebf,
- 0xaee0, 0xaee0, 0xaee0, 0xaee0, 0xaee1, 0xaee1, 0xaee2, 0xaee2,
- 0xaee3, 0xaee4, 0xaee5, 0xaee5, 0xaee6, 0xaee7, 0xaee8, 0xaee9,
- 0xaeea, 0xaeeb, 0xaeec, 0xaeee, 0xaeef, 0xaef0, 0xaef1, 0xaef3,
- 0xaef4, 0xaef5, 0xaef7, 0xaef8, 0xaefa, 0xaefb, 0xaefd, 0xaeff,
- 0xaf00, 0xaf00, 0xaf00, 0xaf00, 0xaf01, 0xaf01, 0xaf02, 0xaf02,
- 0xaf03, 0xaf04, 0xaf05, 0xaf05, 0xaf06, 0xaf07, 0xaf08, 0xaf09,
- 0xaf0a, 0xaf0b, 0xaf0c, 0xaf0e, 0xaf0f, 0xaf10, 0xaf11, 0xaf13,
- 0xaf14, 0xaf15, 0xaf17, 0xaf18, 0xaf1a, 0xaf1b, 0xaf1d, 0xaf1f,
- 0xaf40, 0xaf40, 0xaf40, 0xaf40, 0xaf41, 0xaf41, 0xaf42, 0xaf42,
- 0xaf43, 0xaf44, 0xaf45, 0xaf45, 0xaf46, 0xaf47, 0xaf48, 0xaf49,
- 0xaf4a, 0xaf4b, 0xaf4c, 0xaf4e, 0xaf4f, 0xaf50, 0xaf51, 0xaf53,
- 0xaf54, 0xaf55, 0xaf57, 0xaf58, 0xaf5a, 0xaf5b, 0xaf5d, 0xaf5f,
- 0xaf60, 0xaf60, 0xaf60, 0xaf60, 0xaf61, 0xaf61, 0xaf62, 0xaf62,
- 0xaf63, 0xaf64, 0xaf65, 0xaf65, 0xaf66, 0xaf67, 0xaf68, 0xaf69,
- 0xaf6a, 0xaf6b, 0xaf6c, 0xaf6e, 0xaf6f, 0xaf70, 0xaf71, 0xaf73,
- 0xaf74, 0xaf75, 0xaf77, 0xaf78, 0xaf7a, 0xaf7b, 0xaf7d, 0xaf7f,
- 0xafa0, 0xafa0, 0xafa0, 0xafa0, 0xafa1, 0xafa1, 0xafa2, 0xafa2,
- 0xafa3, 0xafa4, 0xafa5, 0xafa5, 0xafa6, 0xafa7, 0xafa8, 0xafa9,
- 0xafaa, 0xafab, 0xafac, 0xafae, 0xafaf, 0xafb0, 0xafb1, 0xafb3,
- 0xafb4, 0xafb5, 0xafb7, 0xafb8, 0xafba, 0xafbb, 0xafbd, 0xafbf,
- 0xafe0, 0xafe0, 0xafe0, 0xafe0, 0xafe1, 0xafe1, 0xafe2, 0xafe2,
- 0xafe3, 0xafe4, 0xafe5, 0xafe5, 0xafe6, 0xafe7, 0xafe8, 0xafe9,
- 0xafea, 0xafeb, 0xafec, 0xafee, 0xafef, 0xaff0, 0xaff1, 0xaff3,
- 0xaff4, 0xaff5, 0xaff7, 0xaff8, 0xaffa, 0xaffb, 0xaffd, 0xafff,
- 0xb800, 0xb800, 0xb800, 0xb800, 0xb801, 0xb801, 0xb802, 0xb802,
- 0xb803, 0xb804, 0xb805, 0xb805, 0xb806, 0xb807, 0xb808, 0xb809,
- 0xb80a, 0xb80b, 0xb80c, 0xb80e, 0xb80f, 0xb810, 0xb811, 0xb813,
- 0xb814, 0xb815, 0xb817, 0xb818, 0xb81a, 0xb81b, 0xb81d, 0xb81f,
- 0xb800, 0xb800, 0xb800, 0xb800, 0xb801, 0xb801, 0xb802, 0xb802,
- 0xb803, 0xb804, 0xb805, 0xb805, 0xb806, 0xb807, 0xb808, 0xb809,
- 0xb80a, 0xb80b, 0xb80c, 0xb80e, 0xb80f, 0xb810, 0xb811, 0xb813,
- 0xb814, 0xb815, 0xb817, 0xb818, 0xb81a, 0xb81b, 0xb81d, 0xb81f,
- 0xb800, 0xb800, 0xb800, 0xb800, 0xb801, 0xb801, 0xb802, 0xb802,
- 0xb803, 0xb804, 0xb805, 0xb805, 0xb806, 0xb807, 0xb808, 0xb809,
- 0xb80a, 0xb80b, 0xb80c, 0xb80e, 0xb80f, 0xb810, 0xb811, 0xb813,
- 0xb814, 0xb815, 0xb817, 0xb818, 0xb81a, 0xb81b, 0xb81d, 0xb81f,
- 0xb800, 0xb800, 0xb800, 0xb800, 0xb801, 0xb801, 0xb802, 0xb802,
- 0xb803, 0xb804, 0xb805, 0xb805, 0xb806, 0xb807, 0xb808, 0xb809,
- 0xb80a, 0xb80b, 0xb80c, 0xb80e, 0xb80f, 0xb810, 0xb811, 0xb813,
- 0xb814, 0xb815, 0xb817, 0xb818, 0xb81a, 0xb81b, 0xb81d, 0xb81f,
- 0xb800, 0xb800, 0xb800, 0xb800, 0xb801, 0xb801, 0xb802, 0xb802,
- 0xb803, 0xb804, 0xb805, 0xb805, 0xb806, 0xb807, 0xb808, 0xb809,
- 0xb80a, 0xb80b, 0xb80c, 0xb80e, 0xb80f, 0xb810, 0xb811, 0xb813,
- 0xb814, 0xb815, 0xb817, 0xb818, 0xb81a, 0xb81b, 0xb81d, 0xb81f,
- 0xb820, 0xb820, 0xb820, 0xb820, 0xb821, 0xb821, 0xb822, 0xb822,
- 0xb823, 0xb824, 0xb825, 0xb825, 0xb826, 0xb827, 0xb828, 0xb829,
- 0xb82a, 0xb82b, 0xb82c, 0xb82e, 0xb82f, 0xb830, 0xb831, 0xb833,
- 0xb834, 0xb835, 0xb837, 0xb838, 0xb83a, 0xb83b, 0xb83d, 0xb83f,
- 0xb820, 0xb820, 0xb820, 0xb820, 0xb821, 0xb821, 0xb822, 0xb822,
- 0xb823, 0xb824, 0xb825, 0xb825, 0xb826, 0xb827, 0xb828, 0xb829,
- 0xb82a, 0xb82b, 0xb82c, 0xb82e, 0xb82f, 0xb830, 0xb831, 0xb833,
- 0xb834, 0xb835, 0xb837, 0xb838, 0xb83a, 0xb83b, 0xb83d, 0xb83f,
- 0xb820, 0xb820, 0xb820, 0xb820, 0xb821, 0xb821, 0xb822, 0xb822,
- 0xb823, 0xb824, 0xb825, 0xb825, 0xb826, 0xb827, 0xb828, 0xb829,
- 0xb82a, 0xb82b, 0xb82c, 0xb82e, 0xb82f, 0xb830, 0xb831, 0xb833,
- 0xb834, 0xb835, 0xb837, 0xb838, 0xb83a, 0xb83b, 0xb83d, 0xb83f,
- 0xb840, 0xb840, 0xb840, 0xb840, 0xb841, 0xb841, 0xb842, 0xb842,
- 0xb843, 0xb844, 0xb845, 0xb845, 0xb846, 0xb847, 0xb848, 0xb849,
- 0xb84a, 0xb84b, 0xb84c, 0xb84e, 0xb84f, 0xb850, 0xb851, 0xb853,
- 0xb854, 0xb855, 0xb857, 0xb858, 0xb85a, 0xb85b, 0xb85d, 0xb85f,
- 0xb840, 0xb840, 0xb840, 0xb840, 0xb841, 0xb841, 0xb842, 0xb842,
- 0xb843, 0xb844, 0xb845, 0xb845, 0xb846, 0xb847, 0xb848, 0xb849,
- 0xb84a, 0xb84b, 0xb84c, 0xb84e, 0xb84f, 0xb850, 0xb851, 0xb853,
- 0xb854, 0xb855, 0xb857, 0xb858, 0xb85a, 0xb85b, 0xb85d, 0xb85f,
- 0xb860, 0xb860, 0xb860, 0xb860, 0xb861, 0xb861, 0xb862, 0xb862,
- 0xb863, 0xb864, 0xb865, 0xb865, 0xb866, 0xb867, 0xb868, 0xb869,
- 0xb86a, 0xb86b, 0xb86c, 0xb86e, 0xb86f, 0xb870, 0xb871, 0xb873,
- 0xb874, 0xb875, 0xb877, 0xb878, 0xb87a, 0xb87b, 0xb87d, 0xb87f,
- 0xb860, 0xb860, 0xb860, 0xb860, 0xb861, 0xb861, 0xb862, 0xb862,
- 0xb863, 0xb864, 0xb865, 0xb865, 0xb866, 0xb867, 0xb868, 0xb869,
- 0xb86a, 0xb86b, 0xb86c, 0xb86e, 0xb86f, 0xb870, 0xb871, 0xb873,
- 0xb874, 0xb875, 0xb877, 0xb878, 0xb87a, 0xb87b, 0xb87d, 0xb87f,
- 0xb880, 0xb880, 0xb880, 0xb880, 0xb881, 0xb881, 0xb882, 0xb882,
- 0xb883, 0xb884, 0xb885, 0xb885, 0xb886, 0xb887, 0xb888, 0xb889,
- 0xb88a, 0xb88b, 0xb88c, 0xb88e, 0xb88f, 0xb890, 0xb891, 0xb893,
- 0xb894, 0xb895, 0xb897, 0xb898, 0xb89a, 0xb89b, 0xb89d, 0xb89f,
- 0xb8a0, 0xb8a0, 0xb8a0, 0xb8a0, 0xb8a1, 0xb8a1, 0xb8a2, 0xb8a2,
- 0xb8a3, 0xb8a4, 0xb8a5, 0xb8a5, 0xb8a6, 0xb8a7, 0xb8a8, 0xb8a9,
- 0xb8aa, 0xb8ab, 0xb8ac, 0xb8ae, 0xb8af, 0xb8b0, 0xb8b1, 0xb8b3,
- 0xb8b4, 0xb8b5, 0xb8b7, 0xb8b8, 0xb8ba, 0xb8bb, 0xb8bd, 0xb8bf,
- 0xb8a0, 0xb8a0, 0xb8a0, 0xb8a0, 0xb8a1, 0xb8a1, 0xb8a2, 0xb8a2,
- 0xb8a3, 0xb8a4, 0xb8a5, 0xb8a5, 0xb8a6, 0xb8a7, 0xb8a8, 0xb8a9,
- 0xb8aa, 0xb8ab, 0xb8ac, 0xb8ae, 0xb8af, 0xb8b0, 0xb8b1, 0xb8b3,
- 0xb8b4, 0xb8b5, 0xb8b7, 0xb8b8, 0xb8ba, 0xb8bb, 0xb8bd, 0xb8bf,
- 0xb8c0, 0xb8c0, 0xb8c0, 0xb8c0, 0xb8c1, 0xb8c1, 0xb8c2, 0xb8c2,
- 0xb8c3, 0xb8c4, 0xb8c5, 0xb8c5, 0xb8c6, 0xb8c7, 0xb8c8, 0xb8c9,
- 0xb8ca, 0xb8cb, 0xb8cc, 0xb8ce, 0xb8cf, 0xb8d0, 0xb8d1, 0xb8d3,
- 0xb8d4, 0xb8d5, 0xb8d7, 0xb8d8, 0xb8da, 0xb8db, 0xb8dd, 0xb8df,
- 0xb8e0, 0xb8e0, 0xb8e0, 0xb8e0, 0xb8e1, 0xb8e1, 0xb8e2, 0xb8e2,
- 0xb8e3, 0xb8e4, 0xb8e5, 0xb8e5, 0xb8e6, 0xb8e7, 0xb8e8, 0xb8e9,
- 0xb8ea, 0xb8eb, 0xb8ec, 0xb8ee, 0xb8ef, 0xb8f0, 0xb8f1, 0xb8f3,
- 0xb8f4, 0xb8f5, 0xb8f7, 0xb8f8, 0xb8fa, 0xb8fb, 0xb8fd, 0xb8ff,
- 0xb8e0, 0xb8e0, 0xb8e0, 0xb8e0, 0xb8e1, 0xb8e1, 0xb8e2, 0xb8e2,
- 0xb8e3, 0xb8e4, 0xb8e5, 0xb8e5, 0xb8e6, 0xb8e7, 0xb8e8, 0xb8e9,
- 0xb8ea, 0xb8eb, 0xb8ec, 0xb8ee, 0xb8ef, 0xb8f0, 0xb8f1, 0xb8f3,
- 0xb8f4, 0xb8f5, 0xb8f7, 0xb8f8, 0xb8fa, 0xb8fb, 0xb8fd, 0xb8ff,
- 0xb900, 0xb900, 0xb900, 0xb900, 0xb901, 0xb901, 0xb902, 0xb902,
- 0xb903, 0xb904, 0xb905, 0xb905, 0xb906, 0xb907, 0xb908, 0xb909,
- 0xb90a, 0xb90b, 0xb90c, 0xb90e, 0xb90f, 0xb910, 0xb911, 0xb913,
- 0xb914, 0xb915, 0xb917, 0xb918, 0xb91a, 0xb91b, 0xb91d, 0xb91f,
- 0xb920, 0xb920, 0xb920, 0xb920, 0xb921, 0xb921, 0xb922, 0xb922,
- 0xb923, 0xb924, 0xb925, 0xb925, 0xb926, 0xb927, 0xb928, 0xb929,
- 0xb92a, 0xb92b, 0xb92c, 0xb92e, 0xb92f, 0xb930, 0xb931, 0xb933,
- 0xb934, 0xb935, 0xb937, 0xb938, 0xb93a, 0xb93b, 0xb93d, 0xb93f,
- 0xb940, 0xb940, 0xb940, 0xb940, 0xb941, 0xb941, 0xb942, 0xb942,
- 0xb943, 0xb944, 0xb945, 0xb945, 0xb946, 0xb947, 0xb948, 0xb949,
- 0xb94a, 0xb94b, 0xb94c, 0xb94e, 0xb94f, 0xb950, 0xb951, 0xb953,
- 0xb954, 0xb955, 0xb957, 0xb958, 0xb95a, 0xb95b, 0xb95d, 0xb95f,
- 0xb940, 0xb940, 0xb940, 0xb940, 0xb941, 0xb941, 0xb942, 0xb942,
- 0xb943, 0xb944, 0xb945, 0xb945, 0xb946, 0xb947, 0xb948, 0xb949,
- 0xb94a, 0xb94b, 0xb94c, 0xb94e, 0xb94f, 0xb950, 0xb951, 0xb953,
- 0xb954, 0xb955, 0xb957, 0xb958, 0xb95a, 0xb95b, 0xb95d, 0xb95f,
- 0xb960, 0xb960, 0xb960, 0xb960, 0xb961, 0xb961, 0xb962, 0xb962,
- 0xb963, 0xb964, 0xb965, 0xb965, 0xb966, 0xb967, 0xb968, 0xb969,
- 0xb96a, 0xb96b, 0xb96c, 0xb96e, 0xb96f, 0xb970, 0xb971, 0xb973,
- 0xb974, 0xb975, 0xb977, 0xb978, 0xb97a, 0xb97b, 0xb97d, 0xb97f,
- 0xb980, 0xb980, 0xb980, 0xb980, 0xb981, 0xb981, 0xb982, 0xb982,
- 0xb983, 0xb984, 0xb985, 0xb985, 0xb986, 0xb987, 0xb988, 0xb989,
- 0xb98a, 0xb98b, 0xb98c, 0xb98e, 0xb98f, 0xb990, 0xb991, 0xb993,
- 0xb994, 0xb995, 0xb997, 0xb998, 0xb99a, 0xb99b, 0xb99d, 0xb99f,
- 0xb9a0, 0xb9a0, 0xb9a0, 0xb9a0, 0xb9a1, 0xb9a1, 0xb9a2, 0xb9a2,
- 0xb9a3, 0xb9a4, 0xb9a5, 0xb9a5, 0xb9a6, 0xb9a7, 0xb9a8, 0xb9a9,
- 0xb9aa, 0xb9ab, 0xb9ac, 0xb9ae, 0xb9af, 0xb9b0, 0xb9b1, 0xb9b3,
- 0xb9b4, 0xb9b5, 0xb9b7, 0xb9b8, 0xb9ba, 0xb9bb, 0xb9bd, 0xb9bf,
- 0xb9c0, 0xb9c0, 0xb9c0, 0xb9c0, 0xb9c1, 0xb9c1, 0xb9c2, 0xb9c2,
- 0xb9c3, 0xb9c4, 0xb9c5, 0xb9c5, 0xb9c6, 0xb9c7, 0xb9c8, 0xb9c9,
- 0xb9ca, 0xb9cb, 0xb9cc, 0xb9ce, 0xb9cf, 0xb9d0, 0xb9d1, 0xb9d3,
- 0xb9d4, 0xb9d5, 0xb9d7, 0xb9d8, 0xb9da, 0xb9db, 0xb9dd, 0xb9df,
- 0xb9e0, 0xb9e0, 0xb9e0, 0xb9e0, 0xb9e1, 0xb9e1, 0xb9e2, 0xb9e2,
- 0xb9e3, 0xb9e4, 0xb9e5, 0xb9e5, 0xb9e6, 0xb9e7, 0xb9e8, 0xb9e9,
- 0xb9ea, 0xb9eb, 0xb9ec, 0xb9ee, 0xb9ef, 0xb9f0, 0xb9f1, 0xb9f3,
- 0xb9f4, 0xb9f5, 0xb9f7, 0xb9f8, 0xb9fa, 0xb9fb, 0xb9fd, 0xb9ff,
- 0xba00, 0xba00, 0xba00, 0xba00, 0xba01, 0xba01, 0xba02, 0xba02,
- 0xba03, 0xba04, 0xba05, 0xba05, 0xba06, 0xba07, 0xba08, 0xba09,
- 0xba0a, 0xba0b, 0xba0c, 0xba0e, 0xba0f, 0xba10, 0xba11, 0xba13,
- 0xba14, 0xba15, 0xba17, 0xba18, 0xba1a, 0xba1b, 0xba1d, 0xba1f,
- 0xba20, 0xba20, 0xba20, 0xba20, 0xba21, 0xba21, 0xba22, 0xba22,
- 0xba23, 0xba24, 0xba25, 0xba25, 0xba26, 0xba27, 0xba28, 0xba29,
- 0xba2a, 0xba2b, 0xba2c, 0xba2e, 0xba2f, 0xba30, 0xba31, 0xba33,
- 0xba34, 0xba35, 0xba37, 0xba38, 0xba3a, 0xba3b, 0xba3d, 0xba3f,
- 0xba40, 0xba40, 0xba40, 0xba40, 0xba41, 0xba41, 0xba42, 0xba42,
- 0xba43, 0xba44, 0xba45, 0xba45, 0xba46, 0xba47, 0xba48, 0xba49,
- 0xba4a, 0xba4b, 0xba4c, 0xba4e, 0xba4f, 0xba50, 0xba51, 0xba53,
- 0xba54, 0xba55, 0xba57, 0xba58, 0xba5a, 0xba5b, 0xba5d, 0xba5f,
- 0xba60, 0xba60, 0xba60, 0xba60, 0xba61, 0xba61, 0xba62, 0xba62,
- 0xba63, 0xba64, 0xba65, 0xba65, 0xba66, 0xba67, 0xba68, 0xba69,
- 0xba6a, 0xba6b, 0xba6c, 0xba6e, 0xba6f, 0xba70, 0xba71, 0xba73,
- 0xba74, 0xba75, 0xba77, 0xba78, 0xba7a, 0xba7b, 0xba7d, 0xba7f,
- 0xba80, 0xba80, 0xba80, 0xba80, 0xba81, 0xba81, 0xba82, 0xba82,
- 0xba83, 0xba84, 0xba85, 0xba85, 0xba86, 0xba87, 0xba88, 0xba89,
- 0xba8a, 0xba8b, 0xba8c, 0xba8e, 0xba8f, 0xba90, 0xba91, 0xba93,
- 0xba94, 0xba95, 0xba97, 0xba98, 0xba9a, 0xba9b, 0xba9d, 0xba9f,
- 0xbaa0, 0xbaa0, 0xbaa0, 0xbaa0, 0xbaa1, 0xbaa1, 0xbaa2, 0xbaa2,
- 0xbaa3, 0xbaa4, 0xbaa5, 0xbaa5, 0xbaa6, 0xbaa7, 0xbaa8, 0xbaa9,
- 0xbaaa, 0xbaab, 0xbaac, 0xbaae, 0xbaaf, 0xbab0, 0xbab1, 0xbab3,
- 0xbab4, 0xbab5, 0xbab7, 0xbab8, 0xbaba, 0xbabb, 0xbabd, 0xbabf,
- 0xbac0, 0xbac0, 0xbac0, 0xbac0, 0xbac1, 0xbac1, 0xbac2, 0xbac2,
- 0xbac3, 0xbac4, 0xbac5, 0xbac5, 0xbac6, 0xbac7, 0xbac8, 0xbac9,
- 0xbaca, 0xbacb, 0xbacc, 0xbace, 0xbacf, 0xbad0, 0xbad1, 0xbad3,
- 0xbad4, 0xbad5, 0xbad7, 0xbad8, 0xbada, 0xbadb, 0xbadd, 0xbadf,
- 0xbae0, 0xbae0, 0xbae0, 0xbae0, 0xbae1, 0xbae1, 0xbae2, 0xbae2,
- 0xbae3, 0xbae4, 0xbae5, 0xbae5, 0xbae6, 0xbae7, 0xbae8, 0xbae9,
- 0xbaea, 0xbaeb, 0xbaec, 0xbaee, 0xbaef, 0xbaf0, 0xbaf1, 0xbaf3,
- 0xbaf4, 0xbaf5, 0xbaf7, 0xbaf8, 0xbafa, 0xbafb, 0xbafd, 0xbaff,
- 0xbb00, 0xbb00, 0xbb00, 0xbb00, 0xbb01, 0xbb01, 0xbb02, 0xbb02,
- 0xbb03, 0xbb04, 0xbb05, 0xbb05, 0xbb06, 0xbb07, 0xbb08, 0xbb09,
- 0xbb0a, 0xbb0b, 0xbb0c, 0xbb0e, 0xbb0f, 0xbb10, 0xbb11, 0xbb13,
- 0xbb14, 0xbb15, 0xbb17, 0xbb18, 0xbb1a, 0xbb1b, 0xbb1d, 0xbb1f,
- 0xbb20, 0xbb20, 0xbb20, 0xbb20, 0xbb21, 0xbb21, 0xbb22, 0xbb22,
- 0xbb23, 0xbb24, 0xbb25, 0xbb25, 0xbb26, 0xbb27, 0xbb28, 0xbb29,
- 0xbb2a, 0xbb2b, 0xbb2c, 0xbb2e, 0xbb2f, 0xbb30, 0xbb31, 0xbb33,
- 0xbb34, 0xbb35, 0xbb37, 0xbb38, 0xbb3a, 0xbb3b, 0xbb3d, 0xbb3f,
- 0xbb40, 0xbb40, 0xbb40, 0xbb40, 0xbb41, 0xbb41, 0xbb42, 0xbb42,
- 0xbb43, 0xbb44, 0xbb45, 0xbb45, 0xbb46, 0xbb47, 0xbb48, 0xbb49,
- 0xbb4a, 0xbb4b, 0xbb4c, 0xbb4e, 0xbb4f, 0xbb50, 0xbb51, 0xbb53,
- 0xbb54, 0xbb55, 0xbb57, 0xbb58, 0xbb5a, 0xbb5b, 0xbb5d, 0xbb5f,
- 0xbb80, 0xbb80, 0xbb80, 0xbb80, 0xbb81, 0xbb81, 0xbb82, 0xbb82,
- 0xbb83, 0xbb84, 0xbb85, 0xbb85, 0xbb86, 0xbb87, 0xbb88, 0xbb89,
- 0xbb8a, 0xbb8b, 0xbb8c, 0xbb8e, 0xbb8f, 0xbb90, 0xbb91, 0xbb93,
- 0xbb94, 0xbb95, 0xbb97, 0xbb98, 0xbb9a, 0xbb9b, 0xbb9d, 0xbb9f,
- 0xbba0, 0xbba0, 0xbba0, 0xbba0, 0xbba1, 0xbba1, 0xbba2, 0xbba2,
- 0xbba3, 0xbba4, 0xbba5, 0xbba5, 0xbba6, 0xbba7, 0xbba8, 0xbba9,
- 0xbbaa, 0xbbab, 0xbbac, 0xbbae, 0xbbaf, 0xbbb0, 0xbbb1, 0xbbb3,
- 0xbbb4, 0xbbb5, 0xbbb7, 0xbbb8, 0xbbba, 0xbbbb, 0xbbbd, 0xbbbf,
- 0xbbc0, 0xbbc0, 0xbbc0, 0xbbc0, 0xbbc1, 0xbbc1, 0xbbc2, 0xbbc2,
- 0xbbc3, 0xbbc4, 0xbbc5, 0xbbc5, 0xbbc6, 0xbbc7, 0xbbc8, 0xbbc9,
- 0xbbca, 0xbbcb, 0xbbcc, 0xbbce, 0xbbcf, 0xbbd0, 0xbbd1, 0xbbd3,
- 0xbbd4, 0xbbd5, 0xbbd7, 0xbbd8, 0xbbda, 0xbbdb, 0xbbdd, 0xbbdf,
- 0xbbe0, 0xbbe0, 0xbbe0, 0xbbe0, 0xbbe1, 0xbbe1, 0xbbe2, 0xbbe2,
- 0xbbe3, 0xbbe4, 0xbbe5, 0xbbe5, 0xbbe6, 0xbbe7, 0xbbe8, 0xbbe9,
- 0xbbea, 0xbbeb, 0xbbec, 0xbbee, 0xbbef, 0xbbf0, 0xbbf1, 0xbbf3,
- 0xbbf4, 0xbbf5, 0xbbf7, 0xbbf8, 0xbbfa, 0xbbfb, 0xbbfd, 0xbbff,
- 0xbc00, 0xbc00, 0xbc00, 0xbc00, 0xbc01, 0xbc01, 0xbc02, 0xbc02,
- 0xbc03, 0xbc04, 0xbc05, 0xbc05, 0xbc06, 0xbc07, 0xbc08, 0xbc09,
- 0xbc0a, 0xbc0b, 0xbc0c, 0xbc0e, 0xbc0f, 0xbc10, 0xbc11, 0xbc13,
- 0xbc14, 0xbc15, 0xbc17, 0xbc18, 0xbc1a, 0xbc1b, 0xbc1d, 0xbc1f,
- 0xbc40, 0xbc40, 0xbc40, 0xbc40, 0xbc41, 0xbc41, 0xbc42, 0xbc42,
- 0xbc43, 0xbc44, 0xbc45, 0xbc45, 0xbc46, 0xbc47, 0xbc48, 0xbc49,
- 0xbc4a, 0xbc4b, 0xbc4c, 0xbc4e, 0xbc4f, 0xbc50, 0xbc51, 0xbc53,
- 0xbc54, 0xbc55, 0xbc57, 0xbc58, 0xbc5a, 0xbc5b, 0xbc5d, 0xbc5f,
- 0xbc60, 0xbc60, 0xbc60, 0xbc60, 0xbc61, 0xbc61, 0xbc62, 0xbc62,
- 0xbc63, 0xbc64, 0xbc65, 0xbc65, 0xbc66, 0xbc67, 0xbc68, 0xbc69,
- 0xbc6a, 0xbc6b, 0xbc6c, 0xbc6e, 0xbc6f, 0xbc70, 0xbc71, 0xbc73,
- 0xbc74, 0xbc75, 0xbc77, 0xbc78, 0xbc7a, 0xbc7b, 0xbc7d, 0xbc7f,
- 0xbc80, 0xbc80, 0xbc80, 0xbc80, 0xbc81, 0xbc81, 0xbc82, 0xbc82,
- 0xbc83, 0xbc84, 0xbc85, 0xbc85, 0xbc86, 0xbc87, 0xbc88, 0xbc89,
- 0xbc8a, 0xbc8b, 0xbc8c, 0xbc8e, 0xbc8f, 0xbc90, 0xbc91, 0xbc93,
- 0xbc94, 0xbc95, 0xbc97, 0xbc98, 0xbc9a, 0xbc9b, 0xbc9d, 0xbc9f,
- 0xbcc0, 0xbcc0, 0xbcc0, 0xbcc0, 0xbcc1, 0xbcc1, 0xbcc2, 0xbcc2,
- 0xbcc3, 0xbcc4, 0xbcc5, 0xbcc5, 0xbcc6, 0xbcc7, 0xbcc8, 0xbcc9,
- 0xbcca, 0xbccb, 0xbccc, 0xbcce, 0xbccf, 0xbcd0, 0xbcd1, 0xbcd3,
- 0xbcd4, 0xbcd5, 0xbcd7, 0xbcd8, 0xbcda, 0xbcdb, 0xbcdd, 0xbcdf,
- 0xbce0, 0xbce0, 0xbce0, 0xbce0, 0xbce1, 0xbce1, 0xbce2, 0xbce2,
- 0xbce3, 0xbce4, 0xbce5, 0xbce5, 0xbce6, 0xbce7, 0xbce8, 0xbce9,
- 0xbcea, 0xbceb, 0xbcec, 0xbcee, 0xbcef, 0xbcf0, 0xbcf1, 0xbcf3,
- 0xbcf4, 0xbcf5, 0xbcf7, 0xbcf8, 0xbcfa, 0xbcfb, 0xbcfd, 0xbcff,
- 0xbd00, 0xbd00, 0xbd00, 0xbd00, 0xbd01, 0xbd01, 0xbd02, 0xbd02,
- 0xbd03, 0xbd04, 0xbd05, 0xbd05, 0xbd06, 0xbd07, 0xbd08, 0xbd09,
- 0xbd0a, 0xbd0b, 0xbd0c, 0xbd0e, 0xbd0f, 0xbd10, 0xbd11, 0xbd13,
- 0xbd14, 0xbd15, 0xbd17, 0xbd18, 0xbd1a, 0xbd1b, 0xbd1d, 0xbd1f,
- 0xbd40, 0xbd40, 0xbd40, 0xbd40, 0xbd41, 0xbd41, 0xbd42, 0xbd42,
- 0xbd43, 0xbd44, 0xbd45, 0xbd45, 0xbd46, 0xbd47, 0xbd48, 0xbd49,
- 0xbd4a, 0xbd4b, 0xbd4c, 0xbd4e, 0xbd4f, 0xbd50, 0xbd51, 0xbd53,
- 0xbd54, 0xbd55, 0xbd57, 0xbd58, 0xbd5a, 0xbd5b, 0xbd5d, 0xbd5f,
- 0xbd60, 0xbd60, 0xbd60, 0xbd60, 0xbd61, 0xbd61, 0xbd62, 0xbd62,
- 0xbd63, 0xbd64, 0xbd65, 0xbd65, 0xbd66, 0xbd67, 0xbd68, 0xbd69,
- 0xbd6a, 0xbd6b, 0xbd6c, 0xbd6e, 0xbd6f, 0xbd70, 0xbd71, 0xbd73,
- 0xbd74, 0xbd75, 0xbd77, 0xbd78, 0xbd7a, 0xbd7b, 0xbd7d, 0xbd7f,
- 0xbd80, 0xbd80, 0xbd80, 0xbd80, 0xbd81, 0xbd81, 0xbd82, 0xbd82,
- 0xbd83, 0xbd84, 0xbd85, 0xbd85, 0xbd86, 0xbd87, 0xbd88, 0xbd89,
- 0xbd8a, 0xbd8b, 0xbd8c, 0xbd8e, 0xbd8f, 0xbd90, 0xbd91, 0xbd93,
- 0xbd94, 0xbd95, 0xbd97, 0xbd98, 0xbd9a, 0xbd9b, 0xbd9d, 0xbd9f,
- 0xbdc0, 0xbdc0, 0xbdc0, 0xbdc0, 0xbdc1, 0xbdc1, 0xbdc2, 0xbdc2,
- 0xbdc3, 0xbdc4, 0xbdc5, 0xbdc5, 0xbdc6, 0xbdc7, 0xbdc8, 0xbdc9,
- 0xbdca, 0xbdcb, 0xbdcc, 0xbdce, 0xbdcf, 0xbdd0, 0xbdd1, 0xbdd3,
- 0xbdd4, 0xbdd5, 0xbdd7, 0xbdd8, 0xbdda, 0xbddb, 0xbddd, 0xbddf,
- 0xbde0, 0xbde0, 0xbde0, 0xbde0, 0xbde1, 0xbde1, 0xbde2, 0xbde2,
- 0xbde3, 0xbde4, 0xbde5, 0xbde5, 0xbde6, 0xbde7, 0xbde8, 0xbde9,
- 0xbdea, 0xbdeb, 0xbdec, 0xbdee, 0xbdef, 0xbdf0, 0xbdf1, 0xbdf3,
- 0xbdf4, 0xbdf5, 0xbdf7, 0xbdf8, 0xbdfa, 0xbdfb, 0xbdfd, 0xbdff,
- 0xbe20, 0xbe20, 0xbe20, 0xbe20, 0xbe21, 0xbe21, 0xbe22, 0xbe22,
- 0xbe23, 0xbe24, 0xbe25, 0xbe25, 0xbe26, 0xbe27, 0xbe28, 0xbe29,
- 0xbe2a, 0xbe2b, 0xbe2c, 0xbe2e, 0xbe2f, 0xbe30, 0xbe31, 0xbe33,
- 0xbe34, 0xbe35, 0xbe37, 0xbe38, 0xbe3a, 0xbe3b, 0xbe3d, 0xbe3f,
- 0xbe40, 0xbe40, 0xbe40, 0xbe40, 0xbe41, 0xbe41, 0xbe42, 0xbe42,
- 0xbe43, 0xbe44, 0xbe45, 0xbe45, 0xbe46, 0xbe47, 0xbe48, 0xbe49,
- 0xbe4a, 0xbe4b, 0xbe4c, 0xbe4e, 0xbe4f, 0xbe50, 0xbe51, 0xbe53,
- 0xbe54, 0xbe55, 0xbe57, 0xbe58, 0xbe5a, 0xbe5b, 0xbe5d, 0xbe5f,
- 0xbe80, 0xbe80, 0xbe80, 0xbe80, 0xbe81, 0xbe81, 0xbe82, 0xbe82,
- 0xbe83, 0xbe84, 0xbe85, 0xbe85, 0xbe86, 0xbe87, 0xbe88, 0xbe89,
- 0xbe8a, 0xbe8b, 0xbe8c, 0xbe8e, 0xbe8f, 0xbe90, 0xbe91, 0xbe93,
- 0xbe94, 0xbe95, 0xbe97, 0xbe98, 0xbe9a, 0xbe9b, 0xbe9d, 0xbe9f,
- 0xbea0, 0xbea0, 0xbea0, 0xbea0, 0xbea1, 0xbea1, 0xbea2, 0xbea2,
- 0xbea3, 0xbea4, 0xbea5, 0xbea5, 0xbea6, 0xbea7, 0xbea8, 0xbea9,
- 0xbeaa, 0xbeab, 0xbeac, 0xbeae, 0xbeaf, 0xbeb0, 0xbeb1, 0xbeb3,
- 0xbeb4, 0xbeb5, 0xbeb7, 0xbeb8, 0xbeba, 0xbebb, 0xbebd, 0xbebf,
- 0xbee0, 0xbee0, 0xbee0, 0xbee0, 0xbee1, 0xbee1, 0xbee2, 0xbee2,
- 0xbee3, 0xbee4, 0xbee5, 0xbee5, 0xbee6, 0xbee7, 0xbee8, 0xbee9,
- 0xbeea, 0xbeeb, 0xbeec, 0xbeee, 0xbeef, 0xbef0, 0xbef1, 0xbef3,
- 0xbef4, 0xbef5, 0xbef7, 0xbef8, 0xbefa, 0xbefb, 0xbefd, 0xbeff,
- 0xbf00, 0xbf00, 0xbf00, 0xbf00, 0xbf01, 0xbf01, 0xbf02, 0xbf02,
- 0xbf03, 0xbf04, 0xbf05, 0xbf05, 0xbf06, 0xbf07, 0xbf08, 0xbf09,
- 0xbf0a, 0xbf0b, 0xbf0c, 0xbf0e, 0xbf0f, 0xbf10, 0xbf11, 0xbf13,
- 0xbf14, 0xbf15, 0xbf17, 0xbf18, 0xbf1a, 0xbf1b, 0xbf1d, 0xbf1f,
- 0xbf40, 0xbf40, 0xbf40, 0xbf40, 0xbf41, 0xbf41, 0xbf42, 0xbf42,
- 0xbf43, 0xbf44, 0xbf45, 0xbf45, 0xbf46, 0xbf47, 0xbf48, 0xbf49,
- 0xbf4a, 0xbf4b, 0xbf4c, 0xbf4e, 0xbf4f, 0xbf50, 0xbf51, 0xbf53,
- 0xbf54, 0xbf55, 0xbf57, 0xbf58, 0xbf5a, 0xbf5b, 0xbf5d, 0xbf5f,
- 0xbf60, 0xbf60, 0xbf60, 0xbf60, 0xbf61, 0xbf61, 0xbf62, 0xbf62,
- 0xbf63, 0xbf64, 0xbf65, 0xbf65, 0xbf66, 0xbf67, 0xbf68, 0xbf69,
- 0xbf6a, 0xbf6b, 0xbf6c, 0xbf6e, 0xbf6f, 0xbf70, 0xbf71, 0xbf73,
- 0xbf74, 0xbf75, 0xbf77, 0xbf78, 0xbf7a, 0xbf7b, 0xbf7d, 0xbf7f,
- 0xbfa0, 0xbfa0, 0xbfa0, 0xbfa0, 0xbfa1, 0xbfa1, 0xbfa2, 0xbfa2,
- 0xbfa3, 0xbfa4, 0xbfa5, 0xbfa5, 0xbfa6, 0xbfa7, 0xbfa8, 0xbfa9,
- 0xbfaa, 0xbfab, 0xbfac, 0xbfae, 0xbfaf, 0xbfb0, 0xbfb1, 0xbfb3,
- 0xbfb4, 0xbfb5, 0xbfb7, 0xbfb8, 0xbfba, 0xbfbb, 0xbfbd, 0xbfbf,
- 0xbfe0, 0xbfe0, 0xbfe0, 0xbfe0, 0xbfe1, 0xbfe1, 0xbfe2, 0xbfe2,
- 0xbfe3, 0xbfe4, 0xbfe5, 0xbfe5, 0xbfe6, 0xbfe7, 0xbfe8, 0xbfe9,
- 0xbfea, 0xbfeb, 0xbfec, 0xbfee, 0xbfef, 0xbff0, 0xbff1, 0xbff3,
- 0xbff4, 0xbff5, 0xbff7, 0xbff8, 0xbffa, 0xbffb, 0xbffd, 0xbfff,
- 0xc000, 0xc000, 0xc000, 0xc000, 0xc001, 0xc001, 0xc002, 0xc002,
- 0xc003, 0xc004, 0xc005, 0xc005, 0xc006, 0xc007, 0xc008, 0xc009,
- 0xc00a, 0xc00b, 0xc00c, 0xc00e, 0xc00f, 0xc010, 0xc011, 0xc013,
- 0xc014, 0xc015, 0xc017, 0xc018, 0xc01a, 0xc01b, 0xc01d, 0xc01f,
- 0xc000, 0xc000, 0xc000, 0xc000, 0xc001, 0xc001, 0xc002, 0xc002,
- 0xc003, 0xc004, 0xc005, 0xc005, 0xc006, 0xc007, 0xc008, 0xc009,
- 0xc00a, 0xc00b, 0xc00c, 0xc00e, 0xc00f, 0xc010, 0xc011, 0xc013,
- 0xc014, 0xc015, 0xc017, 0xc018, 0xc01a, 0xc01b, 0xc01d, 0xc01f,
- 0xc000, 0xc000, 0xc000, 0xc000, 0xc001, 0xc001, 0xc002, 0xc002,
- 0xc003, 0xc004, 0xc005, 0xc005, 0xc006, 0xc007, 0xc008, 0xc009,
- 0xc00a, 0xc00b, 0xc00c, 0xc00e, 0xc00f, 0xc010, 0xc011, 0xc013,
- 0xc014, 0xc015, 0xc017, 0xc018, 0xc01a, 0xc01b, 0xc01d, 0xc01f,
- 0xc000, 0xc000, 0xc000, 0xc000, 0xc001, 0xc001, 0xc002, 0xc002,
- 0xc003, 0xc004, 0xc005, 0xc005, 0xc006, 0xc007, 0xc008, 0xc009,
- 0xc00a, 0xc00b, 0xc00c, 0xc00e, 0xc00f, 0xc010, 0xc011, 0xc013,
- 0xc014, 0xc015, 0xc017, 0xc018, 0xc01a, 0xc01b, 0xc01d, 0xc01f,
- 0xc000, 0xc000, 0xc000, 0xc000, 0xc001, 0xc001, 0xc002, 0xc002,
- 0xc003, 0xc004, 0xc005, 0xc005, 0xc006, 0xc007, 0xc008, 0xc009,
- 0xc00a, 0xc00b, 0xc00c, 0xc00e, 0xc00f, 0xc010, 0xc011, 0xc013,
- 0xc014, 0xc015, 0xc017, 0xc018, 0xc01a, 0xc01b, 0xc01d, 0xc01f,
- 0xc020, 0xc020, 0xc020, 0xc020, 0xc021, 0xc021, 0xc022, 0xc022,
- 0xc023, 0xc024, 0xc025, 0xc025, 0xc026, 0xc027, 0xc028, 0xc029,
- 0xc02a, 0xc02b, 0xc02c, 0xc02e, 0xc02f, 0xc030, 0xc031, 0xc033,
- 0xc034, 0xc035, 0xc037, 0xc038, 0xc03a, 0xc03b, 0xc03d, 0xc03f,
- 0xc020, 0xc020, 0xc020, 0xc020, 0xc021, 0xc021, 0xc022, 0xc022,
- 0xc023, 0xc024, 0xc025, 0xc025, 0xc026, 0xc027, 0xc028, 0xc029,
- 0xc02a, 0xc02b, 0xc02c, 0xc02e, 0xc02f, 0xc030, 0xc031, 0xc033,
- 0xc034, 0xc035, 0xc037, 0xc038, 0xc03a, 0xc03b, 0xc03d, 0xc03f,
- 0xc020, 0xc020, 0xc020, 0xc020, 0xc021, 0xc021, 0xc022, 0xc022,
- 0xc023, 0xc024, 0xc025, 0xc025, 0xc026, 0xc027, 0xc028, 0xc029,
- 0xc02a, 0xc02b, 0xc02c, 0xc02e, 0xc02f, 0xc030, 0xc031, 0xc033,
- 0xc034, 0xc035, 0xc037, 0xc038, 0xc03a, 0xc03b, 0xc03d, 0xc03f,
- 0xc040, 0xc040, 0xc040, 0xc040, 0xc041, 0xc041, 0xc042, 0xc042,
- 0xc043, 0xc044, 0xc045, 0xc045, 0xc046, 0xc047, 0xc048, 0xc049,
- 0xc04a, 0xc04b, 0xc04c, 0xc04e, 0xc04f, 0xc050, 0xc051, 0xc053,
- 0xc054, 0xc055, 0xc057, 0xc058, 0xc05a, 0xc05b, 0xc05d, 0xc05f,
- 0xc040, 0xc040, 0xc040, 0xc040, 0xc041, 0xc041, 0xc042, 0xc042,
- 0xc043, 0xc044, 0xc045, 0xc045, 0xc046, 0xc047, 0xc048, 0xc049,
- 0xc04a, 0xc04b, 0xc04c, 0xc04e, 0xc04f, 0xc050, 0xc051, 0xc053,
- 0xc054, 0xc055, 0xc057, 0xc058, 0xc05a, 0xc05b, 0xc05d, 0xc05f,
- 0xc060, 0xc060, 0xc060, 0xc060, 0xc061, 0xc061, 0xc062, 0xc062,
- 0xc063, 0xc064, 0xc065, 0xc065, 0xc066, 0xc067, 0xc068, 0xc069,
- 0xc06a, 0xc06b, 0xc06c, 0xc06e, 0xc06f, 0xc070, 0xc071, 0xc073,
- 0xc074, 0xc075, 0xc077, 0xc078, 0xc07a, 0xc07b, 0xc07d, 0xc07f,
- 0xc060, 0xc060, 0xc060, 0xc060, 0xc061, 0xc061, 0xc062, 0xc062,
- 0xc063, 0xc064, 0xc065, 0xc065, 0xc066, 0xc067, 0xc068, 0xc069,
- 0xc06a, 0xc06b, 0xc06c, 0xc06e, 0xc06f, 0xc070, 0xc071, 0xc073,
- 0xc074, 0xc075, 0xc077, 0xc078, 0xc07a, 0xc07b, 0xc07d, 0xc07f,
- 0xc080, 0xc080, 0xc080, 0xc080, 0xc081, 0xc081, 0xc082, 0xc082,
- 0xc083, 0xc084, 0xc085, 0xc085, 0xc086, 0xc087, 0xc088, 0xc089,
- 0xc08a, 0xc08b, 0xc08c, 0xc08e, 0xc08f, 0xc090, 0xc091, 0xc093,
- 0xc094, 0xc095, 0xc097, 0xc098, 0xc09a, 0xc09b, 0xc09d, 0xc09f,
- 0xc0a0, 0xc0a0, 0xc0a0, 0xc0a0, 0xc0a1, 0xc0a1, 0xc0a2, 0xc0a2,
- 0xc0a3, 0xc0a4, 0xc0a5, 0xc0a5, 0xc0a6, 0xc0a7, 0xc0a8, 0xc0a9,
- 0xc0aa, 0xc0ab, 0xc0ac, 0xc0ae, 0xc0af, 0xc0b0, 0xc0b1, 0xc0b3,
- 0xc0b4, 0xc0b5, 0xc0b7, 0xc0b8, 0xc0ba, 0xc0bb, 0xc0bd, 0xc0bf,
- 0xc0a0, 0xc0a0, 0xc0a0, 0xc0a0, 0xc0a1, 0xc0a1, 0xc0a2, 0xc0a2,
- 0xc0a3, 0xc0a4, 0xc0a5, 0xc0a5, 0xc0a6, 0xc0a7, 0xc0a8, 0xc0a9,
- 0xc0aa, 0xc0ab, 0xc0ac, 0xc0ae, 0xc0af, 0xc0b0, 0xc0b1, 0xc0b3,
- 0xc0b4, 0xc0b5, 0xc0b7, 0xc0b8, 0xc0ba, 0xc0bb, 0xc0bd, 0xc0bf,
- 0xc0c0, 0xc0c0, 0xc0c0, 0xc0c0, 0xc0c1, 0xc0c1, 0xc0c2, 0xc0c2,
- 0xc0c3, 0xc0c4, 0xc0c5, 0xc0c5, 0xc0c6, 0xc0c7, 0xc0c8, 0xc0c9,
- 0xc0ca, 0xc0cb, 0xc0cc, 0xc0ce, 0xc0cf, 0xc0d0, 0xc0d1, 0xc0d3,
- 0xc0d4, 0xc0d5, 0xc0d7, 0xc0d8, 0xc0da, 0xc0db, 0xc0dd, 0xc0df,
- 0xc0e0, 0xc0e0, 0xc0e0, 0xc0e0, 0xc0e1, 0xc0e1, 0xc0e2, 0xc0e2,
- 0xc0e3, 0xc0e4, 0xc0e5, 0xc0e5, 0xc0e6, 0xc0e7, 0xc0e8, 0xc0e9,
- 0xc0ea, 0xc0eb, 0xc0ec, 0xc0ee, 0xc0ef, 0xc0f0, 0xc0f1, 0xc0f3,
- 0xc0f4, 0xc0f5, 0xc0f7, 0xc0f8, 0xc0fa, 0xc0fb, 0xc0fd, 0xc0ff,
- 0xc0e0, 0xc0e0, 0xc0e0, 0xc0e0, 0xc0e1, 0xc0e1, 0xc0e2, 0xc0e2,
- 0xc0e3, 0xc0e4, 0xc0e5, 0xc0e5, 0xc0e6, 0xc0e7, 0xc0e8, 0xc0e9,
- 0xc0ea, 0xc0eb, 0xc0ec, 0xc0ee, 0xc0ef, 0xc0f0, 0xc0f1, 0xc0f3,
- 0xc0f4, 0xc0f5, 0xc0f7, 0xc0f8, 0xc0fa, 0xc0fb, 0xc0fd, 0xc0ff,
- 0xc100, 0xc100, 0xc100, 0xc100, 0xc101, 0xc101, 0xc102, 0xc102,
- 0xc103, 0xc104, 0xc105, 0xc105, 0xc106, 0xc107, 0xc108, 0xc109,
- 0xc10a, 0xc10b, 0xc10c, 0xc10e, 0xc10f, 0xc110, 0xc111, 0xc113,
- 0xc114, 0xc115, 0xc117, 0xc118, 0xc11a, 0xc11b, 0xc11d, 0xc11f,
- 0xc120, 0xc120, 0xc120, 0xc120, 0xc121, 0xc121, 0xc122, 0xc122,
- 0xc123, 0xc124, 0xc125, 0xc125, 0xc126, 0xc127, 0xc128, 0xc129,
- 0xc12a, 0xc12b, 0xc12c, 0xc12e, 0xc12f, 0xc130, 0xc131, 0xc133,
- 0xc134, 0xc135, 0xc137, 0xc138, 0xc13a, 0xc13b, 0xc13d, 0xc13f,
- 0xc140, 0xc140, 0xc140, 0xc140, 0xc141, 0xc141, 0xc142, 0xc142,
- 0xc143, 0xc144, 0xc145, 0xc145, 0xc146, 0xc147, 0xc148, 0xc149,
- 0xc14a, 0xc14b, 0xc14c, 0xc14e, 0xc14f, 0xc150, 0xc151, 0xc153,
- 0xc154, 0xc155, 0xc157, 0xc158, 0xc15a, 0xc15b, 0xc15d, 0xc15f,
- 0xc140, 0xc140, 0xc140, 0xc140, 0xc141, 0xc141, 0xc142, 0xc142,
- 0xc143, 0xc144, 0xc145, 0xc145, 0xc146, 0xc147, 0xc148, 0xc149,
- 0xc14a, 0xc14b, 0xc14c, 0xc14e, 0xc14f, 0xc150, 0xc151, 0xc153,
- 0xc154, 0xc155, 0xc157, 0xc158, 0xc15a, 0xc15b, 0xc15d, 0xc15f,
- 0xc160, 0xc160, 0xc160, 0xc160, 0xc161, 0xc161, 0xc162, 0xc162,
- 0xc163, 0xc164, 0xc165, 0xc165, 0xc166, 0xc167, 0xc168, 0xc169,
- 0xc16a, 0xc16b, 0xc16c, 0xc16e, 0xc16f, 0xc170, 0xc171, 0xc173,
- 0xc174, 0xc175, 0xc177, 0xc178, 0xc17a, 0xc17b, 0xc17d, 0xc17f,
- 0xc180, 0xc180, 0xc180, 0xc180, 0xc181, 0xc181, 0xc182, 0xc182,
- 0xc183, 0xc184, 0xc185, 0xc185, 0xc186, 0xc187, 0xc188, 0xc189,
- 0xc18a, 0xc18b, 0xc18c, 0xc18e, 0xc18f, 0xc190, 0xc191, 0xc193,
- 0xc194, 0xc195, 0xc197, 0xc198, 0xc19a, 0xc19b, 0xc19d, 0xc19f,
- 0xc1a0, 0xc1a0, 0xc1a0, 0xc1a0, 0xc1a1, 0xc1a1, 0xc1a2, 0xc1a2,
- 0xc1a3, 0xc1a4, 0xc1a5, 0xc1a5, 0xc1a6, 0xc1a7, 0xc1a8, 0xc1a9,
- 0xc1aa, 0xc1ab, 0xc1ac, 0xc1ae, 0xc1af, 0xc1b0, 0xc1b1, 0xc1b3,
- 0xc1b4, 0xc1b5, 0xc1b7, 0xc1b8, 0xc1ba, 0xc1bb, 0xc1bd, 0xc1bf,
- 0xc1c0, 0xc1c0, 0xc1c0, 0xc1c0, 0xc1c1, 0xc1c1, 0xc1c2, 0xc1c2,
- 0xc1c3, 0xc1c4, 0xc1c5, 0xc1c5, 0xc1c6, 0xc1c7, 0xc1c8, 0xc1c9,
- 0xc1ca, 0xc1cb, 0xc1cc, 0xc1ce, 0xc1cf, 0xc1d0, 0xc1d1, 0xc1d3,
- 0xc1d4, 0xc1d5, 0xc1d7, 0xc1d8, 0xc1da, 0xc1db, 0xc1dd, 0xc1df,
- 0xc1e0, 0xc1e0, 0xc1e0, 0xc1e0, 0xc1e1, 0xc1e1, 0xc1e2, 0xc1e2,
- 0xc1e3, 0xc1e4, 0xc1e5, 0xc1e5, 0xc1e6, 0xc1e7, 0xc1e8, 0xc1e9,
- 0xc1ea, 0xc1eb, 0xc1ec, 0xc1ee, 0xc1ef, 0xc1f0, 0xc1f1, 0xc1f3,
- 0xc1f4, 0xc1f5, 0xc1f7, 0xc1f8, 0xc1fa, 0xc1fb, 0xc1fd, 0xc1ff,
- 0xc200, 0xc200, 0xc200, 0xc200, 0xc201, 0xc201, 0xc202, 0xc202,
- 0xc203, 0xc204, 0xc205, 0xc205, 0xc206, 0xc207, 0xc208, 0xc209,
- 0xc20a, 0xc20b, 0xc20c, 0xc20e, 0xc20f, 0xc210, 0xc211, 0xc213,
- 0xc214, 0xc215, 0xc217, 0xc218, 0xc21a, 0xc21b, 0xc21d, 0xc21f,
- 0xc220, 0xc220, 0xc220, 0xc220, 0xc221, 0xc221, 0xc222, 0xc222,
- 0xc223, 0xc224, 0xc225, 0xc225, 0xc226, 0xc227, 0xc228, 0xc229,
- 0xc22a, 0xc22b, 0xc22c, 0xc22e, 0xc22f, 0xc230, 0xc231, 0xc233,
- 0xc234, 0xc235, 0xc237, 0xc238, 0xc23a, 0xc23b, 0xc23d, 0xc23f,
- 0xc240, 0xc240, 0xc240, 0xc240, 0xc241, 0xc241, 0xc242, 0xc242,
- 0xc243, 0xc244, 0xc245, 0xc245, 0xc246, 0xc247, 0xc248, 0xc249,
- 0xc24a, 0xc24b, 0xc24c, 0xc24e, 0xc24f, 0xc250, 0xc251, 0xc253,
- 0xc254, 0xc255, 0xc257, 0xc258, 0xc25a, 0xc25b, 0xc25d, 0xc25f,
- 0xc260, 0xc260, 0xc260, 0xc260, 0xc261, 0xc261, 0xc262, 0xc262,
- 0xc263, 0xc264, 0xc265, 0xc265, 0xc266, 0xc267, 0xc268, 0xc269,
- 0xc26a, 0xc26b, 0xc26c, 0xc26e, 0xc26f, 0xc270, 0xc271, 0xc273,
- 0xc274, 0xc275, 0xc277, 0xc278, 0xc27a, 0xc27b, 0xc27d, 0xc27f,
- 0xc280, 0xc280, 0xc280, 0xc280, 0xc281, 0xc281, 0xc282, 0xc282,
- 0xc283, 0xc284, 0xc285, 0xc285, 0xc286, 0xc287, 0xc288, 0xc289,
- 0xc28a, 0xc28b, 0xc28c, 0xc28e, 0xc28f, 0xc290, 0xc291, 0xc293,
- 0xc294, 0xc295, 0xc297, 0xc298, 0xc29a, 0xc29b, 0xc29d, 0xc29f,
- 0xc2a0, 0xc2a0, 0xc2a0, 0xc2a0, 0xc2a1, 0xc2a1, 0xc2a2, 0xc2a2,
- 0xc2a3, 0xc2a4, 0xc2a5, 0xc2a5, 0xc2a6, 0xc2a7, 0xc2a8, 0xc2a9,
- 0xc2aa, 0xc2ab, 0xc2ac, 0xc2ae, 0xc2af, 0xc2b0, 0xc2b1, 0xc2b3,
- 0xc2b4, 0xc2b5, 0xc2b7, 0xc2b8, 0xc2ba, 0xc2bb, 0xc2bd, 0xc2bf,
- 0xc2c0, 0xc2c0, 0xc2c0, 0xc2c0, 0xc2c1, 0xc2c1, 0xc2c2, 0xc2c2,
- 0xc2c3, 0xc2c4, 0xc2c5, 0xc2c5, 0xc2c6, 0xc2c7, 0xc2c8, 0xc2c9,
- 0xc2ca, 0xc2cb, 0xc2cc, 0xc2ce, 0xc2cf, 0xc2d0, 0xc2d1, 0xc2d3,
- 0xc2d4, 0xc2d5, 0xc2d7, 0xc2d8, 0xc2da, 0xc2db, 0xc2dd, 0xc2df,
- 0xc2e0, 0xc2e0, 0xc2e0, 0xc2e0, 0xc2e1, 0xc2e1, 0xc2e2, 0xc2e2,
- 0xc2e3, 0xc2e4, 0xc2e5, 0xc2e5, 0xc2e6, 0xc2e7, 0xc2e8, 0xc2e9,
- 0xc2ea, 0xc2eb, 0xc2ec, 0xc2ee, 0xc2ef, 0xc2f0, 0xc2f1, 0xc2f3,
- 0xc2f4, 0xc2f5, 0xc2f7, 0xc2f8, 0xc2fa, 0xc2fb, 0xc2fd, 0xc2ff,
- 0xc300, 0xc300, 0xc300, 0xc300, 0xc301, 0xc301, 0xc302, 0xc302,
- 0xc303, 0xc304, 0xc305, 0xc305, 0xc306, 0xc307, 0xc308, 0xc309,
- 0xc30a, 0xc30b, 0xc30c, 0xc30e, 0xc30f, 0xc310, 0xc311, 0xc313,
- 0xc314, 0xc315, 0xc317, 0xc318, 0xc31a, 0xc31b, 0xc31d, 0xc31f,
- 0xc320, 0xc320, 0xc320, 0xc320, 0xc321, 0xc321, 0xc322, 0xc322,
- 0xc323, 0xc324, 0xc325, 0xc325, 0xc326, 0xc327, 0xc328, 0xc329,
- 0xc32a, 0xc32b, 0xc32c, 0xc32e, 0xc32f, 0xc330, 0xc331, 0xc333,
- 0xc334, 0xc335, 0xc337, 0xc338, 0xc33a, 0xc33b, 0xc33d, 0xc33f,
- 0xc340, 0xc340, 0xc340, 0xc340, 0xc341, 0xc341, 0xc342, 0xc342,
- 0xc343, 0xc344, 0xc345, 0xc345, 0xc346, 0xc347, 0xc348, 0xc349,
- 0xc34a, 0xc34b, 0xc34c, 0xc34e, 0xc34f, 0xc350, 0xc351, 0xc353,
- 0xc354, 0xc355, 0xc357, 0xc358, 0xc35a, 0xc35b, 0xc35d, 0xc35f,
- 0xc380, 0xc380, 0xc380, 0xc380, 0xc381, 0xc381, 0xc382, 0xc382,
- 0xc383, 0xc384, 0xc385, 0xc385, 0xc386, 0xc387, 0xc388, 0xc389,
- 0xc38a, 0xc38b, 0xc38c, 0xc38e, 0xc38f, 0xc390, 0xc391, 0xc393,
- 0xc394, 0xc395, 0xc397, 0xc398, 0xc39a, 0xc39b, 0xc39d, 0xc39f,
- 0xc3a0, 0xc3a0, 0xc3a0, 0xc3a0, 0xc3a1, 0xc3a1, 0xc3a2, 0xc3a2,
- 0xc3a3, 0xc3a4, 0xc3a5, 0xc3a5, 0xc3a6, 0xc3a7, 0xc3a8, 0xc3a9,
- 0xc3aa, 0xc3ab, 0xc3ac, 0xc3ae, 0xc3af, 0xc3b0, 0xc3b1, 0xc3b3,
- 0xc3b4, 0xc3b5, 0xc3b7, 0xc3b8, 0xc3ba, 0xc3bb, 0xc3bd, 0xc3bf,
- 0xc3c0, 0xc3c0, 0xc3c0, 0xc3c0, 0xc3c1, 0xc3c1, 0xc3c2, 0xc3c2,
- 0xc3c3, 0xc3c4, 0xc3c5, 0xc3c5, 0xc3c6, 0xc3c7, 0xc3c8, 0xc3c9,
- 0xc3ca, 0xc3cb, 0xc3cc, 0xc3ce, 0xc3cf, 0xc3d0, 0xc3d1, 0xc3d3,
- 0xc3d4, 0xc3d5, 0xc3d7, 0xc3d8, 0xc3da, 0xc3db, 0xc3dd, 0xc3df,
- 0xc3e0, 0xc3e0, 0xc3e0, 0xc3e0, 0xc3e1, 0xc3e1, 0xc3e2, 0xc3e2,
- 0xc3e3, 0xc3e4, 0xc3e5, 0xc3e5, 0xc3e6, 0xc3e7, 0xc3e8, 0xc3e9,
- 0xc3ea, 0xc3eb, 0xc3ec, 0xc3ee, 0xc3ef, 0xc3f0, 0xc3f1, 0xc3f3,
- 0xc3f4, 0xc3f5, 0xc3f7, 0xc3f8, 0xc3fa, 0xc3fb, 0xc3fd, 0xc3ff,
- 0xc400, 0xc400, 0xc400, 0xc400, 0xc401, 0xc401, 0xc402, 0xc402,
- 0xc403, 0xc404, 0xc405, 0xc405, 0xc406, 0xc407, 0xc408, 0xc409,
- 0xc40a, 0xc40b, 0xc40c, 0xc40e, 0xc40f, 0xc410, 0xc411, 0xc413,
- 0xc414, 0xc415, 0xc417, 0xc418, 0xc41a, 0xc41b, 0xc41d, 0xc41f,
- 0xc440, 0xc440, 0xc440, 0xc440, 0xc441, 0xc441, 0xc442, 0xc442,
- 0xc443, 0xc444, 0xc445, 0xc445, 0xc446, 0xc447, 0xc448, 0xc449,
- 0xc44a, 0xc44b, 0xc44c, 0xc44e, 0xc44f, 0xc450, 0xc451, 0xc453,
- 0xc454, 0xc455, 0xc457, 0xc458, 0xc45a, 0xc45b, 0xc45d, 0xc45f,
- 0xc460, 0xc460, 0xc460, 0xc460, 0xc461, 0xc461, 0xc462, 0xc462,
- 0xc463, 0xc464, 0xc465, 0xc465, 0xc466, 0xc467, 0xc468, 0xc469,
- 0xc46a, 0xc46b, 0xc46c, 0xc46e, 0xc46f, 0xc470, 0xc471, 0xc473,
- 0xc474, 0xc475, 0xc477, 0xc478, 0xc47a, 0xc47b, 0xc47d, 0xc47f,
- 0xc480, 0xc480, 0xc480, 0xc480, 0xc481, 0xc481, 0xc482, 0xc482,
- 0xc483, 0xc484, 0xc485, 0xc485, 0xc486, 0xc487, 0xc488, 0xc489,
- 0xc48a, 0xc48b, 0xc48c, 0xc48e, 0xc48f, 0xc490, 0xc491, 0xc493,
- 0xc494, 0xc495, 0xc497, 0xc498, 0xc49a, 0xc49b, 0xc49d, 0xc49f,
- 0xc4c0, 0xc4c0, 0xc4c0, 0xc4c0, 0xc4c1, 0xc4c1, 0xc4c2, 0xc4c2,
- 0xc4c3, 0xc4c4, 0xc4c5, 0xc4c5, 0xc4c6, 0xc4c7, 0xc4c8, 0xc4c9,
- 0xc4ca, 0xc4cb, 0xc4cc, 0xc4ce, 0xc4cf, 0xc4d0, 0xc4d1, 0xc4d3,
- 0xc4d4, 0xc4d5, 0xc4d7, 0xc4d8, 0xc4da, 0xc4db, 0xc4dd, 0xc4df,
- 0xc4e0, 0xc4e0, 0xc4e0, 0xc4e0, 0xc4e1, 0xc4e1, 0xc4e2, 0xc4e2,
- 0xc4e3, 0xc4e4, 0xc4e5, 0xc4e5, 0xc4e6, 0xc4e7, 0xc4e8, 0xc4e9,
- 0xc4ea, 0xc4eb, 0xc4ec, 0xc4ee, 0xc4ef, 0xc4f0, 0xc4f1, 0xc4f3,
- 0xc4f4, 0xc4f5, 0xc4f7, 0xc4f8, 0xc4fa, 0xc4fb, 0xc4fd, 0xc4ff,
- 0xc500, 0xc500, 0xc500, 0xc500, 0xc501, 0xc501, 0xc502, 0xc502,
- 0xc503, 0xc504, 0xc505, 0xc505, 0xc506, 0xc507, 0xc508, 0xc509,
- 0xc50a, 0xc50b, 0xc50c, 0xc50e, 0xc50f, 0xc510, 0xc511, 0xc513,
- 0xc514, 0xc515, 0xc517, 0xc518, 0xc51a, 0xc51b, 0xc51d, 0xc51f,
- 0xc540, 0xc540, 0xc540, 0xc540, 0xc541, 0xc541, 0xc542, 0xc542,
- 0xc543, 0xc544, 0xc545, 0xc545, 0xc546, 0xc547, 0xc548, 0xc549,
- 0xc54a, 0xc54b, 0xc54c, 0xc54e, 0xc54f, 0xc550, 0xc551, 0xc553,
- 0xc554, 0xc555, 0xc557, 0xc558, 0xc55a, 0xc55b, 0xc55d, 0xc55f,
- 0xc560, 0xc560, 0xc560, 0xc560, 0xc561, 0xc561, 0xc562, 0xc562,
- 0xc563, 0xc564, 0xc565, 0xc565, 0xc566, 0xc567, 0xc568, 0xc569,
- 0xc56a, 0xc56b, 0xc56c, 0xc56e, 0xc56f, 0xc570, 0xc571, 0xc573,
- 0xc574, 0xc575, 0xc577, 0xc578, 0xc57a, 0xc57b, 0xc57d, 0xc57f,
- 0xc580, 0xc580, 0xc580, 0xc580, 0xc581, 0xc581, 0xc582, 0xc582,
- 0xc583, 0xc584, 0xc585, 0xc585, 0xc586, 0xc587, 0xc588, 0xc589,
- 0xc58a, 0xc58b, 0xc58c, 0xc58e, 0xc58f, 0xc590, 0xc591, 0xc593,
- 0xc594, 0xc595, 0xc597, 0xc598, 0xc59a, 0xc59b, 0xc59d, 0xc59f,
- 0xc5c0, 0xc5c0, 0xc5c0, 0xc5c0, 0xc5c1, 0xc5c1, 0xc5c2, 0xc5c2,
- 0xc5c3, 0xc5c4, 0xc5c5, 0xc5c5, 0xc5c6, 0xc5c7, 0xc5c8, 0xc5c9,
- 0xc5ca, 0xc5cb, 0xc5cc, 0xc5ce, 0xc5cf, 0xc5d0, 0xc5d1, 0xc5d3,
- 0xc5d4, 0xc5d5, 0xc5d7, 0xc5d8, 0xc5da, 0xc5db, 0xc5dd, 0xc5df,
- 0xc5e0, 0xc5e0, 0xc5e0, 0xc5e0, 0xc5e1, 0xc5e1, 0xc5e2, 0xc5e2,
- 0xc5e3, 0xc5e4, 0xc5e5, 0xc5e5, 0xc5e6, 0xc5e7, 0xc5e8, 0xc5e9,
- 0xc5ea, 0xc5eb, 0xc5ec, 0xc5ee, 0xc5ef, 0xc5f0, 0xc5f1, 0xc5f3,
- 0xc5f4, 0xc5f5, 0xc5f7, 0xc5f8, 0xc5fa, 0xc5fb, 0xc5fd, 0xc5ff,
- 0xc620, 0xc620, 0xc620, 0xc620, 0xc621, 0xc621, 0xc622, 0xc622,
- 0xc623, 0xc624, 0xc625, 0xc625, 0xc626, 0xc627, 0xc628, 0xc629,
- 0xc62a, 0xc62b, 0xc62c, 0xc62e, 0xc62f, 0xc630, 0xc631, 0xc633,
- 0xc634, 0xc635, 0xc637, 0xc638, 0xc63a, 0xc63b, 0xc63d, 0xc63f,
- 0xc640, 0xc640, 0xc640, 0xc640, 0xc641, 0xc641, 0xc642, 0xc642,
- 0xc643, 0xc644, 0xc645, 0xc645, 0xc646, 0xc647, 0xc648, 0xc649,
- 0xc64a, 0xc64b, 0xc64c, 0xc64e, 0xc64f, 0xc650, 0xc651, 0xc653,
- 0xc654, 0xc655, 0xc657, 0xc658, 0xc65a, 0xc65b, 0xc65d, 0xc65f,
- 0xc680, 0xc680, 0xc680, 0xc680, 0xc681, 0xc681, 0xc682, 0xc682,
- 0xc683, 0xc684, 0xc685, 0xc685, 0xc686, 0xc687, 0xc688, 0xc689,
- 0xc68a, 0xc68b, 0xc68c, 0xc68e, 0xc68f, 0xc690, 0xc691, 0xc693,
- 0xc694, 0xc695, 0xc697, 0xc698, 0xc69a, 0xc69b, 0xc69d, 0xc69f,
- 0xc6a0, 0xc6a0, 0xc6a0, 0xc6a0, 0xc6a1, 0xc6a1, 0xc6a2, 0xc6a2,
- 0xc6a3, 0xc6a4, 0xc6a5, 0xc6a5, 0xc6a6, 0xc6a7, 0xc6a8, 0xc6a9,
- 0xc6aa, 0xc6ab, 0xc6ac, 0xc6ae, 0xc6af, 0xc6b0, 0xc6b1, 0xc6b3,
- 0xc6b4, 0xc6b5, 0xc6b7, 0xc6b8, 0xc6ba, 0xc6bb, 0xc6bd, 0xc6bf,
- 0xc6e0, 0xc6e0, 0xc6e0, 0xc6e0, 0xc6e1, 0xc6e1, 0xc6e2, 0xc6e2,
- 0xc6e3, 0xc6e4, 0xc6e5, 0xc6e5, 0xc6e6, 0xc6e7, 0xc6e8, 0xc6e9,
- 0xc6ea, 0xc6eb, 0xc6ec, 0xc6ee, 0xc6ef, 0xc6f0, 0xc6f1, 0xc6f3,
- 0xc6f4, 0xc6f5, 0xc6f7, 0xc6f8, 0xc6fa, 0xc6fb, 0xc6fd, 0xc6ff,
- 0xc700, 0xc700, 0xc700, 0xc700, 0xc701, 0xc701, 0xc702, 0xc702,
- 0xc703, 0xc704, 0xc705, 0xc705, 0xc706, 0xc707, 0xc708, 0xc709,
- 0xc70a, 0xc70b, 0xc70c, 0xc70e, 0xc70f, 0xc710, 0xc711, 0xc713,
- 0xc714, 0xc715, 0xc717, 0xc718, 0xc71a, 0xc71b, 0xc71d, 0xc71f,
- 0xc740, 0xc740, 0xc740, 0xc740, 0xc741, 0xc741, 0xc742, 0xc742,
- 0xc743, 0xc744, 0xc745, 0xc745, 0xc746, 0xc747, 0xc748, 0xc749,
- 0xc74a, 0xc74b, 0xc74c, 0xc74e, 0xc74f, 0xc750, 0xc751, 0xc753,
- 0xc754, 0xc755, 0xc757, 0xc758, 0xc75a, 0xc75b, 0xc75d, 0xc75f,
- 0xc760, 0xc760, 0xc760, 0xc760, 0xc761, 0xc761, 0xc762, 0xc762,
- 0xc763, 0xc764, 0xc765, 0xc765, 0xc766, 0xc767, 0xc768, 0xc769,
- 0xc76a, 0xc76b, 0xc76c, 0xc76e, 0xc76f, 0xc770, 0xc771, 0xc773,
- 0xc774, 0xc775, 0xc777, 0xc778, 0xc77a, 0xc77b, 0xc77d, 0xc77f,
- 0xc7a0, 0xc7a0, 0xc7a0, 0xc7a0, 0xc7a1, 0xc7a1, 0xc7a2, 0xc7a2,
- 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a5, 0xc7a6, 0xc7a7, 0xc7a8, 0xc7a9,
- 0xc7aa, 0xc7ab, 0xc7ac, 0xc7ae, 0xc7af, 0xc7b0, 0xc7b1, 0xc7b3,
- 0xc7b4, 0xc7b5, 0xc7b7, 0xc7b8, 0xc7ba, 0xc7bb, 0xc7bd, 0xc7bf,
- 0xc7e0, 0xc7e0, 0xc7e0, 0xc7e0, 0xc7e1, 0xc7e1, 0xc7e2, 0xc7e2,
- 0xc7e3, 0xc7e4, 0xc7e5, 0xc7e5, 0xc7e6, 0xc7e7, 0xc7e8, 0xc7e9,
- 0xc7ea, 0xc7eb, 0xc7ec, 0xc7ee, 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f3,
- 0xc7f4, 0xc7f5, 0xc7f7, 0xc7f8, 0xc7fa, 0xc7fb, 0xc7fd, 0xc7ff,
- 0xd000, 0xd000, 0xd000, 0xd000, 0xd001, 0xd001, 0xd002, 0xd002,
- 0xd003, 0xd004, 0xd005, 0xd005, 0xd006, 0xd007, 0xd008, 0xd009,
- 0xd00a, 0xd00b, 0xd00c, 0xd00e, 0xd00f, 0xd010, 0xd011, 0xd013,
- 0xd014, 0xd015, 0xd017, 0xd018, 0xd01a, 0xd01b, 0xd01d, 0xd01f,
- 0xd000, 0xd000, 0xd000, 0xd000, 0xd001, 0xd001, 0xd002, 0xd002,
- 0xd003, 0xd004, 0xd005, 0xd005, 0xd006, 0xd007, 0xd008, 0xd009,
- 0xd00a, 0xd00b, 0xd00c, 0xd00e, 0xd00f, 0xd010, 0xd011, 0xd013,
- 0xd014, 0xd015, 0xd017, 0xd018, 0xd01a, 0xd01b, 0xd01d, 0xd01f,
- 0xd000, 0xd000, 0xd000, 0xd000, 0xd001, 0xd001, 0xd002, 0xd002,
- 0xd003, 0xd004, 0xd005, 0xd005, 0xd006, 0xd007, 0xd008, 0xd009,
- 0xd00a, 0xd00b, 0xd00c, 0xd00e, 0xd00f, 0xd010, 0xd011, 0xd013,
- 0xd014, 0xd015, 0xd017, 0xd018, 0xd01a, 0xd01b, 0xd01d, 0xd01f,
- 0xd000, 0xd000, 0xd000, 0xd000, 0xd001, 0xd001, 0xd002, 0xd002,
- 0xd003, 0xd004, 0xd005, 0xd005, 0xd006, 0xd007, 0xd008, 0xd009,
- 0xd00a, 0xd00b, 0xd00c, 0xd00e, 0xd00f, 0xd010, 0xd011, 0xd013,
- 0xd014, 0xd015, 0xd017, 0xd018, 0xd01a, 0xd01b, 0xd01d, 0xd01f,
- 0xd000, 0xd000, 0xd000, 0xd000, 0xd001, 0xd001, 0xd002, 0xd002,
- 0xd003, 0xd004, 0xd005, 0xd005, 0xd006, 0xd007, 0xd008, 0xd009,
- 0xd00a, 0xd00b, 0xd00c, 0xd00e, 0xd00f, 0xd010, 0xd011, 0xd013,
- 0xd014, 0xd015, 0xd017, 0xd018, 0xd01a, 0xd01b, 0xd01d, 0xd01f,
- 0xd020, 0xd020, 0xd020, 0xd020, 0xd021, 0xd021, 0xd022, 0xd022,
- 0xd023, 0xd024, 0xd025, 0xd025, 0xd026, 0xd027, 0xd028, 0xd029,
- 0xd02a, 0xd02b, 0xd02c, 0xd02e, 0xd02f, 0xd030, 0xd031, 0xd033,
- 0xd034, 0xd035, 0xd037, 0xd038, 0xd03a, 0xd03b, 0xd03d, 0xd03f,
- 0xd020, 0xd020, 0xd020, 0xd020, 0xd021, 0xd021, 0xd022, 0xd022,
- 0xd023, 0xd024, 0xd025, 0xd025, 0xd026, 0xd027, 0xd028, 0xd029,
- 0xd02a, 0xd02b, 0xd02c, 0xd02e, 0xd02f, 0xd030, 0xd031, 0xd033,
- 0xd034, 0xd035, 0xd037, 0xd038, 0xd03a, 0xd03b, 0xd03d, 0xd03f,
- 0xd020, 0xd020, 0xd020, 0xd020, 0xd021, 0xd021, 0xd022, 0xd022,
- 0xd023, 0xd024, 0xd025, 0xd025, 0xd026, 0xd027, 0xd028, 0xd029,
- 0xd02a, 0xd02b, 0xd02c, 0xd02e, 0xd02f, 0xd030, 0xd031, 0xd033,
- 0xd034, 0xd035, 0xd037, 0xd038, 0xd03a, 0xd03b, 0xd03d, 0xd03f,
- 0xd040, 0xd040, 0xd040, 0xd040, 0xd041, 0xd041, 0xd042, 0xd042,
- 0xd043, 0xd044, 0xd045, 0xd045, 0xd046, 0xd047, 0xd048, 0xd049,
- 0xd04a, 0xd04b, 0xd04c, 0xd04e, 0xd04f, 0xd050, 0xd051, 0xd053,
- 0xd054, 0xd055, 0xd057, 0xd058, 0xd05a, 0xd05b, 0xd05d, 0xd05f,
- 0xd040, 0xd040, 0xd040, 0xd040, 0xd041, 0xd041, 0xd042, 0xd042,
- 0xd043, 0xd044, 0xd045, 0xd045, 0xd046, 0xd047, 0xd048, 0xd049,
- 0xd04a, 0xd04b, 0xd04c, 0xd04e, 0xd04f, 0xd050, 0xd051, 0xd053,
- 0xd054, 0xd055, 0xd057, 0xd058, 0xd05a, 0xd05b, 0xd05d, 0xd05f,
- 0xd060, 0xd060, 0xd060, 0xd060, 0xd061, 0xd061, 0xd062, 0xd062,
- 0xd063, 0xd064, 0xd065, 0xd065, 0xd066, 0xd067, 0xd068, 0xd069,
- 0xd06a, 0xd06b, 0xd06c, 0xd06e, 0xd06f, 0xd070, 0xd071, 0xd073,
- 0xd074, 0xd075, 0xd077, 0xd078, 0xd07a, 0xd07b, 0xd07d, 0xd07f,
- 0xd060, 0xd060, 0xd060, 0xd060, 0xd061, 0xd061, 0xd062, 0xd062,
- 0xd063, 0xd064, 0xd065, 0xd065, 0xd066, 0xd067, 0xd068, 0xd069,
- 0xd06a, 0xd06b, 0xd06c, 0xd06e, 0xd06f, 0xd070, 0xd071, 0xd073,
- 0xd074, 0xd075, 0xd077, 0xd078, 0xd07a, 0xd07b, 0xd07d, 0xd07f,
- 0xd080, 0xd080, 0xd080, 0xd080, 0xd081, 0xd081, 0xd082, 0xd082,
- 0xd083, 0xd084, 0xd085, 0xd085, 0xd086, 0xd087, 0xd088, 0xd089,
- 0xd08a, 0xd08b, 0xd08c, 0xd08e, 0xd08f, 0xd090, 0xd091, 0xd093,
- 0xd094, 0xd095, 0xd097, 0xd098, 0xd09a, 0xd09b, 0xd09d, 0xd09f,
- 0xd0a0, 0xd0a0, 0xd0a0, 0xd0a0, 0xd0a1, 0xd0a1, 0xd0a2, 0xd0a2,
- 0xd0a3, 0xd0a4, 0xd0a5, 0xd0a5, 0xd0a6, 0xd0a7, 0xd0a8, 0xd0a9,
- 0xd0aa, 0xd0ab, 0xd0ac, 0xd0ae, 0xd0af, 0xd0b0, 0xd0b1, 0xd0b3,
- 0xd0b4, 0xd0b5, 0xd0b7, 0xd0b8, 0xd0ba, 0xd0bb, 0xd0bd, 0xd0bf,
- 0xd0a0, 0xd0a0, 0xd0a0, 0xd0a0, 0xd0a1, 0xd0a1, 0xd0a2, 0xd0a2,
- 0xd0a3, 0xd0a4, 0xd0a5, 0xd0a5, 0xd0a6, 0xd0a7, 0xd0a8, 0xd0a9,
- 0xd0aa, 0xd0ab, 0xd0ac, 0xd0ae, 0xd0af, 0xd0b0, 0xd0b1, 0xd0b3,
- 0xd0b4, 0xd0b5, 0xd0b7, 0xd0b8, 0xd0ba, 0xd0bb, 0xd0bd, 0xd0bf,
- 0xd0c0, 0xd0c0, 0xd0c0, 0xd0c0, 0xd0c1, 0xd0c1, 0xd0c2, 0xd0c2,
- 0xd0c3, 0xd0c4, 0xd0c5, 0xd0c5, 0xd0c6, 0xd0c7, 0xd0c8, 0xd0c9,
- 0xd0ca, 0xd0cb, 0xd0cc, 0xd0ce, 0xd0cf, 0xd0d0, 0xd0d1, 0xd0d3,
- 0xd0d4, 0xd0d5, 0xd0d7, 0xd0d8, 0xd0da, 0xd0db, 0xd0dd, 0xd0df,
- 0xd0e0, 0xd0e0, 0xd0e0, 0xd0e0, 0xd0e1, 0xd0e1, 0xd0e2, 0xd0e2,
- 0xd0e3, 0xd0e4, 0xd0e5, 0xd0e5, 0xd0e6, 0xd0e7, 0xd0e8, 0xd0e9,
- 0xd0ea, 0xd0eb, 0xd0ec, 0xd0ee, 0xd0ef, 0xd0f0, 0xd0f1, 0xd0f3,
- 0xd0f4, 0xd0f5, 0xd0f7, 0xd0f8, 0xd0fa, 0xd0fb, 0xd0fd, 0xd0ff,
- 0xd0e0, 0xd0e0, 0xd0e0, 0xd0e0, 0xd0e1, 0xd0e1, 0xd0e2, 0xd0e2,
- 0xd0e3, 0xd0e4, 0xd0e5, 0xd0e5, 0xd0e6, 0xd0e7, 0xd0e8, 0xd0e9,
- 0xd0ea, 0xd0eb, 0xd0ec, 0xd0ee, 0xd0ef, 0xd0f0, 0xd0f1, 0xd0f3,
- 0xd0f4, 0xd0f5, 0xd0f7, 0xd0f8, 0xd0fa, 0xd0fb, 0xd0fd, 0xd0ff,
- 0xd100, 0xd100, 0xd100, 0xd100, 0xd101, 0xd101, 0xd102, 0xd102,
- 0xd103, 0xd104, 0xd105, 0xd105, 0xd106, 0xd107, 0xd108, 0xd109,
- 0xd10a, 0xd10b, 0xd10c, 0xd10e, 0xd10f, 0xd110, 0xd111, 0xd113,
- 0xd114, 0xd115, 0xd117, 0xd118, 0xd11a, 0xd11b, 0xd11d, 0xd11f,
- 0xd120, 0xd120, 0xd120, 0xd120, 0xd121, 0xd121, 0xd122, 0xd122,
- 0xd123, 0xd124, 0xd125, 0xd125, 0xd126, 0xd127, 0xd128, 0xd129,
- 0xd12a, 0xd12b, 0xd12c, 0xd12e, 0xd12f, 0xd130, 0xd131, 0xd133,
- 0xd134, 0xd135, 0xd137, 0xd138, 0xd13a, 0xd13b, 0xd13d, 0xd13f,
- 0xd140, 0xd140, 0xd140, 0xd140, 0xd141, 0xd141, 0xd142, 0xd142,
- 0xd143, 0xd144, 0xd145, 0xd145, 0xd146, 0xd147, 0xd148, 0xd149,
- 0xd14a, 0xd14b, 0xd14c, 0xd14e, 0xd14f, 0xd150, 0xd151, 0xd153,
- 0xd154, 0xd155, 0xd157, 0xd158, 0xd15a, 0xd15b, 0xd15d, 0xd15f,
- 0xd140, 0xd140, 0xd140, 0xd140, 0xd141, 0xd141, 0xd142, 0xd142,
- 0xd143, 0xd144, 0xd145, 0xd145, 0xd146, 0xd147, 0xd148, 0xd149,
- 0xd14a, 0xd14b, 0xd14c, 0xd14e, 0xd14f, 0xd150, 0xd151, 0xd153,
- 0xd154, 0xd155, 0xd157, 0xd158, 0xd15a, 0xd15b, 0xd15d, 0xd15f,
- 0xd160, 0xd160, 0xd160, 0xd160, 0xd161, 0xd161, 0xd162, 0xd162,
- 0xd163, 0xd164, 0xd165, 0xd165, 0xd166, 0xd167, 0xd168, 0xd169,
- 0xd16a, 0xd16b, 0xd16c, 0xd16e, 0xd16f, 0xd170, 0xd171, 0xd173,
- 0xd174, 0xd175, 0xd177, 0xd178, 0xd17a, 0xd17b, 0xd17d, 0xd17f,
- 0xd180, 0xd180, 0xd180, 0xd180, 0xd181, 0xd181, 0xd182, 0xd182,
- 0xd183, 0xd184, 0xd185, 0xd185, 0xd186, 0xd187, 0xd188, 0xd189,
- 0xd18a, 0xd18b, 0xd18c, 0xd18e, 0xd18f, 0xd190, 0xd191, 0xd193,
- 0xd194, 0xd195, 0xd197, 0xd198, 0xd19a, 0xd19b, 0xd19d, 0xd19f,
- 0xd1a0, 0xd1a0, 0xd1a0, 0xd1a0, 0xd1a1, 0xd1a1, 0xd1a2, 0xd1a2,
- 0xd1a3, 0xd1a4, 0xd1a5, 0xd1a5, 0xd1a6, 0xd1a7, 0xd1a8, 0xd1a9,
- 0xd1aa, 0xd1ab, 0xd1ac, 0xd1ae, 0xd1af, 0xd1b0, 0xd1b1, 0xd1b3,
- 0xd1b4, 0xd1b5, 0xd1b7, 0xd1b8, 0xd1ba, 0xd1bb, 0xd1bd, 0xd1bf,
- 0xd1c0, 0xd1c0, 0xd1c0, 0xd1c0, 0xd1c1, 0xd1c1, 0xd1c2, 0xd1c2,
- 0xd1c3, 0xd1c4, 0xd1c5, 0xd1c5, 0xd1c6, 0xd1c7, 0xd1c8, 0xd1c9,
- 0xd1ca, 0xd1cb, 0xd1cc, 0xd1ce, 0xd1cf, 0xd1d0, 0xd1d1, 0xd1d3,
- 0xd1d4, 0xd1d5, 0xd1d7, 0xd1d8, 0xd1da, 0xd1db, 0xd1dd, 0xd1df,
- 0xd1e0, 0xd1e0, 0xd1e0, 0xd1e0, 0xd1e1, 0xd1e1, 0xd1e2, 0xd1e2,
- 0xd1e3, 0xd1e4, 0xd1e5, 0xd1e5, 0xd1e6, 0xd1e7, 0xd1e8, 0xd1e9,
- 0xd1ea, 0xd1eb, 0xd1ec, 0xd1ee, 0xd1ef, 0xd1f0, 0xd1f1, 0xd1f3,
- 0xd1f4, 0xd1f5, 0xd1f7, 0xd1f8, 0xd1fa, 0xd1fb, 0xd1fd, 0xd1ff,
- 0xd200, 0xd200, 0xd200, 0xd200, 0xd201, 0xd201, 0xd202, 0xd202,
- 0xd203, 0xd204, 0xd205, 0xd205, 0xd206, 0xd207, 0xd208, 0xd209,
- 0xd20a, 0xd20b, 0xd20c, 0xd20e, 0xd20f, 0xd210, 0xd211, 0xd213,
- 0xd214, 0xd215, 0xd217, 0xd218, 0xd21a, 0xd21b, 0xd21d, 0xd21f,
- 0xd220, 0xd220, 0xd220, 0xd220, 0xd221, 0xd221, 0xd222, 0xd222,
- 0xd223, 0xd224, 0xd225, 0xd225, 0xd226, 0xd227, 0xd228, 0xd229,
- 0xd22a, 0xd22b, 0xd22c, 0xd22e, 0xd22f, 0xd230, 0xd231, 0xd233,
- 0xd234, 0xd235, 0xd237, 0xd238, 0xd23a, 0xd23b, 0xd23d, 0xd23f,
- 0xd240, 0xd240, 0xd240, 0xd240, 0xd241, 0xd241, 0xd242, 0xd242,
- 0xd243, 0xd244, 0xd245, 0xd245, 0xd246, 0xd247, 0xd248, 0xd249,
- 0xd24a, 0xd24b, 0xd24c, 0xd24e, 0xd24f, 0xd250, 0xd251, 0xd253,
- 0xd254, 0xd255, 0xd257, 0xd258, 0xd25a, 0xd25b, 0xd25d, 0xd25f,
- 0xd260, 0xd260, 0xd260, 0xd260, 0xd261, 0xd261, 0xd262, 0xd262,
- 0xd263, 0xd264, 0xd265, 0xd265, 0xd266, 0xd267, 0xd268, 0xd269,
- 0xd26a, 0xd26b, 0xd26c, 0xd26e, 0xd26f, 0xd270, 0xd271, 0xd273,
- 0xd274, 0xd275, 0xd277, 0xd278, 0xd27a, 0xd27b, 0xd27d, 0xd27f,
- 0xd280, 0xd280, 0xd280, 0xd280, 0xd281, 0xd281, 0xd282, 0xd282,
- 0xd283, 0xd284, 0xd285, 0xd285, 0xd286, 0xd287, 0xd288, 0xd289,
- 0xd28a, 0xd28b, 0xd28c, 0xd28e, 0xd28f, 0xd290, 0xd291, 0xd293,
- 0xd294, 0xd295, 0xd297, 0xd298, 0xd29a, 0xd29b, 0xd29d, 0xd29f,
- 0xd2a0, 0xd2a0, 0xd2a0, 0xd2a0, 0xd2a1, 0xd2a1, 0xd2a2, 0xd2a2,
- 0xd2a3, 0xd2a4, 0xd2a5, 0xd2a5, 0xd2a6, 0xd2a7, 0xd2a8, 0xd2a9,
- 0xd2aa, 0xd2ab, 0xd2ac, 0xd2ae, 0xd2af, 0xd2b0, 0xd2b1, 0xd2b3,
- 0xd2b4, 0xd2b5, 0xd2b7, 0xd2b8, 0xd2ba, 0xd2bb, 0xd2bd, 0xd2bf,
- 0xd2c0, 0xd2c0, 0xd2c0, 0xd2c0, 0xd2c1, 0xd2c1, 0xd2c2, 0xd2c2,
- 0xd2c3, 0xd2c4, 0xd2c5, 0xd2c5, 0xd2c6, 0xd2c7, 0xd2c8, 0xd2c9,
- 0xd2ca, 0xd2cb, 0xd2cc, 0xd2ce, 0xd2cf, 0xd2d0, 0xd2d1, 0xd2d3,
- 0xd2d4, 0xd2d5, 0xd2d7, 0xd2d8, 0xd2da, 0xd2db, 0xd2dd, 0xd2df,
- 0xd2e0, 0xd2e0, 0xd2e0, 0xd2e0, 0xd2e1, 0xd2e1, 0xd2e2, 0xd2e2,
- 0xd2e3, 0xd2e4, 0xd2e5, 0xd2e5, 0xd2e6, 0xd2e7, 0xd2e8, 0xd2e9,
- 0xd2ea, 0xd2eb, 0xd2ec, 0xd2ee, 0xd2ef, 0xd2f0, 0xd2f1, 0xd2f3,
- 0xd2f4, 0xd2f5, 0xd2f7, 0xd2f8, 0xd2fa, 0xd2fb, 0xd2fd, 0xd2ff,
- 0xd300, 0xd300, 0xd300, 0xd300, 0xd301, 0xd301, 0xd302, 0xd302,
- 0xd303, 0xd304, 0xd305, 0xd305, 0xd306, 0xd307, 0xd308, 0xd309,
- 0xd30a, 0xd30b, 0xd30c, 0xd30e, 0xd30f, 0xd310, 0xd311, 0xd313,
- 0xd314, 0xd315, 0xd317, 0xd318, 0xd31a, 0xd31b, 0xd31d, 0xd31f,
- 0xd320, 0xd320, 0xd320, 0xd320, 0xd321, 0xd321, 0xd322, 0xd322,
- 0xd323, 0xd324, 0xd325, 0xd325, 0xd326, 0xd327, 0xd328, 0xd329,
- 0xd32a, 0xd32b, 0xd32c, 0xd32e, 0xd32f, 0xd330, 0xd331, 0xd333,
- 0xd334, 0xd335, 0xd337, 0xd338, 0xd33a, 0xd33b, 0xd33d, 0xd33f,
- 0xd340, 0xd340, 0xd340, 0xd340, 0xd341, 0xd341, 0xd342, 0xd342,
- 0xd343, 0xd344, 0xd345, 0xd345, 0xd346, 0xd347, 0xd348, 0xd349,
- 0xd34a, 0xd34b, 0xd34c, 0xd34e, 0xd34f, 0xd350, 0xd351, 0xd353,
- 0xd354, 0xd355, 0xd357, 0xd358, 0xd35a, 0xd35b, 0xd35d, 0xd35f,
- 0xd380, 0xd380, 0xd380, 0xd380, 0xd381, 0xd381, 0xd382, 0xd382,
- 0xd383, 0xd384, 0xd385, 0xd385, 0xd386, 0xd387, 0xd388, 0xd389,
- 0xd38a, 0xd38b, 0xd38c, 0xd38e, 0xd38f, 0xd390, 0xd391, 0xd393,
- 0xd394, 0xd395, 0xd397, 0xd398, 0xd39a, 0xd39b, 0xd39d, 0xd39f,
- 0xd3a0, 0xd3a0, 0xd3a0, 0xd3a0, 0xd3a1, 0xd3a1, 0xd3a2, 0xd3a2,
- 0xd3a3, 0xd3a4, 0xd3a5, 0xd3a5, 0xd3a6, 0xd3a7, 0xd3a8, 0xd3a9,
- 0xd3aa, 0xd3ab, 0xd3ac, 0xd3ae, 0xd3af, 0xd3b0, 0xd3b1, 0xd3b3,
- 0xd3b4, 0xd3b5, 0xd3b7, 0xd3b8, 0xd3ba, 0xd3bb, 0xd3bd, 0xd3bf,
- 0xd3c0, 0xd3c0, 0xd3c0, 0xd3c0, 0xd3c1, 0xd3c1, 0xd3c2, 0xd3c2,
- 0xd3c3, 0xd3c4, 0xd3c5, 0xd3c5, 0xd3c6, 0xd3c7, 0xd3c8, 0xd3c9,
- 0xd3ca, 0xd3cb, 0xd3cc, 0xd3ce, 0xd3cf, 0xd3d0, 0xd3d1, 0xd3d3,
- 0xd3d4, 0xd3d5, 0xd3d7, 0xd3d8, 0xd3da, 0xd3db, 0xd3dd, 0xd3df,
- 0xd3e0, 0xd3e0, 0xd3e0, 0xd3e0, 0xd3e1, 0xd3e1, 0xd3e2, 0xd3e2,
- 0xd3e3, 0xd3e4, 0xd3e5, 0xd3e5, 0xd3e6, 0xd3e7, 0xd3e8, 0xd3e9,
- 0xd3ea, 0xd3eb, 0xd3ec, 0xd3ee, 0xd3ef, 0xd3f0, 0xd3f1, 0xd3f3,
- 0xd3f4, 0xd3f5, 0xd3f7, 0xd3f8, 0xd3fa, 0xd3fb, 0xd3fd, 0xd3ff,
- 0xd400, 0xd400, 0xd400, 0xd400, 0xd401, 0xd401, 0xd402, 0xd402,
- 0xd403, 0xd404, 0xd405, 0xd405, 0xd406, 0xd407, 0xd408, 0xd409,
- 0xd40a, 0xd40b, 0xd40c, 0xd40e, 0xd40f, 0xd410, 0xd411, 0xd413,
- 0xd414, 0xd415, 0xd417, 0xd418, 0xd41a, 0xd41b, 0xd41d, 0xd41f,
- 0xd440, 0xd440, 0xd440, 0xd440, 0xd441, 0xd441, 0xd442, 0xd442,
- 0xd443, 0xd444, 0xd445, 0xd445, 0xd446, 0xd447, 0xd448, 0xd449,
- 0xd44a, 0xd44b, 0xd44c, 0xd44e, 0xd44f, 0xd450, 0xd451, 0xd453,
- 0xd454, 0xd455, 0xd457, 0xd458, 0xd45a, 0xd45b, 0xd45d, 0xd45f,
- 0xd460, 0xd460, 0xd460, 0xd460, 0xd461, 0xd461, 0xd462, 0xd462,
- 0xd463, 0xd464, 0xd465, 0xd465, 0xd466, 0xd467, 0xd468, 0xd469,
- 0xd46a, 0xd46b, 0xd46c, 0xd46e, 0xd46f, 0xd470, 0xd471, 0xd473,
- 0xd474, 0xd475, 0xd477, 0xd478, 0xd47a, 0xd47b, 0xd47d, 0xd47f,
- 0xd480, 0xd480, 0xd480, 0xd480, 0xd481, 0xd481, 0xd482, 0xd482,
- 0xd483, 0xd484, 0xd485, 0xd485, 0xd486, 0xd487, 0xd488, 0xd489,
- 0xd48a, 0xd48b, 0xd48c, 0xd48e, 0xd48f, 0xd490, 0xd491, 0xd493,
- 0xd494, 0xd495, 0xd497, 0xd498, 0xd49a, 0xd49b, 0xd49d, 0xd49f,
- 0xd4c0, 0xd4c0, 0xd4c0, 0xd4c0, 0xd4c1, 0xd4c1, 0xd4c2, 0xd4c2,
- 0xd4c3, 0xd4c4, 0xd4c5, 0xd4c5, 0xd4c6, 0xd4c7, 0xd4c8, 0xd4c9,
- 0xd4ca, 0xd4cb, 0xd4cc, 0xd4ce, 0xd4cf, 0xd4d0, 0xd4d1, 0xd4d3,
- 0xd4d4, 0xd4d5, 0xd4d7, 0xd4d8, 0xd4da, 0xd4db, 0xd4dd, 0xd4df,
- 0xd4e0, 0xd4e0, 0xd4e0, 0xd4e0, 0xd4e1, 0xd4e1, 0xd4e2, 0xd4e2,
- 0xd4e3, 0xd4e4, 0xd4e5, 0xd4e5, 0xd4e6, 0xd4e7, 0xd4e8, 0xd4e9,
- 0xd4ea, 0xd4eb, 0xd4ec, 0xd4ee, 0xd4ef, 0xd4f0, 0xd4f1, 0xd4f3,
- 0xd4f4, 0xd4f5, 0xd4f7, 0xd4f8, 0xd4fa, 0xd4fb, 0xd4fd, 0xd4ff,
- 0xd500, 0xd500, 0xd500, 0xd500, 0xd501, 0xd501, 0xd502, 0xd502,
- 0xd503, 0xd504, 0xd505, 0xd505, 0xd506, 0xd507, 0xd508, 0xd509,
- 0xd50a, 0xd50b, 0xd50c, 0xd50e, 0xd50f, 0xd510, 0xd511, 0xd513,
- 0xd514, 0xd515, 0xd517, 0xd518, 0xd51a, 0xd51b, 0xd51d, 0xd51f,
- 0xd540, 0xd540, 0xd540, 0xd540, 0xd541, 0xd541, 0xd542, 0xd542,
- 0xd543, 0xd544, 0xd545, 0xd545, 0xd546, 0xd547, 0xd548, 0xd549,
- 0xd54a, 0xd54b, 0xd54c, 0xd54e, 0xd54f, 0xd550, 0xd551, 0xd553,
- 0xd554, 0xd555, 0xd557, 0xd558, 0xd55a, 0xd55b, 0xd55d, 0xd55f,
- 0xd560, 0xd560, 0xd560, 0xd560, 0xd561, 0xd561, 0xd562, 0xd562,
- 0xd563, 0xd564, 0xd565, 0xd565, 0xd566, 0xd567, 0xd568, 0xd569,
- 0xd56a, 0xd56b, 0xd56c, 0xd56e, 0xd56f, 0xd570, 0xd571, 0xd573,
- 0xd574, 0xd575, 0xd577, 0xd578, 0xd57a, 0xd57b, 0xd57d, 0xd57f,
- 0xd580, 0xd580, 0xd580, 0xd580, 0xd581, 0xd581, 0xd582, 0xd582,
- 0xd583, 0xd584, 0xd585, 0xd585, 0xd586, 0xd587, 0xd588, 0xd589,
- 0xd58a, 0xd58b, 0xd58c, 0xd58e, 0xd58f, 0xd590, 0xd591, 0xd593,
- 0xd594, 0xd595, 0xd597, 0xd598, 0xd59a, 0xd59b, 0xd59d, 0xd59f,
- 0xd5c0, 0xd5c0, 0xd5c0, 0xd5c0, 0xd5c1, 0xd5c1, 0xd5c2, 0xd5c2,
- 0xd5c3, 0xd5c4, 0xd5c5, 0xd5c5, 0xd5c6, 0xd5c7, 0xd5c8, 0xd5c9,
- 0xd5ca, 0xd5cb, 0xd5cc, 0xd5ce, 0xd5cf, 0xd5d0, 0xd5d1, 0xd5d3,
- 0xd5d4, 0xd5d5, 0xd5d7, 0xd5d8, 0xd5da, 0xd5db, 0xd5dd, 0xd5df,
- 0xd5e0, 0xd5e0, 0xd5e0, 0xd5e0, 0xd5e1, 0xd5e1, 0xd5e2, 0xd5e2,
- 0xd5e3, 0xd5e4, 0xd5e5, 0xd5e5, 0xd5e6, 0xd5e7, 0xd5e8, 0xd5e9,
- 0xd5ea, 0xd5eb, 0xd5ec, 0xd5ee, 0xd5ef, 0xd5f0, 0xd5f1, 0xd5f3,
- 0xd5f4, 0xd5f5, 0xd5f7, 0xd5f8, 0xd5fa, 0xd5fb, 0xd5fd, 0xd5ff,
- 0xd620, 0xd620, 0xd620, 0xd620, 0xd621, 0xd621, 0xd622, 0xd622,
- 0xd623, 0xd624, 0xd625, 0xd625, 0xd626, 0xd627, 0xd628, 0xd629,
- 0xd62a, 0xd62b, 0xd62c, 0xd62e, 0xd62f, 0xd630, 0xd631, 0xd633,
- 0xd634, 0xd635, 0xd637, 0xd638, 0xd63a, 0xd63b, 0xd63d, 0xd63f,
- 0xd640, 0xd640, 0xd640, 0xd640, 0xd641, 0xd641, 0xd642, 0xd642,
- 0xd643, 0xd644, 0xd645, 0xd645, 0xd646, 0xd647, 0xd648, 0xd649,
- 0xd64a, 0xd64b, 0xd64c, 0xd64e, 0xd64f, 0xd650, 0xd651, 0xd653,
- 0xd654, 0xd655, 0xd657, 0xd658, 0xd65a, 0xd65b, 0xd65d, 0xd65f,
- 0xd680, 0xd680, 0xd680, 0xd680, 0xd681, 0xd681, 0xd682, 0xd682,
- 0xd683, 0xd684, 0xd685, 0xd685, 0xd686, 0xd687, 0xd688, 0xd689,
- 0xd68a, 0xd68b, 0xd68c, 0xd68e, 0xd68f, 0xd690, 0xd691, 0xd693,
- 0xd694, 0xd695, 0xd697, 0xd698, 0xd69a, 0xd69b, 0xd69d, 0xd69f,
- 0xd6a0, 0xd6a0, 0xd6a0, 0xd6a0, 0xd6a1, 0xd6a1, 0xd6a2, 0xd6a2,
- 0xd6a3, 0xd6a4, 0xd6a5, 0xd6a5, 0xd6a6, 0xd6a7, 0xd6a8, 0xd6a9,
- 0xd6aa, 0xd6ab, 0xd6ac, 0xd6ae, 0xd6af, 0xd6b0, 0xd6b1, 0xd6b3,
- 0xd6b4, 0xd6b5, 0xd6b7, 0xd6b8, 0xd6ba, 0xd6bb, 0xd6bd, 0xd6bf,
- 0xd6e0, 0xd6e0, 0xd6e0, 0xd6e0, 0xd6e1, 0xd6e1, 0xd6e2, 0xd6e2,
- 0xd6e3, 0xd6e4, 0xd6e5, 0xd6e5, 0xd6e6, 0xd6e7, 0xd6e8, 0xd6e9,
- 0xd6ea, 0xd6eb, 0xd6ec, 0xd6ee, 0xd6ef, 0xd6f0, 0xd6f1, 0xd6f3,
- 0xd6f4, 0xd6f5, 0xd6f7, 0xd6f8, 0xd6fa, 0xd6fb, 0xd6fd, 0xd6ff,
- 0xd700, 0xd700, 0xd700, 0xd700, 0xd701, 0xd701, 0xd702, 0xd702,
- 0xd703, 0xd704, 0xd705, 0xd705, 0xd706, 0xd707, 0xd708, 0xd709,
- 0xd70a, 0xd70b, 0xd70c, 0xd70e, 0xd70f, 0xd710, 0xd711, 0xd713,
- 0xd714, 0xd715, 0xd717, 0xd718, 0xd71a, 0xd71b, 0xd71d, 0xd71f,
- 0xd740, 0xd740, 0xd740, 0xd740, 0xd741, 0xd741, 0xd742, 0xd742,
- 0xd743, 0xd744, 0xd745, 0xd745, 0xd746, 0xd747, 0xd748, 0xd749,
- 0xd74a, 0xd74b, 0xd74c, 0xd74e, 0xd74f, 0xd750, 0xd751, 0xd753,
- 0xd754, 0xd755, 0xd757, 0xd758, 0xd75a, 0xd75b, 0xd75d, 0xd75f,
- 0xd760, 0xd760, 0xd760, 0xd760, 0xd761, 0xd761, 0xd762, 0xd762,
- 0xd763, 0xd764, 0xd765, 0xd765, 0xd766, 0xd767, 0xd768, 0xd769,
- 0xd76a, 0xd76b, 0xd76c, 0xd76e, 0xd76f, 0xd770, 0xd771, 0xd773,
- 0xd774, 0xd775, 0xd777, 0xd778, 0xd77a, 0xd77b, 0xd77d, 0xd77f,
- 0xd7a0, 0xd7a0, 0xd7a0, 0xd7a0, 0xd7a1, 0xd7a1, 0xd7a2, 0xd7a2,
- 0xd7a3, 0xd7a4, 0xd7a5, 0xd7a5, 0xd7a6, 0xd7a7, 0xd7a8, 0xd7a9,
- 0xd7aa, 0xd7ab, 0xd7ac, 0xd7ae, 0xd7af, 0xd7b0, 0xd7b1, 0xd7b3,
- 0xd7b4, 0xd7b5, 0xd7b7, 0xd7b8, 0xd7ba, 0xd7bb, 0xd7bd, 0xd7bf,
- 0xd7e0, 0xd7e0, 0xd7e0, 0xd7e0, 0xd7e1, 0xd7e1, 0xd7e2, 0xd7e2,
- 0xd7e3, 0xd7e4, 0xd7e5, 0xd7e5, 0xd7e6, 0xd7e7, 0xd7e8, 0xd7e9,
- 0xd7ea, 0xd7eb, 0xd7ec, 0xd7ee, 0xd7ef, 0xd7f0, 0xd7f1, 0xd7f3,
- 0xd7f4, 0xd7f5, 0xd7f7, 0xd7f8, 0xd7fa, 0xd7fb, 0xd7fd, 0xd7ff,
- 0xd800, 0xd800, 0xd800, 0xd800, 0xd801, 0xd801, 0xd802, 0xd802,
- 0xd803, 0xd804, 0xd805, 0xd805, 0xd806, 0xd807, 0xd808, 0xd809,
- 0xd80a, 0xd80b, 0xd80c, 0xd80e, 0xd80f, 0xd810, 0xd811, 0xd813,
- 0xd814, 0xd815, 0xd817, 0xd818, 0xd81a, 0xd81b, 0xd81d, 0xd81f,
- 0xd800, 0xd800, 0xd800, 0xd800, 0xd801, 0xd801, 0xd802, 0xd802,
- 0xd803, 0xd804, 0xd805, 0xd805, 0xd806, 0xd807, 0xd808, 0xd809,
- 0xd80a, 0xd80b, 0xd80c, 0xd80e, 0xd80f, 0xd810, 0xd811, 0xd813,
- 0xd814, 0xd815, 0xd817, 0xd818, 0xd81a, 0xd81b, 0xd81d, 0xd81f,
- 0xd800, 0xd800, 0xd800, 0xd800, 0xd801, 0xd801, 0xd802, 0xd802,
- 0xd803, 0xd804, 0xd805, 0xd805, 0xd806, 0xd807, 0xd808, 0xd809,
- 0xd80a, 0xd80b, 0xd80c, 0xd80e, 0xd80f, 0xd810, 0xd811, 0xd813,
- 0xd814, 0xd815, 0xd817, 0xd818, 0xd81a, 0xd81b, 0xd81d, 0xd81f,
- 0xd800, 0xd800, 0xd800, 0xd800, 0xd801, 0xd801, 0xd802, 0xd802,
- 0xd803, 0xd804, 0xd805, 0xd805, 0xd806, 0xd807, 0xd808, 0xd809,
- 0xd80a, 0xd80b, 0xd80c, 0xd80e, 0xd80f, 0xd810, 0xd811, 0xd813,
- 0xd814, 0xd815, 0xd817, 0xd818, 0xd81a, 0xd81b, 0xd81d, 0xd81f,
- 0xd800, 0xd800, 0xd800, 0xd800, 0xd801, 0xd801, 0xd802, 0xd802,
- 0xd803, 0xd804, 0xd805, 0xd805, 0xd806, 0xd807, 0xd808, 0xd809,
- 0xd80a, 0xd80b, 0xd80c, 0xd80e, 0xd80f, 0xd810, 0xd811, 0xd813,
- 0xd814, 0xd815, 0xd817, 0xd818, 0xd81a, 0xd81b, 0xd81d, 0xd81f,
- 0xd820, 0xd820, 0xd820, 0xd820, 0xd821, 0xd821, 0xd822, 0xd822,
- 0xd823, 0xd824, 0xd825, 0xd825, 0xd826, 0xd827, 0xd828, 0xd829,
- 0xd82a, 0xd82b, 0xd82c, 0xd82e, 0xd82f, 0xd830, 0xd831, 0xd833,
- 0xd834, 0xd835, 0xd837, 0xd838, 0xd83a, 0xd83b, 0xd83d, 0xd83f,
- 0xd820, 0xd820, 0xd820, 0xd820, 0xd821, 0xd821, 0xd822, 0xd822,
- 0xd823, 0xd824, 0xd825, 0xd825, 0xd826, 0xd827, 0xd828, 0xd829,
- 0xd82a, 0xd82b, 0xd82c, 0xd82e, 0xd82f, 0xd830, 0xd831, 0xd833,
- 0xd834, 0xd835, 0xd837, 0xd838, 0xd83a, 0xd83b, 0xd83d, 0xd83f,
- 0xd820, 0xd820, 0xd820, 0xd820, 0xd821, 0xd821, 0xd822, 0xd822,
- 0xd823, 0xd824, 0xd825, 0xd825, 0xd826, 0xd827, 0xd828, 0xd829,
- 0xd82a, 0xd82b, 0xd82c, 0xd82e, 0xd82f, 0xd830, 0xd831, 0xd833,
- 0xd834, 0xd835, 0xd837, 0xd838, 0xd83a, 0xd83b, 0xd83d, 0xd83f,
- 0xd840, 0xd840, 0xd840, 0xd840, 0xd841, 0xd841, 0xd842, 0xd842,
- 0xd843, 0xd844, 0xd845, 0xd845, 0xd846, 0xd847, 0xd848, 0xd849,
- 0xd84a, 0xd84b, 0xd84c, 0xd84e, 0xd84f, 0xd850, 0xd851, 0xd853,
- 0xd854, 0xd855, 0xd857, 0xd858, 0xd85a, 0xd85b, 0xd85d, 0xd85f,
- 0xd840, 0xd840, 0xd840, 0xd840, 0xd841, 0xd841, 0xd842, 0xd842,
- 0xd843, 0xd844, 0xd845, 0xd845, 0xd846, 0xd847, 0xd848, 0xd849,
- 0xd84a, 0xd84b, 0xd84c, 0xd84e, 0xd84f, 0xd850, 0xd851, 0xd853,
- 0xd854, 0xd855, 0xd857, 0xd858, 0xd85a, 0xd85b, 0xd85d, 0xd85f,
- 0xd860, 0xd860, 0xd860, 0xd860, 0xd861, 0xd861, 0xd862, 0xd862,
- 0xd863, 0xd864, 0xd865, 0xd865, 0xd866, 0xd867, 0xd868, 0xd869,
- 0xd86a, 0xd86b, 0xd86c, 0xd86e, 0xd86f, 0xd870, 0xd871, 0xd873,
- 0xd874, 0xd875, 0xd877, 0xd878, 0xd87a, 0xd87b, 0xd87d, 0xd87f,
- 0xd860, 0xd860, 0xd860, 0xd860, 0xd861, 0xd861, 0xd862, 0xd862,
- 0xd863, 0xd864, 0xd865, 0xd865, 0xd866, 0xd867, 0xd868, 0xd869,
- 0xd86a, 0xd86b, 0xd86c, 0xd86e, 0xd86f, 0xd870, 0xd871, 0xd873,
- 0xd874, 0xd875, 0xd877, 0xd878, 0xd87a, 0xd87b, 0xd87d, 0xd87f,
- 0xd880, 0xd880, 0xd880, 0xd880, 0xd881, 0xd881, 0xd882, 0xd882,
- 0xd883, 0xd884, 0xd885, 0xd885, 0xd886, 0xd887, 0xd888, 0xd889,
- 0xd88a, 0xd88b, 0xd88c, 0xd88e, 0xd88f, 0xd890, 0xd891, 0xd893,
- 0xd894, 0xd895, 0xd897, 0xd898, 0xd89a, 0xd89b, 0xd89d, 0xd89f,
- 0xd8a0, 0xd8a0, 0xd8a0, 0xd8a0, 0xd8a1, 0xd8a1, 0xd8a2, 0xd8a2,
- 0xd8a3, 0xd8a4, 0xd8a5, 0xd8a5, 0xd8a6, 0xd8a7, 0xd8a8, 0xd8a9,
- 0xd8aa, 0xd8ab, 0xd8ac, 0xd8ae, 0xd8af, 0xd8b0, 0xd8b1, 0xd8b3,
- 0xd8b4, 0xd8b5, 0xd8b7, 0xd8b8, 0xd8ba, 0xd8bb, 0xd8bd, 0xd8bf,
- 0xd8a0, 0xd8a0, 0xd8a0, 0xd8a0, 0xd8a1, 0xd8a1, 0xd8a2, 0xd8a2,
- 0xd8a3, 0xd8a4, 0xd8a5, 0xd8a5, 0xd8a6, 0xd8a7, 0xd8a8, 0xd8a9,
- 0xd8aa, 0xd8ab, 0xd8ac, 0xd8ae, 0xd8af, 0xd8b0, 0xd8b1, 0xd8b3,
- 0xd8b4, 0xd8b5, 0xd8b7, 0xd8b8, 0xd8ba, 0xd8bb, 0xd8bd, 0xd8bf,
- 0xd8c0, 0xd8c0, 0xd8c0, 0xd8c0, 0xd8c1, 0xd8c1, 0xd8c2, 0xd8c2,
- 0xd8c3, 0xd8c4, 0xd8c5, 0xd8c5, 0xd8c6, 0xd8c7, 0xd8c8, 0xd8c9,
- 0xd8ca, 0xd8cb, 0xd8cc, 0xd8ce, 0xd8cf, 0xd8d0, 0xd8d1, 0xd8d3,
- 0xd8d4, 0xd8d5, 0xd8d7, 0xd8d8, 0xd8da, 0xd8db, 0xd8dd, 0xd8df,
- 0xd8e0, 0xd8e0, 0xd8e0, 0xd8e0, 0xd8e1, 0xd8e1, 0xd8e2, 0xd8e2,
- 0xd8e3, 0xd8e4, 0xd8e5, 0xd8e5, 0xd8e6, 0xd8e7, 0xd8e8, 0xd8e9,
- 0xd8ea, 0xd8eb, 0xd8ec, 0xd8ee, 0xd8ef, 0xd8f0, 0xd8f1, 0xd8f3,
- 0xd8f4, 0xd8f5, 0xd8f7, 0xd8f8, 0xd8fa, 0xd8fb, 0xd8fd, 0xd8ff,
- 0xd8e0, 0xd8e0, 0xd8e0, 0xd8e0, 0xd8e1, 0xd8e1, 0xd8e2, 0xd8e2,
- 0xd8e3, 0xd8e4, 0xd8e5, 0xd8e5, 0xd8e6, 0xd8e7, 0xd8e8, 0xd8e9,
- 0xd8ea, 0xd8eb, 0xd8ec, 0xd8ee, 0xd8ef, 0xd8f0, 0xd8f1, 0xd8f3,
- 0xd8f4, 0xd8f5, 0xd8f7, 0xd8f8, 0xd8fa, 0xd8fb, 0xd8fd, 0xd8ff,
- 0xd900, 0xd900, 0xd900, 0xd900, 0xd901, 0xd901, 0xd902, 0xd902,
- 0xd903, 0xd904, 0xd905, 0xd905, 0xd906, 0xd907, 0xd908, 0xd909,
- 0xd90a, 0xd90b, 0xd90c, 0xd90e, 0xd90f, 0xd910, 0xd911, 0xd913,
- 0xd914, 0xd915, 0xd917, 0xd918, 0xd91a, 0xd91b, 0xd91d, 0xd91f,
- 0xd920, 0xd920, 0xd920, 0xd920, 0xd921, 0xd921, 0xd922, 0xd922,
- 0xd923, 0xd924, 0xd925, 0xd925, 0xd926, 0xd927, 0xd928, 0xd929,
- 0xd92a, 0xd92b, 0xd92c, 0xd92e, 0xd92f, 0xd930, 0xd931, 0xd933,
- 0xd934, 0xd935, 0xd937, 0xd938, 0xd93a, 0xd93b, 0xd93d, 0xd93f,
- 0xd940, 0xd940, 0xd940, 0xd940, 0xd941, 0xd941, 0xd942, 0xd942,
- 0xd943, 0xd944, 0xd945, 0xd945, 0xd946, 0xd947, 0xd948, 0xd949,
- 0xd94a, 0xd94b, 0xd94c, 0xd94e, 0xd94f, 0xd950, 0xd951, 0xd953,
- 0xd954, 0xd955, 0xd957, 0xd958, 0xd95a, 0xd95b, 0xd95d, 0xd95f,
- 0xd940, 0xd940, 0xd940, 0xd940, 0xd941, 0xd941, 0xd942, 0xd942,
- 0xd943, 0xd944, 0xd945, 0xd945, 0xd946, 0xd947, 0xd948, 0xd949,
- 0xd94a, 0xd94b, 0xd94c, 0xd94e, 0xd94f, 0xd950, 0xd951, 0xd953,
- 0xd954, 0xd955, 0xd957, 0xd958, 0xd95a, 0xd95b, 0xd95d, 0xd95f,
- 0xd960, 0xd960, 0xd960, 0xd960, 0xd961, 0xd961, 0xd962, 0xd962,
- 0xd963, 0xd964, 0xd965, 0xd965, 0xd966, 0xd967, 0xd968, 0xd969,
- 0xd96a, 0xd96b, 0xd96c, 0xd96e, 0xd96f, 0xd970, 0xd971, 0xd973,
- 0xd974, 0xd975, 0xd977, 0xd978, 0xd97a, 0xd97b, 0xd97d, 0xd97f,
- 0xd980, 0xd980, 0xd980, 0xd980, 0xd981, 0xd981, 0xd982, 0xd982,
- 0xd983, 0xd984, 0xd985, 0xd985, 0xd986, 0xd987, 0xd988, 0xd989,
- 0xd98a, 0xd98b, 0xd98c, 0xd98e, 0xd98f, 0xd990, 0xd991, 0xd993,
- 0xd994, 0xd995, 0xd997, 0xd998, 0xd99a, 0xd99b, 0xd99d, 0xd99f,
- 0xd9a0, 0xd9a0, 0xd9a0, 0xd9a0, 0xd9a1, 0xd9a1, 0xd9a2, 0xd9a2,
- 0xd9a3, 0xd9a4, 0xd9a5, 0xd9a5, 0xd9a6, 0xd9a7, 0xd9a8, 0xd9a9,
- 0xd9aa, 0xd9ab, 0xd9ac, 0xd9ae, 0xd9af, 0xd9b0, 0xd9b1, 0xd9b3,
- 0xd9b4, 0xd9b5, 0xd9b7, 0xd9b8, 0xd9ba, 0xd9bb, 0xd9bd, 0xd9bf,
- 0xd9c0, 0xd9c0, 0xd9c0, 0xd9c0, 0xd9c1, 0xd9c1, 0xd9c2, 0xd9c2,
- 0xd9c3, 0xd9c4, 0xd9c5, 0xd9c5, 0xd9c6, 0xd9c7, 0xd9c8, 0xd9c9,
- 0xd9ca, 0xd9cb, 0xd9cc, 0xd9ce, 0xd9cf, 0xd9d0, 0xd9d1, 0xd9d3,
- 0xd9d4, 0xd9d5, 0xd9d7, 0xd9d8, 0xd9da, 0xd9db, 0xd9dd, 0xd9df,
- 0xd9e0, 0xd9e0, 0xd9e0, 0xd9e0, 0xd9e1, 0xd9e1, 0xd9e2, 0xd9e2,
- 0xd9e3, 0xd9e4, 0xd9e5, 0xd9e5, 0xd9e6, 0xd9e7, 0xd9e8, 0xd9e9,
- 0xd9ea, 0xd9eb, 0xd9ec, 0xd9ee, 0xd9ef, 0xd9f0, 0xd9f1, 0xd9f3,
- 0xd9f4, 0xd9f5, 0xd9f7, 0xd9f8, 0xd9fa, 0xd9fb, 0xd9fd, 0xd9ff,
- 0xda00, 0xda00, 0xda00, 0xda00, 0xda01, 0xda01, 0xda02, 0xda02,
- 0xda03, 0xda04, 0xda05, 0xda05, 0xda06, 0xda07, 0xda08, 0xda09,
- 0xda0a, 0xda0b, 0xda0c, 0xda0e, 0xda0f, 0xda10, 0xda11, 0xda13,
- 0xda14, 0xda15, 0xda17, 0xda18, 0xda1a, 0xda1b, 0xda1d, 0xda1f,
- 0xda20, 0xda20, 0xda20, 0xda20, 0xda21, 0xda21, 0xda22, 0xda22,
- 0xda23, 0xda24, 0xda25, 0xda25, 0xda26, 0xda27, 0xda28, 0xda29,
- 0xda2a, 0xda2b, 0xda2c, 0xda2e, 0xda2f, 0xda30, 0xda31, 0xda33,
- 0xda34, 0xda35, 0xda37, 0xda38, 0xda3a, 0xda3b, 0xda3d, 0xda3f,
- 0xda40, 0xda40, 0xda40, 0xda40, 0xda41, 0xda41, 0xda42, 0xda42,
- 0xda43, 0xda44, 0xda45, 0xda45, 0xda46, 0xda47, 0xda48, 0xda49,
- 0xda4a, 0xda4b, 0xda4c, 0xda4e, 0xda4f, 0xda50, 0xda51, 0xda53,
- 0xda54, 0xda55, 0xda57, 0xda58, 0xda5a, 0xda5b, 0xda5d, 0xda5f,
- 0xda60, 0xda60, 0xda60, 0xda60, 0xda61, 0xda61, 0xda62, 0xda62,
- 0xda63, 0xda64, 0xda65, 0xda65, 0xda66, 0xda67, 0xda68, 0xda69,
- 0xda6a, 0xda6b, 0xda6c, 0xda6e, 0xda6f, 0xda70, 0xda71, 0xda73,
- 0xda74, 0xda75, 0xda77, 0xda78, 0xda7a, 0xda7b, 0xda7d, 0xda7f,
- 0xda80, 0xda80, 0xda80, 0xda80, 0xda81, 0xda81, 0xda82, 0xda82,
- 0xda83, 0xda84, 0xda85, 0xda85, 0xda86, 0xda87, 0xda88, 0xda89,
- 0xda8a, 0xda8b, 0xda8c, 0xda8e, 0xda8f, 0xda90, 0xda91, 0xda93,
- 0xda94, 0xda95, 0xda97, 0xda98, 0xda9a, 0xda9b, 0xda9d, 0xda9f,
- 0xdaa0, 0xdaa0, 0xdaa0, 0xdaa0, 0xdaa1, 0xdaa1, 0xdaa2, 0xdaa2,
- 0xdaa3, 0xdaa4, 0xdaa5, 0xdaa5, 0xdaa6, 0xdaa7, 0xdaa8, 0xdaa9,
- 0xdaaa, 0xdaab, 0xdaac, 0xdaae, 0xdaaf, 0xdab0, 0xdab1, 0xdab3,
- 0xdab4, 0xdab5, 0xdab7, 0xdab8, 0xdaba, 0xdabb, 0xdabd, 0xdabf,
- 0xdac0, 0xdac0, 0xdac0, 0xdac0, 0xdac1, 0xdac1, 0xdac2, 0xdac2,
- 0xdac3, 0xdac4, 0xdac5, 0xdac5, 0xdac6, 0xdac7, 0xdac8, 0xdac9,
- 0xdaca, 0xdacb, 0xdacc, 0xdace, 0xdacf, 0xdad0, 0xdad1, 0xdad3,
- 0xdad4, 0xdad5, 0xdad7, 0xdad8, 0xdada, 0xdadb, 0xdadd, 0xdadf,
- 0xdae0, 0xdae0, 0xdae0, 0xdae0, 0xdae1, 0xdae1, 0xdae2, 0xdae2,
- 0xdae3, 0xdae4, 0xdae5, 0xdae5, 0xdae6, 0xdae7, 0xdae8, 0xdae9,
- 0xdaea, 0xdaeb, 0xdaec, 0xdaee, 0xdaef, 0xdaf0, 0xdaf1, 0xdaf3,
- 0xdaf4, 0xdaf5, 0xdaf7, 0xdaf8, 0xdafa, 0xdafb, 0xdafd, 0xdaff,
- 0xdb00, 0xdb00, 0xdb00, 0xdb00, 0xdb01, 0xdb01, 0xdb02, 0xdb02,
- 0xdb03, 0xdb04, 0xdb05, 0xdb05, 0xdb06, 0xdb07, 0xdb08, 0xdb09,
- 0xdb0a, 0xdb0b, 0xdb0c, 0xdb0e, 0xdb0f, 0xdb10, 0xdb11, 0xdb13,
- 0xdb14, 0xdb15, 0xdb17, 0xdb18, 0xdb1a, 0xdb1b, 0xdb1d, 0xdb1f,
- 0xdb20, 0xdb20, 0xdb20, 0xdb20, 0xdb21, 0xdb21, 0xdb22, 0xdb22,
- 0xdb23, 0xdb24, 0xdb25, 0xdb25, 0xdb26, 0xdb27, 0xdb28, 0xdb29,
- 0xdb2a, 0xdb2b, 0xdb2c, 0xdb2e, 0xdb2f, 0xdb30, 0xdb31, 0xdb33,
- 0xdb34, 0xdb35, 0xdb37, 0xdb38, 0xdb3a, 0xdb3b, 0xdb3d, 0xdb3f,
- 0xdb40, 0xdb40, 0xdb40, 0xdb40, 0xdb41, 0xdb41, 0xdb42, 0xdb42,
- 0xdb43, 0xdb44, 0xdb45, 0xdb45, 0xdb46, 0xdb47, 0xdb48, 0xdb49,
- 0xdb4a, 0xdb4b, 0xdb4c, 0xdb4e, 0xdb4f, 0xdb50, 0xdb51, 0xdb53,
- 0xdb54, 0xdb55, 0xdb57, 0xdb58, 0xdb5a, 0xdb5b, 0xdb5d, 0xdb5f,
- 0xdb80, 0xdb80, 0xdb80, 0xdb80, 0xdb81, 0xdb81, 0xdb82, 0xdb82,
- 0xdb83, 0xdb84, 0xdb85, 0xdb85, 0xdb86, 0xdb87, 0xdb88, 0xdb89,
- 0xdb8a, 0xdb8b, 0xdb8c, 0xdb8e, 0xdb8f, 0xdb90, 0xdb91, 0xdb93,
- 0xdb94, 0xdb95, 0xdb97, 0xdb98, 0xdb9a, 0xdb9b, 0xdb9d, 0xdb9f,
- 0xdba0, 0xdba0, 0xdba0, 0xdba0, 0xdba1, 0xdba1, 0xdba2, 0xdba2,
- 0xdba3, 0xdba4, 0xdba5, 0xdba5, 0xdba6, 0xdba7, 0xdba8, 0xdba9,
- 0xdbaa, 0xdbab, 0xdbac, 0xdbae, 0xdbaf, 0xdbb0, 0xdbb1, 0xdbb3,
- 0xdbb4, 0xdbb5, 0xdbb7, 0xdbb8, 0xdbba, 0xdbbb, 0xdbbd, 0xdbbf,
- 0xdbc0, 0xdbc0, 0xdbc0, 0xdbc0, 0xdbc1, 0xdbc1, 0xdbc2, 0xdbc2,
- 0xdbc3, 0xdbc4, 0xdbc5, 0xdbc5, 0xdbc6, 0xdbc7, 0xdbc8, 0xdbc9,
- 0xdbca, 0xdbcb, 0xdbcc, 0xdbce, 0xdbcf, 0xdbd0, 0xdbd1, 0xdbd3,
- 0xdbd4, 0xdbd5, 0xdbd7, 0xdbd8, 0xdbda, 0xdbdb, 0xdbdd, 0xdbdf,
- 0xdbe0, 0xdbe0, 0xdbe0, 0xdbe0, 0xdbe1, 0xdbe1, 0xdbe2, 0xdbe2,
- 0xdbe3, 0xdbe4, 0xdbe5, 0xdbe5, 0xdbe6, 0xdbe7, 0xdbe8, 0xdbe9,
- 0xdbea, 0xdbeb, 0xdbec, 0xdbee, 0xdbef, 0xdbf0, 0xdbf1, 0xdbf3,
- 0xdbf4, 0xdbf5, 0xdbf7, 0xdbf8, 0xdbfa, 0xdbfb, 0xdbfd, 0xdbff,
- 0xdc00, 0xdc00, 0xdc00, 0xdc00, 0xdc01, 0xdc01, 0xdc02, 0xdc02,
- 0xdc03, 0xdc04, 0xdc05, 0xdc05, 0xdc06, 0xdc07, 0xdc08, 0xdc09,
- 0xdc0a, 0xdc0b, 0xdc0c, 0xdc0e, 0xdc0f, 0xdc10, 0xdc11, 0xdc13,
- 0xdc14, 0xdc15, 0xdc17, 0xdc18, 0xdc1a, 0xdc1b, 0xdc1d, 0xdc1f,
- 0xdc40, 0xdc40, 0xdc40, 0xdc40, 0xdc41, 0xdc41, 0xdc42, 0xdc42,
- 0xdc43, 0xdc44, 0xdc45, 0xdc45, 0xdc46, 0xdc47, 0xdc48, 0xdc49,
- 0xdc4a, 0xdc4b, 0xdc4c, 0xdc4e, 0xdc4f, 0xdc50, 0xdc51, 0xdc53,
- 0xdc54, 0xdc55, 0xdc57, 0xdc58, 0xdc5a, 0xdc5b, 0xdc5d, 0xdc5f,
- 0xdc60, 0xdc60, 0xdc60, 0xdc60, 0xdc61, 0xdc61, 0xdc62, 0xdc62,
- 0xdc63, 0xdc64, 0xdc65, 0xdc65, 0xdc66, 0xdc67, 0xdc68, 0xdc69,
- 0xdc6a, 0xdc6b, 0xdc6c, 0xdc6e, 0xdc6f, 0xdc70, 0xdc71, 0xdc73,
- 0xdc74, 0xdc75, 0xdc77, 0xdc78, 0xdc7a, 0xdc7b, 0xdc7d, 0xdc7f,
- 0xdc80, 0xdc80, 0xdc80, 0xdc80, 0xdc81, 0xdc81, 0xdc82, 0xdc82,
- 0xdc83, 0xdc84, 0xdc85, 0xdc85, 0xdc86, 0xdc87, 0xdc88, 0xdc89,
- 0xdc8a, 0xdc8b, 0xdc8c, 0xdc8e, 0xdc8f, 0xdc90, 0xdc91, 0xdc93,
- 0xdc94, 0xdc95, 0xdc97, 0xdc98, 0xdc9a, 0xdc9b, 0xdc9d, 0xdc9f,
- 0xdcc0, 0xdcc0, 0xdcc0, 0xdcc0, 0xdcc1, 0xdcc1, 0xdcc2, 0xdcc2,
- 0xdcc3, 0xdcc4, 0xdcc5, 0xdcc5, 0xdcc6, 0xdcc7, 0xdcc8, 0xdcc9,
- 0xdcca, 0xdccb, 0xdccc, 0xdcce, 0xdccf, 0xdcd0, 0xdcd1, 0xdcd3,
- 0xdcd4, 0xdcd5, 0xdcd7, 0xdcd8, 0xdcda, 0xdcdb, 0xdcdd, 0xdcdf,
- 0xdce0, 0xdce0, 0xdce0, 0xdce0, 0xdce1, 0xdce1, 0xdce2, 0xdce2,
- 0xdce3, 0xdce4, 0xdce5, 0xdce5, 0xdce6, 0xdce7, 0xdce8, 0xdce9,
- 0xdcea, 0xdceb, 0xdcec, 0xdcee, 0xdcef, 0xdcf0, 0xdcf1, 0xdcf3,
- 0xdcf4, 0xdcf5, 0xdcf7, 0xdcf8, 0xdcfa, 0xdcfb, 0xdcfd, 0xdcff,
- 0xdd00, 0xdd00, 0xdd00, 0xdd00, 0xdd01, 0xdd01, 0xdd02, 0xdd02,
- 0xdd03, 0xdd04, 0xdd05, 0xdd05, 0xdd06, 0xdd07, 0xdd08, 0xdd09,
- 0xdd0a, 0xdd0b, 0xdd0c, 0xdd0e, 0xdd0f, 0xdd10, 0xdd11, 0xdd13,
- 0xdd14, 0xdd15, 0xdd17, 0xdd18, 0xdd1a, 0xdd1b, 0xdd1d, 0xdd1f,
- 0xdd40, 0xdd40, 0xdd40, 0xdd40, 0xdd41, 0xdd41, 0xdd42, 0xdd42,
- 0xdd43, 0xdd44, 0xdd45, 0xdd45, 0xdd46, 0xdd47, 0xdd48, 0xdd49,
- 0xdd4a, 0xdd4b, 0xdd4c, 0xdd4e, 0xdd4f, 0xdd50, 0xdd51, 0xdd53,
- 0xdd54, 0xdd55, 0xdd57, 0xdd58, 0xdd5a, 0xdd5b, 0xdd5d, 0xdd5f,
- 0xdd60, 0xdd60, 0xdd60, 0xdd60, 0xdd61, 0xdd61, 0xdd62, 0xdd62,
- 0xdd63, 0xdd64, 0xdd65, 0xdd65, 0xdd66, 0xdd67, 0xdd68, 0xdd69,
- 0xdd6a, 0xdd6b, 0xdd6c, 0xdd6e, 0xdd6f, 0xdd70, 0xdd71, 0xdd73,
- 0xdd74, 0xdd75, 0xdd77, 0xdd78, 0xdd7a, 0xdd7b, 0xdd7d, 0xdd7f,
- 0xdd80, 0xdd80, 0xdd80, 0xdd80, 0xdd81, 0xdd81, 0xdd82, 0xdd82,
- 0xdd83, 0xdd84, 0xdd85, 0xdd85, 0xdd86, 0xdd87, 0xdd88, 0xdd89,
- 0xdd8a, 0xdd8b, 0xdd8c, 0xdd8e, 0xdd8f, 0xdd90, 0xdd91, 0xdd93,
- 0xdd94, 0xdd95, 0xdd97, 0xdd98, 0xdd9a, 0xdd9b, 0xdd9d, 0xdd9f,
- 0xddc0, 0xddc0, 0xddc0, 0xddc0, 0xddc1, 0xddc1, 0xddc2, 0xddc2,
- 0xddc3, 0xddc4, 0xddc5, 0xddc5, 0xddc6, 0xddc7, 0xddc8, 0xddc9,
- 0xddca, 0xddcb, 0xddcc, 0xddce, 0xddcf, 0xddd0, 0xddd1, 0xddd3,
- 0xddd4, 0xddd5, 0xddd7, 0xddd8, 0xddda, 0xdddb, 0xdddd, 0xdddf,
- 0xdde0, 0xdde0, 0xdde0, 0xdde0, 0xdde1, 0xdde1, 0xdde2, 0xdde2,
- 0xdde3, 0xdde4, 0xdde5, 0xdde5, 0xdde6, 0xdde7, 0xdde8, 0xdde9,
- 0xddea, 0xddeb, 0xddec, 0xddee, 0xddef, 0xddf0, 0xddf1, 0xddf3,
- 0xddf4, 0xddf5, 0xddf7, 0xddf8, 0xddfa, 0xddfb, 0xddfd, 0xddff,
- 0xde20, 0xde20, 0xde20, 0xde20, 0xde21, 0xde21, 0xde22, 0xde22,
- 0xde23, 0xde24, 0xde25, 0xde25, 0xde26, 0xde27, 0xde28, 0xde29,
- 0xde2a, 0xde2b, 0xde2c, 0xde2e, 0xde2f, 0xde30, 0xde31, 0xde33,
- 0xde34, 0xde35, 0xde37, 0xde38, 0xde3a, 0xde3b, 0xde3d, 0xde3f,
- 0xde40, 0xde40, 0xde40, 0xde40, 0xde41, 0xde41, 0xde42, 0xde42,
- 0xde43, 0xde44, 0xde45, 0xde45, 0xde46, 0xde47, 0xde48, 0xde49,
- 0xde4a, 0xde4b, 0xde4c, 0xde4e, 0xde4f, 0xde50, 0xde51, 0xde53,
- 0xde54, 0xde55, 0xde57, 0xde58, 0xde5a, 0xde5b, 0xde5d, 0xde5f,
- 0xde80, 0xde80, 0xde80, 0xde80, 0xde81, 0xde81, 0xde82, 0xde82,
- 0xde83, 0xde84, 0xde85, 0xde85, 0xde86, 0xde87, 0xde88, 0xde89,
- 0xde8a, 0xde8b, 0xde8c, 0xde8e, 0xde8f, 0xde90, 0xde91, 0xde93,
- 0xde94, 0xde95, 0xde97, 0xde98, 0xde9a, 0xde9b, 0xde9d, 0xde9f,
- 0xdea0, 0xdea0, 0xdea0, 0xdea0, 0xdea1, 0xdea1, 0xdea2, 0xdea2,
- 0xdea3, 0xdea4, 0xdea5, 0xdea5, 0xdea6, 0xdea7, 0xdea8, 0xdea9,
- 0xdeaa, 0xdeab, 0xdeac, 0xdeae, 0xdeaf, 0xdeb0, 0xdeb1, 0xdeb3,
- 0xdeb4, 0xdeb5, 0xdeb7, 0xdeb8, 0xdeba, 0xdebb, 0xdebd, 0xdebf,
- 0xdee0, 0xdee0, 0xdee0, 0xdee0, 0xdee1, 0xdee1, 0xdee2, 0xdee2,
- 0xdee3, 0xdee4, 0xdee5, 0xdee5, 0xdee6, 0xdee7, 0xdee8, 0xdee9,
- 0xdeea, 0xdeeb, 0xdeec, 0xdeee, 0xdeef, 0xdef0, 0xdef1, 0xdef3,
- 0xdef4, 0xdef5, 0xdef7, 0xdef8, 0xdefa, 0xdefb, 0xdefd, 0xdeff,
- 0xdf00, 0xdf00, 0xdf00, 0xdf00, 0xdf01, 0xdf01, 0xdf02, 0xdf02,
- 0xdf03, 0xdf04, 0xdf05, 0xdf05, 0xdf06, 0xdf07, 0xdf08, 0xdf09,
- 0xdf0a, 0xdf0b, 0xdf0c, 0xdf0e, 0xdf0f, 0xdf10, 0xdf11, 0xdf13,
- 0xdf14, 0xdf15, 0xdf17, 0xdf18, 0xdf1a, 0xdf1b, 0xdf1d, 0xdf1f,
- 0xdf40, 0xdf40, 0xdf40, 0xdf40, 0xdf41, 0xdf41, 0xdf42, 0xdf42,
- 0xdf43, 0xdf44, 0xdf45, 0xdf45, 0xdf46, 0xdf47, 0xdf48, 0xdf49,
- 0xdf4a, 0xdf4b, 0xdf4c, 0xdf4e, 0xdf4f, 0xdf50, 0xdf51, 0xdf53,
- 0xdf54, 0xdf55, 0xdf57, 0xdf58, 0xdf5a, 0xdf5b, 0xdf5d, 0xdf5f,
- 0xdf60, 0xdf60, 0xdf60, 0xdf60, 0xdf61, 0xdf61, 0xdf62, 0xdf62,
- 0xdf63, 0xdf64, 0xdf65, 0xdf65, 0xdf66, 0xdf67, 0xdf68, 0xdf69,
- 0xdf6a, 0xdf6b, 0xdf6c, 0xdf6e, 0xdf6f, 0xdf70, 0xdf71, 0xdf73,
- 0xdf74, 0xdf75, 0xdf77, 0xdf78, 0xdf7a, 0xdf7b, 0xdf7d, 0xdf7f,
- 0xdfa0, 0xdfa0, 0xdfa0, 0xdfa0, 0xdfa1, 0xdfa1, 0xdfa2, 0xdfa2,
- 0xdfa3, 0xdfa4, 0xdfa5, 0xdfa5, 0xdfa6, 0xdfa7, 0xdfa8, 0xdfa9,
- 0xdfaa, 0xdfab, 0xdfac, 0xdfae, 0xdfaf, 0xdfb0, 0xdfb1, 0xdfb3,
- 0xdfb4, 0xdfb5, 0xdfb7, 0xdfb8, 0xdfba, 0xdfbb, 0xdfbd, 0xdfbf,
- 0xdfe0, 0xdfe0, 0xdfe0, 0xdfe0, 0xdfe1, 0xdfe1, 0xdfe2, 0xdfe2,
- 0xdfe3, 0xdfe4, 0xdfe5, 0xdfe5, 0xdfe6, 0xdfe7, 0xdfe8, 0xdfe9,
- 0xdfea, 0xdfeb, 0xdfec, 0xdfee, 0xdfef, 0xdff0, 0xdff1, 0xdff3,
- 0xdff4, 0xdff5, 0xdff7, 0xdff8, 0xdffa, 0xdffb, 0xdffd, 0xdfff,
- 0xe800, 0xe800, 0xe800, 0xe800, 0xe801, 0xe801, 0xe802, 0xe802,
- 0xe803, 0xe804, 0xe805, 0xe805, 0xe806, 0xe807, 0xe808, 0xe809,
- 0xe80a, 0xe80b, 0xe80c, 0xe80e, 0xe80f, 0xe810, 0xe811, 0xe813,
- 0xe814, 0xe815, 0xe817, 0xe818, 0xe81a, 0xe81b, 0xe81d, 0xe81f,
- 0xe800, 0xe800, 0xe800, 0xe800, 0xe801, 0xe801, 0xe802, 0xe802,
- 0xe803, 0xe804, 0xe805, 0xe805, 0xe806, 0xe807, 0xe808, 0xe809,
- 0xe80a, 0xe80b, 0xe80c, 0xe80e, 0xe80f, 0xe810, 0xe811, 0xe813,
- 0xe814, 0xe815, 0xe817, 0xe818, 0xe81a, 0xe81b, 0xe81d, 0xe81f,
- 0xe800, 0xe800, 0xe800, 0xe800, 0xe801, 0xe801, 0xe802, 0xe802,
- 0xe803, 0xe804, 0xe805, 0xe805, 0xe806, 0xe807, 0xe808, 0xe809,
- 0xe80a, 0xe80b, 0xe80c, 0xe80e, 0xe80f, 0xe810, 0xe811, 0xe813,
- 0xe814, 0xe815, 0xe817, 0xe818, 0xe81a, 0xe81b, 0xe81d, 0xe81f,
- 0xe800, 0xe800, 0xe800, 0xe800, 0xe801, 0xe801, 0xe802, 0xe802,
- 0xe803, 0xe804, 0xe805, 0xe805, 0xe806, 0xe807, 0xe808, 0xe809,
- 0xe80a, 0xe80b, 0xe80c, 0xe80e, 0xe80f, 0xe810, 0xe811, 0xe813,
- 0xe814, 0xe815, 0xe817, 0xe818, 0xe81a, 0xe81b, 0xe81d, 0xe81f,
- 0xe800, 0xe800, 0xe800, 0xe800, 0xe801, 0xe801, 0xe802, 0xe802,
- 0xe803, 0xe804, 0xe805, 0xe805, 0xe806, 0xe807, 0xe808, 0xe809,
- 0xe80a, 0xe80b, 0xe80c, 0xe80e, 0xe80f, 0xe810, 0xe811, 0xe813,
- 0xe814, 0xe815, 0xe817, 0xe818, 0xe81a, 0xe81b, 0xe81d, 0xe81f,
- 0xe820, 0xe820, 0xe820, 0xe820, 0xe821, 0xe821, 0xe822, 0xe822,
- 0xe823, 0xe824, 0xe825, 0xe825, 0xe826, 0xe827, 0xe828, 0xe829,
- 0xe82a, 0xe82b, 0xe82c, 0xe82e, 0xe82f, 0xe830, 0xe831, 0xe833,
- 0xe834, 0xe835, 0xe837, 0xe838, 0xe83a, 0xe83b, 0xe83d, 0xe83f,
- 0xe820, 0xe820, 0xe820, 0xe820, 0xe821, 0xe821, 0xe822, 0xe822,
- 0xe823, 0xe824, 0xe825, 0xe825, 0xe826, 0xe827, 0xe828, 0xe829,
- 0xe82a, 0xe82b, 0xe82c, 0xe82e, 0xe82f, 0xe830, 0xe831, 0xe833,
- 0xe834, 0xe835, 0xe837, 0xe838, 0xe83a, 0xe83b, 0xe83d, 0xe83f,
- 0xe820, 0xe820, 0xe820, 0xe820, 0xe821, 0xe821, 0xe822, 0xe822,
- 0xe823, 0xe824, 0xe825, 0xe825, 0xe826, 0xe827, 0xe828, 0xe829,
- 0xe82a, 0xe82b, 0xe82c, 0xe82e, 0xe82f, 0xe830, 0xe831, 0xe833,
- 0xe834, 0xe835, 0xe837, 0xe838, 0xe83a, 0xe83b, 0xe83d, 0xe83f,
- 0xe840, 0xe840, 0xe840, 0xe840, 0xe841, 0xe841, 0xe842, 0xe842,
- 0xe843, 0xe844, 0xe845, 0xe845, 0xe846, 0xe847, 0xe848, 0xe849,
- 0xe84a, 0xe84b, 0xe84c, 0xe84e, 0xe84f, 0xe850, 0xe851, 0xe853,
- 0xe854, 0xe855, 0xe857, 0xe858, 0xe85a, 0xe85b, 0xe85d, 0xe85f,
- 0xe840, 0xe840, 0xe840, 0xe840, 0xe841, 0xe841, 0xe842, 0xe842,
- 0xe843, 0xe844, 0xe845, 0xe845, 0xe846, 0xe847, 0xe848, 0xe849,
- 0xe84a, 0xe84b, 0xe84c, 0xe84e, 0xe84f, 0xe850, 0xe851, 0xe853,
- 0xe854, 0xe855, 0xe857, 0xe858, 0xe85a, 0xe85b, 0xe85d, 0xe85f,
- 0xe860, 0xe860, 0xe860, 0xe860, 0xe861, 0xe861, 0xe862, 0xe862,
- 0xe863, 0xe864, 0xe865, 0xe865, 0xe866, 0xe867, 0xe868, 0xe869,
- 0xe86a, 0xe86b, 0xe86c, 0xe86e, 0xe86f, 0xe870, 0xe871, 0xe873,
- 0xe874, 0xe875, 0xe877, 0xe878, 0xe87a, 0xe87b, 0xe87d, 0xe87f,
- 0xe860, 0xe860, 0xe860, 0xe860, 0xe861, 0xe861, 0xe862, 0xe862,
- 0xe863, 0xe864, 0xe865, 0xe865, 0xe866, 0xe867, 0xe868, 0xe869,
- 0xe86a, 0xe86b, 0xe86c, 0xe86e, 0xe86f, 0xe870, 0xe871, 0xe873,
- 0xe874, 0xe875, 0xe877, 0xe878, 0xe87a, 0xe87b, 0xe87d, 0xe87f,
- 0xe880, 0xe880, 0xe880, 0xe880, 0xe881, 0xe881, 0xe882, 0xe882,
- 0xe883, 0xe884, 0xe885, 0xe885, 0xe886, 0xe887, 0xe888, 0xe889,
- 0xe88a, 0xe88b, 0xe88c, 0xe88e, 0xe88f, 0xe890, 0xe891, 0xe893,
- 0xe894, 0xe895, 0xe897, 0xe898, 0xe89a, 0xe89b, 0xe89d, 0xe89f,
- 0xe8a0, 0xe8a0, 0xe8a0, 0xe8a0, 0xe8a1, 0xe8a1, 0xe8a2, 0xe8a2,
- 0xe8a3, 0xe8a4, 0xe8a5, 0xe8a5, 0xe8a6, 0xe8a7, 0xe8a8, 0xe8a9,
- 0xe8aa, 0xe8ab, 0xe8ac, 0xe8ae, 0xe8af, 0xe8b0, 0xe8b1, 0xe8b3,
- 0xe8b4, 0xe8b5, 0xe8b7, 0xe8b8, 0xe8ba, 0xe8bb, 0xe8bd, 0xe8bf,
- 0xe8a0, 0xe8a0, 0xe8a0, 0xe8a0, 0xe8a1, 0xe8a1, 0xe8a2, 0xe8a2,
- 0xe8a3, 0xe8a4, 0xe8a5, 0xe8a5, 0xe8a6, 0xe8a7, 0xe8a8, 0xe8a9,
- 0xe8aa, 0xe8ab, 0xe8ac, 0xe8ae, 0xe8af, 0xe8b0, 0xe8b1, 0xe8b3,
- 0xe8b4, 0xe8b5, 0xe8b7, 0xe8b8, 0xe8ba, 0xe8bb, 0xe8bd, 0xe8bf,
- 0xe8c0, 0xe8c0, 0xe8c0, 0xe8c0, 0xe8c1, 0xe8c1, 0xe8c2, 0xe8c2,
- 0xe8c3, 0xe8c4, 0xe8c5, 0xe8c5, 0xe8c6, 0xe8c7, 0xe8c8, 0xe8c9,
- 0xe8ca, 0xe8cb, 0xe8cc, 0xe8ce, 0xe8cf, 0xe8d0, 0xe8d1, 0xe8d3,
- 0xe8d4, 0xe8d5, 0xe8d7, 0xe8d8, 0xe8da, 0xe8db, 0xe8dd, 0xe8df,
- 0xe8e0, 0xe8e0, 0xe8e0, 0xe8e0, 0xe8e1, 0xe8e1, 0xe8e2, 0xe8e2,
- 0xe8e3, 0xe8e4, 0xe8e5, 0xe8e5, 0xe8e6, 0xe8e7, 0xe8e8, 0xe8e9,
- 0xe8ea, 0xe8eb, 0xe8ec, 0xe8ee, 0xe8ef, 0xe8f0, 0xe8f1, 0xe8f3,
- 0xe8f4, 0xe8f5, 0xe8f7, 0xe8f8, 0xe8fa, 0xe8fb, 0xe8fd, 0xe8ff,
- 0xe8e0, 0xe8e0, 0xe8e0, 0xe8e0, 0xe8e1, 0xe8e1, 0xe8e2, 0xe8e2,
- 0xe8e3, 0xe8e4, 0xe8e5, 0xe8e5, 0xe8e6, 0xe8e7, 0xe8e8, 0xe8e9,
- 0xe8ea, 0xe8eb, 0xe8ec, 0xe8ee, 0xe8ef, 0xe8f0, 0xe8f1, 0xe8f3,
- 0xe8f4, 0xe8f5, 0xe8f7, 0xe8f8, 0xe8fa, 0xe8fb, 0xe8fd, 0xe8ff,
- 0xe900, 0xe900, 0xe900, 0xe900, 0xe901, 0xe901, 0xe902, 0xe902,
- 0xe903, 0xe904, 0xe905, 0xe905, 0xe906, 0xe907, 0xe908, 0xe909,
- 0xe90a, 0xe90b, 0xe90c, 0xe90e, 0xe90f, 0xe910, 0xe911, 0xe913,
- 0xe914, 0xe915, 0xe917, 0xe918, 0xe91a, 0xe91b, 0xe91d, 0xe91f,
- 0xe920, 0xe920, 0xe920, 0xe920, 0xe921, 0xe921, 0xe922, 0xe922,
- 0xe923, 0xe924, 0xe925, 0xe925, 0xe926, 0xe927, 0xe928, 0xe929,
- 0xe92a, 0xe92b, 0xe92c, 0xe92e, 0xe92f, 0xe930, 0xe931, 0xe933,
- 0xe934, 0xe935, 0xe937, 0xe938, 0xe93a, 0xe93b, 0xe93d, 0xe93f,
- 0xe940, 0xe940, 0xe940, 0xe940, 0xe941, 0xe941, 0xe942, 0xe942,
- 0xe943, 0xe944, 0xe945, 0xe945, 0xe946, 0xe947, 0xe948, 0xe949,
- 0xe94a, 0xe94b, 0xe94c, 0xe94e, 0xe94f, 0xe950, 0xe951, 0xe953,
- 0xe954, 0xe955, 0xe957, 0xe958, 0xe95a, 0xe95b, 0xe95d, 0xe95f,
- 0xe940, 0xe940, 0xe940, 0xe940, 0xe941, 0xe941, 0xe942, 0xe942,
- 0xe943, 0xe944, 0xe945, 0xe945, 0xe946, 0xe947, 0xe948, 0xe949,
- 0xe94a, 0xe94b, 0xe94c, 0xe94e, 0xe94f, 0xe950, 0xe951, 0xe953,
- 0xe954, 0xe955, 0xe957, 0xe958, 0xe95a, 0xe95b, 0xe95d, 0xe95f,
- 0xe960, 0xe960, 0xe960, 0xe960, 0xe961, 0xe961, 0xe962, 0xe962,
- 0xe963, 0xe964, 0xe965, 0xe965, 0xe966, 0xe967, 0xe968, 0xe969,
- 0xe96a, 0xe96b, 0xe96c, 0xe96e, 0xe96f, 0xe970, 0xe971, 0xe973,
- 0xe974, 0xe975, 0xe977, 0xe978, 0xe97a, 0xe97b, 0xe97d, 0xe97f,
- 0xe980, 0xe980, 0xe980, 0xe980, 0xe981, 0xe981, 0xe982, 0xe982,
- 0xe983, 0xe984, 0xe985, 0xe985, 0xe986, 0xe987, 0xe988, 0xe989,
- 0xe98a, 0xe98b, 0xe98c, 0xe98e, 0xe98f, 0xe990, 0xe991, 0xe993,
- 0xe994, 0xe995, 0xe997, 0xe998, 0xe99a, 0xe99b, 0xe99d, 0xe99f,
- 0xe9a0, 0xe9a0, 0xe9a0, 0xe9a0, 0xe9a1, 0xe9a1, 0xe9a2, 0xe9a2,
- 0xe9a3, 0xe9a4, 0xe9a5, 0xe9a5, 0xe9a6, 0xe9a7, 0xe9a8, 0xe9a9,
- 0xe9aa, 0xe9ab, 0xe9ac, 0xe9ae, 0xe9af, 0xe9b0, 0xe9b1, 0xe9b3,
- 0xe9b4, 0xe9b5, 0xe9b7, 0xe9b8, 0xe9ba, 0xe9bb, 0xe9bd, 0xe9bf,
- 0xe9c0, 0xe9c0, 0xe9c0, 0xe9c0, 0xe9c1, 0xe9c1, 0xe9c2, 0xe9c2,
- 0xe9c3, 0xe9c4, 0xe9c5, 0xe9c5, 0xe9c6, 0xe9c7, 0xe9c8, 0xe9c9,
- 0xe9ca, 0xe9cb, 0xe9cc, 0xe9ce, 0xe9cf, 0xe9d0, 0xe9d1, 0xe9d3,
- 0xe9d4, 0xe9d5, 0xe9d7, 0xe9d8, 0xe9da, 0xe9db, 0xe9dd, 0xe9df,
- 0xe9e0, 0xe9e0, 0xe9e0, 0xe9e0, 0xe9e1, 0xe9e1, 0xe9e2, 0xe9e2,
- 0xe9e3, 0xe9e4, 0xe9e5, 0xe9e5, 0xe9e6, 0xe9e7, 0xe9e8, 0xe9e9,
- 0xe9ea, 0xe9eb, 0xe9ec, 0xe9ee, 0xe9ef, 0xe9f0, 0xe9f1, 0xe9f3,
- 0xe9f4, 0xe9f5, 0xe9f7, 0xe9f8, 0xe9fa, 0xe9fb, 0xe9fd, 0xe9ff,
- 0xea00, 0xea00, 0xea00, 0xea00, 0xea01, 0xea01, 0xea02, 0xea02,
- 0xea03, 0xea04, 0xea05, 0xea05, 0xea06, 0xea07, 0xea08, 0xea09,
- 0xea0a, 0xea0b, 0xea0c, 0xea0e, 0xea0f, 0xea10, 0xea11, 0xea13,
- 0xea14, 0xea15, 0xea17, 0xea18, 0xea1a, 0xea1b, 0xea1d, 0xea1f,
- 0xea20, 0xea20, 0xea20, 0xea20, 0xea21, 0xea21, 0xea22, 0xea22,
- 0xea23, 0xea24, 0xea25, 0xea25, 0xea26, 0xea27, 0xea28, 0xea29,
- 0xea2a, 0xea2b, 0xea2c, 0xea2e, 0xea2f, 0xea30, 0xea31, 0xea33,
- 0xea34, 0xea35, 0xea37, 0xea38, 0xea3a, 0xea3b, 0xea3d, 0xea3f,
- 0xea40, 0xea40, 0xea40, 0xea40, 0xea41, 0xea41, 0xea42, 0xea42,
- 0xea43, 0xea44, 0xea45, 0xea45, 0xea46, 0xea47, 0xea48, 0xea49,
- 0xea4a, 0xea4b, 0xea4c, 0xea4e, 0xea4f, 0xea50, 0xea51, 0xea53,
- 0xea54, 0xea55, 0xea57, 0xea58, 0xea5a, 0xea5b, 0xea5d, 0xea5f,
- 0xea60, 0xea60, 0xea60, 0xea60, 0xea61, 0xea61, 0xea62, 0xea62,
- 0xea63, 0xea64, 0xea65, 0xea65, 0xea66, 0xea67, 0xea68, 0xea69,
- 0xea6a, 0xea6b, 0xea6c, 0xea6e, 0xea6f, 0xea70, 0xea71, 0xea73,
- 0xea74, 0xea75, 0xea77, 0xea78, 0xea7a, 0xea7b, 0xea7d, 0xea7f,
- 0xea80, 0xea80, 0xea80, 0xea80, 0xea81, 0xea81, 0xea82, 0xea82,
- 0xea83, 0xea84, 0xea85, 0xea85, 0xea86, 0xea87, 0xea88, 0xea89,
- 0xea8a, 0xea8b, 0xea8c, 0xea8e, 0xea8f, 0xea90, 0xea91, 0xea93,
- 0xea94, 0xea95, 0xea97, 0xea98, 0xea9a, 0xea9b, 0xea9d, 0xea9f,
- 0xeaa0, 0xeaa0, 0xeaa0, 0xeaa0, 0xeaa1, 0xeaa1, 0xeaa2, 0xeaa2,
- 0xeaa3, 0xeaa4, 0xeaa5, 0xeaa5, 0xeaa6, 0xeaa7, 0xeaa8, 0xeaa9,
- 0xeaaa, 0xeaab, 0xeaac, 0xeaae, 0xeaaf, 0xeab0, 0xeab1, 0xeab3,
- 0xeab4, 0xeab5, 0xeab7, 0xeab8, 0xeaba, 0xeabb, 0xeabd, 0xeabf,
- 0xeac0, 0xeac0, 0xeac0, 0xeac0, 0xeac1, 0xeac1, 0xeac2, 0xeac2,
- 0xeac3, 0xeac4, 0xeac5, 0xeac5, 0xeac6, 0xeac7, 0xeac8, 0xeac9,
- 0xeaca, 0xeacb, 0xeacc, 0xeace, 0xeacf, 0xead0, 0xead1, 0xead3,
- 0xead4, 0xead5, 0xead7, 0xead8, 0xeada, 0xeadb, 0xeadd, 0xeadf,
- 0xeae0, 0xeae0, 0xeae0, 0xeae0, 0xeae1, 0xeae1, 0xeae2, 0xeae2,
- 0xeae3, 0xeae4, 0xeae5, 0xeae5, 0xeae6, 0xeae7, 0xeae8, 0xeae9,
- 0xeaea, 0xeaeb, 0xeaec, 0xeaee, 0xeaef, 0xeaf0, 0xeaf1, 0xeaf3,
- 0xeaf4, 0xeaf5, 0xeaf7, 0xeaf8, 0xeafa, 0xeafb, 0xeafd, 0xeaff,
- 0xeb00, 0xeb00, 0xeb00, 0xeb00, 0xeb01, 0xeb01, 0xeb02, 0xeb02,
- 0xeb03, 0xeb04, 0xeb05, 0xeb05, 0xeb06, 0xeb07, 0xeb08, 0xeb09,
- 0xeb0a, 0xeb0b, 0xeb0c, 0xeb0e, 0xeb0f, 0xeb10, 0xeb11, 0xeb13,
- 0xeb14, 0xeb15, 0xeb17, 0xeb18, 0xeb1a, 0xeb1b, 0xeb1d, 0xeb1f,
- 0xeb20, 0xeb20, 0xeb20, 0xeb20, 0xeb21, 0xeb21, 0xeb22, 0xeb22,
- 0xeb23, 0xeb24, 0xeb25, 0xeb25, 0xeb26, 0xeb27, 0xeb28, 0xeb29,
- 0xeb2a, 0xeb2b, 0xeb2c, 0xeb2e, 0xeb2f, 0xeb30, 0xeb31, 0xeb33,
- 0xeb34, 0xeb35, 0xeb37, 0xeb38, 0xeb3a, 0xeb3b, 0xeb3d, 0xeb3f,
- 0xeb40, 0xeb40, 0xeb40, 0xeb40, 0xeb41, 0xeb41, 0xeb42, 0xeb42,
- 0xeb43, 0xeb44, 0xeb45, 0xeb45, 0xeb46, 0xeb47, 0xeb48, 0xeb49,
- 0xeb4a, 0xeb4b, 0xeb4c, 0xeb4e, 0xeb4f, 0xeb50, 0xeb51, 0xeb53,
- 0xeb54, 0xeb55, 0xeb57, 0xeb58, 0xeb5a, 0xeb5b, 0xeb5d, 0xeb5f,
- 0xeb80, 0xeb80, 0xeb80, 0xeb80, 0xeb81, 0xeb81, 0xeb82, 0xeb82,
- 0xeb83, 0xeb84, 0xeb85, 0xeb85, 0xeb86, 0xeb87, 0xeb88, 0xeb89,
- 0xeb8a, 0xeb8b, 0xeb8c, 0xeb8e, 0xeb8f, 0xeb90, 0xeb91, 0xeb93,
- 0xeb94, 0xeb95, 0xeb97, 0xeb98, 0xeb9a, 0xeb9b, 0xeb9d, 0xeb9f,
- 0xeba0, 0xeba0, 0xeba0, 0xeba0, 0xeba1, 0xeba1, 0xeba2, 0xeba2,
- 0xeba3, 0xeba4, 0xeba5, 0xeba5, 0xeba6, 0xeba7, 0xeba8, 0xeba9,
- 0xebaa, 0xebab, 0xebac, 0xebae, 0xebaf, 0xebb0, 0xebb1, 0xebb3,
- 0xebb4, 0xebb5, 0xebb7, 0xebb8, 0xebba, 0xebbb, 0xebbd, 0xebbf,
- 0xebc0, 0xebc0, 0xebc0, 0xebc0, 0xebc1, 0xebc1, 0xebc2, 0xebc2,
- 0xebc3, 0xebc4, 0xebc5, 0xebc5, 0xebc6, 0xebc7, 0xebc8, 0xebc9,
- 0xebca, 0xebcb, 0xebcc, 0xebce, 0xebcf, 0xebd0, 0xebd1, 0xebd3,
- 0xebd4, 0xebd5, 0xebd7, 0xebd8, 0xebda, 0xebdb, 0xebdd, 0xebdf,
- 0xebe0, 0xebe0, 0xebe0, 0xebe0, 0xebe1, 0xebe1, 0xebe2, 0xebe2,
- 0xebe3, 0xebe4, 0xebe5, 0xebe5, 0xebe6, 0xebe7, 0xebe8, 0xebe9,
- 0xebea, 0xebeb, 0xebec, 0xebee, 0xebef, 0xebf0, 0xebf1, 0xebf3,
- 0xebf4, 0xebf5, 0xebf7, 0xebf8, 0xebfa, 0xebfb, 0xebfd, 0xebff,
- 0xec00, 0xec00, 0xec00, 0xec00, 0xec01, 0xec01, 0xec02, 0xec02,
- 0xec03, 0xec04, 0xec05, 0xec05, 0xec06, 0xec07, 0xec08, 0xec09,
- 0xec0a, 0xec0b, 0xec0c, 0xec0e, 0xec0f, 0xec10, 0xec11, 0xec13,
- 0xec14, 0xec15, 0xec17, 0xec18, 0xec1a, 0xec1b, 0xec1d, 0xec1f,
- 0xec40, 0xec40, 0xec40, 0xec40, 0xec41, 0xec41, 0xec42, 0xec42,
- 0xec43, 0xec44, 0xec45, 0xec45, 0xec46, 0xec47, 0xec48, 0xec49,
- 0xec4a, 0xec4b, 0xec4c, 0xec4e, 0xec4f, 0xec50, 0xec51, 0xec53,
- 0xec54, 0xec55, 0xec57, 0xec58, 0xec5a, 0xec5b, 0xec5d, 0xec5f,
- 0xec60, 0xec60, 0xec60, 0xec60, 0xec61, 0xec61, 0xec62, 0xec62,
- 0xec63, 0xec64, 0xec65, 0xec65, 0xec66, 0xec67, 0xec68, 0xec69,
- 0xec6a, 0xec6b, 0xec6c, 0xec6e, 0xec6f, 0xec70, 0xec71, 0xec73,
- 0xec74, 0xec75, 0xec77, 0xec78, 0xec7a, 0xec7b, 0xec7d, 0xec7f,
- 0xec80, 0xec80, 0xec80, 0xec80, 0xec81, 0xec81, 0xec82, 0xec82,
- 0xec83, 0xec84, 0xec85, 0xec85, 0xec86, 0xec87, 0xec88, 0xec89,
- 0xec8a, 0xec8b, 0xec8c, 0xec8e, 0xec8f, 0xec90, 0xec91, 0xec93,
- 0xec94, 0xec95, 0xec97, 0xec98, 0xec9a, 0xec9b, 0xec9d, 0xec9f,
- 0xecc0, 0xecc0, 0xecc0, 0xecc0, 0xecc1, 0xecc1, 0xecc2, 0xecc2,
- 0xecc3, 0xecc4, 0xecc5, 0xecc5, 0xecc6, 0xecc7, 0xecc8, 0xecc9,
- 0xecca, 0xeccb, 0xeccc, 0xecce, 0xeccf, 0xecd0, 0xecd1, 0xecd3,
- 0xecd4, 0xecd5, 0xecd7, 0xecd8, 0xecda, 0xecdb, 0xecdd, 0xecdf,
- 0xece0, 0xece0, 0xece0, 0xece0, 0xece1, 0xece1, 0xece2, 0xece2,
- 0xece3, 0xece4, 0xece5, 0xece5, 0xece6, 0xece7, 0xece8, 0xece9,
- 0xecea, 0xeceb, 0xecec, 0xecee, 0xecef, 0xecf0, 0xecf1, 0xecf3,
- 0xecf4, 0xecf5, 0xecf7, 0xecf8, 0xecfa, 0xecfb, 0xecfd, 0xecff,
- 0xed00, 0xed00, 0xed00, 0xed00, 0xed01, 0xed01, 0xed02, 0xed02,
- 0xed03, 0xed04, 0xed05, 0xed05, 0xed06, 0xed07, 0xed08, 0xed09,
- 0xed0a, 0xed0b, 0xed0c, 0xed0e, 0xed0f, 0xed10, 0xed11, 0xed13,
- 0xed14, 0xed15, 0xed17, 0xed18, 0xed1a, 0xed1b, 0xed1d, 0xed1f,
- 0xed40, 0xed40, 0xed40, 0xed40, 0xed41, 0xed41, 0xed42, 0xed42,
- 0xed43, 0xed44, 0xed45, 0xed45, 0xed46, 0xed47, 0xed48, 0xed49,
- 0xed4a, 0xed4b, 0xed4c, 0xed4e, 0xed4f, 0xed50, 0xed51, 0xed53,
- 0xed54, 0xed55, 0xed57, 0xed58, 0xed5a, 0xed5b, 0xed5d, 0xed5f,
- 0xed60, 0xed60, 0xed60, 0xed60, 0xed61, 0xed61, 0xed62, 0xed62,
- 0xed63, 0xed64, 0xed65, 0xed65, 0xed66, 0xed67, 0xed68, 0xed69,
- 0xed6a, 0xed6b, 0xed6c, 0xed6e, 0xed6f, 0xed70, 0xed71, 0xed73,
- 0xed74, 0xed75, 0xed77, 0xed78, 0xed7a, 0xed7b, 0xed7d, 0xed7f,
- 0xed80, 0xed80, 0xed80, 0xed80, 0xed81, 0xed81, 0xed82, 0xed82,
- 0xed83, 0xed84, 0xed85, 0xed85, 0xed86, 0xed87, 0xed88, 0xed89,
- 0xed8a, 0xed8b, 0xed8c, 0xed8e, 0xed8f, 0xed90, 0xed91, 0xed93,
- 0xed94, 0xed95, 0xed97, 0xed98, 0xed9a, 0xed9b, 0xed9d, 0xed9f,
- 0xedc0, 0xedc0, 0xedc0, 0xedc0, 0xedc1, 0xedc1, 0xedc2, 0xedc2,
- 0xedc3, 0xedc4, 0xedc5, 0xedc5, 0xedc6, 0xedc7, 0xedc8, 0xedc9,
- 0xedca, 0xedcb, 0xedcc, 0xedce, 0xedcf, 0xedd0, 0xedd1, 0xedd3,
- 0xedd4, 0xedd5, 0xedd7, 0xedd8, 0xedda, 0xeddb, 0xeddd, 0xeddf,
- 0xede0, 0xede0, 0xede0, 0xede0, 0xede1, 0xede1, 0xede2, 0xede2,
- 0xede3, 0xede4, 0xede5, 0xede5, 0xede6, 0xede7, 0xede8, 0xede9,
- 0xedea, 0xedeb, 0xedec, 0xedee, 0xedef, 0xedf0, 0xedf1, 0xedf3,
- 0xedf4, 0xedf5, 0xedf7, 0xedf8, 0xedfa, 0xedfb, 0xedfd, 0xedff,
- 0xee20, 0xee20, 0xee20, 0xee20, 0xee21, 0xee21, 0xee22, 0xee22,
- 0xee23, 0xee24, 0xee25, 0xee25, 0xee26, 0xee27, 0xee28, 0xee29,
- 0xee2a, 0xee2b, 0xee2c, 0xee2e, 0xee2f, 0xee30, 0xee31, 0xee33,
- 0xee34, 0xee35, 0xee37, 0xee38, 0xee3a, 0xee3b, 0xee3d, 0xee3f,
- 0xee40, 0xee40, 0xee40, 0xee40, 0xee41, 0xee41, 0xee42, 0xee42,
- 0xee43, 0xee44, 0xee45, 0xee45, 0xee46, 0xee47, 0xee48, 0xee49,
- 0xee4a, 0xee4b, 0xee4c, 0xee4e, 0xee4f, 0xee50, 0xee51, 0xee53,
- 0xee54, 0xee55, 0xee57, 0xee58, 0xee5a, 0xee5b, 0xee5d, 0xee5f,
- 0xee80, 0xee80, 0xee80, 0xee80, 0xee81, 0xee81, 0xee82, 0xee82,
- 0xee83, 0xee84, 0xee85, 0xee85, 0xee86, 0xee87, 0xee88, 0xee89,
- 0xee8a, 0xee8b, 0xee8c, 0xee8e, 0xee8f, 0xee90, 0xee91, 0xee93,
- 0xee94, 0xee95, 0xee97, 0xee98, 0xee9a, 0xee9b, 0xee9d, 0xee9f,
- 0xeea0, 0xeea0, 0xeea0, 0xeea0, 0xeea1, 0xeea1, 0xeea2, 0xeea2,
- 0xeea3, 0xeea4, 0xeea5, 0xeea5, 0xeea6, 0xeea7, 0xeea8, 0xeea9,
- 0xeeaa, 0xeeab, 0xeeac, 0xeeae, 0xeeaf, 0xeeb0, 0xeeb1, 0xeeb3,
- 0xeeb4, 0xeeb5, 0xeeb7, 0xeeb8, 0xeeba, 0xeebb, 0xeebd, 0xeebf,
- 0xeee0, 0xeee0, 0xeee0, 0xeee0, 0xeee1, 0xeee1, 0xeee2, 0xeee2,
- 0xeee3, 0xeee4, 0xeee5, 0xeee5, 0xeee6, 0xeee7, 0xeee8, 0xeee9,
- 0xeeea, 0xeeeb, 0xeeec, 0xeeee, 0xeeef, 0xeef0, 0xeef1, 0xeef3,
- 0xeef4, 0xeef5, 0xeef7, 0xeef8, 0xeefa, 0xeefb, 0xeefd, 0xeeff,
- 0xef00, 0xef00, 0xef00, 0xef00, 0xef01, 0xef01, 0xef02, 0xef02,
- 0xef03, 0xef04, 0xef05, 0xef05, 0xef06, 0xef07, 0xef08, 0xef09,
- 0xef0a, 0xef0b, 0xef0c, 0xef0e, 0xef0f, 0xef10, 0xef11, 0xef13,
- 0xef14, 0xef15, 0xef17, 0xef18, 0xef1a, 0xef1b, 0xef1d, 0xef1f,
- 0xef40, 0xef40, 0xef40, 0xef40, 0xef41, 0xef41, 0xef42, 0xef42,
- 0xef43, 0xef44, 0xef45, 0xef45, 0xef46, 0xef47, 0xef48, 0xef49,
- 0xef4a, 0xef4b, 0xef4c, 0xef4e, 0xef4f, 0xef50, 0xef51, 0xef53,
- 0xef54, 0xef55, 0xef57, 0xef58, 0xef5a, 0xef5b, 0xef5d, 0xef5f,
- 0xef60, 0xef60, 0xef60, 0xef60, 0xef61, 0xef61, 0xef62, 0xef62,
- 0xef63, 0xef64, 0xef65, 0xef65, 0xef66, 0xef67, 0xef68, 0xef69,
- 0xef6a, 0xef6b, 0xef6c, 0xef6e, 0xef6f, 0xef70, 0xef71, 0xef73,
- 0xef74, 0xef75, 0xef77, 0xef78, 0xef7a, 0xef7b, 0xef7d, 0xef7f,
- 0xefa0, 0xefa0, 0xefa0, 0xefa0, 0xefa1, 0xefa1, 0xefa2, 0xefa2,
- 0xefa3, 0xefa4, 0xefa5, 0xefa5, 0xefa6, 0xefa7, 0xefa8, 0xefa9,
- 0xefaa, 0xefab, 0xefac, 0xefae, 0xefaf, 0xefb0, 0xefb1, 0xefb3,
- 0xefb4, 0xefb5, 0xefb7, 0xefb8, 0xefba, 0xefbb, 0xefbd, 0xefbf,
- 0xefe0, 0xefe0, 0xefe0, 0xefe0, 0xefe1, 0xefe1, 0xefe2, 0xefe2,
- 0xefe3, 0xefe4, 0xefe5, 0xefe5, 0xefe6, 0xefe7, 0xefe8, 0xefe9,
- 0xefea, 0xefeb, 0xefec, 0xefee, 0xefef, 0xeff0, 0xeff1, 0xeff3,
- 0xeff4, 0xeff5, 0xeff7, 0xeff8, 0xeffa, 0xeffb, 0xeffd, 0xefff,
- 0xf800, 0xf800, 0xf800, 0xf800, 0xf801, 0xf801, 0xf802, 0xf802,
- 0xf803, 0xf804, 0xf805, 0xf805, 0xf806, 0xf807, 0xf808, 0xf809,
- 0xf80a, 0xf80b, 0xf80c, 0xf80e, 0xf80f, 0xf810, 0xf811, 0xf813,
- 0xf814, 0xf815, 0xf817, 0xf818, 0xf81a, 0xf81b, 0xf81d, 0xf81f,
- 0xf800, 0xf800, 0xf800, 0xf800, 0xf801, 0xf801, 0xf802, 0xf802,
- 0xf803, 0xf804, 0xf805, 0xf805, 0xf806, 0xf807, 0xf808, 0xf809,
- 0xf80a, 0xf80b, 0xf80c, 0xf80e, 0xf80f, 0xf810, 0xf811, 0xf813,
- 0xf814, 0xf815, 0xf817, 0xf818, 0xf81a, 0xf81b, 0xf81d, 0xf81f,
- 0xf800, 0xf800, 0xf800, 0xf800, 0xf801, 0xf801, 0xf802, 0xf802,
- 0xf803, 0xf804, 0xf805, 0xf805, 0xf806, 0xf807, 0xf808, 0xf809,
- 0xf80a, 0xf80b, 0xf80c, 0xf80e, 0xf80f, 0xf810, 0xf811, 0xf813,
- 0xf814, 0xf815, 0xf817, 0xf818, 0xf81a, 0xf81b, 0xf81d, 0xf81f,
- 0xf800, 0xf800, 0xf800, 0xf800, 0xf801, 0xf801, 0xf802, 0xf802,
- 0xf803, 0xf804, 0xf805, 0xf805, 0xf806, 0xf807, 0xf808, 0xf809,
- 0xf80a, 0xf80b, 0xf80c, 0xf80e, 0xf80f, 0xf810, 0xf811, 0xf813,
- 0xf814, 0xf815, 0xf817, 0xf818, 0xf81a, 0xf81b, 0xf81d, 0xf81f,
- 0xf800, 0xf800, 0xf800, 0xf800, 0xf801, 0xf801, 0xf802, 0xf802,
- 0xf803, 0xf804, 0xf805, 0xf805, 0xf806, 0xf807, 0xf808, 0xf809,
- 0xf80a, 0xf80b, 0xf80c, 0xf80e, 0xf80f, 0xf810, 0xf811, 0xf813,
- 0xf814, 0xf815, 0xf817, 0xf818, 0xf81a, 0xf81b, 0xf81d, 0xf81f,
- 0xf820, 0xf820, 0xf820, 0xf820, 0xf821, 0xf821, 0xf822, 0xf822,
- 0xf823, 0xf824, 0xf825, 0xf825, 0xf826, 0xf827, 0xf828, 0xf829,
- 0xf82a, 0xf82b, 0xf82c, 0xf82e, 0xf82f, 0xf830, 0xf831, 0xf833,
- 0xf834, 0xf835, 0xf837, 0xf838, 0xf83a, 0xf83b, 0xf83d, 0xf83f,
- 0xf820, 0xf820, 0xf820, 0xf820, 0xf821, 0xf821, 0xf822, 0xf822,
- 0xf823, 0xf824, 0xf825, 0xf825, 0xf826, 0xf827, 0xf828, 0xf829,
- 0xf82a, 0xf82b, 0xf82c, 0xf82e, 0xf82f, 0xf830, 0xf831, 0xf833,
- 0xf834, 0xf835, 0xf837, 0xf838, 0xf83a, 0xf83b, 0xf83d, 0xf83f,
- 0xf820, 0xf820, 0xf820, 0xf820, 0xf821, 0xf821, 0xf822, 0xf822,
- 0xf823, 0xf824, 0xf825, 0xf825, 0xf826, 0xf827, 0xf828, 0xf829,
- 0xf82a, 0xf82b, 0xf82c, 0xf82e, 0xf82f, 0xf830, 0xf831, 0xf833,
- 0xf834, 0xf835, 0xf837, 0xf838, 0xf83a, 0xf83b, 0xf83d, 0xf83f,
- 0xf840, 0xf840, 0xf840, 0xf840, 0xf841, 0xf841, 0xf842, 0xf842,
- 0xf843, 0xf844, 0xf845, 0xf845, 0xf846, 0xf847, 0xf848, 0xf849,
- 0xf84a, 0xf84b, 0xf84c, 0xf84e, 0xf84f, 0xf850, 0xf851, 0xf853,
- 0xf854, 0xf855, 0xf857, 0xf858, 0xf85a, 0xf85b, 0xf85d, 0xf85f,
- 0xf840, 0xf840, 0xf840, 0xf840, 0xf841, 0xf841, 0xf842, 0xf842,
- 0xf843, 0xf844, 0xf845, 0xf845, 0xf846, 0xf847, 0xf848, 0xf849,
- 0xf84a, 0xf84b, 0xf84c, 0xf84e, 0xf84f, 0xf850, 0xf851, 0xf853,
- 0xf854, 0xf855, 0xf857, 0xf858, 0xf85a, 0xf85b, 0xf85d, 0xf85f,
- 0xf860, 0xf860, 0xf860, 0xf860, 0xf861, 0xf861, 0xf862, 0xf862,
- 0xf863, 0xf864, 0xf865, 0xf865, 0xf866, 0xf867, 0xf868, 0xf869,
- 0xf86a, 0xf86b, 0xf86c, 0xf86e, 0xf86f, 0xf870, 0xf871, 0xf873,
- 0xf874, 0xf875, 0xf877, 0xf878, 0xf87a, 0xf87b, 0xf87d, 0xf87f,
- 0xf860, 0xf860, 0xf860, 0xf860, 0xf861, 0xf861, 0xf862, 0xf862,
- 0xf863, 0xf864, 0xf865, 0xf865, 0xf866, 0xf867, 0xf868, 0xf869,
- 0xf86a, 0xf86b, 0xf86c, 0xf86e, 0xf86f, 0xf870, 0xf871, 0xf873,
- 0xf874, 0xf875, 0xf877, 0xf878, 0xf87a, 0xf87b, 0xf87d, 0xf87f,
- 0xf880, 0xf880, 0xf880, 0xf880, 0xf881, 0xf881, 0xf882, 0xf882,
- 0xf883, 0xf884, 0xf885, 0xf885, 0xf886, 0xf887, 0xf888, 0xf889,
- 0xf88a, 0xf88b, 0xf88c, 0xf88e, 0xf88f, 0xf890, 0xf891, 0xf893,
- 0xf894, 0xf895, 0xf897, 0xf898, 0xf89a, 0xf89b, 0xf89d, 0xf89f,
- 0xf8a0, 0xf8a0, 0xf8a0, 0xf8a0, 0xf8a1, 0xf8a1, 0xf8a2, 0xf8a2,
- 0xf8a3, 0xf8a4, 0xf8a5, 0xf8a5, 0xf8a6, 0xf8a7, 0xf8a8, 0xf8a9,
- 0xf8aa, 0xf8ab, 0xf8ac, 0xf8ae, 0xf8af, 0xf8b0, 0xf8b1, 0xf8b3,
- 0xf8b4, 0xf8b5, 0xf8b7, 0xf8b8, 0xf8ba, 0xf8bb, 0xf8bd, 0xf8bf,
- 0xf8a0, 0xf8a0, 0xf8a0, 0xf8a0, 0xf8a1, 0xf8a1, 0xf8a2, 0xf8a2,
- 0xf8a3, 0xf8a4, 0xf8a5, 0xf8a5, 0xf8a6, 0xf8a7, 0xf8a8, 0xf8a9,
- 0xf8aa, 0xf8ab, 0xf8ac, 0xf8ae, 0xf8af, 0xf8b0, 0xf8b1, 0xf8b3,
- 0xf8b4, 0xf8b5, 0xf8b7, 0xf8b8, 0xf8ba, 0xf8bb, 0xf8bd, 0xf8bf,
- 0xf8c0, 0xf8c0, 0xf8c0, 0xf8c0, 0xf8c1, 0xf8c1, 0xf8c2, 0xf8c2,
- 0xf8c3, 0xf8c4, 0xf8c5, 0xf8c5, 0xf8c6, 0xf8c7, 0xf8c8, 0xf8c9,
- 0xf8ca, 0xf8cb, 0xf8cc, 0xf8ce, 0xf8cf, 0xf8d0, 0xf8d1, 0xf8d3,
- 0xf8d4, 0xf8d5, 0xf8d7, 0xf8d8, 0xf8da, 0xf8db, 0xf8dd, 0xf8df,
- 0xf8e0, 0xf8e0, 0xf8e0, 0xf8e0, 0xf8e1, 0xf8e1, 0xf8e2, 0xf8e2,
- 0xf8e3, 0xf8e4, 0xf8e5, 0xf8e5, 0xf8e6, 0xf8e7, 0xf8e8, 0xf8e9,
- 0xf8ea, 0xf8eb, 0xf8ec, 0xf8ee, 0xf8ef, 0xf8f0, 0xf8f1, 0xf8f3,
- 0xf8f4, 0xf8f5, 0xf8f7, 0xf8f8, 0xf8fa, 0xf8fb, 0xf8fd, 0xf8ff,
- 0xf8e0, 0xf8e0, 0xf8e0, 0xf8e0, 0xf8e1, 0xf8e1, 0xf8e2, 0xf8e2,
- 0xf8e3, 0xf8e4, 0xf8e5, 0xf8e5, 0xf8e6, 0xf8e7, 0xf8e8, 0xf8e9,
- 0xf8ea, 0xf8eb, 0xf8ec, 0xf8ee, 0xf8ef, 0xf8f0, 0xf8f1, 0xf8f3,
- 0xf8f4, 0xf8f5, 0xf8f7, 0xf8f8, 0xf8fa, 0xf8fb, 0xf8fd, 0xf8ff,
- 0xf900, 0xf900, 0xf900, 0xf900, 0xf901, 0xf901, 0xf902, 0xf902,
- 0xf903, 0xf904, 0xf905, 0xf905, 0xf906, 0xf907, 0xf908, 0xf909,
- 0xf90a, 0xf90b, 0xf90c, 0xf90e, 0xf90f, 0xf910, 0xf911, 0xf913,
- 0xf914, 0xf915, 0xf917, 0xf918, 0xf91a, 0xf91b, 0xf91d, 0xf91f,
- 0xf920, 0xf920, 0xf920, 0xf920, 0xf921, 0xf921, 0xf922, 0xf922,
- 0xf923, 0xf924, 0xf925, 0xf925, 0xf926, 0xf927, 0xf928, 0xf929,
- 0xf92a, 0xf92b, 0xf92c, 0xf92e, 0xf92f, 0xf930, 0xf931, 0xf933,
- 0xf934, 0xf935, 0xf937, 0xf938, 0xf93a, 0xf93b, 0xf93d, 0xf93f,
- 0xf940, 0xf940, 0xf940, 0xf940, 0xf941, 0xf941, 0xf942, 0xf942,
- 0xf943, 0xf944, 0xf945, 0xf945, 0xf946, 0xf947, 0xf948, 0xf949,
- 0xf94a, 0xf94b, 0xf94c, 0xf94e, 0xf94f, 0xf950, 0xf951, 0xf953,
- 0xf954, 0xf955, 0xf957, 0xf958, 0xf95a, 0xf95b, 0xf95d, 0xf95f,
- 0xf940, 0xf940, 0xf940, 0xf940, 0xf941, 0xf941, 0xf942, 0xf942,
- 0xf943, 0xf944, 0xf945, 0xf945, 0xf946, 0xf947, 0xf948, 0xf949,
- 0xf94a, 0xf94b, 0xf94c, 0xf94e, 0xf94f, 0xf950, 0xf951, 0xf953,
- 0xf954, 0xf955, 0xf957, 0xf958, 0xf95a, 0xf95b, 0xf95d, 0xf95f,
- 0xf960, 0xf960, 0xf960, 0xf960, 0xf961, 0xf961, 0xf962, 0xf962,
- 0xf963, 0xf964, 0xf965, 0xf965, 0xf966, 0xf967, 0xf968, 0xf969,
- 0xf96a, 0xf96b, 0xf96c, 0xf96e, 0xf96f, 0xf970, 0xf971, 0xf973,
- 0xf974, 0xf975, 0xf977, 0xf978, 0xf97a, 0xf97b, 0xf97d, 0xf97f,
- 0xf980, 0xf980, 0xf980, 0xf980, 0xf981, 0xf981, 0xf982, 0xf982,
- 0xf983, 0xf984, 0xf985, 0xf985, 0xf986, 0xf987, 0xf988, 0xf989,
- 0xf98a, 0xf98b, 0xf98c, 0xf98e, 0xf98f, 0xf990, 0xf991, 0xf993,
- 0xf994, 0xf995, 0xf997, 0xf998, 0xf99a, 0xf99b, 0xf99d, 0xf99f,
- 0xf9a0, 0xf9a0, 0xf9a0, 0xf9a0, 0xf9a1, 0xf9a1, 0xf9a2, 0xf9a2,
- 0xf9a3, 0xf9a4, 0xf9a5, 0xf9a5, 0xf9a6, 0xf9a7, 0xf9a8, 0xf9a9,
- 0xf9aa, 0xf9ab, 0xf9ac, 0xf9ae, 0xf9af, 0xf9b0, 0xf9b1, 0xf9b3,
- 0xf9b4, 0xf9b5, 0xf9b7, 0xf9b8, 0xf9ba, 0xf9bb, 0xf9bd, 0xf9bf,
- 0xf9c0, 0xf9c0, 0xf9c0, 0xf9c0, 0xf9c1, 0xf9c1, 0xf9c2, 0xf9c2,
- 0xf9c3, 0xf9c4, 0xf9c5, 0xf9c5, 0xf9c6, 0xf9c7, 0xf9c8, 0xf9c9,
- 0xf9ca, 0xf9cb, 0xf9cc, 0xf9ce, 0xf9cf, 0xf9d0, 0xf9d1, 0xf9d3,
- 0xf9d4, 0xf9d5, 0xf9d7, 0xf9d8, 0xf9da, 0xf9db, 0xf9dd, 0xf9df,
- 0xf9e0, 0xf9e0, 0xf9e0, 0xf9e0, 0xf9e1, 0xf9e1, 0xf9e2, 0xf9e2,
- 0xf9e3, 0xf9e4, 0xf9e5, 0xf9e5, 0xf9e6, 0xf9e7, 0xf9e8, 0xf9e9,
- 0xf9ea, 0xf9eb, 0xf9ec, 0xf9ee, 0xf9ef, 0xf9f0, 0xf9f1, 0xf9f3,
- 0xf9f4, 0xf9f5, 0xf9f7, 0xf9f8, 0xf9fa, 0xf9fb, 0xf9fd, 0xf9ff,
- 0xfa00, 0xfa00, 0xfa00, 0xfa00, 0xfa01, 0xfa01, 0xfa02, 0xfa02,
- 0xfa03, 0xfa04, 0xfa05, 0xfa05, 0xfa06, 0xfa07, 0xfa08, 0xfa09,
- 0xfa0a, 0xfa0b, 0xfa0c, 0xfa0e, 0xfa0f, 0xfa10, 0xfa11, 0xfa13,
- 0xfa14, 0xfa15, 0xfa17, 0xfa18, 0xfa1a, 0xfa1b, 0xfa1d, 0xfa1f,
- 0xfa20, 0xfa20, 0xfa20, 0xfa20, 0xfa21, 0xfa21, 0xfa22, 0xfa22,
- 0xfa23, 0xfa24, 0xfa25, 0xfa25, 0xfa26, 0xfa27, 0xfa28, 0xfa29,
- 0xfa2a, 0xfa2b, 0xfa2c, 0xfa2e, 0xfa2f, 0xfa30, 0xfa31, 0xfa33,
- 0xfa34, 0xfa35, 0xfa37, 0xfa38, 0xfa3a, 0xfa3b, 0xfa3d, 0xfa3f,
- 0xfa40, 0xfa40, 0xfa40, 0xfa40, 0xfa41, 0xfa41, 0xfa42, 0xfa42,
- 0xfa43, 0xfa44, 0xfa45, 0xfa45, 0xfa46, 0xfa47, 0xfa48, 0xfa49,
- 0xfa4a, 0xfa4b, 0xfa4c, 0xfa4e, 0xfa4f, 0xfa50, 0xfa51, 0xfa53,
- 0xfa54, 0xfa55, 0xfa57, 0xfa58, 0xfa5a, 0xfa5b, 0xfa5d, 0xfa5f,
- 0xfa60, 0xfa60, 0xfa60, 0xfa60, 0xfa61, 0xfa61, 0xfa62, 0xfa62,
- 0xfa63, 0xfa64, 0xfa65, 0xfa65, 0xfa66, 0xfa67, 0xfa68, 0xfa69,
- 0xfa6a, 0xfa6b, 0xfa6c, 0xfa6e, 0xfa6f, 0xfa70, 0xfa71, 0xfa73,
- 0xfa74, 0xfa75, 0xfa77, 0xfa78, 0xfa7a, 0xfa7b, 0xfa7d, 0xfa7f,
- 0xfa80, 0xfa80, 0xfa80, 0xfa80, 0xfa81, 0xfa81, 0xfa82, 0xfa82,
- 0xfa83, 0xfa84, 0xfa85, 0xfa85, 0xfa86, 0xfa87, 0xfa88, 0xfa89,
- 0xfa8a, 0xfa8b, 0xfa8c, 0xfa8e, 0xfa8f, 0xfa90, 0xfa91, 0xfa93,
- 0xfa94, 0xfa95, 0xfa97, 0xfa98, 0xfa9a, 0xfa9b, 0xfa9d, 0xfa9f,
- 0xfaa0, 0xfaa0, 0xfaa0, 0xfaa0, 0xfaa1, 0xfaa1, 0xfaa2, 0xfaa2,
- 0xfaa3, 0xfaa4, 0xfaa5, 0xfaa5, 0xfaa6, 0xfaa7, 0xfaa8, 0xfaa9,
- 0xfaaa, 0xfaab, 0xfaac, 0xfaae, 0xfaaf, 0xfab0, 0xfab1, 0xfab3,
- 0xfab4, 0xfab5, 0xfab7, 0xfab8, 0xfaba, 0xfabb, 0xfabd, 0xfabf,
- 0xfac0, 0xfac0, 0xfac0, 0xfac0, 0xfac1, 0xfac1, 0xfac2, 0xfac2,
- 0xfac3, 0xfac4, 0xfac5, 0xfac5, 0xfac6, 0xfac7, 0xfac8, 0xfac9,
- 0xfaca, 0xfacb, 0xfacc, 0xface, 0xfacf, 0xfad0, 0xfad1, 0xfad3,
- 0xfad4, 0xfad5, 0xfad7, 0xfad8, 0xfada, 0xfadb, 0xfadd, 0xfadf,
- 0xfae0, 0xfae0, 0xfae0, 0xfae0, 0xfae1, 0xfae1, 0xfae2, 0xfae2,
- 0xfae3, 0xfae4, 0xfae5, 0xfae5, 0xfae6, 0xfae7, 0xfae8, 0xfae9,
- 0xfaea, 0xfaeb, 0xfaec, 0xfaee, 0xfaef, 0xfaf0, 0xfaf1, 0xfaf3,
- 0xfaf4, 0xfaf5, 0xfaf7, 0xfaf8, 0xfafa, 0xfafb, 0xfafd, 0xfaff,
- 0xfb00, 0xfb00, 0xfb00, 0xfb00, 0xfb01, 0xfb01, 0xfb02, 0xfb02,
- 0xfb03, 0xfb04, 0xfb05, 0xfb05, 0xfb06, 0xfb07, 0xfb08, 0xfb09,
- 0xfb0a, 0xfb0b, 0xfb0c, 0xfb0e, 0xfb0f, 0xfb10, 0xfb11, 0xfb13,
- 0xfb14, 0xfb15, 0xfb17, 0xfb18, 0xfb1a, 0xfb1b, 0xfb1d, 0xfb1f,
- 0xfb20, 0xfb20, 0xfb20, 0xfb20, 0xfb21, 0xfb21, 0xfb22, 0xfb22,
- 0xfb23, 0xfb24, 0xfb25, 0xfb25, 0xfb26, 0xfb27, 0xfb28, 0xfb29,
- 0xfb2a, 0xfb2b, 0xfb2c, 0xfb2e, 0xfb2f, 0xfb30, 0xfb31, 0xfb33,
- 0xfb34, 0xfb35, 0xfb37, 0xfb38, 0xfb3a, 0xfb3b, 0xfb3d, 0xfb3f,
- 0xfb40, 0xfb40, 0xfb40, 0xfb40, 0xfb41, 0xfb41, 0xfb42, 0xfb42,
- 0xfb43, 0xfb44, 0xfb45, 0xfb45, 0xfb46, 0xfb47, 0xfb48, 0xfb49,
- 0xfb4a, 0xfb4b, 0xfb4c, 0xfb4e, 0xfb4f, 0xfb50, 0xfb51, 0xfb53,
- 0xfb54, 0xfb55, 0xfb57, 0xfb58, 0xfb5a, 0xfb5b, 0xfb5d, 0xfb5f,
- 0xfb80, 0xfb80, 0xfb80, 0xfb80, 0xfb81, 0xfb81, 0xfb82, 0xfb82,
- 0xfb83, 0xfb84, 0xfb85, 0xfb85, 0xfb86, 0xfb87, 0xfb88, 0xfb89,
- 0xfb8a, 0xfb8b, 0xfb8c, 0xfb8e, 0xfb8f, 0xfb90, 0xfb91, 0xfb93,
- 0xfb94, 0xfb95, 0xfb97, 0xfb98, 0xfb9a, 0xfb9b, 0xfb9d, 0xfb9f,
- 0xfba0, 0xfba0, 0xfba0, 0xfba0, 0xfba1, 0xfba1, 0xfba2, 0xfba2,
- 0xfba3, 0xfba4, 0xfba5, 0xfba5, 0xfba6, 0xfba7, 0xfba8, 0xfba9,
- 0xfbaa, 0xfbab, 0xfbac, 0xfbae, 0xfbaf, 0xfbb0, 0xfbb1, 0xfbb3,
- 0xfbb4, 0xfbb5, 0xfbb7, 0xfbb8, 0xfbba, 0xfbbb, 0xfbbd, 0xfbbf,
- 0xfbc0, 0xfbc0, 0xfbc0, 0xfbc0, 0xfbc1, 0xfbc1, 0xfbc2, 0xfbc2,
- 0xfbc3, 0xfbc4, 0xfbc5, 0xfbc5, 0xfbc6, 0xfbc7, 0xfbc8, 0xfbc9,
- 0xfbca, 0xfbcb, 0xfbcc, 0xfbce, 0xfbcf, 0xfbd0, 0xfbd1, 0xfbd3,
- 0xfbd4, 0xfbd5, 0xfbd7, 0xfbd8, 0xfbda, 0xfbdb, 0xfbdd, 0xfbdf,
- 0xfbe0, 0xfbe0, 0xfbe0, 0xfbe0, 0xfbe1, 0xfbe1, 0xfbe2, 0xfbe2,
- 0xfbe3, 0xfbe4, 0xfbe5, 0xfbe5, 0xfbe6, 0xfbe7, 0xfbe8, 0xfbe9,
- 0xfbea, 0xfbeb, 0xfbec, 0xfbee, 0xfbef, 0xfbf0, 0xfbf1, 0xfbf3,
- 0xfbf4, 0xfbf5, 0xfbf7, 0xfbf8, 0xfbfa, 0xfbfb, 0xfbfd, 0xfbff,
- 0xfc00, 0xfc00, 0xfc00, 0xfc00, 0xfc01, 0xfc01, 0xfc02, 0xfc02,
- 0xfc03, 0xfc04, 0xfc05, 0xfc05, 0xfc06, 0xfc07, 0xfc08, 0xfc09,
- 0xfc0a, 0xfc0b, 0xfc0c, 0xfc0e, 0xfc0f, 0xfc10, 0xfc11, 0xfc13,
- 0xfc14, 0xfc15, 0xfc17, 0xfc18, 0xfc1a, 0xfc1b, 0xfc1d, 0xfc1f,
- 0xfc40, 0xfc40, 0xfc40, 0xfc40, 0xfc41, 0xfc41, 0xfc42, 0xfc42,
- 0xfc43, 0xfc44, 0xfc45, 0xfc45, 0xfc46, 0xfc47, 0xfc48, 0xfc49,
- 0xfc4a, 0xfc4b, 0xfc4c, 0xfc4e, 0xfc4f, 0xfc50, 0xfc51, 0xfc53,
- 0xfc54, 0xfc55, 0xfc57, 0xfc58, 0xfc5a, 0xfc5b, 0xfc5d, 0xfc5f,
- 0xfc60, 0xfc60, 0xfc60, 0xfc60, 0xfc61, 0xfc61, 0xfc62, 0xfc62,
- 0xfc63, 0xfc64, 0xfc65, 0xfc65, 0xfc66, 0xfc67, 0xfc68, 0xfc69,
- 0xfc6a, 0xfc6b, 0xfc6c, 0xfc6e, 0xfc6f, 0xfc70, 0xfc71, 0xfc73,
- 0xfc74, 0xfc75, 0xfc77, 0xfc78, 0xfc7a, 0xfc7b, 0xfc7d, 0xfc7f,
- 0xfc80, 0xfc80, 0xfc80, 0xfc80, 0xfc81, 0xfc81, 0xfc82, 0xfc82,
- 0xfc83, 0xfc84, 0xfc85, 0xfc85, 0xfc86, 0xfc87, 0xfc88, 0xfc89,
- 0xfc8a, 0xfc8b, 0xfc8c, 0xfc8e, 0xfc8f, 0xfc90, 0xfc91, 0xfc93,
- 0xfc94, 0xfc95, 0xfc97, 0xfc98, 0xfc9a, 0xfc9b, 0xfc9d, 0xfc9f,
- 0xfcc0, 0xfcc0, 0xfcc0, 0xfcc0, 0xfcc1, 0xfcc1, 0xfcc2, 0xfcc2,
- 0xfcc3, 0xfcc4, 0xfcc5, 0xfcc5, 0xfcc6, 0xfcc7, 0xfcc8, 0xfcc9,
- 0xfcca, 0xfccb, 0xfccc, 0xfcce, 0xfccf, 0xfcd0, 0xfcd1, 0xfcd3,
- 0xfcd4, 0xfcd5, 0xfcd7, 0xfcd8, 0xfcda, 0xfcdb, 0xfcdd, 0xfcdf,
- 0xfce0, 0xfce0, 0xfce0, 0xfce0, 0xfce1, 0xfce1, 0xfce2, 0xfce2,
- 0xfce3, 0xfce4, 0xfce5, 0xfce5, 0xfce6, 0xfce7, 0xfce8, 0xfce9,
- 0xfcea, 0xfceb, 0xfcec, 0xfcee, 0xfcef, 0xfcf0, 0xfcf1, 0xfcf3,
- 0xfcf4, 0xfcf5, 0xfcf7, 0xfcf8, 0xfcfa, 0xfcfb, 0xfcfd, 0xfcff,
- 0xfd00, 0xfd00, 0xfd00, 0xfd00, 0xfd01, 0xfd01, 0xfd02, 0xfd02,
- 0xfd03, 0xfd04, 0xfd05, 0xfd05, 0xfd06, 0xfd07, 0xfd08, 0xfd09,
- 0xfd0a, 0xfd0b, 0xfd0c, 0xfd0e, 0xfd0f, 0xfd10, 0xfd11, 0xfd13,
- 0xfd14, 0xfd15, 0xfd17, 0xfd18, 0xfd1a, 0xfd1b, 0xfd1d, 0xfd1f,
- 0xfd40, 0xfd40, 0xfd40, 0xfd40, 0xfd41, 0xfd41, 0xfd42, 0xfd42,
- 0xfd43, 0xfd44, 0xfd45, 0xfd45, 0xfd46, 0xfd47, 0xfd48, 0xfd49,
- 0xfd4a, 0xfd4b, 0xfd4c, 0xfd4e, 0xfd4f, 0xfd50, 0xfd51, 0xfd53,
- 0xfd54, 0xfd55, 0xfd57, 0xfd58, 0xfd5a, 0xfd5b, 0xfd5d, 0xfd5f,
- 0xfd60, 0xfd60, 0xfd60, 0xfd60, 0xfd61, 0xfd61, 0xfd62, 0xfd62,
- 0xfd63, 0xfd64, 0xfd65, 0xfd65, 0xfd66, 0xfd67, 0xfd68, 0xfd69,
- 0xfd6a, 0xfd6b, 0xfd6c, 0xfd6e, 0xfd6f, 0xfd70, 0xfd71, 0xfd73,
- 0xfd74, 0xfd75, 0xfd77, 0xfd78, 0xfd7a, 0xfd7b, 0xfd7d, 0xfd7f,
- 0xfd80, 0xfd80, 0xfd80, 0xfd80, 0xfd81, 0xfd81, 0xfd82, 0xfd82,
- 0xfd83, 0xfd84, 0xfd85, 0xfd85, 0xfd86, 0xfd87, 0xfd88, 0xfd89,
- 0xfd8a, 0xfd8b, 0xfd8c, 0xfd8e, 0xfd8f, 0xfd90, 0xfd91, 0xfd93,
- 0xfd94, 0xfd95, 0xfd97, 0xfd98, 0xfd9a, 0xfd9b, 0xfd9d, 0xfd9f,
- 0xfdc0, 0xfdc0, 0xfdc0, 0xfdc0, 0xfdc1, 0xfdc1, 0xfdc2, 0xfdc2,
- 0xfdc3, 0xfdc4, 0xfdc5, 0xfdc5, 0xfdc6, 0xfdc7, 0xfdc8, 0xfdc9,
- 0xfdca, 0xfdcb, 0xfdcc, 0xfdce, 0xfdcf, 0xfdd0, 0xfdd1, 0xfdd3,
- 0xfdd4, 0xfdd5, 0xfdd7, 0xfdd8, 0xfdda, 0xfddb, 0xfddd, 0xfddf,
- 0xfde0, 0xfde0, 0xfde0, 0xfde0, 0xfde1, 0xfde1, 0xfde2, 0xfde2,
- 0xfde3, 0xfde4, 0xfde5, 0xfde5, 0xfde6, 0xfde7, 0xfde8, 0xfde9,
- 0xfdea, 0xfdeb, 0xfdec, 0xfdee, 0xfdef, 0xfdf0, 0xfdf1, 0xfdf3,
- 0xfdf4, 0xfdf5, 0xfdf7, 0xfdf8, 0xfdfa, 0xfdfb, 0xfdfd, 0xfdff,
- 0xfe20, 0xfe20, 0xfe20, 0xfe20, 0xfe21, 0xfe21, 0xfe22, 0xfe22,
- 0xfe23, 0xfe24, 0xfe25, 0xfe25, 0xfe26, 0xfe27, 0xfe28, 0xfe29,
- 0xfe2a, 0xfe2b, 0xfe2c, 0xfe2e, 0xfe2f, 0xfe30, 0xfe31, 0xfe33,
- 0xfe34, 0xfe35, 0xfe37, 0xfe38, 0xfe3a, 0xfe3b, 0xfe3d, 0xfe3f,
- 0xfe40, 0xfe40, 0xfe40, 0xfe40, 0xfe41, 0xfe41, 0xfe42, 0xfe42,
- 0xfe43, 0xfe44, 0xfe45, 0xfe45, 0xfe46, 0xfe47, 0xfe48, 0xfe49,
- 0xfe4a, 0xfe4b, 0xfe4c, 0xfe4e, 0xfe4f, 0xfe50, 0xfe51, 0xfe53,
- 0xfe54, 0xfe55, 0xfe57, 0xfe58, 0xfe5a, 0xfe5b, 0xfe5d, 0xfe5f,
- 0xfe80, 0xfe80, 0xfe80, 0xfe80, 0xfe81, 0xfe81, 0xfe82, 0xfe82,
- 0xfe83, 0xfe84, 0xfe85, 0xfe85, 0xfe86, 0xfe87, 0xfe88, 0xfe89,
- 0xfe8a, 0xfe8b, 0xfe8c, 0xfe8e, 0xfe8f, 0xfe90, 0xfe91, 0xfe93,
- 0xfe94, 0xfe95, 0xfe97, 0xfe98, 0xfe9a, 0xfe9b, 0xfe9d, 0xfe9f,
- 0xfea0, 0xfea0, 0xfea0, 0xfea0, 0xfea1, 0xfea1, 0xfea2, 0xfea2,
- 0xfea3, 0xfea4, 0xfea5, 0xfea5, 0xfea6, 0xfea7, 0xfea8, 0xfea9,
- 0xfeaa, 0xfeab, 0xfeac, 0xfeae, 0xfeaf, 0xfeb0, 0xfeb1, 0xfeb3,
- 0xfeb4, 0xfeb5, 0xfeb7, 0xfeb8, 0xfeba, 0xfebb, 0xfebd, 0xfebf,
- 0xfee0, 0xfee0, 0xfee0, 0xfee0, 0xfee1, 0xfee1, 0xfee2, 0xfee2,
- 0xfee3, 0xfee4, 0xfee5, 0xfee5, 0xfee6, 0xfee7, 0xfee8, 0xfee9,
- 0xfeea, 0xfeeb, 0xfeec, 0xfeee, 0xfeef, 0xfef0, 0xfef1, 0xfef3,
- 0xfef4, 0xfef5, 0xfef7, 0xfef8, 0xfefa, 0xfefb, 0xfefd, 0xfeff,
- 0xff00, 0xff00, 0xff00, 0xff00, 0xff01, 0xff01, 0xff02, 0xff02,
- 0xff03, 0xff04, 0xff05, 0xff05, 0xff06, 0xff07, 0xff08, 0xff09,
- 0xff0a, 0xff0b, 0xff0c, 0xff0e, 0xff0f, 0xff10, 0xff11, 0xff13,
- 0xff14, 0xff15, 0xff17, 0xff18, 0xff1a, 0xff1b, 0xff1d, 0xff1f,
- 0xff40, 0xff40, 0xff40, 0xff40, 0xff41, 0xff41, 0xff42, 0xff42,
- 0xff43, 0xff44, 0xff45, 0xff45, 0xff46, 0xff47, 0xff48, 0xff49,
- 0xff4a, 0xff4b, 0xff4c, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff53,
- 0xff54, 0xff55, 0xff57, 0xff58, 0xff5a, 0xff5b, 0xff5d, 0xff5f,
- 0xff60, 0xff60, 0xff60, 0xff60, 0xff61, 0xff61, 0xff62, 0xff62,
- 0xff63, 0xff64, 0xff65, 0xff65, 0xff66, 0xff67, 0xff68, 0xff69,
- 0xff6a, 0xff6b, 0xff6c, 0xff6e, 0xff6f, 0xff70, 0xff71, 0xff73,
- 0xff74, 0xff75, 0xff77, 0xff78, 0xff7a, 0xff7b, 0xff7d, 0xff7f,
- 0xffa0, 0xffa0, 0xffa0, 0xffa0, 0xffa1, 0xffa1, 0xffa2, 0xffa2,
- 0xffa3, 0xffa4, 0xffa5, 0xffa5, 0xffa6, 0xffa7, 0xffa8, 0xffa9,
- 0xffaa, 0xffab, 0xffac, 0xffae, 0xffaf, 0xffb0, 0xffb1, 0xffb3,
- 0xffb4, 0xffb5, 0xffb7, 0xffb8, 0xffba, 0xffbb, 0xffbd, 0xffbf,
- 0xffe0, 0xffe0, 0xffe0, 0xffe0, 0xffe1, 0xffe1, 0xffe2, 0xffe2,
- 0xffe3, 0xffe4, 0xffe5, 0xffe5, 0xffe6, 0xffe7, 0xffe8, 0xffe9,
- 0xffea, 0xffeb, 0xffec, 0xffee, 0xffef, 0xfff0, 0xfff1, 0xfff3,
- 0xfff4, 0xfff5, 0xfff7, 0xfff8, 0xfffa, 0xfffb, 0xfffd, 0xffff,
-};
--- a/sys/src/9/bitsy/init9.s
+++ /dev/null
@@ -1,12 +1,0 @@
-TEXT _main(SB),$8
- MOVW $setR12(SB), R12 /* load the SB */
- MOVW $boot(SB), R0
-
- ADD $12, R13, R1 /* get a pointer to 0(FP) */
-
- MOVW R0, 4(R13)
- MOVW R1, 8(R13)
-
- BL startboot(SB)
-
-
--- a/sys/src/9/bitsy/io.h
+++ /dev/null
@@ -1,337 +1,0 @@
-/*
- * Definitions for IO devices. Used only in C.
- */
-
-enum
-{
- /* hardware counter frequency */
- ClockFreq= 3686400,
-};
-
-/*
- * IRQ's defined by SA1100
- */
-enum
-{
- IRQgpio0= 0,
- IRQgpio1= 1,
- IRQgpio2= 2,
- IRQgpio3= 3,
- IRQgpio4= 4,
- IRQgpio5= 5,
- IRQgpio6= 6,
- IRQgpio7= 7,
- IRQgpio8= 8,
- IRQgpio9= 9,
- IRQgpio10= 10,
- IRQgpiohi= 11,
- IRQlcd= 12,
- IRQudc= 13,
- IRQuart1b= 15,
- IRQuart2= 16,
- IRQuart3= 17,
- IRQmcp= 18,
- IRQssp= 19,
- IRQdma0= 20,
- IRQdma1= 21,
- IRQdma2= 22,
- IRQdma3= 23,
- IRQdma4= 24,
- IRQdma5= 25,
- IRQtimer0= 26,
- IRQtimer1= 27,
- IRQtimer2= 28,
- IRQtimer3= 29,
- IRQsecond= 30,
- IRQrtc= 31,
-};
-
-/*
- * GPIO lines (signal names from compaq document). _i indicates input
- * and _o output.
- */
-enum
-{
- GPIO_PWR_ON_i= 1<<0, /* power button */
- GPIO_UP_IRQ_i= 1<<1, /* microcontroller interrupts */
- GPIO_LDD8_o= 1<<2, /* LCD data 8-15 */
- GPIO_LDD9_o= 1<<3,
- GPIO_LDD10_o= 1<<4,
- GPIO_LDD11_o= 1<<5,
- GPIO_LDD12_o= 1<<6,
- GPIO_LDD13_o= 1<<7,
- GPIO_LDD14_o= 1<<8,
- GPIO_LDD15_o= 1<<9,
- GPIO_CARD_IND1_i= 1<<10, /* card inserted in PCMCIA socket 1 */
- GPIO_CARD_IRQ1_i= 1<<11, /* PCMCIA socket 1 interrupt */
- GPIO_CLK_SET0_o= 1<<12, /* clock selects for audio codec */
- GPIO_CLK_SET1_o= 1<<13,
- GPIO_L3_SDA_io= 1<<14, /* UDA1341 interface */
- GPIO_L3_MODE_o= 1<<15,
- GPIO_L3_SCLK_o= 1<<16,
- GPIO_CARD_IND0_i= 1<<17, /* card inserted in PCMCIA socket 0 */
- GPIO_KEY_ACT_i= 1<<18, /* hot key from cradle */
- GPIO_SYS_CLK_i= 1<<19, /* clock from codec */
- GPIO_BAT_FAULT_i= 1<<20, /* battery fault */
- GPIO_CARD_IRQ0_i= 1<<21, /* PCMCIA socket 0 interrupt */
- GPIO_LOCK_i= 1<<22, /* expansion pack lock/unlock */
- GPIO_COM_DCD_i= 1<<23, /* DCD from UART3 */
- GPIO_OPT_IRQ_i= 1<<24, /* expansion pack IRQ */
- GPIO_COM_CTS_i= 1<<25, /* CTS from UART3 */
- GPIO_COM_RTS_o= 1<<26, /* RTS to UART3 */
- GPIO_OPT_IND_i= 1<<27, /* expansion pack inserted */
-
-/* Peripheral Unit GPIO pin assignments: alternate functions */
- GPIO_SSP_TXD_o= 1<<10, /* SSP Transmit Data */
- GPIO_SSP_RXD_i= 1<<11, /* SSP Receive Data */
- GPIO_SSP_SCLK_o= 1<<12, /* SSP Sample CLocK */
- GPIO_SSP_SFRM_o= 1<<13, /* SSP Sample FRaMe */
- /* ser. port 1: */
- GPIO_UART_TXD_o= 1<<14, /* UART Transmit Data */
- GPIO_UART_RXD_i= 1<<15, /* UART Receive Data */
- GPIO_SDLC_SCLK_io= 1<<16, /* SDLC Sample CLocK (I/O) */
- GPIO_SDLC_AAF_o= 1<<17, /* SDLC Abort After Frame */
- GPIO_UART_SCLK1_i= 1<<18, /* UART Sample CLocK 1 */
- /* ser. port 4: */
- GPIO_SSP_CLK_i= 1<<19, /* SSP external CLocK */
- /* ser. port 3: */
- GPIO_UART_SCLK3_i= 1<<20, /* UART Sample CLocK 3 */
- /* ser. port 4: */
- GPIO_MCP_CLK_i= 1<<21, /* MCP CLocK */
- /* test controller: */
- GPIO_TIC_ACK_o= 1<<21, /* TIC ACKnowledge */
- GPIO_MBGNT_o= 1<<21, /* Memory Bus GraNT */
- GPIO_TREQA_i= 1<<22, /* TIC REQuest A */
- GPIO_MBREQ_i= 1<<22, /* Memory Bus REQuest */
- GPIO_TREQB_i= 1<<23, /* TIC REQuest B */
- GPIO_1Hz_o= 1<<25, /* 1 Hz clock */
- GPIO_RCLK_o= 1<<26, /* internal (R) CLocK (O, fcpu/2) */
- GPIO_32_768kHz_o= 1<<27, /* 32.768 kHz clock (O, RTC) */
-};
-
-/*
- * types of interrupts
- */
-enum
-{
- GPIOrising,
- GPIOfalling,
- GPIOboth,
- IRQ,
-};
-
-/* hardware registers */
-typedef struct Uartregs Uartregs;
-struct Uartregs
-{
- ulong ctl[4];
- ulong dummya;
- ulong data;
- ulong dummyb;
- ulong status[2];
-};
-extern Uartregs *uart3regs;
-extern Uartregs *uart1regs;
-
-/* general purpose I/O lines control registers */
-typedef struct GPIOregs GPIOregs;
-struct GPIOregs
-{
- ulong level; /* 1 == high */
- ulong direction; /* 1 == output */
- ulong set; /* a 1 sets the bit, 0 leaves it alone */
- ulong clear; /* a 1 clears the bit, 0 leaves it alone */
- ulong rising; /* rising edge detect enable */
- ulong falling; /* falling edge detect enable */
- ulong edgestatus; /* writing a 1 bit clears */
- ulong altfunc; /* turn on alternate function for any set bits */
-};
-
-extern GPIOregs *gpioregs;
-
-/* extra general purpose I/O bits, output only */
-enum
-{
- EGPIO_prog_flash= 1<<0,
- EGPIO_pcmcia_reset= 1<<1,
- EGPIO_exppack_reset= 1<<2,
- EGPIO_codec_reset= 1<<3,
- EGPIO_exp_nvram_power= 1<<4,
- EGPIO_exp_full_power= 1<<5,
- EGPIO_lcd_3v= 1<<6,
- EGPIO_rs232_power= 1<<7,
- EGPIO_lcd_ic_power= 1<<8,
- EGPIO_ir_power= 1<<9,
- EGPIO_audio_power= 1<<10,
- EGPIO_audio_ic_power= 1<<11,
- EGPIO_audio_mute= 1<<12,
- EGPIO_fir= 1<<13, /* not set is sir */
- EGPIO_lcd_5v= 1<<14,
- EGPIO_lcd_9v= 1<<15,
-};
-extern ulong *egpioreg;
-
-/* Peripheral pin controller registers */
-typedef struct PPCregs PPCregs;
-struct PPCregs {
- ulong direction;
- ulong state;
- ulong assignment;
- ulong sleepdir;
- ulong flags;
-};
-extern PPCregs *ppcregs;
-
-/* Synchronous Serial Port controller registers */
-typedef struct SSPregs SSPregs;
-struct SSPregs {
- ulong control0;
- ulong control1;
- ulong dummy0;
- ulong data;
- ulong dummy1;
- ulong status;
-};
-extern SSPregs *sspregs;
-
-/* Multimedia Communications Port controller registers */
-typedef struct MCPregs MCPregs;
-struct MCPregs {
- ulong control0;
- ulong reserved0;
- ulong data0;
- ulong data1;
- ulong data2;
- ulong reserved1;
- ulong status;
- ulong reserved[11];
- ulong control1;
-};
-extern MCPregs *mcpregs;
-
-/*
- * memory configuration
- */
-enum
-{
- /* bit shifts for pcmcia access time counters */
- MECR_io0= 0,
- MECR_attr0= 5,
- MECR_mem0= 10,
- MECR_fast0= 11,
- MECR_io1= MECR_io0+16,
- MECR_attr1= MECR_attr0+16,
- MECR_mem1= MECR_mem0+16,
- MECR_fast1= MECR_fast0+16,
-
- REFR_kapd= 29,
- REFR_eapd= 28,
- REFR_k1db2= 22,
- REFR_slfrsh= 31,
-};
-
-typedef struct MemConfRegs MemConfRegs;
-struct MemConfRegs
-{
- ulong mdcnfg; /* 0x00 dram */
- ulong mdcas00; /* 0x04 dram banks 0/1 */
- ulong mdcas01; /* 0x08 */
- ulong mdcas02; /* 0x0c */
- ulong msc0; /* 0x10 static */
- ulong msc1; /* 0x14 */
- ulong mecr; /* 0x18 pcmcia */
- ulong mdrefr; /* 0x1c dram refresh */
- ulong mdcas20; /* 0x20 dram banks 2/3 */
- ulong mdcas21; /* 0x24 */
- ulong mdcas22; /* 0x28 */
- ulong msc2; /* 0x2c static */
- ulong smcnfg; /* 0x30 SMROM config */
-};
-extern MemConfRegs *memconfregs;
-
-/*
- * power management
- */
-
-/* Power management ops */
-
-typedef struct PowerRegs PowerRegs;
-struct PowerRegs
-{
- ulong pmcr; /* 0x0 Power manager control register */
- ulong pssr; /* 0x4 Power manager sleep status register */
- ulong pspr; /* 0x8 Power manager scratch pad register */
- ulong pwer; /* 0xc Power manager wakeup enable register */
- ulong pcfr; /* 0x10 Power manager general configuration register */
- ulong ppcr; /* 0x14 Power manager PPL configuration register */
- ulong pgsr; /* 0x18 Power manager GPIO sleep state register */
- ulong posr; /* 0x1c Power manager oscillator status register */
-};
-extern PowerRegs *powerregs;
-
-/*
- * reset controller
- */
-
-enum
-{
- RCSR_hwr = 0x00000001, /* hw reset */
- RCSR_swr = 0x00000002, /* sw reset */
- RCSR_wdr = 0x00000004, /* watch dog */
- RCSR_smr = 0x00000008, /* sleep mode reset */
-};
-
-typedef struct ResetRegs ResetRegs;
-struct ResetRegs
-{
- ulong rsrr; /* reset controller software reset register */
- ulong rcsr; /* reset controller status register */
-};
-extern ResetRegs *resetregs;
-
-typedef struct OSTimerRegs OSTimerRegs;
-struct OSTimerRegs
-{
- ulong osmr[4]; /* match registers */
- ulong oscr; /* counter register */
- ulong ossr; /* status register */
- ulong ower; /* watchdog enable register */
- ulong oier; /* timer interrupt enable register */
-};
-extern OSTimerRegs* timerregs;
-
-typedef struct Intrregs Intrregs;
-struct Intrregs
-{
- ulong icip; /* pending IRQs */
- ulong icmr; /* IRQ mask */
- ulong iclr; /* IRQ if bit == 0, FRIQ if 1 */
- ulong iccr; /* control register */
- ulong icfp; /* pending FIQs */
- ulong dummy1[3];
- ulong icpr; /* pending interrupts */
-};
-extern Intrregs *intrregs;
-
-typedef struct Gpclkregs Gpclkregs;
-struct Gpclkregs
-{
- ulong r0;
- ulong r1;
- ulong dummya;
- ulong r2;
- ulong r3;
-};
-extern Gpclkregs *gpclkregs;
-
-/*
- * Dont use this on bitsy drivers.
- * This is for compat with code compiled
- * from the ../pc directory
- */
-
-typedef struct Pcidev Pcidev;
-typedef struct ISAConf ISAConf;
-struct Pcidev { int dummy; };
-struct ISAConf{ int port; int irq; };
-int pcmspecial(char*, ISAConf*);
--- a/sys/src/9/bitsy/l.s
+++ /dev/null
@@ -1,857 +1,0 @@
-#include "mem.h"
-
-/*
- * Entered here from Compaq's bootldr with MMU disabled.
- */
-TEXT _start(SB), $-4
- MOVW $setR12(SB), R12 /* load the SB */
-_main:
- /* SVC mode, interrupts disabled */
- MOVW $(PsrDirq|PsrDfiq|PsrMsvc), R1
- MOVW R1, CPSR
-
- /* disable the MMU */
- MOVW $0x130, R1
- MCR CpMMU, 0, R1, C(CpControl), C(0x0)
-
- /* flush caches */
- MCR CpMMU, 0, R0, C(CpCacheFlush), C(0x7), 0
- /* drain prefetch */
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
-
- /* drain write buffer */
- MCR CpMMU, 0, R0, C(CpCacheFlush), C(0xa), 4
-
- MOVW $(MACHADDR+4*BY2PG), R13 /* stack */
- SUB $4, R13 /* link */
- BL main(SB)
- BL exit(SB)
- /* we shouldn't get here */
-_mainloop:
- B _mainloop
- BL _div(SB) /* hack to get _div etc loaded */
-
-/* flush tlb's */
-TEXT mmuinvalidate(SB), $-4
- MCR CpMMU, 0, R0, C(CpTLBFlush), C(0x7)
- RET
-
-/* flush tlb's */
-TEXT mmuinvalidateaddr(SB), $-4
- MCR CpMMU, 0, R0, C(CpTLBFlush), C(0x6), 1
- RET
-
-/* write back and invalidate i and d caches */
-TEXT cacheflush(SB), $-4
- /* splhi */
- MOVW CPSR, R3
- ORR $(PsrDirq), R3, R1
- MOVW R1, CPSR
-
- /* write back any dirty data */
- MOVW $0xe0000000,R0
- ADD $(8*1024),R0,R1
-_cfloop:
- MOVW.P 32(R0),R2
- CMP.S R0,R1
- BGE _cfloop
-
- /* drain write buffer and invalidate i cache contents */
- MCR CpMMU, 0, R0, C(CpCacheFlush), C(0xa), 4
- MCR CpMMU, 0, R0, C(CpCacheFlush), C(0x5), 0
-
- /* drain prefetch */
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
-
- /* splx */
- MOVW R3, CPSR
- RET
-
-/* write back d cache */
-TEXT cachewb(SB), $-4
- /* write back any dirty data */
-_cachewb:
- MOVW $0xe0000000,R0
- ADD $(8*1024),R0,R1
-_cwbloop:
- MOVW.P 32(R0),R2
- CMP.S R0,R1
- BGE _cwbloop
-
- /* drain write buffer */
- MCR CpMMU, 0, R0, C(CpCacheFlush), C(0xa), 4
- RET
-
-/* write back a single cache line */
-TEXT cachewbaddr(SB), $-4
- BIC $31,R0
- MCR CpMMU, 0, R0, C(CpCacheFlush), C(0xa), 1
- B _wbflush
-
-/* write back a region of cache lines */
-TEXT cachewbregion(SB), $-4
- MOVW 4(FP),R1
- CMP.S $(4*1024),R1
- BGT _cachewb
- ADD R0,R1
- BIC $31,R0
-_cwbrloop:
- MCR CpMMU, 0, R0, C(CpCacheFlush), C(0xa), 1
- ADD $32,R0
- CMP.S R0,R1
- BGT _cwbrloop
- B _wbflush
-
-/* invalidate the dcache */
-TEXT dcacheinvalidate(SB), $-4
- MCR CpMMU, 0, R0, C(CpCacheFlush), C(0x6)
- RET
-
-/* invalidate the icache */
-TEXT icacheinvalidate(SB), $-4
- MCR CpMMU, 0, R0, C(CpCacheFlush), C(0x9)
- RET
-
-/* drain write buffer */
-TEXT wbflush(SB), $-4
-_wbflush:
- MCR CpMMU, 0, R0, C(CpCacheFlush), C(0xa), 4
- RET
-
-/* return cpu id */
-TEXT getcpuid(SB), $-4
- MRC CpMMU, 0, R0, C(CpCPUID), C(0x0)
- RET
-
-/* return fault status */
-TEXT getfsr(SB), $-4
- MRC CpMMU, 0, R0, C(CpFSR), C(0x0)
- RET
-
-/* return mmu control register */
-TEXT getcontrol(SB), $-4
- SUB R0, R0
- MRC CpMMU, 0, R0, C(CpControl), C(0x0)
- RET
-
-/* return mmu dac register */
-TEXT getdac(SB), $-4
- SUB R0, R0
- MRC CpMMU, 0, R0, C(CpDAC), C(0x0)
- RET
-
-/* return mmu ttb register */
-TEXT getttb(SB), $-4
- SUB R0, R0
- MRC CpMMU, 0, R0, C(CpTTB), C(0x0)
- RET
-
-/* return fault address */
-TEXT getfar(SB), $-4
- MRC CpMMU, 0, R0, C(CpFAR), C(0x0)
- RET
-
-/* set the translation table base */
-TEXT putttb(SB), $-4
- MCR CpMMU, 0, R0, C(CpTTB), C(0x0)
- RET
-
-/*
- * enable mmu, i and d caches
- */
-TEXT mmuenable(SB), $-4
- MRC CpMMU, 0, R0, C(CpControl), C(0x0)
- ORR $(CpCmmuena|CpCdcache|CpCicache|CpCwb|CpCsystem), R0
- BIC $(CpCrom), R0
- MCR CpMMU, 0, R0, C(CpControl), C(0x0)
- MOVW R0, R0
- MOVW R0, R0
- MOVW R0, R0
- MOVW R0, R0
- RET
-
-TEXT mmudisable(SB), $-4
- MRC CpMMU, 0, R0, C(CpControl), C(0x0)
- BIC $(CpCmmuena|CpCdcache|CpCicache|CpCwb|CpCvivec), R0
- MCR CpMMU, 0, R0, C(CpControl), C(0x0)
- RET
-
-/*
- * use exception vectors at 0xffff0000
- */
-TEXT mappedIvecEnable(SB), $-4
- MRC CpMMU, 0, R0, C(CpControl), C(0x0)
- ORR $(CpCvivec), R0
- MCR CpMMU, 0, R0, C(CpControl), C(0x0)
- RET
-TEXT mappedIvecDisable(SB), $-4
- MRC CpMMU, 0, R0, C(CpControl), C(0x0)
- BIC $(CpCvivec), R0
- MCR CpMMU, 0, R0, C(CpControl), C(0x0)
- RET
-
-/* set the translation table base */
-TEXT putdac(SB), $-4
- MCR CpMMU, 0, R0, C(CpDAC), C(0x0)
- RET
-
-/* set address translation pid */
-TEXT putpid(SB), $-4
- MCR CpMMU, 0, R0, C(CpPID), C(0x0)
- RET
-
-/*
- * set the stack value for the mode passed in R0
- */
-TEXT setr13(SB), $-4
- MOVW 4(FP), R1
-
- MOVW CPSR, R2
- BIC $PsrMask, R2, R3
- ORR R0, R3
- MOVW R3, CPSR
-
- MOVW R13, R0
- MOVW R1, R13
-
- MOVW R2, CPSR
- RET
-
-/*
- * exception vectors, copied by trapinit() to somewhere useful
- */
-
-TEXT vectors(SB), $-4
- MOVW 0x18(R15), R15 /* reset */
- MOVW 0x18(R15), R15 /* undefined */
- MOVW 0x18(R15), R15 /* SWI */
- MOVW 0x18(R15), R15 /* prefetch abort */
- MOVW 0x18(R15), R15 /* data abort */
- MOVW 0x18(R15), R15 /* reserved */
- MOVW 0x18(R15), R15 /* IRQ */
- MOVW 0x18(R15), R15 /* FIQ */
-
-TEXT vtable(SB), $-4
- WORD $_vsvc(SB) /* reset, in svc mode already */
- WORD $_vund(SB) /* undefined, switch to svc mode */
- WORD $_vsvc(SB) /* swi, in svc mode already */
- WORD $_vpabt(SB) /* prefetch abort, switch to svc mode */
- WORD $_vdabt(SB) /* data abort, switch to svc mode */
- WORD $_vsvc(SB) /* reserved */
- WORD $_virq(SB) /* IRQ, switch to svc mode */
- WORD $_vfiq(SB) /* FIQ, switch to svc mode */
-
-TEXT _vrst(SB), $-4
- BL resettrap(SB)
-
-TEXT _vsvc(SB), $-4 /* SWI */
- MOVW.W R14, -4(R13) /* ureg->pc = interupted PC */
- MOVW SPSR, R14 /* ureg->psr = SPSR */
- MOVW.W R14, -4(R13) /* ... */
- MOVW $PsrMsvc, R14 /* ureg->type = PsrMsvc */
- MOVW.W R14, -4(R13) /* ... */
- MOVM.DB.W.S [R0-R14], (R13) /* save user level registers, at end r13 points to ureg */
- MOVW $setR12(SB), R12 /* Make sure we've got the kernel's SB loaded */
- MOVW R13, R0 /* first arg is pointer to ureg */
- SUB $8, R13 /* space for argument+link */
-
- BL syscall(SB)
-
- ADD $(8+4*15), R13 /* make r13 point to ureg->type */
- MOVW 8(R13), R14 /* restore link */
- MOVW 4(R13), R0 /* restore SPSR */
- MOVW R0, SPSR /* ... */
- MOVM.DB.S (R13), [R0-R14] /* restore registers */
- ADD $8, R13 /* pop past ureg->{type+psr} */
- RFE /* MOVM.IA.S.W (R13), [R15] */
-
-TEXT _vund(SB), $-4 /* undefined */
- MOVM.IA [R0-R4], (R13) /* free some working space */
- MOVW $PsrMund, R0
- B _vswitch
-
-TEXT _vpabt(SB), $-4 /* prefetch abort */
- MOVM.IA [R0-R4], (R13) /* free some working space */
- MOVW $PsrMabt, R0 /* r0 = type */
- B _vswitch
-
-TEXT _vdabt(SB), $-4 /* prefetch abort */
- MOVM.IA [R0-R4], (R13) /* free some working space */
- MOVW $(PsrMabt+1), R0 /* r0 = type */
- B _vswitch
-
-TEXT _virq(SB), $-4 /* IRQ */
- MOVM.IA [R0-R4], (R13) /* free some working space */
- MOVW $PsrMirq, R0 /* r0 = type */
- B _vswitch
-
- /*
- * come here with type in R0 and R13 pointing above saved [r0-r4]
- * and type in r0. we'll switch to SVC mode and then call trap.
- */
-_vswitch:
- MOVW SPSR, R1 /* save SPSR for ureg */
- MOVW R14, R2 /* save interrupted pc for ureg */
- MOVW R13, R3 /* save pointer to where the original [R0-R3] are */
-
- /* switch to svc mode */
- MOVW CPSR, R14
- BIC $PsrMask, R14
- ORR $(PsrDirq|PsrDfiq|PsrMsvc), R14
- MOVW R14, CPSR
-
- /* interupted code kernel or user? */
- AND.S $0xf, R1, R4
- BEQ _userexcep
-
- /* here for trap from SVC mode */
- MOVM.DB.W [R0-R2], (R13) /* set ureg->{type, psr, pc}; r13 points to ureg->type */
- MOVM.IA (R3), [R0-R4] /* restore [R0-R4] from previous mode's stack */
- MOVM.DB.W [R0-R14], (R13) /* save kernel level registers, at end r13 points to ureg */
- MOVW $setR12(SB), R12 /* Make sure we've got the kernel's SB loaded */
- MOVW R13, R0 /* first arg is pointer to ureg */
- SUB $8, R13 /* space for argument+link (for debugger) */
- MOVW $0xdeaddead,R11 /* marker */
-
- BL trap(SB)
-
- ADD $(8+4*15), R13 /* make r13 point to ureg->type */
- MOVW 8(R13), R14 /* restore link */
- MOVW 4(R13), R0 /* restore SPSR */
- MOVW R0, SPSR /* ... */
- MOVM.DB (R13), [R0-R14] /* restore registers */
- ADD $8, R13 /* pop past ureg->{type+psr} */
- RFE /* MOVM.IA.S.W (R13), [R15] */
-
- /* here for trap from USER mode */
-_userexcep:
- MOVM.DB.W [R0-R2], (R13) /* set ureg->{type, psr, pc}; r13 points to ureg->type */
- MOVM.IA (R3), [R0-R4] /* restore [R0-R4] from previous mode's stack */
- MOVM.DB.W.S [R0-R14], (R13) /* save kernel level registers, at end r13 points to ureg */
- MOVW $setR12(SB), R12 /* Make sure we've got the kernel's SB loaded */
- MOVW R13, R0 /* first arg is pointer to ureg */
- SUB $8, R13 /* space for argument+link (for debugger) */
-
- BL trap(SB)
-
- ADD $(8+4*15), R13 /* make r13 point to ureg->type */
- MOVW 8(R13), R14 /* restore link */
- MOVW 4(R13), R0 /* restore SPSR */
- MOVW R0, SPSR /* ... */
- MOVM.DB.S (R13), [R0-R14] /* restore registers */
- ADD $8, R13 /* pop past ureg->{type+psr} */
- RFE /* MOVM.IA.S.W (R13), [R15] */
-
-TEXT _vfiq(SB), $-4 /* FIQ */
- RFE /* FIQ is special, ignore it for now */
-
-/*
- * This is the first jump from kernel to user mode.
- * Fake a return from interrupt.
- *
- * Enter with R0 containing the user stack pointer.
- * UTZERO + 0x20 is always the entry point.
- *
- */
-TEXT touser(SB),$-4
- /* store the user stack pointer into the USR_r13 */
- MOVM.DB.W [R0], (R13)
- MOVM.S.IA.W (R13),[R13]
-
- /* set up a PSR for user level */
- MOVW $(PsrMusr), R0
- MOVW R0,SPSR
-
- /* save the PC on the stack */
- MOVW $(UTZERO+0x20), R0
- MOVM.DB.W [R0],(R13)
-
- /* return from interrupt */
- RFE /* MOVM.IA.S.W (R13), [R15] */
-
-/*
- * here to jump to a newly forked process
- */
-TEXT forkret(SB),$-4
- ADD $(4*15), R13 /* make r13 point to ureg->type */
- MOVW 8(R13), R14 /* restore link */
- MOVW 4(R13), R0 /* restore SPSR */
- MOVW R0, SPSR /* ... */
- MOVM.DB.S (R13), [R0-R14] /* restore registers */
- ADD $8, R13 /* pop past ureg->{type+psr} */
- RFE /* MOVM.IA.S.W (R13), [R15] */
-
-TEXT splhi(SB), $-4
- /* save caller pc in Mach */
- MOVW $(MACHADDR+0x04),R2
- MOVW R14,0(R2)
- /* turn off interrupts */
- MOVW CPSR, R0
- ORR $(PsrDirq), R0, R1
- MOVW R1, CPSR
- RET
-
-TEXT spllo(SB), $-4
- MOVW CPSR, R0
- BIC $(PsrDirq), R0, R1
- MOVW R1, CPSR
- RET
-
-TEXT splx(SB), $-4
- /* save caller pc in Mach */
- MOVW $(MACHADDR+0x04),R2
- MOVW R14,0(R2)
- /* reset interrupt level */
- MOVW R0, R1
- MOVW CPSR, R0
- MOVW R1, CPSR
- RET
-
-TEXT splxpc(SB), $-4 /* for iunlock */
- MOVW R0, R1
- MOVW CPSR, R0
- MOVW R1, CPSR
- RET
-
-TEXT spldone(SB), $0
- RET
-
-TEXT islo(SB), $-4
- MOVW CPSR, R0
- AND $(PsrDirq), R0
- EOR $(PsrDirq), R0
- RET
-
-TEXT cpsrr(SB), $-4
- MOVW CPSR, R0
- RET
-
-TEXT spsrr(SB), $-4
- MOVW SPSR, R0
- RET
-
-TEXT getsp(SB), $-4
- MOVW R13, R0
- RET
-
-TEXT getlink(SB), $-4
- MOVW R14, R0
- RET
-
-TEXT getcallerpc(SB), $-4
- MOVW 0(R13), R0
- RET
-
-TEXT tas(SB), $-4
-TEXT _tas(SB), $-4
- MOVW R0, R1
- MOVW $0xDEADDEAD, R0
- MOVW R0, R3
- SWPW R0, (R1)
- CMP.S R0, R3
- BEQ _tasout
- EOR R3, R3
- CMP.S R0, R3
- BEQ _tasout
- MOVW $1,R15
-_tasout:
- RET
-
-TEXT setlabel(SB), $-4
- MOVW R13, 0(R0) /* sp */
- MOVW R14, 4(R0) /* pc */
- MOVW $0, R0
- RET
-
-TEXT gotolabel(SB), $-4
- MOVW 0(R0), R13 /* sp */
- MOVW 4(R0), R14 /* pc */
- MOVW $1, R0
- RET
-
-/* save the state machine in power_state[] for an upcoming suspend
- */
-TEXT setpowerlabel(SB), $-4
- MOVW $power_state+0(SB), R0
- /* svc */ /* power_state[]: what */
- MOVW R1, 0(R0)
- MOVW R2, 4(R0)
- MOVW R3, 8(R0)
- MOVW R4, 12(R0)
- MOVW R5, 16(R0)
- MOVW R6, 20(R0)
- MOVW R7, 24(R0)
- MOVW R8, 28(R0)
- MOVW R9, 32(R0)
- MOVW R10,36(R0)
- MOVW R11,40(R0)
- MOVW R12,44(R0)
- MOVW R13,48(R0)
- MOVW R14,52(R0)
- MOVW SPSR, R1
- MOVW R1, 56(R0)
- MOVW CPSR, R2
- MOVW R2, 60(R0)
- /* copro */
- MRC CpMMU, 0, R3, C(CpDAC), C(0x0)
- MOVW R3, 144(R0)
- MRC CpMMU, 0, R3, C(CpTTB), C(0x0)
- MOVW R3, 148(R0)
- MRC CpMMU, 0, R3, C(CpControl), C(0x0)
- MOVW R3, 152(R0)
- MRC CpMMU, 0, R3, C(CpFSR), C(0x0)
- MOVW R3, 156(R0)
- MRC CpMMU, 0, R3, C(CpFAR), C(0x0)
- MOVW R3, 160(R0)
- MRC CpMMU, 0, R3, C(CpPID), C(0x0)
- MOVW R3, 164(R0)
- /* usr */
- BIC $(PsrMask), R2, R3
- ORR $(0xdf), R3
- MOVW R3, CPSR
- MOVW SPSR, R11
- MOVW R11, 168(R0)
- MOVW R12, 172(R0)
- MOVW R13, 176(R0)
- MOVW R14, 180(R0)
- /* irq */
- BIC $(PsrMask), R2, R3
- ORR $(0xd2), R3
- MOVW R3, CPSR
- MOVW SPSR, R11
- MOVW R11, 64(R0)
- MOVW R12, 68(R0)
- MOVW R13, 72(R0)
- MOVW R14, 76(R0)
- /* und */
- BIC $(PsrMask), R2, R3
- ORR $(0xdb), R3
- MOVW R3, CPSR
- MOVW SPSR, R11
- MOVW R11, 80(R0)
- MOVW R12, 84(R0)
- MOVW R13, 88(R0)
- MOVW R14, 92(R0)
- /* abt */
- BIC $(PsrMask), R2, R3
- ORR $(0xd7), R3
- MOVW R3, CPSR
- MOVW SPSR, R11
- MOVW R11, 96(R0)
- MOVW R12, 100(R0)
- MOVW R13, 104(R0)
- MOVW R14, 108(R0)
- /* fiq */
- BIC $(PsrMask), R2, R3
- ORR $(0xd1), R3
- MOVW R3, CPSR
- MOVW SPSR, R7
- MOVW R7, 112(R0)
- MOVW R8, 116(R0)
- MOVW R9, 120(R0)
- MOVW R10,124(R0)
- MOVW R11,128(R0)
- MOVW R12,132(R0)
- MOVW R13,136(R0)
- MOVW R14,140(R0)
- /* done */
- MOVW R2, CPSR
- MOVW R1, SPSR
- MOVW $0, R0
- RET
-
-/* Entered after a resume from suspend state.
- * The bootldr jumps here after a processor reset.
- */
-TEXT power_resume(SB), $-4
- MOVW $setR12(SB), R12 /* load the SB */
- /* SVC mode, interrupts disabled */
- MOVW $(PsrDirq|PsrDfiq|PsrMsvc), R1
- MOVW R1, CPSR
- /* gotopowerlabel() */
- /* svc */
-
- MOVW $power_state+0(SB), R0
- MOVW 56(R0), R1 /* R1: SPSR, R2: CPSR */
- MOVW 60(R0), R2
- MOVW R1, SPSR
- MOVW R2, CPSR
- /* copro */
- /* flush caches */
- MCR CpMMU, 0, R0, C(CpCacheFlush), C(0x7), 0
- /* drain prefetch */
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- /* drain write buffer */
- MCR CpMMU, 0, R0, C(CpCacheFlush), C(0xa), 4
- MCR CpMMU, 0, R0, C(CpTLBFlush), C(0x7)
- MOVW 144(R0), R3
- MCR CpMMU, 0, R3, C(CpDAC), C(0x0)
- MOVW 148(R0), R3
- MCR CpMMU, 0, R3, C(CpTTB), C(0x0)
- MOVW 156(R0), R3
- MCR CpMMU, 0, R3, C(CpFSR), C(0x0)
- MOVW 160(R0), R3
- MCR CpMMU, 0, R3, C(CpFAR), C(0x0)
- MOVW 164(R0), R3
- MCR CpMMU, 0, R3, C(CpPID), C(0x0)
- MOVW 152(R0), R3
- MCR CpMMU, 0, R3, C(CpControl), C(0x0) /* Enable cache */
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- /* flush i&d caches */
- MCR CpMMU, 0, R0, C(CpCacheFlush), C(0x7), 0
- /* flush tlb */
- MCR CpMMU, 0, R0, C(CpTLBFlush), C(0x7), 0
- /* drain prefetch */
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- /* usr */
- BIC $(PsrMask), R2, R3
- ORR $(0xdf), R3
- MOVW 168(R0), R11
- MOVW 172(R0), R12
- MOVW 176(R0), R13
- MOVW 180(R0), R14
- MOVW R11, SPSR
- /* irq */
- BIC $(PsrMask), R2, R3
- ORR $(0xd2), R3
- MOVW R3, CPSR
- MOVW 64(R0), R11
- MOVW 68(R0), R12
- MOVW 72(R0), R13
- MOVW 76(R0), R14
- MOVW R11, SPSR
- /* und */
- BIC $(PsrMask), R2, R3
- ORR $(0xdb), R3
- MOVW R3, CPSR
- MOVW 80(R0), R11
- MOVW 84(R0), R12
- MOVW 88(R0), R13
- MOVW 92(R0), R14
- MOVW R11, SPSR
- /* abt */
- BIC $(PsrMask), R2, R3
- ORR $(0xd7), R3
- MOVW R3, CPSR
- MOVW 96(R0), R11
- MOVW 100(R0), R12
- MOVW 104(R0), R13
- MOVW 108(R0), R14
- MOVW R11, SPSR
- /* fiq */
- BIC $(PsrMask), R2, R3
- ORR $(0xd1), R3
- MOVW R3, CPSR
- MOVW 112(R0), R7
- MOVW 116(R0), R8
- MOVW 120(R0), R9
- MOVW 124(R0), R10
- MOVW 128(R0), R11
- MOVW 132(R0), R12
- MOVW 136(R0), R13
- MOVW 140(R0), R14
- MOVW R7, SPSR
- /* svc */
- MOVW 56(R0), R1
- MOVW 60(R0), R2
- MOVW R1, SPSR
- MOVW R2, CPSR
- MOVW 0(R0), R1
- MOVW 4(R0), R2
- MOVW 8(R0), R3
- MOVW 12(R0),R4
- MOVW 16(R0),R5
- MOVW 20(R0),R6
- MOVW 24(R0),R7
- MOVW 28(R0),R8
- MOVW 32(R0),R9
- MOVW 36(R0),R10
- MOVW 40(R0),R11
- MOVW 44(R0),R12
- MOVW 48(R0),R13
- MOVW 52(R0),R14
- RET
-loop:
- B loop
-
-TEXT power_down(SB), $-4
-
- TEXT sa1100_power_off<>+0(SB),$8
- MOVW resetregs+0(SB),R7
- MOVW gpioregs+0(SB),R6
- MOVW memconfregs+0(SB),R5
- MOVW powerregs+0(SB),R3
-
-
- /* wakeup on power | rtc */
- MOVW $(PWR_rtc|PWR_gpio0),R2
- MOVW R2,0xc(R3)
-
- /* clear reset status */
- MOVW $(RCSR_all), R2
- MOVW R2, 0x4(R7)
- /* float */
- MOVW $(PCFR_opde|PCFR_fp|PCFR_fs), R2
- MOVW R2,0x10(R3)
- /* sleep state */
- MOVW $0,R2
- MOVW R2,0x18(R3)
- /* set resume address (pspr)*/
- MOVW $resumeaddr+0(SB),R1
- MOVW 0x0(R1), R2
- MOVW R2,0x8(R3)
-
- BL cacheflush(SB)
-
- /* disable clock switching */
- MCR CpPWR, 0, R1, C(CpTest), C(0x2), 2
-
- /* adjust mem timing */
- MOVW memconfregs+0(SB),R5
- MOVW 0x1c(R5), R2
- ORR $(MDREFR_k1db2), R2
- MOVW R2, 0x1c(R5)
-
- /* set PLL to lower speed w/ delay (ppcr = 0)*/
- MOVW powerregs+0(SB),R3
- MOVW $(120*206),R0
-l11: SUB $1,R0
- BGT l11
- MOVW $0, R2
- MOVW R2, 0x14(R3)
- MOVW $(120*206),R0
-l12: SUB $1,R0
- BGT l12
-
- /* setup registers for suspend procedure:
- * 1. clear RT in mscx (R1, R7, R8)
- * 2. clear DRI in mdrefr (R4)
- * 3. set slfrsh in mdrefr (R6)
- * 4. clear DE in mdcnfg (R9)
- * 5. clear dram refresh (R10)
- * 6. force sleep (R2)
- */
- /* 1 */
- MOVW 0x10(R5), R2
- BIC $(MSC_rt), R2
- MOVW R2, R1
- MOVW 0x14(R5), R2
- BIC $(MSC_rt), R2
- MOVW R2, R7
- MOVW 0x2c(R5), R2
- BIC $(MSC_rt), R2
- MOVW R2, R8
- /* 2 */
- MOVW 0x1c(R5), R2
- BIC $(0xff00), R2
- BIC $(0x00f0), R2
- MOVW R2, R4
- /* 3 */
- ORR $(MDREFR_slfrsh), R2, R6
- /* 4 */
- MOVW 0x0(R5), R9
- BIC $(MDCFNG_de), R9, R9
- /* 5 */
- MOVW R4, R2
- BIC $(MDREFR_slfrsh), R2, R2
- BIC $(MDREFR_e1pin), R2, R2
- MOVW R2, R10
- /* 6 */
- MOVW $1,R2
-
-TEXT power_magic(SB), $-4
- /* power_code gets copied into the area of no-ops below,
- * at a cache-line boundary (8 instructions)
- */
- MOVW R0, R0
- MOVW R0, R0
- MOVW R0, R0
- MOVW R0, R0
- MOVW R0, R0
- MOVW R0, R0
- MOVW R0, R0
- MOVW R0, R0
- MOVW R0, R0
- MOVW R0, R0
- MOVW R0, R0
- MOVW R0, R0
- MOVW R0, R0
- MOVW R0, R0
- MOVW R0, R0
- MOVW R0, R0
-
-TEXT power_code(SB), $-4
- /* Follow the procedure; this code gets copied to the no-op
- * area preceding this code
- */
- /* 1 */
- MOVW R1, 0x10(R5)
- MOVW R7, 0x14(R5)
- MOVW R8, 0x2c(R5)
- /* 2 */
- MOVW R4, 0x1c(R5)
- /* 3 */
- MOVW R6, 0x1c(R5)
- /* 4 */
- MOVW R9, 0x0(R5)
- /* 5 */
- MOVW R10, 0x1c(R5)
- /* 6 */
- MOVW R2, 0x0(R3)
-slloop:
- B slloop /* loop waiting for sleep */
-
-/* The first MCR instruction of this function needs to be on a cache-line
- * boundary; to make this happen, it will be copied to the first cache-line
- * boundary 8 words from the start of doze.
- *
- * Doze puts the machine into idle mode. Any interrupt will get it out
- * at the next instruction (the RET, to be precise).
- */
-TEXT doze(SB), $-4
- MOVW $UCDRAMZERO, R1
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- MOVW R0,R0
- RET
-
-TEXT doze_code(SB), $-4
- MCR CpPWR, 0, R0, C(CpTest), C(0x2), 2
- MOVW (R1), R0
- MCR CpPWR, 0, R0, C(CpTest), C(0x8), 2
--- a/sys/src/9/bitsy/main.c
+++ /dev/null
@@ -1,536 +1,0 @@
-#include "u.h"
-#include "../port/lib.h"
-#include "mem.h"
-#include "dat.h"
-#include "fns.h"
-#include "io.h"
-#include "ureg.h"
-#include "init.h"
-#include "pool.h"
-
-Mach *m;
-Proc *up;
-Conf conf;
-int noprint;
-
-void
-main(void)
-{
- mmuinvalidate();
-
- /* zero out bss */
- memset(edata, 0, end-edata);
-
- /* point to Mach structure */
- m = (Mach*)MACHADDR;
- memset(m, 0, sizeof(Mach));
- m->ticks = 1;
-
- active.machs[0] = 1;
-
- rs232power(1);
- quotefmtinstall();
- iprint("\nPlan 9 bitsy kernel\n");
- confinit();
- xinit();
- mmuinit();
- machinit();
- trapinit();
- sa1110_uartsetup(1);
- dmainit();
- screeninit();
- printinit(); /* from here on, print works, before this we need iprint */
- clockinit();
- procinit0();
- initseg();
- links();
- chandevreset();
- pageinit();
- swapinit();
- userinit();
- powerinit();
- schedinit();
-}
-
-/* need to do better */
-void
-reboot(void*, void*, ulong)
-{
-}
-
-
-/*
- * exit kernel either on a panic or user request
- */
-void
-exit(int)
-{
- void (*f)(void);
-
- cpushutdown();
- splhi();
- iprint("it's a wonderful day to die\n");
- cacheflush();
- mmuinvalidate();
- mmudisable();
- f = nil;
- (*f)();
-}
-
-static uchar *sp;
-
-/*
- * starting place for first process
- */
-void
-init0(void)
-{
- up->nerrlab = 0;
-
- spllo();
-
- /*
- * These are o.k. because rootinit is null.
- * Then early kproc's will have a root and dot.
- */
- up->slash = namec("#/", Atodir, 0, 0);
- pathclose(up->slash->path);
- up->slash->path = newpath("/");
- up->dot = cclone(up->slash);
-
- chandevinit();
-
- if(!waserror()){
- ksetenv("terminal", "bitsy", 0);
- ksetenv("cputype", "arm", 0);
- if(cpuserver)
- ksetenv("service", "cpu", 0);
- else
- ksetenv("service", "terminal", 0);
- poperror();
- }
- kproc("alarm", alarmkproc, 0);
- kproc("power", powerkproc, 0);
-
- touser(sp);
-}
-
-/*
- * pass boot arguments to /boot
- */
-static uchar *
-pusharg(char *p)
-{
- int n;
-
- n = strlen(p)+1;
- sp -= n;
- memmove(sp, p, n);
- return sp;
-}
-static void
-bootargs(ulong base)
-{
- int i, ac;
- uchar *av[32];
- uchar *bootpath;
- uchar **lsp;
-
- /*
- * the sizeof(Sargs) is to make the validaddr check in
- * trap.c's syscall() work even when we have less than the
- * max number of args.
- */
- sp = (uchar*)base + BY2PG - sizeof(Sargs);
-
- bootpath = pusharg("/boot/boot");
- ac = 0;
- av[ac++] = pusharg("boot");
-
- /* 4 byte word align stack */
- sp = (uchar*)((ulong)sp & ~3);
-
- /* build argc, argv on stack */
- sp -= (ac+1)*sizeof(sp);
- lsp = (uchar**)sp;
- for(i = 0; i < ac; i++)
- *lsp++ = av[i] + ((USTKTOP - BY2PG) - base);
- *lsp = 0;
-
- /* push argv onto stack */
- sp -= BY2WD;
- lsp = (uchar**)sp;
- *lsp = sp + BY2WD + ((USTKTOP - BY2PG) - base);
-
- /* push pointer to "/boot" */
- sp -= BY2WD;
- lsp = (uchar**)sp;
- *lsp = bootpath + ((USTKTOP - BY2PG) - base);
-
- /* leave space for where the initcode's caller's return PC would normally reside */
- sp -= BY2WD;
-
- /* relocate stack to user's virtual addresses */
- sp += (USTKTOP - BY2PG) - base;
-}
-
-/*
- * create the first process
- */
-void
-userinit(void)
-{
- Proc *p;
- Segment *s;
- KMap *k;
- Page *pg;
-
- /* no processes yet */
- up = nil;
-
- p = newproc();
- p->pgrp = newpgrp();
- p->egrp = smalloc(sizeof(Egrp));
- p->egrp->ref = 1;
- p->fgrp = dupfgrp(nil);
- p->rgrp = newrgrp();
- p->procmode = 0640;
-
- kstrdup(&eve, "");
- kstrdup(&p->text, "*init*");
- kstrdup(&p->user, eve);
-
- /*
- * Kernel Stack
- */
- p->sched.pc = (ulong)init0;
- p->sched.sp = (ulong)p->kstack+KSTACK-(sizeof(Sargs)+BY2WD);
-
- /*
- * User Stack
- */
- s = newseg(SG_STACK, USTKTOP-USTKSIZE, USTKSIZE/BY2PG);
- p->seg[SSEG] = s;
- pg = newpage(1, 0, USTKTOP-BY2PG);
- segpage(s, pg);
- k = kmap(pg);
- bootargs(VA(k));
- kunmap(k);
-
- /*
- * Text
- */
- s = newseg(SG_TEXT, UTZERO, 1);
- p->seg[TSEG] = s;
- pg = newpage(1, 0, UTZERO);
- pg->txtflush = ~0;
- segpage(s, pg);
- k = kmap(s->map[0]->pages[0]);
- memmove((ulong*)VA(k), initcode, sizeof initcode);
- kunmap(k);
-
- ready(p);
-}
-
-/*
- * set mach dependent process state for a new process
- */
-void
-procsetup(Proc *p)
-{
- p->fpstate = FPinit;
-}
-
-void
-procfork(Proc*)
-{
-}
-
-/*
- * Save the mach dependent part of the process state.
- */
-void
-procsave(Proc *p)
-{
- USED(p);
-}
-
-/* place holder */
-/*
- * dummy since rdb is not included
- */
-void
-rdb(void)
-{
-}
-
-/*
- * probe the last location in a meg of memory, make sure it's not
- * reflected into something else we've already found.
- */
-int
-probemem(ulong addr)
-{
- int i;
- ulong *p;
- ulong a;
-
- addr += OneMeg - sizeof(ulong);
- p = (ulong*)addr;
- *p = addr;
- for(i=0; i<nelem(conf.mem); i++){
- for(a = conf.mem[i].base+OneMeg-sizeof(ulong); a < conf.mem[i].limit; a += OneMeg){
- p = (ulong*)a;
- *p = 0;
- }
- }
- p = (ulong*)addr;
- if(*p != addr)
- return -1;
- return 0;
-}
-
-/*
- * we assume that the kernel is at the beginning of one of the
- * contiguous chunks of memory.
- */
-void
-confinit(void)
-{
- int i, j;
- ulong addr;
- ulong ktop;
-
- /* find first two contiguous sections of available memory */
- addr = PHYSDRAM0;
- for(i=0; i<nelem(conf.mem); i++){
- conf.mem[i].base = addr;
- conf.mem[i].limit = addr;
- }
- for(j=0; j<nelem(conf.mem); j++){
- conf.mem[j].base = addr;
- conf.mem[j].limit = addr;
-
- for(i = 0; i < 512; i++){
- if(probemem(addr) == 0)
- break;
- addr += OneMeg;
- }
- for(; i < 512; i++){
- if(probemem(addr) < 0)
- break;
- addr += OneMeg;
- conf.mem[j].limit = addr;
- }
- }
-
- conf.npage = 0;
- for(i=0; i<nelem(conf.mem); i++){
- /* take kernel out of allocatable space */
- ktop = PGROUND((ulong)end);
- if(ktop >= conf.mem[i].base && ktop <= conf.mem[i].limit)
- conf.mem[i].base = ktop;
-
- /* zero memory */
- memset((void*)conf.mem[i].base, 0, conf.mem[i].limit - conf.mem[i].base);
-
- conf.mem[i].npage = (conf.mem[i].limit - conf.mem[i].base)/BY2PG;
- conf.npage += conf.mem[i].npage;
- }
-
- if(conf.npage > 16*MB/BY2PG){
- conf.upages = (conf.npage*60)/100;
- imagmem->minarena = 4*1024*1024;
- }else
- conf.upages = (conf.npage*40)/100;
- conf.ialloc = ((conf.npage-conf.upages)/2)*BY2PG;
-
- /* only one processor */
- conf.nmach = 1;
-
- /* set up other configuration parameters */
- conf.nproc = 100;
- conf.nswap = conf.npage*3;
- conf.nswppo = 4096;
- conf.nimage = 200;
-
- conf.monitor = 1;
-
- conf.copymode = 0; /* copy on write */
-}
-
-GPIOregs *gpioregs;
-ulong *egpioreg = (ulong*)EGPIOREGS;
-PPCregs *ppcregs;
-MemConfRegs *memconfregs;
-PowerRegs *powerregs;
-ResetRegs *resetregs;
-
-/*
- * configure the machine
- */
-void
-machinit(void)
-{
- /* set direction of SA1110 io pins and select alternate functions for some */
- gpioregs = mapspecial(GPIOREGS, sizeof(GPIOregs));
- gpioregs->direction =
- GPIO_LDD8_o|GPIO_LDD9_o|GPIO_LDD10_o|GPIO_LDD11_o
- |GPIO_LDD12_o|GPIO_LDD13_o|GPIO_LDD14_o|GPIO_LDD15_o
- |GPIO_CLK_SET0_o|GPIO_CLK_SET1_o
- |GPIO_L3_SDA_io|GPIO_L3_MODE_o|GPIO_L3_SCLK_o
- |GPIO_COM_RTS_o;
- gpioregs->rising = 0;
- gpioregs->falling = 0;
- gpioregs->altfunc |=
- GPIO_LDD8_o|GPIO_LDD9_o|GPIO_LDD10_o|GPIO_LDD11_o
- |GPIO_LDD12_o|GPIO_LDD13_o|GPIO_LDD14_o|GPIO_LDD15_o
- |GPIO_SSP_CLK_i;
-
- /* map in special H3650 io pins */
- egpioreg = mapspecial(EGPIOREGS, sizeof(ulong));
-
- /* map in peripheral pin controller (ssp will need it) */
- ppcregs = mapspecial(PPCREGS, sizeof(PPCregs));
-
- /* SA1110 power management */
- powerregs = mapspecial(POWERREGS, sizeof(PowerRegs));
-
- /* memory configuraton */
- memconfregs = mapspecial(MEMCONFREGS, sizeof(MemConfRegs));
-
- /* reset controller */
- resetregs = mapspecial(RESETREGS, sizeof(ResetRegs));
-}
-
-
-/*
- * manage egpio bits
- */
-static ulong egpiosticky;
-
-void
-egpiobits(ulong bits, int on)
-{
- if(on)
- egpiosticky |= bits;
- else
- egpiosticky &= ~bits;
- *egpioreg = egpiosticky;
-}
-
-void
-rs232power(int on)
-{
- egpiobits(EGPIO_rs232_power, on);
- delay(50);
-}
-
-void
-audioamppower(int on)
-{
- egpiobits(EGPIO_audio_power, on);
- delay(50);
-}
-
-void
-audioicpower(int on)
-{
- egpiobits(EGPIO_audio_ic_power, on);
- delay(50);
-}
-
-void
-irpower(int on)
-{
- egpiobits(EGPIO_ir_power, on);
- delay(50);
-}
-
-void
-lcdpower(int on)
-{
- egpiobits(EGPIO_lcd_3v|EGPIO_lcd_ic_power|EGPIO_lcd_5v|EGPIO_lcd_9v, on);
- delay(50);
-}
-
-void
-flashprogpower(int on)
-{
- egpiobits(EGPIO_prog_flash, on);
-}
-
-/* here on hardware reset */
-void
-resettrap(void)
-{
-}
-
-/*
- * for drivers that used to run on x86's
- */
-void
-outb(ulong a, uchar v)
-{
- *(uchar*)a = v;
-}
-void
-outs(ulong a, ushort v)
-{
- *(ushort*)a = v;
-}
-void
-outss(ulong a, void *p, int n)
-{
- ushort *sp = p;
-
- while(n-- > 0)
- *(ushort*)a = *sp++;
-}
-void
-outl(ulong a, ulong v)
-{
- *(ulong*)a = v;
-}
-uchar
-inb(ulong a)
-{
- return *(uchar*)a;
-}
-ushort
-ins(ulong a)
-{
- return *(ushort*)a;
-}
-void
-inss(ulong a, void *p, int n)
-{
- ushort *sp = p;
-
- while(n-- > 0)
- *sp++ = *(ushort*)a;
-}
-ulong
-inl(ulong a)
-{
- return *(ulong*)a;
-}
-
-char*
-getconf(char*)
-{
- return nil;
-}
-
-int
-cmpswap(long *addr, long old, long new)
-{
- int r, s;
-
- s = splhi();
- if(r = (*addr==old))
- *addr = new;
- splx(s);
- return r;
-}
-
--- a/sys/src/9/bitsy/map
+++ /dev/null
@@ -1,10 +1,0 @@
-defn acidmap()
-{
- local dfoffset;
-
- dfoffset = map()[1][3];
- map({"text", _start, etext, 0x20});
- map({"data", etext+1, edata, dfoffset});
- print("Set map for plan 9 kernel image\n");
- print("btext ", _start, " etext ", etext, "\n");
-}
--- a/sys/src/9/bitsy/mem.h
+++ /dev/null
@@ -1,234 +1,0 @@
-/*
- * Memory and machine-specific definitions. Used in C and assembler.
- */
-
-/*
- * Sizes
- */
-#define BI2BY 8 /* bits per byte */
-#define BI2WD 32 /* bits per word */
-#define BY2WD 4 /* bytes per word */
-#define BY2V 8 /* bytes per double word */
-#define BY2PG 4096 /* bytes per page */
-#define WD2PG (BY2PG/BY2WD) /* words per page */
-#define PGSHIFT 12 /* log(BY2PG) */
-#define ROUND(s, sz) (((s)+(sz-1))&~(sz-1))
-#define PGROUND(s) ROUND(s, BY2PG)
-#define BLOCKALIGN 8
-
-#define MAXMACH 1 /* max # cpus system can run */
-
-/*
- * Time
- */
-#define HZ (20) /* clock frequency */
-#define MS2HZ (1000/HZ) /* millisec per clock tick */
-#define TK2SEC(t) ((t)/HZ) /* ticks to seconds */
-
-/*
- * Virtual addresses:
- *
- * We direct map all discovered DRAM and the area twixt 0xe0000000 and
- * 0xe8000000 used to provide zeros for cache flushing.
- *
- * Flash is mapped to 0xb0000000 and special registers are mapped
- * on demand to areas starting at 0xa0000000.
- *
- * The direct mapping is convenient but not necessary. It means
- * that we don't have to turn on the MMU till well into the
- * kernel. This can be changed by providing a mapping in l.s
- * before calling main.
- */
-#define UZERO 0 /* base of user address space */
-#define UTZERO (UZERO+BY2PG) /* first address in user text */
-#define KZERO 0xC0000000 /* base of kernel address space */
-#define KTZERO 0xC0008000 /* first address in kernel text */
-#define EMEMZERO 0x90000000 /* 256 meg for add on memory */
-#define EMEMTOP 0xA0000000 /* ... */
-#define REGZERO 0xA0000000 /* 128 meg for mapspecial regs */
-#define REGTOP 0xA8000000 /* ... */
-#define FLASHZERO 0xB0000000 /* 128 meg for flash */
-#define FLASHTOP 0xB8000000 /* ... */
-#define DRAMZERO 0xC0000000 /* 128 meg for dram */
-#define DRAMTOP 0xC8000000 /* ... */
-#define UCDRAMZERO 0xC8000000 /* 128 meg for dram (uncached/unbuffered) */
-#define UCDRAMTOP 0xD0000000 /* ... */
-#define NULLZERO 0xE0000000 /* 128 meg for cache flush zeroes */
-#define NULLTOP 0xE8000000 /* ... */
-#define USTKTOP 0x2000000 /* byte just beyond user stack */
-#define USTKSIZE (8*1024*1024) /* size of user stack */
-#define MACHADDR (KZERO+0x00001000)
-#define EVECTORS 0xFFFF0000 /* virt base of exception vectors */
-
-#define KSTACK (16*1024) /* Size of kernel stack */
-
-/*
- * Offsets into flash
- */
-#define Flash_bootldr (FLASHZERO+0x0) /* boot loader */
-#define Flash_kernel (FLASHZERO+0x10000) /* boot kernel */
-#define Flash_tar (FLASHZERO+0x200000) /* fs.sac (tar file) */
-
-/*
- * virtual MMU
- */
-#define PTEMAPMEM (1024*1024)
-#define PTEPERTAB (PTEMAPMEM/BY2PG)
-#define SEGMAPSIZE 1984
-#define SSEGMAPSIZE 16
-#define PPN(x) ((x)&~(BY2PG-1))
-
-/*
- * SA1110 definitions
- */
-
-/*
- * memory physical addresses
- */
-#define PHYSFLASH0 0x00000000
-#define PHYSDRAM0 0xC0000000
-#define PHYSNULL0 0xE0000000
-
-/*
- * peripheral control module physical addresses
- */
-#define USBREGS 0x80000000 /* serial port 0 - USB */
-#define UART1REGS 0x80010000 /* serial port 1 - UART */
-#define GPCLKREGS 0x80020060 /* serial port 1 - general purpose clock */
-#define UART2REGS 0x80030000 /* serial port 2 - low speed IR */
-#define HSSPREGS 0x80040060 /* serial port 2 - high speed IR */
-#define UART3REGS 0x80050000 /* serial port 3 - RS232 UART */
-#define MCPREGS 0x80060000 /* serial port 4 - multimedia comm port */
-#define SSPREGS 0x80070060 /* serial port 4 - synchronous serial port */
-#define OSTIMERREGS 0x90000000 /* operating system timer registers */
-#define POWERREGS 0x90020000 /* power management */
-#define RESETREGS 0x90030000 /* reset controller */
-#define GPIOREGS 0x90040000 /* 28 general purpose IO pins */
-#define INTRREGS 0x90050000 /* interrupt registers */
-#define PPCREGS 0x90060000 /* peripheral pin controller */
-#define MEMCONFREGS 0xA0000000 /* memory configuration */
-#define LCDREGS 0xB0100000 /* display */
-
-/*
- * PCMCIA addresses
- */
-#define PHYSPCM0REGS 0x20000000
-#define PYHSPCM0ATTR 0x28000000
-#define PYHSPCM0MEM 0x2C000000
-#define PHYSPCM1REGS 0x30000000
-#define PYHSPCM1ATTR 0x38000000
-#define PYHSPCM1MEM 0x3C000000
-
-/*
- * Program Status Registers
- */
-#define PsrMusr 0x00000010 /* mode */
-#define PsrMfiq 0x00000011
-#define PsrMirq 0x00000012
-#define PsrMsvc 0x00000013
-#define PsrMabt 0x00000017
-#define PsrMund 0x0000001B
-#define PsrMask 0x0000001F
-
-#define PsrDfiq 0x00000040 /* disable FIQ interrupts */
-#define PsrDirq 0x00000080 /* disable IRQ interrupts */
-
-#define PsrV 0x10000000 /* overflow */
-#define PsrC 0x20000000 /* carry/borrow/extend */
-#define PsrZ 0x40000000 /* zero */
-#define PsrN 0x80000000 /* negative/less than */
-
-/*
- * Coprocessors
- */
-#define CpMMU 15
-#define CpPWR 15
-
-/*
- * Internal MMU coprocessor registers
- */
-#define CpCPUID 0 /* R: */
-#define CpControl 1 /* RW: */
-#define CpTTB 2 /* RW: translation table base */
-#define CpDAC 3 /* RW: domain access control */
-#define CpFSR 5 /* RW: fault status */
-#define CpFAR 6 /* RW: fault address */
-#define CpCacheFlush 7 /* W: cache flushing, wb draining*/
-#define CpTLBFlush 8 /* W: TLB flushing */
-#define CpRBFlush 9 /* W: Read Buffer ops */
-#define CpPID 13 /* RW: PID for virtual mapping */
-#define CpBpt 14 /* W: Breakpoint register */
-#define CpTest 15 /* W: Test, Clock and Idle Control */
-
-/*
- * CpControl
- */
-#define CpCmmuena 0x00000001 /* M: MMU enable */
-#define CpCalign 0x00000002 /* A: alignment fault enable */
-#define CpCdcache 0x00000004 /* C: data cache on */
-#define CpCwb 0x00000008 /* W: write buffer turned on */
-#define CpCi32 0x00000010 /* P: 32-bit program space */
-#define CpCd32 0x00000020 /* D: 32-bit data space */
-#define CpCbe 0x00000080 /* B: big-endian operation */
-#define CpCsystem 0x00000100 /* S: system permission */
-#define CpCrom 0x00000200 /* R: ROM permission */
-#define CpCicache 0x00001000 /* I: instruction cache on */
-#define CpCvivec 0x00002000 /* X: virtual interrupt vector adjust */
-
-/*
- * fault codes
- */
-#define FCterm 0x2 /* terminal */
-#define FCvec 0x0 /* vector */
-#define FCalignf 0x1 /* unaligned full word data access */
-#define FCalignh 0x3 /* unaligned half word data access */
-#define FCl1abort 0xc /* level 1 external abort on translation */
-#define FCl2abort 0xe /* level 2 external abort on translation */
-#define FCtransSec 0x5 /* section translation */
-#define FCtransPage 0x7 /* page translation */
-#define FCdomainSec 0x9 /* section domain */
-#define FCdomainPage 0x11 /* page domain */
-#define FCpermSec 0x9 /* section permissions */
-#define FCpermPage 0x11 /* page permissions */
-#define FCabortLFSec 0x4 /* external abort on linefetch for section */
-#define FCabortLFPage 0x6 /* external abort on linefetch for page */
-#define FCabortNLFSec 0x8 /* external abort on non-linefetch for section */
-#define FCabortNLFPage 0xa /* external abort on non-linefetch for page */
-
-/*
- * PTE bits used by fault.h. mmu.c translates them to real values.
- */
-#define PTEVALID (1<<0)
-#define PTERONLY 0 /* this is implied by the absence of PTEWRITE */
-#define PTEWRITE (1<<1)
-#define PTEUNCACHED (1<<2)
-#define PTEKERNEL (1<<3) /* no user access */
-
-/*
- * H3650 specific definitions
- */
-#define EGPIOREGS 0x49000000 /* Additional GPIO register */
-
-/* Power management */
-
-#define PWR_rtc 0x80000000 /* resume on RTC */
-#define PWR_gpio0 0x00000001 /* resume on power button */
-
-#define RCSR_all 0x0000000f
-#define PCFR_opde 0x00000001 /* oscillator power-down enable */
-#define PCFR_suspend 0x00000001
-#define PCFR_fp 0x00000002 /* float pcmcia */
-#define PCFR_fs 0x00000004 /* float static memory */
-#define PCFR_fo 0x00000008
-
-#define MDREFR_k1db2 (1 << 22)
-#define MDREFR_slfrsh 0x80000000 /* self refresh */
-#define MDREFR_e1pin (1 << 20)
-#define MSC_rt 0x00030003
-
-#define MDCNFG_de0 0x00000001 /* dram enable */
-#define MDCNFG_de1 0x00000002
-#define MDCNFG_de2 0x00000004
-#define MDCNFG_de3 0x00000008
-#define MDCFNG_de 0x0000000f
-#define PMCR_sf 1
--- a/sys/src/9/bitsy/mkfile
+++ /dev/null
@@ -1,139 +1,0 @@
-CONF=bitsy
-CONFLIST=bitsy
-
-objtype=arm
-</$objtype/mkfile
-p=9
-
-DEVS=`{rc ../port/mkdevlist $CONF}
-
-PORT=\
- alarm.$O\
- alloc.$O\
- allocb.$O\
- auth.$O\
- cache.$O\
- chan.$O\
- dev.$O\
- edf.$O\
- fault.$O\
- mul64fract.$O\
- rebootcmd.$O\
- page.$O\
- parse.$O\
- pgrp.$O\
- portclock.$O\
- print.$O\
- proc.$O\
- qio.$O\
- qlock.$O\
- segment.$O\
- swap.$O\
- sysfile.$O\
- sysproc.$O\
- taslock.$O\
- tod.$O\
- xalloc.$O\
- random.$O\
-
-OBJ=\
- l.$O\
- clock.$O\
- defont.$O\
- fpi.$O\
- fpiarm.$O\
- fpimem.$O\
- main.$O\
- mmu.$O\
- power.$O\
- sa1110dma.$O\
- screen.$O\
- trap.$O\
- $CONF.root.$O\
- $CONF.rootc.$O\
- $DEVS\
- $PORT\
-
-LIB=\
- /$objtype/lib/libmemlayer.a\
- /$objtype/lib/libmemdraw.a\
- /$objtype/lib/libdraw.a\
- /$objtype/lib/libip.a\
- /$objtype/lib/libc.a\
- /$objtype/lib/libsec.a\
- /$objtype/lib/libip.a\
-
-size:VQ: $p$CONF
- ls -l $p$CONF|sed 's/^[^ ]+ [^ ]+ [^ ]+ [^ ]+ [^ ]+ ([^ ]+).*/load ram 0xc0008000 \1/'
- echo load kernel
- echo !xms /sys/src/9/bitsy/^$p$CONF
- echo jump 0xc0008010
-
-acid:VQ:
- echo acid -lmap s9bitsy
-
-$p$CONF: $OBJ $CONF.c $LIB /arm/inflate
- $CC $CFLAGS '-DKERNDATE='`{date -n} $CONF.c
- $LD -o $target -H5 -R4 -T0xC0008010 -l $OBJ $CONF.$O $LIB
- $LD -o s$target -R4 -T0xC0008010 -l $OBJ $CONF.$O $LIB
- gzip $target
- cat /arm/inflate $target.gz > $target
- echo the boot loader misses the last 12 bytes >> $target
- rm $target.gz
-
-install:V: $p$CONF paqdisk
- if(test -d /n/once/arm){
- cp $p$CONF /n/once/arm/$p$CONF
- cp s$p$CONF /n/once/arm/s$p$CONF
- cp paqdisk /n/once/arm/paqdisk
- }
- if not
- status=''
- # 9fs lookout && cp $p$CONF /n/lookout/$objtype/$p$CONF
-
-installkern:V: $p$CONF
- cp $p$CONF /$objtype/$p$CONF
- cp s$p$CONF /$objtype/s$p$CONF
-
-<../boot/bootmkfile
-<../port/portmkfile
-<|../port/mkbootrules $CONF
-
-init.h:D: ../port/initcode.c init9.s
- $CC ../port/initcode.c
- $AS init9.s
- $LD -l -R1 -s -o init.out init9.$O initcode.$O /arm/lib/libc.a
- {echo 'uchar initcode[]={'
- xd -1x <init.out |
- sed -e 's/^[0-9a-f]+ //' -e 's/ ([0-9a-f][0-9a-f])/0x\1,/g'
- echo '};'} > init.h
-
-clock.$O: /$objtype/include/ureg.h
-devether.$O: /$objtype/include/ureg.h ../port/netif.h
-devpcmcia.$O: /$objtype/include/ureg.h
-fpi.$O: fpi.h
-fpiarm.$O: /$objtype/include/ureg.h fpi.h
-fpimem.$O: fpi.h
-main.$O: /$objtype/include/ureg.h errstr.h init.h
-mmu.$O: /$objtype/include/ureg.h
-power.$O: /$objtype/include/ureg.h
-scu.$O: /$objtype/include/ureg.h
-sa1110dma.$O: /$objtype/include/ureg.h
-screen.$O: gamma.h
-sdata.$O: /$objtype/include/ureg.h
-trap$O: /$objtype/include/ureg.h
-wavelan.$O: /$objtype/include/ureg.h wavelan.c wavelan.h ../pc/wavelan.h
-
-paqdisk:V:
- rm -fr armpaq
- mkdir armpaq
- cd armpaq
- disk/mkfs -d . /sys/lib/sysconfig/proto/armpaqproto
- mkpaqfs -o ../paqdisk
- cd ..
- echo load ramdisk
- echo !xms /sys/src/9/bitsy/paqdisk
-
-bitsy.clean:
- rm -rf armpaq $p$CONF s$p$CONF paqdisk $CONF.c boot$CONF.c ../boot/libboot.a5
-
--- a/sys/src/9/bitsy/mmu.c
+++ /dev/null
@@ -1,532 +1,0 @@
-#include "u.h"
-#include "../port/lib.h"
-#include "mem.h"
-#include "dat.h"
-#include "fns.h"
-#include "io.h"
-#include "ureg.h"
-#include "../port/error.h"
-
-/*
- * to avoid mmu and cash flushing, we use the pid register in the MMU
- * to map all user addresses. Although there are 64 possible pids, we
- * can only use 31 because there are only 32 protection domains and we
- * need one for the kernel. Pid i is thus associated with domain i.
- * Domain 0 is used for the kernel.
- */
-
-/* real protection bits */
-enum
-{
- /* level 1 descriptor bits */
- L1TypeMask= (3<<0),
- L1Invalid= (0<<0),
- L1PageTable= (1<<0),
- L1Section= (2<<0),
- L1Cached= (1<<3),
- L1Buffered= (1<<2),
- L1DomShift= 5,
- L1Domain0= (0<<L1DomShift),
- L1KernelRO= (0x0<<10),
- L1KernelRW= (0x1<<10),
- L1UserRO= (0x2<<10),
- L1UserRW= (0x3<<10),
- L1SectBaseMask= (0xFFF<<20),
- L1PTBaseMask= (0x3FFFFF<<10),
-
- /* level 2 descriptor bits */
- L2TypeMask= (3<<0),
- L2SmallPage= (2<<0),
- L2LargePage= (1<<0),
- L2Cached= (1<<3),
- L2Buffered= (1<<2),
- L2KernelRW= (0x55<<4),
- L2UserRO= (0xAA<<4),
- L2UserRW= (0xFF<<4),
- L2PageBaseMask= (0xFFFFF<<12),
-
- /* domain values */
- Dnoaccess= 0,
- Dclient= 1,
- Dmanager= 3,
-};
-
-ulong *l1table;
-static int mmuinited;
-
-/*
- * We map all of memory, flash, and the zeros area with sections.
- * Special use space is mapped on the fly with regmap.
- */
-void
-mmuinit(void)
-{
- ulong a, o;
- ulong *t;
-
- /* get a prototype level 1 page */
- l1table = xspanalloc(16*1024, 16*1024, 0);
- memset(l1table, 0, 16*1024);
-
- /* map low mem (I really don't know why I have to do this -- presotto) */
- for(o = 0; o < 1*OneMeg; o += OneMeg)
- l1table[(0+o)>>20] = L1Section | L1KernelRW| L1Domain0
- | L1Cached | L1Buffered
- | ((0+o)&L1SectBaseMask);
-
- /* map DRAM */
- for(o = 0; o < DRAMTOP-DRAMZERO; o += OneMeg)
- l1table[(DRAMZERO+o)>>20] = L1Section | L1KernelRW| L1Domain0
- | L1Cached | L1Buffered
- | ((PHYSDRAM0+o)&L1SectBaseMask);
-
- /* uncached DRAM */
- for(o = 0; o < UCDRAMTOP-UCDRAMZERO; o += OneMeg)
- l1table[(UCDRAMZERO+o)>>20] = L1Section | L1KernelRW| L1Domain0
- | ((PHYSDRAM0+o)&L1SectBaseMask);
-
- /* map zeros area */
- for(o = 0; o < NULLTOP-NULLZERO; o += OneMeg)
- l1table[(NULLZERO+o)>>20] = L1Section | L1KernelRW | L1Domain0
- | L1Cached | L1Buffered
- | ((PHYSNULL0+o)&L1SectBaseMask);
-
- /* map flash */
- for(o = 0; o < FLASHTOP-FLASHZERO; o += OneMeg)
- l1table[(FLASHZERO+o)>>20] = L1Section | L1KernelRW | L1Domain0
- | ((PHYSFLASH0+o)&L1SectBaseMask);
-
- /* map peripheral control module regs */
- mapspecial(0x80000000, OneMeg);
-
- /* map system control module regs */
- mapspecial(0x90000000, OneMeg);
-
- /*
- * double map start of ram to exception vectors
- */
- a = EVECTORS;
- t = xspanalloc(BY2PG, 1024, 0);
- memset(t, 0, BY2PG);
- l1table[a>>20] = L1PageTable | L1Domain0 | (((ulong)t) & L1PTBaseMask);
- t[(a&0xfffff)>>PGSHIFT] = L2SmallPage | L2KernelRW | (PHYSDRAM0 & L2PageBaseMask);
-
- mmurestart();
-
- mmuinited = 1;
-}
-
-void
-mmurestart(void) {
- /* set up the domain register to cause all domains to obey pte access bits */
-
- putdac(Dclient);
-
- /* point to map */
- putttb((ulong)l1table);
-
- /* enable mmu */
- wbflush();
- mmuinvalidate();
- mmuenable();
- cacheflush();
-}
-
-/*
- * map on request
- */
-static void*
-_map(ulong pa, int len, ulong zero, ulong top, ulong l1prop, ulong l2prop)
-{
- ulong *t;
- ulong va, i, base, end, off, entry;
- int large;
- ulong* rv;
-
- rv = nil;
- large = len >= 128*1024;
- if(large){
- base = pa & ~(OneMeg-1);
- end = (pa+len-1) & ~(OneMeg-1);
- } else {
- base = pa & ~(BY2PG-1);
- end = (pa+len-1) & ~(BY2PG-1);
- }
- off = pa - base;
-
- for(va = zero; va < top && base <= end; va += OneMeg){
- switch(l1table[va>>20] & L1TypeMask){
- default:
- /* found unused entry on level 1 table */
- if(large){
- if(rv == nil)
- rv = (ulong*)(va+off);
- l1table[va>>20] = L1Section | l1prop | L1Domain0 |
- (base & L1SectBaseMask);
- base += OneMeg;
- continue;
- } else {
-
- /* create an L2 page table and keep going */
- t = xspanalloc(BY2PG, 1024, 0);
- memset(t, 0, BY2PG);
- l1table[va>>20] = L1PageTable | L1Domain0 |
- (((ulong)t) & L1PTBaseMask);
- }
- break;
- case L1Section:
- /* if it's already mapped in a one meg area, don't remap */
- entry = l1table[va>>20];
- i = entry & L1SectBaseMask;
- if(pa >= i && (pa+len) <= i + OneMeg)
- if((entry & ~L1SectBaseMask) == (L1Section | l1prop | L1Domain0))
- return (void*)(va + (pa & (OneMeg-1)));
-
- continue;
- case L1PageTable:
- if(large)
- continue;
- break;
- }
-
- /* here if we're using page maps instead of sections */
- t = (ulong*)(l1table[va>>20] & L1PTBaseMask);
- for(i = 0; i < OneMeg && base <= end; i += BY2PG){
- entry = t[i>>PGSHIFT];
-
- /* found unused entry on level 2 table */
- if((entry & L2TypeMask) != L2SmallPage){
- if(rv == nil)
- rv = (ulong*)(va+i+off);
- t[i>>PGSHIFT] = L2SmallPage | l2prop |
- (base & L2PageBaseMask);
- base += BY2PG;
- continue;
- }
- }
- }
-
- /* didn't fit */
- if(base <= end)
- return nil;
- cacheflush();
-
- return rv;
-}
-
-/* map in i/o registers */
-void*
-mapspecial(ulong pa, int len)
-{
- return _map(pa, len, REGZERO, REGTOP, L1KernelRW, L2KernelRW);
-}
-
-/* map add on memory */
-void*
-mapmem(ulong pa, int len, int cached)
-{
- ulong l1, l2;
-
- if(cached){
- l1 = L1KernelRW|L1Cached|L1Buffered;
- l2 = L2KernelRW|L2Cached|L2Buffered;
- } else {
- l1 = L1KernelRW;
- l2 = L2KernelRW;
- }
- return _map(pa, len, EMEMZERO, EMEMTOP, l1, l2);
-}
-
-/* map a virtual address to a physical one */
-ulong
-mmu_paddr(ulong va)
-{
- ulong entry;
- ulong *t;
-
- entry = l1table[va>>20];
- switch(entry & L1TypeMask){
- case L1Section:
- return (entry & L1SectBaseMask) | (va & (OneMeg-1));
- case L1PageTable:
- t = (ulong*)(entry & L1PTBaseMask);
- va &= OneMeg-1;
- entry = t[va>>PGSHIFT];
- switch(entry & L1TypeMask){
- case L2SmallPage:
- return (entry & L2PageBaseMask) | (va & (BY2PG-1));
- }
- }
- return 0;
-}
-
-/* map a physical address to a virtual one */
-ulong
-findva(ulong pa, ulong zero, ulong top)
-{
- int i;
- ulong entry, va;
- ulong start, end;
- ulong *t;
-
- for(va = zero; va < top; va += OneMeg){
- /* search the L1 entry */
- entry = l1table[va>>20];
- switch(entry & L1TypeMask){
- default:
- return 0; /* no holes */
- case L1Section:
- start = entry & L1SectBaseMask;
- end = start + OneMeg;
- if(pa >= start && pa < end)
- return va | (pa & (OneMeg-1));
- continue;
- case L1PageTable:
- break;
- }
-
- /* search the L2 entry */
- t = (ulong*)(l1table[va>>20] & L1PTBaseMask);
- for(i = 0; i < OneMeg; i += BY2PG){
- entry = t[i>>PGSHIFT];
-
- /* found unused entry on level 2 table */
- if((entry & L2TypeMask) != L2SmallPage)
- break;
-
- start = entry & L2PageBaseMask;
- end = start + BY2PG;
- if(pa >= start && pa < end)
- return va | (BY2PG*i) | (pa & (BY2PG-1));
- }
- }
- return 0;
-}
-ulong
-mmu_kaddr(ulong pa)
-{
- ulong va;
-
- /* try the easy stuff first (the first case is true most of the time) */
- if(pa >= PHYSDRAM0 && pa <= PHYSDRAM0+(DRAMTOP-DRAMZERO))
- return DRAMZERO+(pa-PHYSDRAM0);
- if(pa >= PHYSFLASH0 && pa <= PHYSFLASH0+(FLASHTOP-FLASHZERO))
- return FLASHZERO+(pa-PHYSFLASH0);
- if(pa >= PHYSNULL0 && pa <= PHYSNULL0+(NULLTOP-NULLZERO))
- return NULLZERO+(pa-PHYSNULL0);
-
- if(!mmuinited)
- return 0; /* this shouldn't happen */
-
- /* walk the map for the special regs and extended memory */
- va = findva(pa, EMEMZERO, EMEMTOP);
- if(va != 0)
- return va;
- return findva(pa, REGZERO, REGTOP);
-}
-
-/*
- * Return the number of bytes that can be accessed via KADDR(pa).
- * If pa is not a valid argument to KADDR, return 0.
- */
-ulong
-cankaddr(ulong pa)
-{
- /*
- * Is this enough?
- * We'll find out if anyone still has one
- * of these...
- */
- if(pa >= PHYSDRAM0 && pa <= PHYSDRAM0+(DRAMTOP-DRAMZERO))
- return PHYSDRAM0+(DRAMTOP-DRAMZERO) - pa;
- return 0;
-}
-
-/*
- * table to map fault.c bits to physical bits
- */
-static ulong mmubits[16] =
-{
- [PTEVALID] L2SmallPage|L2Cached|L2Buffered|L2UserRO,
- [PTEVALID|PTEWRITE] L2SmallPage|L2Cached|L2Buffered|L2UserRW,
- [PTEVALID|PTEUNCACHED] L2SmallPage|L2UserRO,
- [PTEVALID|PTEUNCACHED|PTEWRITE] L2SmallPage|L2UserRW,
-
- [PTEKERNEL|PTEVALID] L2SmallPage|L2Cached|L2Buffered|L2KernelRW,
- [PTEKERNEL|PTEVALID|PTEWRITE] L2SmallPage|L2Cached|L2Buffered|L2KernelRW,
- [PTEKERNEL|PTEVALID|PTEUNCACHED] L2SmallPage|L2KernelRW,
- [PTEKERNEL|PTEVALID|PTEUNCACHED|PTEWRITE] L2SmallPage|L2KernelRW,
-};
-
-/*
- * add an entry to the current map
- */
-void
-putmmu(uintptr va, uintptr pa, Page *pg)
-{
- Page *l2pg;
- ulong *t, *l1p, *l2p;
- int s;
-
- s = splhi();
-
- /* clear out the current entry */
- mmuinvalidateaddr(va);
-
- l2pg = up->l1page[va>>20];
- if(l2pg == nil){
- l2pg = up->mmufree;
- if(l2pg != nil){
- up->mmufree = l2pg->next;
- } else {
- splx(s);
- l2pg = newpage(0, 0, 0);
- splhi();
- }
- l2pg->va = VA(kmap(l2pg));
- up->l1page[va>>20] = l2pg;
- memset((uchar*)(l2pg->va), 0, BY2PG);
- }
-
- /* always point L1 entry to L2 page, can't hurt */
- l1p = &l1table[va>>20];
- *l1p = L1PageTable | L1Domain0 | (l2pg->pa & L1PTBaseMask);
- up->l1table[va>>20] = *l1p;
- t = (ulong*)l2pg->va;
-
- /* set L2 entry */
- l2p = &t[(va & (OneMeg-1))>>PGSHIFT];
- *l2p = mmubits[pa & (PTEKERNEL|PTEVALID|PTEUNCACHED|PTEWRITE)]
- | (pa & ~(PTEKERNEL|PTEVALID|PTEUNCACHED|PTEWRITE));
-
- /* write back dirty entries - we need this because the pio() in
- * fault.c is writing via a different virt addr and won't clean
- * its changes out of the dcache. Page coloring doesn't work
- * on this mmu because the virtual cache is set associative
- * rather than direct mapped.
- */
- cachewb();
- if(pg->txtflush){
- icacheinvalidate();
- pg->txtflush = 0;
- }
-
- splx(s);
-}
-
-/*
- * free up all page tables for this proc
- */
-void
-mmuptefree(Proc *p)
-{
- Page *pg;
- int i;
-
- for(i = 0; i < Nmeg; i++){
- pg = p->l1page[i];
- if(pg == nil)
- continue;
- p->l1page[i] = nil;
- pg->next = p->mmufree;
- p->mmufree = pg;
- }
- memset(p->l1table, 0, sizeof(p->l1table));
-}
-
-/*
- * this is called with palloc locked so the pagechainhead is kosher
- */
-void
-mmurelease(Proc* p)
-{
- Page *pg, *next;
-
- /* write back dirty cache entries before changing map */
- cacheflush();
-
- mmuptefree(p);
-
- for(pg = p->mmufree; pg != nil; pg = next){
- next = pg->next;
- if(--pg->ref)
- panic("mmurelease: pg->ref %d\n", pg->ref);
- pagechainhead(pg);
- }
- if(p->mmufree != nil)
- pagechaindone();
- p->mmufree = nil;
-
- memset(l1table, 0, sizeof(p->l1table));
- cachewbregion((ulong)l1table, sizeof(p->l1table));
-}
-
-void
-mmuswitch(Proc *p)
-{
- if(m->mmupid == p->pid && p->newtlb == 0)
- return;
- m->mmupid = p->pid;
-
- /* write back dirty cache entries and invalidate all cache entries */
- cacheflush();
-
- if(p->newtlb){
- mmuptefree(p);
- p->newtlb = 0;
- }
-
- /* move in new map */
- memmove(l1table, p->l1table, sizeof(p->l1table));
-
- /* make sure map is in memory */
- cachewbregion((ulong)l1table, sizeof(p->l1table));
-
- /* lose any possible stale tlb entries */
- mmuinvalidate();
-}
-
-void
-flushmmu(void)
-{
- int s;
-
- s = splhi();
- up->newtlb = 1;
- mmuswitch(up);
- splx(s);
-}
-
-void
-peekmmu(ulong va)
-{
- ulong e, d;
-
- e = l1table[va>>20];
- switch(e & L1TypeMask){
- default:
- iprint("l1: %#p[%#lux] = %#lux invalid\n", l1table, va>>20, e);
- break;
- case L1PageTable:
- iprint("l1: %#p[%#lux] = %#lux pt\n", l1table, va>>20, e);
- va &= OneMeg-1;
- va >>= PGSHIFT;
- e &= L1PTBaseMask;
- d = ((ulong*)e)[va];
- iprint("l2: %#lux[%#lux] = %#lux\n", e, va, d);
- break;
- case L1Section:
- iprint("l1: %#p[%#lux] = %#lux section\n", l1table, va>>20, e);
- break;
- }
-}
-
-void
-checkmmu(uintptr, uintptr)
-{
-}
-
-void
-countpagerefs(ulong*, int)
-{
-}
--- a/sys/src/9/bitsy/mouse.c
+++ /dev/null
@@ -1,63 +1,0 @@
-#include "u.h"
-#include "../port/lib.h"
-#include "mem.h"
-#include "dat.h"
-#include "fns.h"
-#include "../port/error.h"
-#include "io.h"
-
-#define Image IMAGE
-#include <draw.h>
-#include <memdraw.h>
-#include <cursor.h>
-#include "screen.h"
-
-enum {
- Button1 = 0x1;
- Button2 = 0x2;
- Button3 = 0x4;
-};
-
-int buttons;
-Point position;
-
-static void
-mousevent(void) {
- static int curbuttons;
- static Point curposition;
-
- if (buttons == curbuttons && eqpt(position, curposition))
- return;
-
- /* generate a mouse event */
- curbuttons = buttons;
- curposition = position;
-}
-
-void
-buttonevent(int event) {
- switch (event) {
- case 0x02:
- /* Button 2 down */
- buttons |= Button2;
- mousevent();
- break;
- case 0x82:
- /* Button 2 up */
- buttons &= ~Button2;
- mousevent();
- break;
- case 0x03:
- /* Button 3 down */
- buttons |= Button3;
- mousevent();
- break;
- case 0x83:
- /* Button 3 up */
- buttons &= ~Button3;
- mousevent();
- break;
- default:
- /* other buttons */
- }
-}
--- a/sys/src/9/bitsy/paqfiles/cpurc
+++ /dev/null
@@ -1,175 +1,0 @@
-#!/bin/rc
-
-debug=0
-
-#set service to terminal (necessary for factotum, handy for everything else)
-service=terminal
-
-echo -n terminal > /env/service
-echo -n plan9 > /env/site
-echo -n astro > /env/facedom
-echo -n emelie > /env/fs
-
-bind -a '#y' /dev
-bind -a '#F' /dev
-bind -a '#I' /net
-bind -a '#D' /net
-
-# parallelism for mk
-NPROC=1
-
-sysname=`{cat /dev/sysname}
-if (~ $sysname ''){
- sysname=bitsy
- echo $sysname>/dev/sysname
-}
-prompt=($sysname^'# ' ' ')
-
-# flavor
-fileserver=emelie
-cpu=olive
-
-# user defined flash partitions
-echo -n add fs 0x0800000 0x1000000 > /dev/flash/flashctl
-
-# so we can see things
-light 0
-
-# set variables
-if(~ $debug 1) echo ramfs
-ramfs
-if(~ $debug 1) echo pencal
-params -f
-if(! grep -s '^calibrate=' /tmp/tmpparams)
- pencal >>/tmp/tmpparams
-if not {
- eval `{grep '^calibrate=' /tmp/tmpparams}
- echo calibrate $calibrate > '#m/mousectl'
-}
-prompter /tmp/tmpparams
-params
-if(~ $debug 1) {
- echo tmpparams:
- cat /tmp/tmpparams
-}
-. /tmp/tmpparams
-
-if(~ $debug 1) echo set user
-# set userid
-if(test -e /env/user){
- echo -n $user > /dev/hostowner
-}
-
-if(~ $debug 1) echo start flashfs
-# bind in read/write file system
-if (aux/flashfs) {
- if (~ $debug 1) echo flashfs started
- mount /srv/brzr /n/tmp
- bind -a /n /n/tmp/n
- bind -a /sys/lib /n/tmp/sys/lib
- bind -a /sys /n/tmp/sys
- bind -a /arm/bin/auth /n/tmp/arm/bin/auth
- bind -a /arm/bin/ndb /n/tmp/arm/bin/ndb
- bind -a /arm/bin/ip /n/tmp/arm/bin/ip
- bind -a /arm/bin/aux /n/tmp/arm/bin/aux
- bind -a /arm/bin /n/tmp/arm/bin
- bind -a /arm /n/tmp/arm
- bind -a /lib/ndb /n/tmp/lib/ndb
- bind -a /lib/font /n/tmp/lib/font
- bind -a /lib /n/tmp/lib
- bind -a / /n/tmp
- bind /n/tmp /
- unmount /n/tmp
-} >[2] /dev/null
-
-# start network
-if(grep -s WaveLAN/IEEE /dev/pcm0ctl){
- if (~ $debug 1) echo 'configure #l0 wavelan'
- echo -n 'configure #l0 wavelan'>/dev/pcm0ctl
- bind -a '#l0' /net
- switch($wvkey1){
- case ''
- ;
- case *
- echo -n 'key1 '^$wvkey1 >/net/ether0/clone
- }
- switch($wvkey2){
- case ''
- ;
- case *
- echo -n 'key2 '^$wvkey2 >/net/ether0/clone
- }
- switch($wvkey3){
- case ''
- ;
- case *
- echo -n 'key3 '^$wvkey3 >/net/ether0/clone
- }
- switch($wvtxkey){
- case ''
- ;
- case *
- echo -n 'txkey '^$wvtxkey >/net/ether0/clone
- }
- switch($wvmode){
- case ''
- ;
- case *
- echo -n 'mode '^$wvmode >/net/ether0/clone
- }
- switch($wvibss){
- case ''
- ;
- case *
- echo -n 'ibss '^$wvibss >/net/ether0/clone
- }
- switch($wvessid){
- case ''
- ;
- case *
- echo -n 'essid '^$wvessid >/net/ether0/clone
- }
- switch($wvcrypt){
- case ''
- ;
- case *
- echo -n 'crypt '^$wvcrypt >/net/ether0/clone
- }
- if (~ $debug 1) echo ip/ipconfig ether /net/ether0 $ipaddr $ipmask
- ip/ipconfig ether /net/ether0 $ipaddr $ipmask
- if(test -e /env/auth)
- echo ' auth='^$auth >>/net/ndb
- if(test -e /env/dns)
- echo ' dns='^$dns >>/net/ndb
- if(test -e /env/dnsdomain)
- echo ' dnsdomain='^$dnsdomain >>/net/ndb
- if(test -e /env/authdom)
- echo ' authdom='^$authdom >>/net/ndb
-
- if (~ $debug 1) echo ndb/cs
- ndb/cs
- ndb/dns -r
-}
-
-auth/factotum -n -s factotum -a $auth
-
-if(! test -e /env/font)
- font=/lib/font/bit/lucidasans/unicode.6.font
-if(! test -e /env/tabstop)
- tabstop=2
-
-if (test -d /usr/$user) {
- home=/usr/$user
- cd $home
- if (test -r lib/profile) {
- . lib/profile
- exec /bin/rc
- }
- if (test -r lib/windows) {
- if (~ $debug 1) echo 'exec rio -sk ''/bin/keyboard -l'' -i '$home'/lib/windows'
- exec rio -sk '/bin/keyboard -l -w' -i $home/lib/windows
- }
-}
-# bind in read/write file system
-if (~ $debug 1) echo 'exec rio -sk ''/bin/keyboard -l'''
-exec rio -sk '/bin/keyboard -l -w'
--- a/sys/src/9/bitsy/paqfiles/local
+++ /dev/null
@@ -1,6 +1,0 @@
-#
-# files comprising the database
-#
-database=
- file=/lib/ndb/local
- file=/lib/ndb/common
--- a/sys/src/9/bitsy/paqfiles/mfs
+++ /dev/null
@@ -1,41 +1,0 @@
-#!/bin/rc
-
-# $proxy is typically set to tailfan's address.
-ipnet=`{grep 'ip=' /net/ndb | sed 's/^.*ip=([0-9]+\.[0-9]+\.[0-9]+\.).*$/\1/'}
-if (~ $proxy $ipnet^*){
- # Use a proxy
- echo import $proxy /net /net
- import $proxy /net /net
-}
-
-switch($fs){
-case ''
- echo you must set the environment variable fs
- exit 0
-}
-if (! test -e /mnt/factotum) {
- if (test -e /srv/factotum) {
- mount -b /srv/factotum /mnt
- }
- if not {
- auth/factotum -u
- }
-}
-srv -m $fs $fs /n/fs
-bind -b /n/fs/arm/bin /bin
-bind -b /n/fs/rc/bin /bin
-bind -a /n/fs/lib /lib
-bind -b /n/fs/sys /sys
-bind -a /n/fs/usr /usr
-bind -c /n/fs/mail /mail
-bind -c /n/fs/acme /acme
-user=`{cat /dev/user}
-home=/usr/$user
-bind -a /n/fs/usr/$user /usr/$user
-bind -cb /usr/$user/tmp /tmp
-bind -b /usr/$user/bin/rc /bin
-bind -b /usr/$user/bin/arm /bin
-bind -a /n/fs/lib/font/bit/lucidasans /lib/font/bit/lucidasans
-bind -a /n/fs/lib/font/bit/lucida /lib/font/bit/lucida
-bind -a /n/fs/lib/font/bit/misc /lib/font/bit/misc
-#service=cpu aux/listen -t /bin/service
--- a/sys/src/9/bitsy/paqfiles/namespace
+++ /dev/null
@@ -1,53 +1,0 @@
-# root
-mount #s/boot /root
-bind -a /root /
-bind -c /root/mnt /mnt
-
-# kernel devices
-bind #c /dev
-bind #d /fd
-bind -c #e /env
-bind #p /proc
-bind -c #s /srv
-bind -a #t /dev
-bind -a #r /dev
-bind -a #m /dev
-bind -a #y /dev
-bind -a #I /net
-bind -a #A /dev
-bind -a #F /dev
-bind -a #¤ /dev
-
-# servers
-mount -a /srv/cs /net
-mount -a /srv/dns /net
-mount -a /srv/factotum /mnt
-
-# read/write file system
-mount /srv/brzr /n/brzr
-mount /srv/brzr /n/tmp
-bind -a /n /n/tmp/n
-bind -a /sys/lib /n/tmp/sys/lib
-bind -a /sys /n/tmp/sys
-bind -a /arm/bin/auth /n/tmp/arm/bin/auth
-bind -a /arm/bin/ndb /n/tmp/arm/bin/ndb
-bind -a /arm/bin/ip /n/tmp/arm/bin/ip
-bind -a /arm/bin/aux /n/tmp/arm/bin/aux
-bind -a /arm/bin /n/tmp/arm/bin
-bind -a /arm /n/tmp/arm
-bind -a /lib/ndb /n/tmp/lib/ndb
-bind -a /lib/font /n/tmp/lib/font
-bind -a /lib /n/tmp/lib
-bind -a / /n/tmp
-bind /n/tmp /
-unmount /n/tmp
-
-# standard bin
-bind /arm/bin /bin
-bind -a /rc/bin /bin
-bind -a /arm/bin/bitsy /bin
-
-# user defines
-bind -cb /usr/$user/tmp /tmp
-bind -b /usr/$user/bin/rc /bin
-bind -b /usr/$user/bin/arm /bin
--- a/sys/src/9/bitsy/paqfiles/startip
+++ /dev/null
@@ -1,9 +1,0 @@
-#!/bin/rc
-if(grep -s WaveLAN/IEEE /dev/pcm0ctl){
- echo -n 'configure #l0 WaveLAN/IEEE'>/dev/pcm0ctl
- bind -a '#l0' /net
- echo -n 'key moon1'>/net/ether0/clone
- ip/ipconfig ether /net/ether0
- ndb/cs
- ndb/dns -r
-}
--- a/sys/src/9/bitsy/paqfiles/unicode.6.font
+++ /dev/null
@@ -1,5 +1,0 @@
-11 9
-0x0000 0x00FF lsr.10
-0x0100 0x01f0 ../lucida/EuroLatin.5.0
-0x2000 0x20aa ../lucida/GenPunct.5.0
-0x2200 0x22f1 ../lucida/MathOps1.5.0
--- a/sys/src/9/bitsy/power.c
+++ /dev/null
@@ -1,358 +1,0 @@
-#include "u.h"
-#include "../port/lib.h"
-#include "mem.h"
-#include "dat.h"
-#include "fns.h"
-#include "io.h"
-#include "ureg.h"
-#include "pool.h"
-
-/* Power management for the bitsy */
-
-#define TODFREQ 1000000000LL
-
-/* saved state during power down.
- * it's only used up to 164/4.
- * it's only used by routines in l.s
- */
-ulong power_state[200/4];
-
-ulong resumeaddr[1];
-Rendez powerr;
-ulong powerflag = 0; /* set to start power-off sequence */
-
-extern void power_resume(void);
-extern int setpowerlabel(void);
-extern void _start(void);
-extern Uart sa1110uart[];
-
-GPIOregs savedgpioregs;
-Intrregs savedintrregs;
-
-#define R(p) ((Uartregs*)((p)->regs))
-
-uchar *savedtext;
-
-static void
-checkflash(void)
-{
- ulong *p;
- ulong s;
-
- s = 0;
- for (p = (ulong*)FLASHZERO; p < (ulong*)(FLASHZERO+8*1024*1024); p++)
- s += *p;
- iprint("flash checksum is 0x%lux\n", s);
-}
-
-static void
-checkktext(void)
-{
- ulong *p;
- ulong s;
-
- s = 0;
- for (p = (ulong*)_start; p < (ulong*)etext; p++){
- if(*p == 0)
- iprint("%#p->0\n", p);
- if (((ulong)p & 0x1fff) == 0){
- iprint("page 0x%lux checksum 0x%lux\n",
- (ulong)(p-1)&~0x1fff, s);
- s = 0;
- }
- s += *p;
- }
- iprint("page 0x%lux checksum 0x%lux\n", (ulong)(p-1)&~0x1fff, s);
-}
-
-static void
-checkpagetab(void)
-{
- extern ulong l1table;
- ulong *p;
- ulong s;
-
- s = 0;
- for (p = (ulong*)l1table; p < (ulong*)(l1table+16*1024); p++)
- s += *p;
- iprint("page table checksum is 0x%lux\n", s);
-}
-
-
-static void
-dumpitall(void)
-{
- extern ulong l1table;
-
- iprint("intr: icip %lux iclr %lux iccr %lux icmr %lux\n",
- intrregs->icip,
- intrregs->iclr, intrregs->iccr, intrregs->icmr );
- iprint("gpio: lvl %lux dir %lux, re %lux, fe %lux sts %lux alt %lux\n",
- gpioregs->level,
- gpioregs->direction, gpioregs->rising, gpioregs->falling,
- gpioregs->edgestatus, gpioregs->altfunc);
- iprint("uart1: %lux %lux %lux \nuart3: %lux %lux %lux\n",
- R(&sa1110uart[0])->ctl[0], R(&sa1110uart[0])->status[0], R(&sa1110uart[0])->status[1],
- R(&sa1110uart[1])->ctl[0], R(&sa1110uart[1])->status[0], R(&sa1110uart[1])->status[1]);
- iprint("tmr: osmr %lux %lux %lux %lux oscr %lux ossr %lux oier %lux\n",
- timerregs->osmr[0], timerregs->osmr[1],
- timerregs->osmr[2], timerregs->osmr[3],
- timerregs->oscr, timerregs->ossr, timerregs->oier);
- iprint("dram: mdcnfg %lux mdrefr %lux cas %lux %lux %lux %lux %lux %lux\n",
- memconfregs->mdcnfg, memconfregs->mdrefr,
- memconfregs->mdcas00, memconfregs->mdcas01,memconfregs->mdcas02,
- memconfregs->mdcas20, memconfregs->mdcas21,memconfregs->mdcas22);
- iprint("dram: mdcnfg msc %lux %lux %lux mecr %lux\n",
- memconfregs->msc0, memconfregs->msc1,memconfregs->msc2,
- memconfregs->mecr);
- iprint("mmu: CpControl %lux CpTTB %lux CpDAC %lux l1table 0x%lux\n",
- getcontrol(), getttb(), getdac(), l1table);
- iprint("powerregs: pmcr %lux pssr %lux pcfr %lux ppcr %lux pwer %lux pspr %lux pgsr %lux posr %lux\n",
- powerregs->pmcr, powerregs->pssr, powerregs->pcfr, powerregs->ppcr,
- powerregs->pwer, powerregs->pspr, powerregs->pgsr, powerregs->posr);
- checkpagetab();
- checkflash();
- checkktext();
- iprint("\n\n");
-}
-
-static void
-intrcpy(Intrregs *to, Intrregs *from)
-{
- to->iclr = from->iclr;
- to->iccr = from->iccr;
- to->icmr = from->icmr; // interrupts enabled
-}
-
-static void
-gpiosave(GPIOregs *to, GPIOregs *from)
-{
- to->level = from->level;
- to->rising = from->rising; // gpio intrs enabled
- to->falling= from->falling; // gpio intrs enabled
- to->altfunc = from->altfunc;
- to->direction = from->direction;
-}
-
-static void
-gpiorestore(GPIOregs *to, GPIOregs *from)
-{
- to->direction = from->direction;
- to->altfunc = from->altfunc;
- to->set = from->level & 0x0fffffff;
- to->clear = ~from->level & 0x0fffffff;
- to->rising = from->rising; // gpio intrs enabled
- to->falling= from->falling; // gpio intrs enabled
-}
-
-void (*restart)(void) = nil;
-
-static int
-bitno(ulong x)
-{
- int i;
-
- for(i = 0; i < 8*sizeof(x); i++)
- if((1<<i) & x)
- break;
- return i;
-}
-
-int
-powerdown(void *)
-{
- return powerflag;
-}
-
-void
-deepsleep(void) {
- static int power_pl;
- ulong xsp, xlink;
-// ulong mecr;
- ulong clkd;
- vlong savedtod;
- extern void power_resume(void);
-
- power_pl = splhi();
- xlink = getcallerpc(&xlink);
-
- /* Power down */
- pcmciapower(0);
- irpower(0);
- audiopower(0);
- screenpower(0);
- µcpower(0);
- iprint("entering suspend mode, sp = %#p, pc = 0x%lux, psw = 0x%ux\n",
- &xsp, xlink, power_pl);
-// dumpitall();
- delay(1000);
- uartpower(0);
- rs232power(0);
- clockpower(0);
- gpiosave(&savedgpioregs, gpioregs);
- intrcpy(&savedintrregs, intrregs);
- cacheflush();
- delay(50);
- if(setpowerlabel()){
- /* return here with mmu back on */
- trapresume();
-
- gpiorestore(gpioregs, &savedgpioregs);
- delay(50);
- intrcpy(intrregs, &savedintrregs);
- if(intrregs->icip & (1<<IRQgpio0)){
- // don't want to sleep now. clear on/off irq.
- gpioregs->edgestatus = (1<<IRQgpio0);
- intrregs->icip = (1<<IRQgpio0);
- }
- clkd = clockpower(1);
- gpclkregs->r0 = 1<<0;
- todset(savedtod + clkd * TODFREQ, 0LL, 0);
- resetsuspendtimer();
- rs232power(1);
- uartpower(1);
- delay(100);
- xlink = getcallerpc(&xlink);
- iprint("\nresuming execution, sp = %#p, pc = 0x%lux, psw = 0x%ux\n",
- &xsp, xlink, splhi());
-// dumpitall();
- delay(1000);
-// irpower(1);
- audiopower(1);
- µcpower(1);
- screenpower(1);
- pcmciapower(1);
- splx(power_pl);
- return;
- }
- cacheflush();
- delay(100);
- savedtod = todget(nil);
- power_down();
- /* no return */
-}
-
-void
-powerkproc(void*)
-{
- ulong xlink, xlink1;
-
- while(waserror())
- ;
-
- for(;;){
- while(powerflag == 0)
- sleep(&powerr, powerdown, 0);
-
- xlink = getcallerpc(&xlink);
-
-// iprint("call deepsleep, pc = 0x%lux, sp = 0x%lux\n", xlink, &xlink);
- deepsleep();
- xlink1 = getcallerpc(&xlink1);
-
- delay(2000);
-
-// iprint("deepsleep returned, pc = 0x%lux, sp = 0x%lux\n", xlink1, &xlink);
- powerflag = 0;
- }
-}
-
-void
-onoffintr(Ureg* , void*)
-{
- int i;
-
- /* Power down interrupt comes on power button release.
- * Act only after button has been released a full 100 ms
- */
-
- if (powerflag)
- return;
-
- for (i = 0; i < 100; i++) {
- delay(1);
- if ((gpioregs->level & GPIO_PWR_ON_i) == 0)
- return; /* bounced */
- }
-
- powerflag = 1;
- wakeup(&powerr);
-}
-
-static void
-blanktimer(void)
-{
- drawactive(0);
-}
-
-static ulong suspendtime = 120 * HZ;
-static int lastsuspend;
-
-void
-resetsuspendtimer(void)
-{
- suspendtime = 60 * HZ;
-}
-
-static void
-suspendtimer(void)
-{
-#ifdef notdef
- uvlong now;
-
- if (suspendtime > 0)
- suspendtime--;
- if (suspendtime == 0){
- now = seconds();
- if (now < lastsuspend + 10){
- resetsuspendtimer();
- return;
- }
- lastsuspend = seconds();
- deepsleep();
- lastsuspend = seconds();
- return;
- }
-#endif /* notdef */
-}
-
-void
-powerinit(void)
-{
- extern ulong power_magic;
- extern ulong power_code;
- extern ulong doze_code;
- ulong *p, *q, i;
-
- p = (ulong*)(((ulong)&power_magic + 0x1f) & ~0x1f);
- q = &power_code;
- for (i = 0; i < 8; i++)
- *p++ = *q++;
- p = (ulong*)(((ulong)doze + 0x3f) & ~0x1f);
- q = &doze_code;
- for (i = 0; i < 3; i++)
- *p++ = *q++;
-
- *resumeaddr = (ulong) power_resume;
- addclock0link(blanktimer, 1000/HZ);
- addclock0link(suspendtimer, 1000/HZ);
- intrenable(GPIOrising, bitno(GPIO_PWR_ON_i), onoffintr, nil, "on/off");
-}
-
-void
-idlehands(void)
-{
- char *msgb = "idlehands called with splhi\n";
- char *msga = "doze returns with splhi\n";
-
- if(!islo()){
- uartputs(msga, strlen(msga));
- spllo();
- }
- doze();
- if(!islo()){
- uartputs(msgb, strlen(msgb));
- spllo();
- }
-}
-
--- a/sys/src/9/bitsy/sa1110dma.c
+++ /dev/null
@@ -1,227 +1,0 @@
-#include "u.h"
-#include "../port/lib.h"
-#include "mem.h"
-#include "dat.h"
-#include "fns.h"
-#include "io.h"
-#include "../port/error.h"
-#include "sa1110dma.h"
-
-static int debug = 0;
-
-/*
- * DMA helper routines
- */
-
-enum {
- NDMA = 6, /* Number of DMA channels */
- DMAREGS = 0xb0000000, /* DMA registers, physical */
-};
-
-enum {
- /* Device Address Register, DDAR */
- RW = 0,
- E = 1,
- BS = 2,
- DW = 3,
- DS = 4, /* bits 4 - 7 */
- DA = 8 /* bits 8 - 31 */
-};
-
-enum {
- /* Device Control & Status Register, DCSR */
- RUN = 0,
- IE = 1,
- ERROR = 2,
- DONEA = 3,
- STRTA = 4,
- DONEB = 5,
- STRTB = 6,
- BIU = 7
-};
-
-typedef struct DMAchan {
- int allocated;
- Rendez r;
- void (*intr)(void*, ulong);
- void *param;
-} DMAchan;
-
-struct {
- Lock;
- DMAchan chan[6];
-} dma;
-
-struct dmaregs {
- ulong ddar;
- ulong dcsr_set;
- ulong dcsr_clr;
- ulong dcsr_rd;
- ulong dstrtA;
- ulong dxcntA;
- ulong dstrtB;
- ulong dxcntB;
-} *dmaregs;
-
-static void dmaintr(Ureg*, void *);
-
-void
-dmainit(void) {
- int i;
-
- /* map the lcd regs into the kernel's virtual space */
- dmaregs = (struct dmaregs*)mapspecial(DMAREGS, NDMA*sizeof(struct dmaregs));
- if (debug) print("dma: dmaalloc registers 0x%ux mapped at 0x%p\n",
- DMAREGS, dmaregs);
- for (i = 0; i < NDMA; i++) {
- intrenable(IRQ, IRQdma0+i, dmaintr, &dmaregs[i], "DMA");
- }
-}
-
-void
-dmareset(int i, int rd, int bigendian, int burstsize, int datumsize, int device, ulong port) {
- ulong ddar;
-
- ddar =
- (rd?1:0)<<RW |
- (bigendian?1:0)<<E |
- ((burstsize==8)?1:0)<<BS |
- ((datumsize==2)?1:0)<<DW |
- device<<DS |
- 0x80000000 | ((ulong)port << 6);
- dmaregs[i].ddar = ddar;
- dmaregs[i].dcsr_clr = 0xff;
- if (debug) print("dma: dmareset: 0x%lux\n", ddar);
-}
-
-int
-dmaalloc(int rd, int bigendian, int burstsize, int datumsize, int device, ulong port, void (*intr)(void*, ulong), void *param) {
- int i;
-
- lock(&dma);
- for (i = 0; i < NDMA; i++) {
- if (dma.chan[i].allocated)
- continue;
- dma.chan[i].allocated++;
- unlock(&dma);
- dmareset(i, rd, bigendian, burstsize, datumsize, device, port);
- dma.chan[i].intr = intr;
- dma.chan[i].param = param;
- return i;
- }
- unlock(&dma);
- return -1;
-}
-
-void
-dmafree(int i) {
- dmaregs[i].dcsr_clr = 0xff;
- dmaregs[i].ddar = 0;
- dma.chan[i].allocated = 0;
- dma.chan[i].intr = nil;
-}
-
-void
-dmastop(int i) {
- dmaregs[i].dcsr_clr = 0xff;
-}
-
-ulong
-dmastart(int chan, ulong addr, int count) {
- ulong status, n;
- static int last;
-
- /* If this gets called from interrupt routines, make sure ilocks are used */
- status = dmaregs[chan].dcsr_rd;
- if (debug > 1)
- iprint("dma: dmastart 0x%lux\n", status);
-
- if ((status & (1<<STRTA|1<<STRTB|1<<RUN)) == (1<<STRTA|1<<STRTB|1<<RUN)) {
- return 0;
- }
- cachewbregion(addr, count);
- n = 0x100;
- if ((status & (1<<BIU | 1<<STRTB)) == (1<<BIU | 1<<STRTB) ||
- (status & (1<<BIU | 1<<STRTA)) == 0) {
- if (status & 1<<STRTA)
- iprint("writing busy dma entry 0x%lux\n", status);
- if (status & 1<<STRTB)
- n = (last == 1)?0x200:0x300;
- last = 2;
- dmaregs[chan].dstrtA = addr;
- dmaregs[chan].dxcntA = count;
- dmaregs[chan].dcsr_set = 1<<RUN | 1<<IE | 1<<STRTA;
- n |= 1<<DONEA;
- } else {
- if (status & 1<<STRTB)
- iprint("writing busy dma entry 0x%lux\n", status);
- if (status & 1<<STRTA)
- n = (last == 2)?0x200:0x300;
- last = 1;
- dmaregs[chan].dstrtB = addr;
- dmaregs[chan].dxcntB = count;
- dmaregs[chan].dcsr_set = 1<<RUN | 1<<IE | 1<<STRTB;
- n |= 1<<DONEB;
- }
- return n;
-}
-
-int
-dmaidle(int chan) {
- ulong status;
-
- status = dmaregs[chan].dcsr_rd;
- if (debug > 1) print("dmaidle: 0x%lux\n", status);
- return (status & (1<<STRTA|1<<STRTB)) == 0;
-}
-
-static int
-_dmaidle(void* chan) {
- ulong status;
-
- status = dmaregs[(int)chan].dcsr_rd;
- return (status & (1<<STRTA|1<<STRTB)) == 0;
-}
-
-void
-dmawait(int chan) {
- while (!dmaidle(chan))
- sleep(&dma.chan[chan].r, _dmaidle, (void*)chan);
-}
-
-/*
- * interrupt routine
- */
-static void
-dmaintr(Ureg*, void *x)
-{
- int i;
- struct dmaregs *regs = x;
- ulong dcsr, donebit;
-
- i = regs - dmaregs;
- dcsr = regs->dcsr_rd;
- if (debug > 1)
- iprint("dma: interrupt channel %d, status 0x%lux\n", i, dcsr);
- if (dcsr & 1<<ERROR)
- iprint("error, channel %d, status 0x%lux\n", i, dcsr);
- donebit = 1<<((dcsr&1<<BIU)?DONEA:DONEB);
- if (dcsr & donebit) {
- regs->dcsr_clr = 1<<DONEA|1<<DONEB;
- if (dma.chan[i].intr) {
- (*dma.chan[i].intr)(dma.chan[i].param, dcsr & (1<<DONEA|1<<DONEB));
- }
- wakeup(&dma.chan[i].r);
- return;
- }
- if (dcsr & 1<<ERROR) {
- regs->dcsr_clr = ERROR;
- iprint("DMA error, channel %d, status 0x%lux\n", i, dcsr);
- if (dma.chan[i].intr) {
- (*dma.chan[i].intr)(dma.chan[i].param, 0);
- }
- wakeup(&dma.chan[i].r);
- return;
- }
- iprint("spurious DMA interrupt, channel %d, status 0x%lux\n", i, dcsr);
-}
--- a/sys/src/9/bitsy/sa1110dma.h
+++ /dev/null
@@ -1,19 +1,0 @@
-
-enum {
- Port4MCP = 0x80060008,
- Port4SSP = 0x8007006c,
- AudioDMA = 0xa,
- SSPXmitDMA = 0xe,
- SSPRecvDMA = 0xf,
-};
-
-void dmainit(void);
-int dmaalloc(int, int, int, int, int, ulong, void (*)(void*, ulong), void*);
-void dmareset(int, int, int, int, int, int, ulong);
-void dmafree(int);
-
-ulong dmastart(int, ulong, int);
-
-void dmawait(int);
-void dmastop(int);
-int dmaidle(int);
--- a/sys/src/9/bitsy/screen.c
+++ /dev/null
@@ -1,492 +1,0 @@
-#include "u.h"
-#include "../port/lib.h"
-#include "mem.h"
-#include "dat.h"
-#include "fns.h"
-#include "io.h"
-#include "ureg.h"
-#include "../port/error.h"
-
-#define Image IMAGE
-#include <draw.h>
-#include <memdraw.h>
-#include <cursor.h>
-#include "screen.h"
-#include "gamma.h"
-
-#define MINX 8
-
-int landscape = 0; /* orientation of the screen, default is 0: portait */
-
-enum {
- Wid = 240,
- Ht = 320,
- Pal0 = 0x2000, /* 16-bit pixel data in active mode (12 in passive) */
-
- hsw = 0x00,
- elw = 0x0e,
- blw = 0x0d,
-
- vsw = 0x02,
- efw = 0x01,
- bfw = 0x0a,
-
- pcd = 0x10,
-};
-
-struct sa1110fb {
- /* Frame buffer for 16-bit active color */
- short palette[16]; /* entry 0 set to Pal0, the rest to 0 */
- ushort pixel[Wid*Ht]; /* Pixel data */
-} *framebuf;
-
-enum {
-/* LCD Control Register 0, lcd->lccr0 */
- LEN = 0, /* 1 bit */
- CMS = 1, /* 1 bit */
- SDS = 2, /* 1 bit */
- LDM = 3, /* 1 bit */
- BAM = 4, /* 1 bit */
- ERM = 5, /* 1 bit */
- PAS = 7, /* 1 bit */
- BLE = 8, /* 1 bit */
- DPD = 9, /* 1 bit */
- PDD = 12, /* 8 bits */
-};
-
-enum {
-/* LCD Control Register 1, lcd->lccr1 */
- PPL = 0, /* 10 bits */
- HSW = 10, /* 6 bits */
- ELW = 16, /* 8 bits */
- BLW = 24, /* 8 bits */
-};
-
-enum {
-/* LCD Control Register 2, lcd->lccr2 */
- LPP = 0, /* 10 bits */
- VSW = 10, /* 6 bits */
- EFW = 16, /* 8 bits */
- BFW = 24, /* 8 bits */
-};
-
-enum {
-/* LCD Control Register 3, lcd->lccr3 */
- PCD = 0, /* 8 bits */
- ACB = 8, /* 8 bits */
- API = 16, /* 4 bits */
- VSP = 20, /* 1 bit */
- HSP = 21, /* 1 bit */
- PCP = 22, /* 1 bit */
- OEP = 23, /* 1 bit */
-};
-
-enum {
-/* LCD Status Register, lcd->lcsr */
- LDD = 0, /* 1 bit */
- BAU = 1, /* 1 bit */
- BER = 2, /* 1 bit */
- ABC = 3, /* 1 bit */
- IOL = 4, /* 1 bit */
- IUL = 5, /* 1 bit */
- OIU = 6, /* 1 bit */
- IUU = 7, /* 1 bit */
- OOL = 8, /* 1 bit */
- OUL = 9, /* 1 bit */
- OOU = 10, /* 1 bit */
- OUU = 11, /* 1 bit */
-};
-
-struct sa1110regs {
- ulong lccr0;
- ulong lcsr;
- ulong dummies[2];
- short* dbar1;
- ulong dcar1;
- ulong dbar2;
- ulong dcar2;
- ulong lccr1;
- ulong lccr2;
- ulong lccr3;
-} *lcd;
-
-static Memdata xgdata;
-
-static Memimage xgscreen =
-{
- { 0, 0, Wid, Ht }, /* r */
- { 0, 0, Wid, Ht }, /* clipr */
- 16, /* depth */
- 3, /* nchan */
- RGB16, /* chan */
- nil, /* cmap */
- &xgdata, /* data */
- 0, /* zero */
- Wid/2, /* width */
- 0, /* layer */
- 0, /* flags */
-};
-
-struct{
- Point pos;
- int bwid;
-}out;
-
-Memimage *gscreen;
-Memimage *conscol;
-Memimage *back;
-
-Memsubfont *memdefont;
-
-Lock screenlock;
-
-ushort *vscreen; /* virtual screen */
-Rectangle window;
-Point curpos;
-int h, w;
-
-static ulong rep(ulong, int);
-static void screenwin(void);
-static void screenputc(char *buf);
-static void bitsyscreenputs(char *s, int n);
-static void scroll(void);
-
-static void
-lcdinit(void)
-{
- /* the following line works because main memory is direct mapped */
- gpioregs->direction |=
- GPIO_LDD8_o|GPIO_LDD9_o|GPIO_LDD10_o|GPIO_LDD11_o
- |GPIO_LDD12_o|GPIO_LDD13_o|GPIO_LDD14_o|GPIO_LDD15_o;
- gpioregs->altfunc |=
- GPIO_LDD8_o|GPIO_LDD9_o|GPIO_LDD10_o|GPIO_LDD11_o
- |GPIO_LDD12_o|GPIO_LDD13_o|GPIO_LDD14_o|GPIO_LDD15_o;
- framebuf->palette[0] = Pal0;
- lcd->dbar1 = framebuf->palette;
- lcd->lccr3 = pcd<<PCD | 0<<ACB | 0<<API | 1<<VSP | 1<<HSP | 0<<PCP | 0<<OEP;
- lcd->lccr2 = (Wid-1)<<LPP | vsw<<VSW | efw<<EFW | bfw<<BFW;
- lcd->lccr1 = (Ht-16)<<PPL | hsw<<HSW | elw<<ELW | blw<<BLW;
- lcd->lccr0 = 1<<LEN | 0<<CMS | 0<<SDS | 1<<LDM | 1<<BAM | 1<<ERM | 1<<PAS | 0<<BLE | 0<<DPD | 0<<PDD;
-}
-
-void
-flipscreen(int ls) {
- if (ls == landscape)
- return;
- if (ls) {
- gscreen->r = Rect(0, 0, Ht, Wid);
- gscreen->clipr = gscreen->r;
- gscreen->width = Ht/2;
- xgdata.bdata = (uchar *)framebuf->pixel;
- } else {
- gscreen->r = Rect(0, 0, Wid, Ht);
- gscreen->clipr = gscreen->r;
- gscreen->width = Wid/2;
- xgdata.bdata = (uchar *)vscreen;
- }
- landscape = ls;
-}
-
-void
-lcdtweak(Cmdbuf *cmd)
-{
- if(cmd->nf < 4)
- return;
- if(*cmd->f[0] == 'h')
- lcd->lccr1 = ((Ht-16)<<PPL)
- | (strtol(cmd->f[1], 0, 0)<<HSW)
- | (strtol(cmd->f[2], 0, 0)<<ELW)
- | (strtol(cmd->f[3], 0, 0)<<BLW);
- if(*cmd->f[0] == 'v')
- lcd->lccr2 = ((Wid-1)<<LPP)
- | (strtol(cmd->f[1], 0, 0)<<VSW)
- | (strtol(cmd->f[2], 0, 0)<<EFW)
- | (strtol(cmd->f[3], 0, 0)<<BFW);
-}
-
-void
-screenpower(int on)
-{
- blankscreen(on == 0);
-}
-
-void
-screeninit(void)
-{
- int i;
-
- /* map the lcd regs into the kernel's virtual space */
- lcd = (struct sa1110regs*)mapspecial(LCDREGS, sizeof(struct sa1110regs));;
-
- framebuf = xspanalloc(sizeof *framebuf, 0x100, 0);
-
- vscreen = xalloc(sizeof(ushort)*Wid*Ht);
-
- lcdpower(1);
- lcdinit();
-
- gscreen = &xgscreen;
-
- xgdata.ref = 1;
- i = 0;
- if (landscape) {
- gscreen->r = Rect(0, 0, Ht, Wid);
- gscreen->clipr = gscreen->r;
- gscreen->width = Ht/2;
- xgdata.bdata = (uchar *)framebuf->pixel;
- while (i < Wid*Ht*1/3) framebuf->pixel[i++] = 0xf800; /* red */
- while (i < Wid*Ht*2/3) framebuf->pixel[i++] = 0xffff; /* white */
- while (i < Wid*Ht*3/3) framebuf->pixel[i++] = 0x001f; /* blue */
- } else {
- gscreen->r = Rect(0, 0, Wid, Ht);
- gscreen->clipr = gscreen->r;
- gscreen->width = Wid/2;
- xgdata.bdata = (uchar *)vscreen;
- while (i < Wid*Ht*1/3) vscreen[i++] = 0xf800; /* red */
- while (i < Wid*Ht*2/3) vscreen[i++] = 0xffff; /* white */
- while (i < Wid*Ht*3/3) vscreen[i++] = 0x001f; /* blue */
- flushmemscreen(gscreen->r);
- }
- memimageinit();
- memdefont = getmemdefont();
-
- out.pos.x = MINX;
- out.pos.y = 0;
- out.bwid = memdefont->info[' '].width;
-
- blanktime = 3; /* minutes */
-
- screenwin();
-// screenputs = bitsyscreenputs;
- screenputs = nil;
-}
-
-void
-flushmemscreen(Rectangle r)
-{
- int x, y;
- ulong start, end;
-
- if (landscape == 0) {
- if (r.min.x < 0) r.min.x = 0;
- if (r.max.x > Wid) r.max.x = Wid;
- if (r.min.y < 0) r.min.y = 0;
- if (r.max.y > Ht) r.max.y = Ht;
- for (x = r.min.x; x < r.max.x; x++)
- for (y = r.min.y; y < r.max.y; y++)
- framebuf->pixel[(x+1)*Ht-1-y] = gamma[vscreen[y*Wid+x]];
- start = (ulong)&framebuf->pixel[(r.min.x+1)*Ht-1-(r.max.y-1)];
- end = (ulong)&framebuf->pixel[(r.max.x-1+1)*Ht-1-(r.min.y)];
- } else {
- start = (ulong)&framebuf->pixel[r.min.y*Ht + r.min.x];
- end = (ulong)&framebuf->pixel[(r.max.y-1)*Ht + r.max.x - 1];
- }
- cachewbregion(start, end-start);
-}
-
-/*
- * export screen to devdraw
- */
-uchar*
-attachscreen(Rectangle *r, ulong *chan, int* d, int *width, int *softscreen)
-{
- *r = gscreen->r;
- *d = gscreen->depth;
- *chan = gscreen->chan;
- *width = gscreen->width;
- *softscreen = (landscape == 0);
-
- return (uchar*)gscreen->data->bdata;
-}
-
-void
-getcolor(ulong p, ulong* pr, ulong* pg, ulong* pb)
-{
- USED(p, pr, pg, pb);
-}
-
-int
-setcolor(ulong p, ulong r, ulong g, ulong b)
-{
- USED(p,r,g,b);
- return 0;
-}
-
-void
-blankscreen(int blank)
-{
- int cnt;
-
- if (blank) {
- lcd->lccr0 &= ~(1<<LEN); /* disable the LCD */
- cnt = 0;
- while((lcd->lcsr & (1<<LDD)) == 0) {
- delay(10);
- if (++cnt == 100) {
- iprint("LCD doesn't stop\n");
- break;
- }
- }
- lcdpower(0);
- } else {
- lcdpower(1);
- lcdinit();
- }
-}
-
-static void
-bitsyscreenputs(char *s, int n)
-{
- int i;
- Rune r;
- char buf[4];
-
- if(!islo()) {
- /* don't deadlock trying to print in interrupt */
- if(!canlock(&screenlock))
- return;
- }
- else
- lock(&screenlock);
-
- while(n > 0){
- i = chartorune(&r, s);
- if(i == 0){
- s++;
- --n;
- continue;
- }
- memmove(buf, s, i);
- buf[i] = 0;
- n -= i;
- s += i;
- screenputc(buf);
- }
- unlock(&screenlock);
-}
-
-static void
-screenwin(void)
-{
- Point p, q;
- char *greet;
- Memimage *orange;
- Rectangle r;
-
- memsetchan(gscreen, RGB16);
-
- back = memwhite;
- conscol = memblack;
-
- orange = allocmemimage(Rect(0,0,1,1), RGB16);
- orange->flags |= Frepl;
- orange->clipr = gscreen->r;
- orange->data->bdata[0] = 0x40;
- orange->data->bdata[1] = 0xfd;
-
- w = memdefont->info[' '].width;
- h = memdefont->height;
-
- r = insetrect(gscreen->r, 4);
-
- memimagedraw(gscreen, r, memblack, ZP, memopaque, ZP, S);
- window = insetrect(r, 4);
- memimagedraw(gscreen, window, memwhite, ZP, memopaque, ZP, S);
-
- memimagedraw(gscreen, Rect(window.min.x, window.min.y,
- window.max.x, window.min.y+h+5+6), orange, ZP, nil, ZP, S);
- freememimage(orange);
- window = insetrect(window, 5);
-
- greet = " Plan 9 Console ";
- p = addpt(window.min, Pt(10, 0));
- q = memsubfontwidth(memdefont, greet);
- memimagestring(gscreen, p, conscol, ZP, memdefont, greet);
- flushmemscreen(r);
- window.min.y += h+6;
- curpos = window.min;
- window.max.y = window.min.y+((window.max.y-window.min.y)/h)*h;
-}
-
-static void
-screenputc(char *buf)
-{
- Point p;
- int w, pos;
- Rectangle r;
- static int *xp;
- static int xbuf[256];
-
- if(xp < xbuf || xp >= &xbuf[sizeof(xbuf)])
- xp = xbuf;
-
- switch(buf[0]) {
- case '\n':
- if(curpos.y+h >= window.max.y)
- scroll();
- curpos.y += h;
- screenputc("\r");
- break;
- case '\r':
- xp = xbuf;
- curpos.x = window.min.x;
- break;
- case '\t':
- p = memsubfontwidth(memdefont, " ");
- w = p.x;
- if(curpos.x >= window.max.x-4*w)
- screenputc("\n");
-
- pos = (curpos.x-window.min.x)/w;
- pos = 4-(pos%4);
- *xp++ = curpos.x;
- r = Rect(curpos.x, curpos.y, curpos.x+pos*w, curpos.y + h);
- memimagedraw(gscreen, r, back, back->r.min, nil, back->r.min, S);
- flushmemscreen(r);
- curpos.x += pos*w;
- break;
- case '\b':
- if(xp <= xbuf)
- break;
- xp--;
- r = Rect(*xp, curpos.y, curpos.x, curpos.y + h);
- memimagedraw(gscreen, r, back, back->r.min, nil, back->r.min, S);
- flushmemscreen(r);
- curpos.x = *xp;
- break;
- case '\0':
- break;
- default:
- p = memsubfontwidth(memdefont, buf);
- w = p.x;
-
- if(curpos.x >= window.max.x-w)
- screenputc("\n");
-
- *xp++ = curpos.x;
- r = Rect(curpos.x, curpos.y, curpos.x+w, curpos.y + h);
- memimagedraw(gscreen, r, back, back->r.min, nil, back->r.min, S);
- memimagestring(gscreen, curpos, conscol, ZP, memdefont, buf);
- flushmemscreen(r);
- curpos.x += w;
- }
-}
-
-static void
-scroll(void)
-{
- int o;
- Point p;
- Rectangle r;
-
- o = 8*h;
- r = Rpt(window.min, Pt(window.max.x, window.max.y-o));
- p = Pt(window.min.x, window.min.y+o);
- memimagedraw(gscreen, r, gscreen, p, nil, p, S);
- flushmemscreen(r);
- r = Rpt(Pt(window.min.x, window.max.y-o), window.max);
- memimagedraw(gscreen, r, back, ZP, nil, ZP, S);
- flushmemscreen(r);
-
- curpos.y -= o;
-}
--- a/sys/src/9/bitsy/screen.h
+++ /dev/null
@@ -1,14 +1,0 @@
-typedef struct Cursorinfo Cursorinfo;
-typedef struct Cursor Cursor;
-
-extern ulong blanktime;
-
-struct Cursorinfo {
- Lock;
-};
-
-extern void blankscreen(int);
-extern void flushmemscreen(Rectangle);
-extern uchar* attachscreen(Rectangle*, ulong*, int*, int*, int*);
-
-#define ishwimage(i) 0
--- a/sys/src/9/bitsy/sdata.c
+++ /dev/null
@@ -1,2087 +1,0 @@
-#include "u.h"
-#include "../port/lib.h"
-#include "mem.h"
-#include "dat.h"
-#include "fns.h"
-#include "io.h"
-#include "ureg.h"
-#include "../port/error.h"
-
-#include "../port/sd.h"
-
-
-extern SDifc sdataifc;
-
-//BUG?
-#define PCIWADDR(x) ((ulong)(x))
-
-enum {
- DbgCONFIG = 0x01, /* detected drive config info */
- DbgIDENTIFY = 0x02, /* detected drive identify info */
- DbgSTATE = 0x04, /* dump state on panic */
- DbgPROBE = 0x08, /* trace device probing */
- DbgDEBUG = 0x80, /* the current problem... */
-};
-#define DEBUG (DbgDEBUG|DbgSTATE|DbgCONFIG)
-
-enum { /* I/O ports */
- Data = 0,
- Error = 1, /* (read) */
- Features = 1, /* (write) */
- Count = 2, /* sector count */
- Ir = 2, /* interrupt reason (PACKET) */
- Sector = 3, /* sector number, LBA<7-0> */
- Cyllo = 4, /* cylinder low, LBA<15-8> */
- Bytelo = 4, /* byte count low (PACKET) */
- Cylhi = 5, /* cylinder high, LBA<23-16> */
- Bytehi = 5, /* byte count hi (PACKET) */
- Dh = 6, /* Device/Head, LBA<32-14> */
- Status = 7, /* (read) */
- Command = 7, /* (write) */
-
- As = 2, /* Alternate Status (read) */
- Dc = 2, /* Device Control (write) */
-};
-
-enum { /* Error */
- Med = 0x01, /* Media error */
- Ili = 0x01, /* command set specific (PACKET) */
- Nm = 0x02, /* No Media */
- Eom = 0x02, /* command set specific (PACKET) */
- Abrt = 0x04, /* Aborted command */
- Mcr = 0x08, /* Media Change Request */
- Idnf = 0x10, /* no user-accessible address */
- Mc = 0x20, /* Media Change */
- Unc = 0x40, /* Uncorrectable data error */
- Wp = 0x40, /* Write Protect */
- Icrc = 0x80, /* Interface CRC error */
-};
-
-enum { /* Features */
- Dma = 0x01, /* data transfer via DMA (PACKET) */
- Ovl = 0x02, /* command overlapped (PACKET) */
-};
-
-enum { /* Interrupt Reason */
- Cd = 0x01, /* Command/Data */
- Io = 0x02, /* I/O direction */
- Rel = 0x04, /* Bus Release */
-};
-
-enum { /* Device/Head */
- Dev0 = 0xA0, /* Master */
- Dev1 = 0xB0, /* Slave */
- Lba = 0x40, /* LBA mode */
-};
-
-enum { /* Status, Alternate Status */
- Err = 0x01, /* Error */
- Chk = 0x01, /* Check error (PACKET) */
- Drq = 0x08, /* Data Request */
- Dsc = 0x10, /* Device Seek Complete */
- Serv = 0x10, /* Service */
- Df = 0x20, /* Device Fault */
- Dmrd = 0x20, /* DMA ready (PACKET) */
- Drdy = 0x40, /* Device Ready */
- Bsy = 0x80, /* Busy */
-};
-
-enum { /* Command */
- Cnop = 0x00, /* NOP */
- Cdr = 0x08, /* Device Reset */
- Crs = 0x20, /* Read Sectors */
- Cws = 0x30, /* Write Sectors */
- Cedd = 0x90, /* Execute Device Diagnostics */
- Cpkt = 0xA0, /* Packet */
- Cidpkt = 0xA1, /* Identify Packet Device */
- Crsm = 0xC4, /* Read Multiple */
- Cwsm = 0xC5, /* Write Multiple */
- Csm = 0xC6, /* Set Multiple */
- Crdq = 0xC7, /* Read DMA queued */
- Crd = 0xC8, /* Read DMA */
- Cwd = 0xCA, /* Write DMA */
- Cwdq = 0xCC, /* Write DMA queued */
- Cstandby = 0xE2, /* Standby */
- Cid = 0xEC, /* Identify Device */
- Csf = 0xEF, /* Set Features */
-};
-
-enum { /* Device Control */
- Nien = 0x02, /* (not) Interrupt Enable */
- Srst = 0x04, /* Software Reset */
-};
-
-enum { /* PCI Configuration Registers */
- Bmiba = 0x20, /* Bus Master Interface Base Address */
- Idetim = 0x40, /* IE Timing */
- Sidetim = 0x44, /* Slave IE Timing */
- Udmactl = 0x48, /* Ultra DMA/33 Control */
- Udmatim = 0x4A, /* Ultra DMA/33 Timing */
-};
-
-enum { /* Bus Master IDE I/O Ports */
- Bmicx = 0, /* Command */
- Bmisx = 2, /* Status */
- Bmidtpx = 4, /* Descriptor Table Pointer */
-};
-
-enum { /* Bmicx */
- Ssbm = 0x01, /* Start/Stop Bus Master */
- Rwcon = 0x08, /* Read/Write Control */
-};
-
-enum { /* Bmisx */
- Bmidea = 0x01, /* Bus Master IDE Active */
- Idedmae = 0x02, /* IDE DMA Error (R/WC) */
- Ideints = 0x04, /* IDE Interrupt Status (R/WC) */
- Dma0cap = 0x20, /* Drive 0 DMA Capable */
- Dma1cap = 0x40, /* Drive 0 DMA Capable */
-};
-enum { /* Physical Region Descriptor */
- PrdEOT = 0x80000000, /* Bus Master IDE Active */
-};
-
-enum { /* offsets into the identify info. */
- Iconfig = 0, /* general configuration */
- Ilcyl = 1, /* logical cylinders */
- Ilhead = 3, /* logical heads */
- Ilsec = 6, /* logical sectors per logical track */
- Iserial = 10, /* serial number */
- Ifirmware = 23, /* firmware revision */
- Imodel = 27, /* model number */
- Imaxrwm = 47, /* max. read/write multiple sectors */
- Icapabilities = 49, /* capabilities */
- Istandby = 50, /* device specific standby timer */
- Ipiomode = 51, /* PIO data transfer mode number */
- Ivalid = 53,
- Iccyl = 54, /* cylinders if (valid&0x01) */
- Ichead = 55, /* heads if (valid&0x01) */
- Icsec = 56, /* sectors if (valid&0x01) */
- Iccap = 57, /* capacity if (valid&0x01) */
- Irwm = 59, /* read/write multiple */
- Ilba0 = 60, /* LBA size */
- Ilba1 = 61, /* LBA size */
- Imwdma = 63, /* multiword DMA mode */
- Iapiomode = 64, /* advanced PIO modes supported */
- Iminmwdma = 65, /* min. multiword DMA cycle time */
- Irecmwdma = 66, /* rec. multiword DMA cycle time */
- Iminpio = 67, /* min. PIO cycle w/o flow control */
- Iminiordy = 68, /* min. PIO cycle with IORDY */
- Ipcktbr = 71, /* time from PACKET to bus release */
- Iserbsy = 72, /* time from SERVICE to !Bsy */
- Iqdepth = 75, /* max. queue depth */
- Imajor = 80, /* major version number */
- Iminor = 81, /* minor version number */
- Icsfs = 82, /* command set/feature supported */
- Icsfe = 85, /* command set/feature enabled */
- Iudma = 88, /* ultra DMA mode */
- Ierase = 89, /* time for security erase */
- Ieerase = 90, /* time for enhanced security erase */
- Ipower = 91, /* current advanced power management */
- Irmsn = 127, /* removable status notification */
- Istatus = 128, /* security status */
-};
-
-typedef struct Ctlr Ctlr;
-typedef struct Drive Drive;
-
-typedef struct Prd {
- ulong pa; /* Physical Base Address */
- int count;
-} Prd;
-
-enum {
- Nprd = SDmaxio/(64*1024)+2,
-};
-
-typedef struct Ctlr {
- int cmdport;
- int ctlport;
- int irq;
- int tbdf;
- int bmiba; /* bus master interface base address */
-
- void (*ienable)(Ctlr*);
- SDev* sdev;
-
- Drive* drive[2];
-
- Prd* prdt; /* physical region descriptor table */
-
- QLock; /* current command */
- Drive* curdrive;
- int command; /* last command issued (debugging) */
- Rendez;
- int done;
-
- Lock; /* register access */
-} Ctlr;
-
-typedef struct Drive {
- Ctlr* ctlr;
-
- int dev;
- ushort info[256];
- int c; /* cylinder */
- int h; /* head */
- int s; /* sector */
- int sectors; /* total */
- int secsize; /* sector size */
-
- int dma; /* DMA R/W possible */
- int dmactl;
- int rwm; /* read/write multiple possible */
- int rwmctl;
-
- int pkt; /* PACKET device, length of pktcmd */
- uchar pktcmd[16];
- int pktdma; /* this PACKET command using dma */
-
- uchar sense[18];
- uchar inquiry[48];
-
- QLock; /* drive access */
- int command; /* current command */
- int write;
- uchar* data;
- int dlen;
- uchar* limit;
- int count; /* sectors */
- int block; /* R/W bytes per block */
- int status;
- int error;
-} Drive;
-
-
-
-static void
-atadumpstate(Drive* drive, uchar* cmd, int lba, int count)
-{
- Prd *prd;
- Ctlr *ctlr;
- int i, bmiba;
-
- if(!(DEBUG & DbgSTATE)){
- USED(drive, cmd, lba, count);
- return;
- }
-
- ctlr = drive->ctlr;
- print("command %2.2uX\n", ctlr->command);
- print("data %8.8p limit %8.8p dlen %d status %uX error %uX\n",
- drive->data, drive->limit, drive->dlen,
- drive->status, drive->error);
- if(cmd != nil){
- print("lba %d -> %d, count %d -> %d (%d)\n",
- (cmd[2]<<24)|(cmd[3]<<16)|(cmd[4]<<8)|cmd[5], lba,
- (cmd[7]<<8)|cmd[8], count, drive->count);
- }
- if(!(inb(ctlr->ctlport+As) & Bsy)){
- for(i = 1; i < 7; i++)
- print(" 0x%2.2uX", inb(ctlr->cmdport+i));
- print(" 0x%2.2uX\n", inb(ctlr->ctlport+As));
- }
- if(drive->command == Cwd || drive->command == Crd){
- bmiba = ctlr->bmiba;
- prd = ctlr->prdt;
- print("bmicx %2.2uX bmisx %2.2uX prdt %8.8p\n",
- inb(bmiba+Bmicx), inb(bmiba+Bmisx), prd);
- for(;;){
- print("pa 0x%8.8luX count %8.8uX\n",
- prd->pa, prd->count);
- if(prd->count & PrdEOT)
- break;
- prd++;
- }
- }
-}
-
-static int
-atadebug(int cmdport, int ctlport, char* fmt, ...)
-{
- int i, n;
- va_list arg;
- char buf[PRINTSIZE];
-
- if(!(DEBUG & DbgPROBE)){
- USED(cmdport, ctlport, fmt);
- return 0;
- }
-
- va_start(arg, fmt);
- n = vseprint(buf, buf+sizeof(buf), fmt, arg) - buf;
- va_end(arg);
-
- if(cmdport){
- if(buf[n-1] == '\n')
- n--;
- n += snprint(buf+n, PRINTSIZE-n, " ataregs 0x%uX:",
- cmdport);
- for(i = Features; i < Command; i++)
- n += snprint(buf+n, PRINTSIZE-n, " 0x%2.2uX",
- inb(cmdport+i));
- if(ctlport)
- n += snprint(buf+n, PRINTSIZE-n, " 0x%2.2uX",
- inb(ctlport+As));
- n += snprint(buf+n, PRINTSIZE-n, "\n");
- }
- putstrn(buf, n);
-
- return n;
-}
-
-static int
-ataready(int cmdport, int ctlport, int dev, int reset, int ready, int micro)
-{
- int as;
-
- atadebug(cmdport, ctlport, "ataready: dev %uX reset %uX ready %uX",
- dev, reset, ready);
-
- for(;;){
- /*
- * Wait for the controller to become not busy and
- * possibly for a status bit to become true (usually
- * Drdy). Must change to the appropriate device
- * register set if necessary before testing for ready.
- * Always run through the loop at least once so it
- * can be used as a test for !Bsy.
- */
- as = inb(ctlport+As);
- if((as & reset) == 0){
- if(dev){
- outb(cmdport+Dh, dev);
- dev = 0;
- }
- else if(ready == 0 || (as & ready)){
- atadebug(0, 0, "ataready: %d 0x%2.2uX\n", micro, as);
- return as;
- }
- }
- if(micro-- <= 0){
- atadebug(0, 0, "ataready: %d 0x%2.2uX\n", micro, as);
- break;
- }
- microdelay(4);
- }
- atadebug(cmdport, ctlport, "ataready: timeout");
-
- return -1;
-}
-
-static int
-atacsf(Drive* drive, vlong csf, int supported)
-{
- ushort *info;
- int cmdset, i, x;
-
- if(supported)
- info = &drive->info[Icsfs];
- else
- info = &drive->info[Icsfe];
-
- for(i = 0; i < 3; i++){
- x = (csf>>(16*i)) & 0xFFFF;
- if(x == 0)
- continue;
- cmdset = info[i];
- if(cmdset == 0 || cmdset == 0xFFFF)
- return 0;
- return cmdset & x;
- }
-
- return 0;
-}
-
-static int
-atadone(void* arg)
-{
- return ((Ctlr*)arg)->done;
-}
-
-static int
-atarwmmode(Drive* drive, int cmdport, int ctlport, int dev)
-{
- int as, maxrwm, rwm;
-
- maxrwm = (drive->info[Imaxrwm] & 0xFF);
- if(maxrwm == 0)
- return 0;
-
- /*
- * Sometimes drives come up with the current count set
- * to 0; if so, set a suitable value, otherwise believe
- * the value in Irwm if the 0x100 bit is set.
- */
- if(drive->info[Irwm] & 0x100)
- rwm = (drive->info[Irwm] & 0xFF);
- else
- rwm = 0;
- if(rwm == 0)
- rwm = maxrwm;
- if(rwm > 16)
- rwm = 16;
- if(ataready(cmdport, ctlport, dev, Bsy|Drq, Drdy, 102*1000) < 0)
- return 0;
- outb(cmdport+Count, rwm);
- outb(cmdport+Command, Csm);
- microdelay(4);
- as = ataready(cmdport, ctlport, 0, Bsy, Drdy|Df|Err, 1000);
- inb(cmdport+Status);
- if(as < 0 || (as & (Df|Err)))
- return 0;
-
- drive->rwm = rwm;
-
- return rwm;
-}
-
-static int
-atadmamode(Drive* drive)
-{
- int dma;
-
- /*
- * Check if any DMA mode enabled.
- * Assumes the BIOS has picked and enabled the best.
- * This is completely passive at the moment, no attempt is
- * made to ensure the hardware is correctly set up.
- */
- dma = drive->info[Imwdma] & 0x0707;
- drive->dma = (dma>>8) & dma;
- if(drive->dma == 0 && (drive->info[Ivalid] & 0x04)){
- dma = drive->info[Iudma] & 0x1F1F;
- drive->dma = (dma>>8) & dma;
- if(drive->dma)
- drive->dma |= 'U'<<16;
- }
-
- return dma;
-}
-
-static int
-ataidentify(int cmdport, int ctlport, int dev, int pkt, void* info)
-{
- int as, command, drdy;
-
- if(pkt){
- command = Cidpkt;
- drdy = 0;
- }
- else{
- command = Cid;
- drdy = Drdy;
- }
- as = ataready(cmdport, ctlport, dev, Bsy|Drq, drdy, 103*1000);
- if(as < 0)
- return as;
- outb(cmdport+Command, command);
- microdelay(4);
-
- as = ataready(cmdport, ctlport, 0, Bsy, Drq|Err, 400*1000);
- if(as < 0)
- return -1;
- if(as & Err)
- return as;
-
- memset(info, 0, 512);
- inss(cmdport+Data, info, 256);
- inb(cmdport+Status);
-
- if(DEBUG & DbgIDENTIFY){
- int i;
- ushort *sp;
-
- sp = (ushort*)info;
- for(i = 0; i < 32; i++){
- if(i && (i%16) == 0)
- print("\n");
- print(" %4.4uX", *sp);
- sp++;
- }
- print("\n");
- }
-
- return 0;
-}
-
-static Drive*
-atadrive(int cmdport, int ctlport, int dev)
-{
- ushort *sp;
- Drive *drive;
- int as, i, pkt;
- uchar buf[512], *p;
-
- atadebug(0, 0, "identify: port 0x%uX dev 0x%2.2uX\n", cmdport, dev);
- pkt = 1;
-retry:
- as = ataidentify(cmdport, ctlport, dev, pkt, buf);
- if(as < 0)
- return nil;
- if(as & Err){
- if(pkt == 0)
- return nil;
- pkt = 0;
- goto retry;
- }
-
- if((drive = malloc(sizeof(Drive))) == nil)
- return nil;
- drive->dev = dev;
- memmove(drive->info, buf, sizeof(drive->info));
- drive->sense[0] = 0x70;
- drive->sense[7] = sizeof(drive->sense)-7;
-
- drive->inquiry[2] = 2;
- drive->inquiry[3] = 2;
- drive->inquiry[4] = sizeof(drive->inquiry)-4;
- p = &drive->inquiry[8];
- sp = &drive->info[Imodel];
- for(i = 0; i < 20; i++){
- *p++ = *sp>>8;
- *p++ = *sp++;
- }
-
- drive->secsize = 512;
- if(drive->info[Iconfig] != 0x848A && (drive->info[Iconfig] & 0xC000) == 0x8000){
- if(drive->info[Iconfig] & 0x01)
- drive->pkt = 16;
- else
- drive->pkt = 12;
- }
- else{
- if(drive->info[Ivalid] & 0x0001){
- drive->c = drive->info[Ilcyl];
- drive->h = drive->info[Ilhead];
- drive->s = drive->info[Ilsec];
- }
- else{
- drive->c = drive->info[Iccyl];
- drive->h = drive->info[Ichead];
- drive->s = drive->info[Icsec];
- }
- if(drive->info[Icapabilities] & 0x0200){
- drive->sectors = (drive->info[Ilba1]<<16)
- |drive->info[Ilba0];
- drive->dev |= Lba;
- }
- else
- drive->sectors = drive->c*drive->h*drive->s;
- atarwmmode(drive, cmdport, ctlport, dev);
- }
- atadmamode(drive);
-
- if(DEBUG & DbgCONFIG){
- print("dev %2.2uX port %uX config %4.4uX capabilities %4.4uX",
- dev, cmdport,
- drive->info[Iconfig], drive->info[Icapabilities]);
- print(" mwdma %4.4uX", drive->info[Imwdma]);
- if(drive->info[Ivalid] & 0x04)
- print(" udma %4.4uX", drive->info[Iudma]);
- print(" dma %8.8uX rwm %ud\n", drive->dma, drive->rwm);
- }
-
- return drive;
-}
-
-static void
-atasrst(int ctlport)
-{
- /*
- * Srst is a big stick and may cause problems if further
- * commands are tried before the drives become ready again.
- * Also, there will be problems here if overlapped commands
- * are ever supported.
- */
- microdelay(20);
- outb(ctlport+Dc, Srst);
- microdelay(20);
- outb(ctlport+Dc, 0);
- microdelay(4*1000);
-}
-
-static SDev*
-ataprobe(int cmdport, int ctlport, int irq)
-{
- Ctlr* ctlr;
- SDev *sdev;
- Drive *drive;
- int dev, error, rhi, rlo;
-
- /*
- * Try to detect a floating bus.
- * Bsy should be cleared. If not, see if the cylinder registers
- * are read/write capable.
- * If the master fails, try the slave to catch slave-only
- * configurations.
- * There's no need to restore the tested registers as they will
- * be reset on any detected drives by the Cedd command.
- * All this indicates is that there is at least one drive on the
- * controller; when the non-existent drive is selected in a
- * single-drive configuration the registers of the existing drive
- * are often seen, only command execution fails.
- */
- dev = Dev0;
- if(inb(ctlport+As) & Bsy){
- outb(cmdport+Dh, dev);
- microdelay(5);
-trydev1:
- atadebug(cmdport, ctlport, "ataprobe bsy");
- outb(cmdport+Cyllo, 0xAA);
- outb(cmdport+Cylhi, 0x55);
- outb(cmdport+Sector, 0xFF);
- rlo = inb(cmdport+Cyllo);
- rhi = inb(cmdport+Cylhi);
- if(rlo != 0xAA && (rlo == 0xFF || rhi != 0x55)){
- if(dev == Dev1){
-release:
- return nil;
- }
- dev = Dev1;
- if(ataready(cmdport, ctlport, dev, Bsy, 0, 20*1000) < 0)
- goto trydev1;
- }
- }
-
- /*
- * Disable interrupts on any detected controllers.
- */
- outb(ctlport+Dc, Nien);
-tryedd1:
- if(ataready(cmdport, ctlport, dev, Bsy|Drq, 0, 105*1000) < 0){
- /*
- * There's something there, but it didn't come up clean,
- * so try hitting it with a big stick. The timing here is
- * wrong but this is a last-ditch effort and it sometimes
- * gets some marginal hardware back online.
- */
- atasrst(ctlport);
- if(ataready(cmdport, ctlport, dev, Bsy|Drq, 0, 106*1000) < 0)
- goto release;
- }
-
- /*
- * Can only get here if controller is not busy.
- * If there are drives Bsy will be set within 400nS,
- * must wait 2mS before testing Status.
- * Wait for the command to complete (6 seconds max).
- */
- outb(cmdport+Command, Cedd);
- delay(5);
- if(ataready(cmdport, ctlport, dev, Bsy|Drq, 0, 6*1000*1000) < 0)
- goto release;
-
- /*
- * If bit 0 of the error register is set then the selected drive
- * exists. This is enough to detect single-drive configurations.
- * However, if the master exists there is no way short of executing
- * a command to determine if a slave is present.
- * It appears possible to get here testing Dev0 although it doesn't
- * exist and the EDD won't take, so try again with Dev1.
- */
- error = inb(cmdport+Error);
- atadebug(cmdport, ctlport, "ataprobe: dev %uX", dev);
- if((error & ~0x80) != 0x01){
- if(dev == Dev1)
- goto release;
- dev = Dev1;
- goto tryedd1;
- }
-
- /*
- * At least one drive is known to exist, try to
- * identify it. If that fails, don't bother checking
- * any further.
- * If the one drive found is Dev0 and the EDD command
- * didn't indicate Dev1 doesn't exist, check for it.
- */
- if((drive = atadrive(cmdport, ctlport, dev)) == nil)
- goto release;
- if((ctlr = malloc(sizeof(Ctlr))) == nil){
- free(drive);
- goto release;
- }
- if((sdev = malloc(sizeof(SDev))) == nil){
- free(ctlr);
- free(drive);
- goto release;
- }
- drive->ctlr = ctlr;
- if(dev == Dev0){
- ctlr->drive[0] = drive;
-#ifdef notdef
- if(!(error & 0x80)){
- /*
- * Always leave Dh pointing to a valid drive,
- * otherwise a subsequent call to ataready on
- * this controller may try to test a bogus Status.
- * Ataprobe is the only place possibly invalid
- * drives should be selected.
- */
- drive = atadrive(cmdport, ctlport, Dev1);
- if(drive != nil){
- drive->ctlr = ctlr;
- ctlr->drive[1] = drive;
- }
- else{
- outb(cmdport+Dh, Dev0);
- microdelay(1);
- }
- }
-#endif
- }
- else
- ctlr->drive[1] = drive;
-
- ctlr->cmdport = cmdport;
- ctlr->ctlport = ctlport;
- ctlr->irq = irq;
- ctlr->tbdf = -1;
- ctlr->command = Cedd; /* debugging */
-
- sdev->ifc = &sdataifc;
- sdev->ctlr = ctlr;
- sdev->idno = 'C';
- sdev->nunit = 1;
- ctlr->sdev = sdev;
-
- return sdev;
-}
-
-static int
-atasetsense(Drive* drive, int status, int key, int asc, int ascq)
-{
- drive->sense[2] = key;
- drive->sense[12] = asc;
- drive->sense[13] = ascq;
-
- return status;
-}
-
-static int
-atastandby(Drive* drive, int period)
-{
- Ctlr* ctlr;
- int cmdport, done;
-
- ctlr = drive->ctlr;
- drive->command = Cstandby;
- qlock(ctlr);
-
- cmdport = ctlr->cmdport;
- ilock(ctlr);
- outb(cmdport+Count, period);
- outb(cmdport+Dh, drive->dev);
- ctlr->done = 0;
- ctlr->curdrive = drive;
- ctlr->command = Cstandby; /* debugging */
- outb(cmdport+Command, Cstandby);
- iunlock(ctlr);
-
- while(waserror())
- ;
- tsleep(ctlr, atadone, ctlr, 30*1000);
- poperror();
-
- done = ctlr->done;
- qunlock(ctlr);
-
- if(!done || (drive->status & Err))
- return atasetsense(drive, SDcheck, 4, 8, drive->error);
- return SDok;
-}
-
-static int
-atamodesense(Drive* drive, uchar* cmd)
-{
- int len;
-
- /*
- * Fake a vendor-specific request with page code 0,
- * return the drive info.
- */
- if((cmd[2] & 0x3F) != 0 && (cmd[2] & 0x3F) != 0x3F)
- return atasetsense(drive, SDcheck, 0x05, 0x24, 0);
- len = (cmd[7]<<8)|cmd[8];
- if(len == 0)
- return SDok;
- if(len < 8+sizeof(drive->info))
- return atasetsense(drive, SDcheck, 0x05, 0x1A, 0);
- if(drive->data == nil || drive->dlen < len)
- return atasetsense(drive, SDcheck, 0x05, 0x20, 1);
- memset(drive->data, 0, 8);
- drive->data[0] = sizeof(drive->info)>>8;
- drive->data[1] = sizeof(drive->info);
- memmove(drive->data+8, drive->info, sizeof(drive->info));
- drive->data += 8+sizeof(drive->info);
-
- return SDok;
-}
-
-static void
-atanop(Drive* drive, int subcommand)
-{
- Ctlr* ctlr;
- int as, cmdport, ctlport, timeo;
-
- /*
- * Attempt to abort a command by using NOP.
- * In response, the drive is supposed to set Abrt
- * in the Error register, set (Drdy|Err) in Status
- * and clear Bsy when done. However, some drives
- * (e.g. ATAPI Zip) just go Bsy then clear Status
- * when done, hence the timeout loop only on Bsy
- * and the forced setting of drive->error.
- */
- ctlr = drive->ctlr;
- cmdport = ctlr->cmdport;
- outb(cmdport+Features, subcommand);
- outb(cmdport+Dh, drive->dev);
- ctlr->command = Cnop; /* debugging */
- outb(cmdport+Command, Cnop);
-
- microdelay(1);
- ctlport = ctlr->ctlport;
- for(timeo = 0; timeo < 1000; timeo++){
- as = inb(ctlport+As);
- if(!(as & Bsy))
- break;
- microdelay(1);
- }
- drive->error |= Abrt;
-}
-
-static void
-ataabort(Drive* drive, int dolock)
-{
- /*
- * If NOP is available (packet commands) use it otherwise
- * must try a software reset.
- */
- if(dolock)
- ilock(drive->ctlr);
- if(atacsf(drive, 0x0000000000004000LL, 0))
- atanop(drive, 0);
- else{
- atasrst(drive->ctlr->ctlport);
- drive->error |= Abrt;
- }
- if(dolock)
- iunlock(drive->ctlr);
-}
-
-static int
-atadmasetup(Drive* drive, int )
-{
- drive->dmactl = 0;
- return -1;
-
-#ifdef notdef
- Prd *prd;
- ulong pa;
- Ctlr *ctlr;
- int bmiba, bmisx, count;
-
- pa = PCIWADDR(drive->data);
- if(pa & 0x03)
- return -1;
- ctlr = drive->ctlr;
- prd = ctlr->prdt;
-
- /*
- * Sometimes drives identify themselves as being DMA capable
- * although they are not on a busmastering controller.
- */
- if(prd == nil){
- drive->dmactl = 0;
- return -1;
- }
-
- for(;;){
- prd->pa = pa;
- count = 64*1024 - (pa & 0xFFFF);
- if(count >= len){
- prd->count = PrdEOT|(len & 0xFFFF);
- break;
- }
- prd->count = count;
- len -= count;
- pa += count;
- prd++;
- }
-
- bmiba = ctlr->bmiba;
- outl(bmiba+Bmidtpx, PCIWADDR(ctlr->prdt));
- if(drive->write)
- outb(ctlr->bmiba+Bmicx, 0);
- else
- outb(ctlr->bmiba+Bmicx, Rwcon);
- bmisx = inb(bmiba+Bmisx);
- outb(bmiba+Bmisx, bmisx|Ideints|Idedmae);
-
- return 0;
-#endif
-}
-
-static void
-atadmastart(Ctlr* ctlr, int write)
-{
- if(write)
- outb(ctlr->bmiba+Bmicx, Ssbm);
- else
- outb(ctlr->bmiba+Bmicx, Rwcon|Ssbm);
-}
-
-static int
-atadmastop(Ctlr* ctlr)
-{
- int bmiba;
-
- bmiba = ctlr->bmiba;
- outb(bmiba+Bmicx, inb(bmiba+Bmicx) & ~Ssbm);
-
- return inb(bmiba+Bmisx);
-}
-
-static void
-atadmainterrupt(Drive* drive, int count)
-{
- Ctlr* ctlr;
- int bmiba, bmisx;
-
- ctlr = drive->ctlr;
- bmiba = ctlr->bmiba;
- bmisx = inb(bmiba+Bmisx);
- switch(bmisx & (Ideints|Idedmae|Bmidea)){
- case Bmidea:
- /*
- * Data transfer still in progress, nothing to do
- * (this should never happen).
- */
- return;
-
- case Ideints:
- case Ideints|Bmidea:
- /*
- * Normal termination, tidy up.
- */
- drive->data += count;
- break;
-
- default:
- /*
- * What's left are error conditions (memory transfer
- * problem) and the device is not done but the PRD is
- * exhausted. For both cases must somehow tell the
- * drive to abort.
- */
- ataabort(drive, 0);
- break;
- }
- atadmastop(ctlr);
- ctlr->done = 1;
-}
-
-static void
-atapktinterrupt(Drive* drive)
-{
- Ctlr* ctlr;
- int cmdport, len;
-
- ctlr = drive->ctlr;
- cmdport = ctlr->cmdport;
- switch(inb(cmdport+Ir) & (/*Rel|*/Io|Cd)){
- case Cd:
- outss(cmdport+Data, drive->pktcmd, drive->pkt/2);
- break;
-
- case 0:
- len = (inb(cmdport+Bytehi)<<8)|inb(cmdport+Bytelo);
- if(drive->data+len > drive->limit){
- atanop(drive, 0);
- break;
- }
- outss(cmdport+Data, drive->data, len/2);
- drive->data += len;
- break;
-
- case Io:
- len = (inb(cmdport+Bytehi)<<8)|inb(cmdport+Bytelo);
- if(drive->data+len > drive->limit){
- atanop(drive, 0);
- break;
- }
- inss(cmdport+Data, drive->data, len/2);
- drive->data += len;
- break;
-
- case Io|Cd:
- if(drive->pktdma)
- atadmainterrupt(drive, drive->dlen);
- else
- ctlr->done = 1;
- break;
- }
-}
-
-static int
-atapktio(Drive* drive, uchar* cmd, int clen)
-{
- Ctlr *ctlr;
- int as, cmdport, ctlport, len, r, timeo;
-
- if(cmd[0] == 0x5A && (cmd[2] & 0x3F) == 0)
- return atamodesense(drive, cmd);
-
- r = SDok;
-
- drive->command = Cpkt;
- memmove(drive->pktcmd, cmd, clen);
- memset(drive->pktcmd+clen, 0, drive->pkt-clen);
- drive->limit = drive->data+drive->dlen;
-
- ctlr = drive->ctlr;
- cmdport = ctlr->cmdport;
- ctlport = ctlr->ctlport;
-
- qlock(ctlr);
-
- if(ataready(cmdport, ctlport, drive->dev, Bsy|Drq, 0, 107*1000) < 0){
- qunlock(ctlr);
- return -1;
- }
-
- ilock(ctlr);
- if(drive->dlen && drive->dmactl && !atadmasetup(drive, drive->dlen))
- drive->pktdma = Dma;
- else
- drive->pktdma = 0;
-
- outb(cmdport+Features, drive->pktdma);
- outb(cmdport+Count, 0);
- outb(cmdport+Sector, 0);
- len = 16*drive->secsize;
- outb(cmdport+Bytelo, len);
- outb(cmdport+Bytehi, len>>8);
- outb(cmdport+Dh, drive->dev);
- ctlr->done = 0;
- ctlr->curdrive = drive;
- ctlr->command = Cpkt; /* debugging */
- if(drive->pktdma)
- atadmastart(ctlr, drive->write);
- outb(cmdport+Command, Cpkt);
-
- if((drive->info[Iconfig] & 0x0060) != 0x0020){
- microdelay(1);
- as = ataready(cmdport, ctlport, 0, Bsy, Drq|Chk, 4*1000);
- if(as < 0)
- r = SDtimeout;
- else if(as & Chk)
- r = SDcheck;
- else
- atapktinterrupt(drive);
- }
- iunlock(ctlr);
-
- while(waserror())
- ;
- if(!drive->pktdma)
- sleep(ctlr, atadone, ctlr);
- else for(timeo = 0; !ctlr->done; timeo++){
- tsleep(ctlr, atadone, ctlr, 1000);
- if(ctlr->done)
- break;
- ilock(ctlr);
- atadmainterrupt(drive, 0);
- if(!drive->error && timeo > 10){
- ataabort(drive, 0);
- atadmastop(ctlr);
- drive->dmactl = 0;
- drive->error |= Abrt;
- }
- if(drive->error){
- drive->status |= Chk;
- ctlr->curdrive = nil;
- }
- iunlock(ctlr);
- }
- poperror();
-
- qunlock(ctlr);
-
- if(drive->status & Chk)
- r = SDcheck;
-
- return r;
-}
-
-static int
-atageniostart(Drive* drive, int lba)
-{
- Ctlr *ctlr;
- int as, c, cmdport, ctlport, h, len, s;
-
- if(drive->dev & Lba){
- c = (lba>>8) & 0xFFFF;
- h = (lba>>24) & 0x0F;
- s = lba & 0xFF;
- }
- else{
- c = lba/(drive->s*drive->h);
- h = ((lba/drive->s) % drive->h);
- s = (lba % drive->s) + 1;
- }
-
- ctlr = drive->ctlr;
- cmdport = ctlr->cmdport;
- ctlport = ctlr->ctlport;
- if(ataready(cmdport, ctlport, drive->dev, Bsy|Drq, 0, 101*1000) < 0)
- return -1;
-
- ilock(ctlr);
- if(drive->dmactl && !atadmasetup(drive, drive->count*drive->secsize)){
- if(drive->write)
- drive->command = Cwd;
- else
- drive->command = Crd;
- }
- else if(drive->rwmctl){
- drive->block = drive->rwm*drive->secsize;
- if(drive->write)
- drive->command = Cwsm;
- else
- drive->command = Crsm;
- }
- else{
- drive->block = drive->secsize;
- if(drive->write)
- drive->command = Cws;
- else
- drive->command = Crs;
- }
- drive->limit = drive->data + drive->count*drive->secsize;
-
- outb(cmdport+Count, drive->count);
- outb(cmdport+Sector, s);
- outb(cmdport+Dh, drive->dev|h);
- outb(cmdport+Cyllo, c);
- outb(cmdport+Cylhi, c>>8);
- ctlr->done = 0;
- ctlr->curdrive = drive;
- ctlr->command = drive->command; /* debugging */
- outb(cmdport+Command, drive->command);
-
- switch(drive->command){
- case Cws:
- case Cwsm:
- microdelay(1);
- as = ataready(cmdport, ctlport, 0, Bsy, Drq|Err, 1000);
- if(as < 0 || (as & Err)){
- iunlock(ctlr);
- return -1;
- }
- len = drive->block;
- if(drive->data+len > drive->limit)
- len = drive->limit-drive->data;
- outss(cmdport+Data, drive->data, len/2);
- break;
-
- case Crd:
- case Cwd:
- atadmastart(ctlr, drive->write);
- break;
- }
- iunlock(ctlr);
-
- return 0;
-}
-
-static int
-atagenioretry(Drive* drive)
-{
- if(drive->dmactl)
- drive->dmactl = 0;
- else if(drive->rwmctl)
- drive->rwmctl = 0;
- else
- return atasetsense(drive, SDcheck, 4, 8, drive->error);
-
- return SDretry;
-}
-
-static int
-atagenio(Drive* drive, uchar* cmd, int)
-{
- uchar *p;
- Ctlr *ctlr;
- int count, lba, len;
-
- /*
- * Map SCSI commands into ATA commands for discs.
- * Fail any command with a LUN except INQUIRY which
- * will return 'logical unit not supported'.
- */
- if((cmd[1]>>5) && cmd[0] != 0x12)
- return atasetsense(drive, SDcheck, 0x05, 0x25, 0);
-
- switch(cmd[0]){
- default:
- return atasetsense(drive, SDcheck, 0x05, 0x20, 0);
-
- case 0x00: /* test unit ready */
- return SDok;
-
- case 0x03: /* request sense */
- if(cmd[4] < sizeof(drive->sense))
- len = cmd[4];
- else
- len = sizeof(drive->sense);
- if(drive->data && drive->dlen >= len){
- memmove(drive->data, drive->sense, len);
- drive->data += len;
- }
- return SDok;
-
- case 0x12: /* inquiry */
- if(cmd[4] < sizeof(drive->inquiry))
- len = cmd[4];
- else
- len = sizeof(drive->inquiry);
- if(drive->data && drive->dlen >= len){
- memmove(drive->data, drive->inquiry, len);
- drive->data += len;
- }
- return SDok;
-
- case 0x1B: /* start/stop unit */
- /*
- * NOP for now, can use the power management feature
- * set later.
- */
- return SDok;
-
- case 0x25: /* read capacity */
- if((cmd[1] & 0x01) || cmd[2] || cmd[3])
- return atasetsense(drive, SDcheck, 0x05, 0x24, 0);
- if(drive->data == nil || drive->dlen < 8)
- return atasetsense(drive, SDcheck, 0x05, 0x20, 1);
- /*
- * Read capacity returns the LBA of the last sector.
- */
- len = drive->sectors-1;
- p = drive->data;
- *p++ = len>>24;
- *p++ = len>>16;
- *p++ = len>>8;
- *p++ = len;
- len = drive->secsize;
- *p++ = len>>24;
- *p++ = len>>16;
- *p++ = len>>8;
- *p = len;
- drive->data += 8;
- return SDok;
-
- case 0x28: /* read */
- case 0x2A: /* write */
- break;
-
- case 0x5A:
- return atamodesense(drive, cmd);
- }
-
- ctlr = drive->ctlr;
- lba = (cmd[2]<<24)|(cmd[3]<<16)|(cmd[4]<<8)|cmd[5];
- count = (cmd[7]<<8)|cmd[8];
- if(drive->data == nil)
- return SDok;
- if(drive->dlen < count*drive->secsize)
- count = drive->dlen/drive->secsize;
- qlock(ctlr);
- while(count){
- if(count > 256)
- drive->count = 256;
- else
- drive->count = count;
- if(atageniostart(drive, lba)){
- ilock(ctlr);
- atanop(drive, 0);
- iunlock(ctlr);
- qunlock(ctlr);
- return atagenioretry(drive);
- }
-
- while(waserror())
- ;
- tsleep(ctlr, atadone, ctlr, 30*1000);
- poperror();
- if(!ctlr->done){
- /*
- * What should the above timeout be? In
- * standby and sleep modes it could take as
- * long as 30 seconds for a drive to respond.
- * Very hard to get out of this cleanly.
- */
- atadumpstate(drive, cmd, lba, count);
- ataabort(drive, 1);
- qunlock(ctlr);
- return atagenioretry(drive);
- }
-
- if(drive->status & Err){
- qunlock(ctlr);
- return atasetsense(drive, SDcheck, 4, 8, drive->error);
- }
- count -= drive->count;
- lba += drive->count;
- }
- qunlock(ctlr);
-
- return SDok;
-}
-
-static int
-atario(SDreq* r)
-{
- Ctlr *ctlr;
- Drive *drive;
- SDunit *unit;
- uchar cmd10[10], *cmdp, *p;
- int clen, reqstatus, status;
-
- unit = r->unit;
- if((ctlr = unit->dev->ctlr) == nil || ctlr->drive[unit->subno] == nil){
- r->status = SDtimeout;
- return SDtimeout;
- }
- drive = ctlr->drive[unit->subno];
-
- /*
- * Most SCSI commands can be passed unchanged except for
- * the padding on the end. The few which require munging
- * are not used internally. Mode select/sense(6) could be
- * converted to the 10-byte form but it's not worth the
- * effort. Read/write(6) are easy.
- */
- switch(r->cmd[0]){
- case 0x08: /* read */
- case 0x0A: /* write */
- cmdp = cmd10;
- memset(cmdp, 0, sizeof(cmd10));
- cmdp[0] = r->cmd[0]|0x20;
- cmdp[1] = r->cmd[1] & 0xE0;
- cmdp[5] = r->cmd[3];
- cmdp[4] = r->cmd[2];
- cmdp[3] = r->cmd[1] & 0x0F;
- cmdp[8] = r->cmd[4];
- clen = sizeof(cmd10);
- break;
-
- default:
- cmdp = r->cmd;
- clen = r->clen;
- break;
- }
-
- qlock(drive);
-retry:
- drive->write = r->write;
- drive->data = r->data;
- drive->dlen = r->dlen;
-
- drive->status = 0;
- drive->error = 0;
- if(drive->pkt)
- status = atapktio(drive, cmdp, clen);
- else
- status = atagenio(drive, cmdp, clen);
- if(status == SDretry){
- if(DbgDEBUG)
- print("%s: retry: dma %8.8uX rwm %4.4uX\n",
- unit->name, drive->dmactl, drive->rwmctl);
- goto retry;
- }
- if(status == SDok){
- atasetsense(drive, SDok, 0, 0, 0);
- if(drive->data){
- p = r->data;
- r->rlen = drive->data - p;
- }
- else
- r->rlen = 0;
- }
- else if(status == SDcheck && !(r->flags & SDnosense)){
- drive->write = 0;
- memset(cmd10, 0, sizeof(cmd10));
- cmd10[0] = 0x03;
- cmd10[1] = r->lun<<5;
- cmd10[4] = sizeof(r->sense)-1;
- drive->data = r->sense;
- drive->dlen = sizeof(r->sense)-1;
- drive->status = 0;
- drive->error = 0;
- if(drive->pkt)
- reqstatus = atapktio(drive, cmd10, 6);
- else
- reqstatus = atagenio(drive, cmd10, 6);
- if(reqstatus == SDok){
- r->flags |= SDvalidsense;
- atasetsense(drive, SDok, 0, 0, 0);
- }
- }
- qunlock(drive);
- r->status = status;
- if(status != SDok)
- return status;
-
- /*
- * Fix up any results.
- * Many ATAPI CD-ROMs ignore the LUN field completely and
- * return valid INQUIRY data. Patch the response to indicate
- * 'logical unit not supported' if the LUN is non-zero.
- */
- switch(cmdp[0]){
- case 0x12: /* inquiry */
- if((p = r->data) == nil)
- break;
- if((cmdp[1]>>5) && (!drive->pkt || (p[0] & 0x1F) == 0x05))
- p[0] = 0x7F;
- /*FALLTHROUGH*/
- default:
- break;
- }
-
- return SDok;
-}
-
-
-static void
-atainterrupt(Ureg*, void* arg)
-{
- Ctlr *ctlr;
- Drive *drive;
- int cmdport, len, status;
-
- ctlr = arg;
-
- ilock(ctlr);
- if(inb(ctlr->ctlport+As) & Bsy){
- iunlock(ctlr);
- if(DEBUG & DbgDEBUG)
- print("IBsy+");
- return;
- }
- cmdport = ctlr->cmdport;
- status = inb(cmdport+Status);
- if((drive = ctlr->curdrive) == nil){
- iunlock(ctlr);
- if((DEBUG & DbgDEBUG) && ctlr->command != Cedd)
- print("Inil%2.2uX/%2.2uX+", ctlr->command, status);
- return;
- }
-
- if(status & Err)
- drive->error = inb(cmdport+Error);
- else switch(drive->command){
- default:
- drive->error = Abrt;
- break;
-
- case Crs:
- case Crsm:
- if(!(status & Drq)){
- drive->error = Abrt;
- break;
- }
- len = drive->block;
- if(drive->data+len > drive->limit)
- len = drive->limit-drive->data;
- inss(cmdport+Data, drive->data, len/2);
- drive->data += len;
- if(drive->data >= drive->limit)
- ctlr->done = 1;
- break;
-
- case Cws:
- case Cwsm:
- len = drive->block;
- if(drive->data+len > drive->limit)
- len = drive->limit-drive->data;
- drive->data += len;
- if(drive->data >= drive->limit){
- ctlr->done = 1;
- break;
- }
- if(!(status & Drq)){
- drive->error = Abrt;
- break;
- }
- len = drive->block;
- if(drive->data+len > drive->limit)
- len = drive->limit-drive->data;
- outss(cmdport+Data, drive->data, len/2);
- break;
-
- case Cpkt:
- atapktinterrupt(drive);
- break;
-
- case Crd:
- case Cwd:
- atadmainterrupt(drive, drive->count*drive->secsize);
- break;
-
- case Cstandby:
- ctlr->done = 1;
- break;
- }
- iunlock(ctlr);
-
- if(drive->error){
- status |= Err;
- ctlr->done = 1;
- }
-
- if(ctlr->done){
- ctlr->curdrive = nil;
- drive->status = status;
- wakeup(ctlr);
- }
-}
-
-#ifdef notdef
-static SDev*
-atapnp(void)
-{
- int cmdport;
- int ctlport;
- int irq;
-
- cmdport = 0x200;
- ctlport = cmdport + 0x0C;
- irq = 10;
- return ataprobe(cmdport, ctlport, irq);
-}
-#endif
-
-
-static SDev*
-atalegacy(int port, int irq)
-{
- return ataprobe(port, port+0x204, irq);
-}
-
-static int ataitype;
-static int atairq;
-static int
-ataenable(SDev* sdev)
-{
- Ctlr *ctlr;
- char name[KNAMELEN];
-
- ctlr = sdev->ctlr;
-
- if(ctlr->bmiba){
- ctlr->prdt = xspanalloc(Nprd*sizeof(Prd), 4, 4*1024);
- }
- snprint(name, KNAMELEN, "%s (%s)", sdev->name, sdev->ifc->name);
-// intrenable(ctlr->irq, atainterrupt, ctlr, ctlr->tbdf, name);
- outb(ctlr->ctlport+Dc, 0);
- intrenable(ataitype, atairq, atainterrupt, ctlr, name);
- if(ctlr->ienable)
- ctlr->ienable(ctlr);
-
- return 1;
-}
-
-static int
-atarctl(SDunit* unit, char* p, int l)
-{
- int n;
- Ctlr *ctlr;
- Drive *drive;
-
- if((ctlr = unit->dev->ctlr) == nil || ctlr->drive[unit->subno] == nil)
- return 0;
- drive = ctlr->drive[unit->subno];
-
- qlock(drive);
- n = snprint(p, l, "config %4.4uX capabilities %4.4uX",
- drive->info[Iconfig], drive->info[Icapabilities]);
- if(drive->dma)
- n += snprint(p+n, l-n, " dma %8.8uX dmactl %8.8uX",
- drive->dma, drive->dmactl);
- if(drive->rwm)
- n += snprint(p+n, l-n, " rwm %ud rwmctl %ud",
- drive->rwm, drive->rwmctl);
- n += snprint(p+n, l-n, "\n");
- if(unit->sectors){
- n += snprint(p+n, l-n, "geometry %llud %ld",
- unit->sectors, unit->secsize);
- if(drive->pkt == 0)
- n += snprint(p+n, l-n, " %d %d %d",
- drive->c, drive->h, drive->s);
- n += snprint(p+n, l-n, "\n");
- }
- qunlock(drive);
-
- return n;
-}
-
-static int
-atawctl(SDunit* unit, Cmdbuf* cb)
-{
- int period;
- Ctlr *ctlr;
- Drive *drive;
-
- if((ctlr = unit->dev->ctlr) == nil || ctlr->drive[unit->subno] == nil)
- return 0;
- drive = ctlr->drive[unit->subno];
-
- qlock(drive);
- if(waserror()){
- qunlock(drive);
- nexterror();
- }
-
- /*
- * Dma and rwm control is passive at the moment,
- * i.e. it is assumed that the hardware is set up
- * correctly already either by the BIOS or when
- * the drive was initially identified.
- */
- if(strcmp(cb->f[0], "dma") == 0){
- if(cb->nf != 2 || drive->dma == 0)
- error(Ebadctl);
- if(strcmp(cb->f[1], "on") == 0)
- drive->dmactl = drive->dma;
- else if(strcmp(cb->f[1], "off") == 0)
- drive->dmactl = 0;
- else
- error(Ebadctl);
- }
- else if(strcmp(cb->f[0], "rwm") == 0){
- if(cb->nf != 2 || drive->rwm == 0)
- error(Ebadctl);
- if(strcmp(cb->f[1], "on") == 0)
- drive->rwmctl = drive->rwm;
- else if(strcmp(cb->f[1], "off") == 0)
- drive->rwmctl = 0;
- else
- error(Ebadctl);
- }
- else if(strcmp(cb->f[0], "standby") == 0){
- switch(cb->nf){
- default:
- error(Ebadctl);
- case 2:
- period = strtol(cb->f[1], 0, 0);
- if(period && (period < 30 || period > 240*5))
- error(Ebadctl);
- period /= 5;
- break;
- }
- if(atastandby(drive, period) != SDok)
- error(Ebadctl);
- }
- else
- error(Ebadctl);
- qunlock(drive);
- poperror();
-
- return 0;
-}
-
-static int
-scsitest(SDreq* r)
-{
- r->write = 0;
- memset(r->cmd, 0, sizeof(r->cmd));
- r->cmd[1] = r->lun<<5;
- r->clen = 6;
- r->data = nil;
- r->dlen = 0;
- r->flags = 0;
-
- r->status = ~0;
-
- return r->unit->dev->ifc->rio(r);
-}
-
-static int
-scsirio(SDreq* r)
-{
- /*
- * Perform an I/O request, returning
- * -1 failure
- * 0 ok
- * 1 no medium present
- * 2 retry
- * The contents of r may be altered so the
- * caller should re-initialise if necesary.
- */
- r->status = ~0;
- switch(r->unit->dev->ifc->rio(r)){
- default:
- break;
- case SDcheck:
- if(!(r->flags & SDvalidsense))
- break;
- switch(r->sense[2] & 0x0F){
- case 0x00: /* no sense */
- case 0x01: /* recovered error */
- return 2;
- case 0x06: /* check condition */
- /*
- * 0x28 - not ready to ready transition,
- * medium may have changed.
- * 0x29 - power on or some type of reset.
- */
- if(r->sense[12] == 0x28 && r->sense[13] == 0)
- return 2;
- if(r->sense[12] == 0x29)
- return 2;
- break;
- case 0x02: /* not ready */
- /*
- * If no medium present, bail out.
- * If unit is becoming ready, rather than not
- * not ready, wait a little then poke it again. */
- if(r->sense[12] == 0x3A)
- break;
- if(r->sense[12] != 0x04 || r->sense[13] != 0x01)
- break;
-
- while(waserror())
- ;
- tsleep(&up->sleep, return0, 0, 500);
- poperror();
- scsitest(r);
- return 2;
- default:
- break;
- }
- break;
- case SDok:
- return 0;
- }
- return -1;
-}
-
-
-static int
-ataverify(SDunit* unit)
-{
- SDreq *r;
- int i, status;
- uchar *inquiry;
-
- if((r = malloc(sizeof(SDreq))) == nil)
- return 0;
- if((inquiry = sdmalloc(sizeof(unit->inquiry))) == nil){
- free(r);
- return 0;
- }
- r->unit = unit;
- r->lun = 0; /* ??? */
-
- memset(unit->inquiry, 0, sizeof(unit->inquiry));
- r->write = 0;
- r->cmd[0] = 0x12;
- r->cmd[1] = r->lun<<5;
- r->cmd[4] = sizeof(unit->inquiry)-1;
- r->clen = 6;
- r->data = inquiry;
- r->dlen = sizeof(unit->inquiry)-1;
- r->flags = 0;
-
- r->status = ~0;
- if(unit->dev->ifc->rio(r) != SDok){
- free(r);
- return 0;
- }
- memmove(unit->inquiry, inquiry, r->dlen);
- free(inquiry);
-
- SET(status);
- for(i = 0; i < 3; i++){
- while((status = scsitest(r)) == SDbusy)
- ;
- if(status == SDok || status != SDcheck)
- break;
- if(!(r->flags & SDvalidsense))
- break;
- if((r->sense[2] & 0x0F) != 0x02)
- continue;
- /*
- * Unit is 'not ready'.
- * If it needs an initialising command, set status
- * so it will be spun-up below.
- * If there's no medium, that's OK too, but don't
- * try to spin it up.
- */
- if(r->sense[12] == 0x04 && r->sense[13] == 0x02){
- status = SDok;
- break;
- }
- if(r->sense[12] == 0x3A)
- break;
- }
-
- if(status == SDok){
- /*
- * Try to ensure a direct-access device is spinning.
- * Don't wait for completion, ignore the result.
- */
- if((unit->inquiry[0] & 0x1F) == 0){
- memset(r->cmd, 0, sizeof(r->cmd));
- r->write = 0;
- r->cmd[0] = 0x1B;
- r->cmd[1] = (r->lun<<5)|0x01;
- r->cmd[4] = 1;
- r->clen = 6;
- r->data = nil;
- r->dlen = 0;
- r->flags = 0;
-
- r->status = ~0;
- unit->dev->ifc->rio(r);
- }
- }
- free(r);
-
- if(status == SDok || status == SDcheck)
- return 1;
- return 0;
-}
-
-static int
-ataonline(SDunit* unit)
-{
- SDreq *r;
- uchar *p;
- int ok, retries;
-
- if((r = malloc(sizeof(SDreq))) == nil)
- return 0;
- if((p = sdmalloc(8)) == nil){
- free(r);
- return 0;
- }
-
- ok = 0;
-
- r->unit = unit;
- r->lun = 0; /* ??? */
- for(retries = 0; retries < 10; retries++){
- /*
- * Read-capacity is mandatory for DA, WORM, CD-ROM and
- * MO. It may return 'not ready' if type DA is not
- * spun up, type MO or type CD-ROM are not loaded or just
- * plain slow getting their act together after a reset.
- */
- r->write = 0;
- memset(r->cmd, 0, sizeof(r->cmd));
- r->cmd[0] = 0x25;
- r->cmd[1] = r->lun<<5;
- r->clen = 10;
- r->data = p;
- r->dlen = 8;
- r->flags = 0;
-
- r->status = ~0;
- switch(scsirio(r)){
- default:
- break;
- case 0:
- unit->sectors = (p[0]<<24)|(p[1]<<16)|(p[2]<<8)|p[3];
- /*
- * Read-capacity returns the LBA of the last sector,
- * therefore the number of sectors must be incremented.
- */
- unit->sectors++;
- unit->secsize = (p[4]<<24)|(p[5]<<16)|(p[6]<<8)|p[7];
-
- /*
- * Some ATAPI CD readers lie about the block size.
- * Since we don't read audio via this interface
- * it's okay to always fudge this.
- */
- if(unit->secsize == 2352)
- unit->secsize = 2048;
- ok = 1;
- break;
- case 1:
- ok = 1;
- break;
- case 2:
- continue;
- }
- break;
- }
- free(p);
- free(r);
-
- if(ok)
- return ok+retries;
- else
- return 0;
-}
-
-static long
-atabio(SDunit* unit, int lun, int write, void* data, long nb, uvlong bno)
-{
- SDreq *r;
- long rlen;
-
- if((r = malloc(sizeof(SDreq))) == nil)
- error(Enomem);
- r->unit = unit;
- r->lun = lun;
-again:
- r->write = write;
- if(write == 0)
- r->cmd[0] = 0x28;
- else
- r->cmd[0] = 0x2A;
- r->cmd[1] = (lun<<5);
- r->cmd[2] = bno>>24;
- r->cmd[3] = bno>>16;
- r->cmd[4] = bno>>8;
- r->cmd[5] = bno;
- r->cmd[6] = 0;
- r->cmd[7] = nb>>8;
- r->cmd[8] = nb;
- r->cmd[9] = 0;
- r->clen = 10;
- r->data = data;
- r->dlen = nb*unit->secsize;
- r->flags = 0;
-
- r->status = ~0;
- switch(scsirio(r)){
- default:
- rlen = -1;
- break;
- case 0:
- rlen = r->rlen;
- break;
- case 2:
- rlen = -1;
- if(!(r->flags & SDvalidsense))
- break;
- switch(r->sense[2] & 0x0F){
- default:
- break;
- case 0x06: /* check condition */
- /*
- * Check for a removeable media change.
- * If so, mark it by zapping the geometry info
- * to force an online request.
- */
- if(r->sense[12] != 0x28 || r->sense[13] != 0)
- break;
- if(unit->inquiry[1] & 0x80)
- unit->sectors = 0;
- break;
- case 0x02: /* not ready */
- /*
- * If unit is becoming ready,
- * rather than not not ready, try again.
- */
- if(r->sense[12] == 0x04 && r->sense[13] == 0x01)
- goto again;
- break;
- }
- break;
- }
- free(r);
-
- return rlen;
-}
-
-
-struct Try {
- int p;
- int c;
-} tries[] = {
- { 0, 0x0c },
- { 0, 0 },
-};
-
-static SDev*
-ataprobew(DevConf *cf)
-{
- int cmdport;
- int ctlport;
- int irq;
- SDev* rc;
- struct Try *try;
-
- rc = nil;
- for (try = &tries[0]; try->p != 0 || try->c != 0; try++){
- ataitype = cf->itype;
- atairq = cf->intnum;
- cmdport = cf->ports[0].port + try->p;
- ctlport = cmdport + try->c;
- irq = cf->intnum;
- rc = ataprobe(cmdport, ctlport, irq);
- if (rc)
- break;
- }
- return rc;
-}
-
-static void
-ataclear(SDev *sdev)
-{
- Ctlr* ctlr;
-
- ctlr = sdev->ctlr;
-
- if (ctlr->drive[0])
- free(ctlr->drive[0]);
- if (ctlr->drive[1])
- free(ctlr->drive[1]);
- if (sdev->name)
- free(sdev->name);
- if (sdev->unitflg)
- free(sdev->unitflg);
- if (sdev->unit)
- free(sdev->unit);
- free(ctlr);
- free(sdev);
-}
-
-static char *
-atastat(SDev *sdev, char *p, char *e)
-{
- Ctlr *ctlr = sdev->ctlr;
-
- return seprint(p, e, "%s ata port %X ctl %X irq %d\n",
- sdev->name, ctlr->cmdport, ctlr->ctlport, ctlr->irq);
-}
-
-
-SDifc sdataifc = {
- "ata", /* name */
-
- nil, /* pnp */
- atalegacy, /* legacy */
- ataenable, /* enable */
- nil, /* disable */
-
- ataverify, /* verify */
- ataonline, /* online */
- atario, /* rio */
- atarctl, /* rctl */
- atawctl, /* wctl */
-
- atabio, /* bio */
- ataprobew, /* probew */
- ataclear, /* clear */
- atastat, /* stat */
-};
-
--- a/sys/src/9/bitsy/tar.c
+++ /dev/null
@@ -1,81 +1,0 @@
-#include "u.h"
-#include "../port/lib.h"
-#include "mem.h"
-#include "dat.h"
-#include "fns.h"
-#include "io.h"
-#include "../port/error.h"
-
-typedef union Hblock Hblock;
-
-#define TBLOCK 512
-#define NAMSIZ 100
-union Hblock
-{
- char dummy[TBLOCK];
- struct header
- {
- char name[NAMSIZ];
- char mode[8];
- char uid[8];
- char gid[8];
- char size[12];
- char mtime[12];
- char chksum[8];
- char linkflag;
- char linkname[NAMSIZ];
- } dbuf;
-};
-
-static int getdir(Hblock *hb, Dir *sp);
-static int checksum(Hblock *hb);
-
-uchar*
-tarlookup(uchar *addr, char *file, int *dlen)
-{
- Hblock *hp;
- Dir dir;
-
- hp = (Hblock*)addr;
- while(getdir(hp, &dir) != 0) {
- if(strcmp(file, hp->dbuf.name) == 0) {
- *dlen = dir.length;
- return (uchar*)(hp+1);
- }
- hp += (dir.length+TBLOCK-1)/TBLOCK + 1;
- }
- return 0;
-}
-
-static int
-getdir(Hblock *hp, Dir *sp)
-{
- int chksum;
-
- if (hp->dbuf.name[0] == '\0')
- return 0;
- sp->length = strtol(hp->dbuf.size, 0, 8);
- sp->mtime = strtol(hp->dbuf.mtime, 0, 8);
- chksum = strtol(hp->dbuf.chksum, 0, 8);
- if (chksum != checksum(hp)) {
- print("directory checksum error\n");
- return 0;
- }
- return 1;
-}
-
-static int
-checksum(Hblock *hp)
-{
- int i;
- char *cp;
-
- i = 0;
- for (cp = hp->dummy; cp < &hp->dummy[TBLOCK]; cp++) {
- if(cp < hp->dbuf.chksum || cp >= &hp->dbuf.chksum[sizeof(hp->dbuf.chksum)])
- i += *cp & 0xff;
- else
- i += ' ' & 0xff;
- }
- return(i);
-}
--- a/sys/src/9/bitsy/trap.c
+++ /dev/null
@@ -1,926 +1,0 @@
-#include "u.h"
-#include "../port/lib.h"
-#include "mem.h"
-#include "dat.h"
-#include "fns.h"
-#include "io.h"
-#include "ureg.h"
-#include "../port/error.h"
-#include "tos.h"
-
-Intrregs *intrregs;
-
-typedef struct Vctl {
- Vctl* next; /* handlers on this vector */
- char *name; /* of driver, xallocated */
- void (*f)(Ureg*, void*); /* handler to call */
- void* a; /* argument to call it with */
-} Vctl;
-
-static Lock vctllock;
-static Vctl *vctl[32];
-static Vctl *gpiovctl[27];
-static int gpioirqref[12];
-
-/*
- * Layout at virtual address 0.
- */
-typedef struct Vpage0 {
- void (*vectors[8])(void);
- ulong vtable[8];
-} Vpage0;
-Vpage0 *vpage0;
-
-static int irq(Ureg*);
-static void gpiointr(Ureg*, void*);
-
-/* recover state after power suspend
- * NB: to help debugging bad suspend code,
- * I changed some prints below to iprints,
- * to avoid deadlocks when a panic is being
- * issued during the suspend/resume handler.
- */
-void
-trapresume(void)
-{
- vpage0 = (Vpage0*)EVECTORS;
- memmove(vpage0->vectors, vectors, sizeof(vpage0->vectors));
- memmove(vpage0->vtable, vtable, sizeof(vpage0->vtable));
- wbflush();
- mappedIvecEnable();
-}
-
-/*
- * set up for exceptions
- */
-void
-trapinit(void)
-{
- /* set up the exception vectors */
- vpage0 = (Vpage0*)EVECTORS;
- memmove(vpage0->vectors, vectors, sizeof(vpage0->vectors));
- memmove(vpage0->vtable, vtable, sizeof(vpage0->vtable));
-
- wbflush();
-
- /* use exception vectors at 0xFFFF0000 */
- mappedIvecEnable();
-
- /* set up the stacks for the interrupt modes */
- setr13(PsrMfiq, m->sfiq);
- setr13(PsrMirq, m->sirq);
- setr13(PsrMabt, m->sabt);
- setr13(PsrMund, m->sund);
-
- /* map in interrupt registers */
- intrregs = mapspecial(INTRREGS, sizeof(*intrregs));
-
- /* make all interrupts IRQ (i.e. not FIQ) and disable all interrupts */
- intrregs->iclr = 0;
- intrregs->icmr = 0;
-
- /* turn off all gpio interrupts */
- gpioregs->rising = 0;
- gpioregs->falling = 0;
- gpioregs->edgestatus = gpioregs->edgestatus;
-
- /* allow all enabled interrupts to take processor out of sleep mode */
- intrregs->iccr = 0;
-}
-
-void
-trapdump(char *tag)
-{
- iprint("%s: icip %lux icmr %lux iclr %lux iccr %lux icfp %lux\n",
- tag, intrregs->icip, intrregs->icmr, intrregs->iclr,
- intrregs->iccr, intrregs->icfp);
-}
-
-void
-warnregs(Ureg *ur, char *tag)
-{
- char buf[1024];
- char *e = buf+sizeof(buf);
- char *p;
-
- p = seprint(buf, e, "%s:\n", tag);
- p = seprint(p, e, "type 0x%.8lux psr 0x%.8lux pc 0x%.8lux\n",
- ur->type, ur->psr, ur->pc);
- p = seprint(p, e, "r0 0x%.8lux r1 0x%.8lux r2 0x%.8lux r3 0x%.8lux\n",
- ur->r0, ur->r1, ur->r2, ur->r3);
- p = seprint(p, e, "r4 0x%.8lux r5 0x%.8lux r6 0x%.8lux r7 0x%.8lux\n",
- ur->r4, ur->r5, ur->r6, ur->r7);
- p = seprint(p, e, "r8 0x%.8lux r9 0x%.8lux r10 0x%.8lux r11 0x%.8lux\n",
- ur->r8, ur->r9, ur->r10, ur->r11);
- seprint(p, e, "r12 0x%.8lux r13 0x%.8lux r14 0x%.8lux\n",
- ur->r12, ur->r13, ur->r14);
- iprint("%s", buf);
-}
-
-/*
- * enable an irq interrupt
- */
-static void
-irqenable(int irq, IntrHandler *f, void* a, char *name)
-{
- Vctl *v;
-
- if(irq >= nelem(vctl) || irq < 0)
- panic("intrenable");
-
- v = malloc(sizeof(Vctl));
- v->f = f;
- v->a = a;
- v->name = xalloc(strlen(name)+1);
- strcpy(v->name, name);
-
- lock(&vctllock);
- v->next = vctl[irq];
- vctl[irq] = v;
- intrregs->icmr |= 1<<irq;
- unlock(&vctllock);
-}
-
-/*
- * disable an irq interrupt
- */
-static void
-irqdisable(int irq, IntrHandler *f, void* a, char *name)
-{
- Vctl **vp, *v;
-
- if(irq >= nelem(vctl) || irq < 0)
- panic("intrdisable");
-
- lock(&vctllock);
- for(vp = &vctl[irq]; v = *vp; vp = &v->next)
- if (v->f == f && v->a == a && strcmp(v->name, name) == 0){
- print("irqdisable: remove %s\n", name);
- *vp = v->next;
- free(v);
- break;
- }
- if (v == nil)
- print("irqdisable: irq %d, name %s not enabled\n", irq, name);
- if (vctl[irq] == nil){
- print("irqdisable: clear icmr bit %d\n", irq);
- intrregs->icmr &= ~(1<<irq);
- }
- unlock(&vctllock);
-}
-
-/*
- * enable an interrupt
- */
-void
-intrenable(int type, int which, IntrHandler *f, void* a, char *name)
-{
- int irq;
- Vctl *v;
-
- if(type == IRQ){
- irqenable(which, f, a, name);
- return;
- }
-
- /* from here down, it must be a GPIO edge interrupt */
- irq = which;
- if(which >= nelem(gpiovctl) || which < 0)
- panic("intrenable");
- if(which > 11)
- irq = 11;
-
- /* the pin had better be configured as input */
- if((1<<which) & gpioregs->direction)
- panic("intrenable of output pin %d", which);
-
- /* create a second level vctl for the gpio edge interrupt */
- v = malloc(sizeof(Vctl));
- v->f = f;
- v->a = a;
- v->name = xalloc(strlen(name)+1);
- strcpy(v->name, name);
-
- lock(&vctllock);
- v->next = gpiovctl[which];
- gpiovctl[which] = v;
-
- /* set edge register to enable interrupt */
- switch(type){
- case GPIOboth:
- gpioregs->rising |= 1<<which;
- gpioregs->falling |= 1<<which;
- break;
- case GPIOfalling:
- gpioregs->falling |= 1<<which;
- break;
- case GPIOrising:
- gpioregs->rising |= 1<<which;
- break;
- }
- unlock(&vctllock);
- /* point the irq to the gpio interrupt handler */
- if(gpioirqref[irq]++ == 0)
- irqenable(irq, gpiointr, nil, "gpio edge");
-}
-
-/*
- * disable an interrupt
- */
-void
-intrdisable(int type, int which, IntrHandler *f, void* a, char *name)
-{
- int irq;
- Vctl **vp, *v;
-
-
- if(type == IRQ){
- irqdisable(which, f, a, name);
- return;
- }
-
- /* from here down, it must be a GPIO edge interrupt */
- irq = which;
- if(which >= nelem(gpiovctl) || which < 0)
- panic("intrdisable");
- if(which > 11)
- irq = 11;
-
- lock(&vctllock);
- for(vp = &gpiovctl[which]; v = *vp; vp = &v->next)
- if (v->f == f && v->a == a && strcmp(v->name, name) == 0){
- break;
- }
- if (gpiovctl[which] == nil){
- /* set edge register to enable interrupt */
- switch(type){
- case GPIOboth:
- print("intrdisable: gpio-rising+falling clear bit %d\n", which);
- gpioregs->rising &= ~(1<<which);
- gpioregs->falling &= ~(1<<which);
- break;
- case GPIOfalling:
- print("intrdisable: gpio-falling clear bit %d\n", which);
- gpioregs->falling &= ~(1<<which);
- break;
- case GPIOrising:
- print("intrdisable: gpio-rising clear bit %d\n", which);
- gpioregs->rising &= ~(1<<which);
- break;
- }
-
- }
- if (v) {
- print("intrdisable: removing %s\n", name);
- *vp = v->next;
- }else
- print("intrdisable: which %d, name %s not enabled\n", which, name);
- unlock(&vctllock);
- /* disable the gpio interrupt handler if necessary */
- if(--gpioirqref[irq] == 0){
- print("intrdisable: inrqdisable gpiointr\n");
- irqdisable(irq, gpiointr, nil, "gpio edge");
- }
- free(v);
-}
-
-/*
- * called by trap to handle access faults
- */
-static void
-faultarm(Ureg *ureg, ulong va, int user, int read)
-{
- int n, insyscall;
- char buf[ERRMAX];
-
- if (up == nil) {
- warnregs(ureg, "kernel fault");
- panic("fault: nil up in faultarm, accessing 0x%lux", va);
- }
- insyscall = up->insyscall;
- up->insyscall = 1;
- n = fault(va, read);
- if(n < 0){
- if(!user){
- warnregs(ureg, "kernel fault");
- panic("fault: kernel accessing 0x%lux", va);
- }
-// warnregs(ureg, "user fault");
- sprint(buf, "sys: trap: fault %s va=0x%lux", read ? "read" : "write", va);
- postnote(up, 1, buf, NDebug);
- }
- up->insyscall = insyscall;
-}
-
-/*
- * returns 1 if the instruction writes memory, 0 otherwise
- */
-int
-writetomem(ulong inst)
-{
- /* swap always write memory */
- if((inst & 0x0FC00000) == 0x01000000)
- return 1;
-
- /* loads and stores are distinguished by bit 20 */
- if(inst & (1<<20))
- return 0;
-
- return 1;
-}
-
-
-/*
- * here on all exceptions other than syscall (SWI)
- */
-void
-trap(Ureg *ureg)
-{
- ulong inst;
- int clockintr, user, x, rv;
- ulong va, fsr;
- char buf[ERRMAX];
- int rem;
-
- if(up != nil)
- rem = ((char*)ureg)-up->kstack;
- else
- rem = ((char*)ureg)-((char*)(MACHADDR+sizeof(Mach)));
- if(rem < 256) {
- dumpstack();
- panic("trap %d bytes remaining, up = %#p, ureg = %#p, at pc 0x%lux",
- rem, up, ureg, ureg->pc);
- }
-
- user = (ureg->psr & PsrMask) == PsrMusr;
-
- /*
- * All interrupts/exceptions should be resumed at ureg->pc-4,
- * except for Data Abort which resumes at ureg->pc-8.
- */
- if(ureg->type == (PsrMabt+1))
- ureg->pc -= 8;
- else
- ureg->pc -= 4;
-
- clockintr = 0;
- switch(ureg->type){
- default:
- panic("unknown trap");
- break;
- case PsrMirq:
- clockintr = irq(ureg);
- break;
- case PsrMabt: /* prefetch fault */
- faultarm(ureg, ureg->pc, user, 1);
- break;
- case PsrMabt+1: /* data fault */
- va = getfar();
- inst = *(ulong*)(ureg->pc);
- fsr = getfsr() & 0xf;
- switch(fsr){
- case 0x0:
- panic("vector exception at %lux", ureg->pc);
- break;
- case 0x1:
- case 0x3:
- if(user){
- snprint(buf, sizeof(buf), "sys: alignment: pc 0x%lux va 0x%lux\n",
- ureg->pc, va);
- postnote(up, 1, buf, NDebug);
- } else
- panic("kernel alignment: pc 0x%lux va 0x%lux", ureg->pc, va);
- break;
- case 0x2:
- panic("terminal exception at %lux", ureg->pc);
- break;
- case 0x4:
- case 0x6:
- case 0x8:
- case 0xa:
- case 0xc:
- case 0xe:
- panic("external abort 0x%lux pc 0x%lux addr 0x%lux", fsr, ureg->pc, va);
- break;
- case 0x5:
- case 0x7:
- /* translation fault, i.e., no pte entry */
- faultarm(ureg, va, user, !writetomem(inst));
- break;
- case 0x9:
- case 0xb:
- /* domain fault, accessing something we shouldn't */
- if(user){
- sprint(buf, "sys: access violation: pc 0x%lux va 0x%lux\n",
- ureg->pc, va);
- postnote(up, 1, buf, NDebug);
- } else
- panic("kernel access violation: pc 0x%lux va 0x%lux",
- ureg->pc, va);
- break;
- case 0xd:
- case 0xf:
- /* permission error, copy on write or real permission error */
- faultarm(ureg, va, user, !writetomem(inst));
- break;
- }
- break;
- case PsrMund: /* undefined instruction */
- if (user) {
- /* look for floating point instructions to interpret */
- x = spllo();
- rv = fpiarm(ureg);
- splx(x);
- if (rv == 0) {
- sprint(buf, "undefined instruction: pc 0x%lux\n", ureg->pc);
- postnote(up, 1, buf, NDebug);
- }
- }else{
- iprint("undefined instruction: pc=0x%lux, inst=0x%lux, 0x%lux, 0x%lux, 0x%lux, 0x%lux\n", ureg->pc, ((ulong*)ureg->pc)[-2], ((ulong*)ureg->pc)[-1], ((ulong*)ureg->pc)[0], ((ulong*)ureg->pc)[1], ((ulong*)ureg->pc)[2]);
- panic("undefined instruction");
- }
- break;
- }
- splhi();
-
- /* delaysched set because we held a lock or because our quantum ended */
- if(up && up->delaysched && clockintr){
- sched();
- splhi();
- }
-
- if(user){
- if(up->procctl || up->nnote)
- notify(ureg);
- kexit(ureg);
- }
-}
-
-/*
- * here on irq's
- */
-static int
-irq(Ureg *ur)
-{
- ulong va;
- int clockintr, i;
- Vctl *v;
-
- va = intrregs->icip;
-
- if(va & (1<<IRQtimer0))
- clockintr = 1;
- else
- clockintr = 0;
- for(i = 0; i < 32; i++){
- if(((1<<i) & va) == 0)
- continue;
- for(v = vctl[i]; v != nil; v = v->next){
- v->f(ur, v->a);
- va &= ~(1<<i);
- }
- }
- if(va)
- print("unknown interrupt: %lux\n", va);
-
- return clockintr;
-}
-
-/*
- * here on gpio interrupts
- */
-static void
-gpiointr(Ureg *ur, void*)
-{
- ulong va;
- int i;
- Vctl *v;
-
- va = gpioregs->edgestatus;
- gpioregs->edgestatus = va;
-
- for(i = 0; i < 27; i++){
- if(((1<<i) & va) == 0)
- continue;
- for(v = gpiovctl[i]; v != nil; v = v->next){
- v->f(ur, v->a);
- va &= ~(1<<i);
- }
- }
- if(va)
- print("unknown gpio interrupt: %lux\n", va);
-}
-
-/*
- * system calls
- */
-#include "../port/systab.h"
-
-/*
- * Syscall is called directly from assembler without going through trap().
- */
-void
-syscall(Ureg* ureg)
-{
- char *e;
- ulong sp;
- long ret;
- int i, scallnr;
-
- if((ureg->psr & PsrMask) != PsrMusr) {
- panic("syscall: pc 0x%lux r14 0x%lux cs 0x%lux", ureg->pc, ureg->r14, ureg->psr);
- }
-
- m->syscall++;
- up->insyscall = 1;
- up->pc = ureg->pc;
- up->dbgreg = ureg;
-
- scallnr = ureg->r0;
- up->scallnr = scallnr;
- spllo();
-
- sp = ureg->sp;
- up->nerrlab = 0;
- ret = -1;
- if(!waserror()){
- if(scallnr >= nsyscall){
- pprint("bad sys call number %d pc %lux\n",
- scallnr, ureg->pc);
- postnote(up, 1, "sys: bad sys call", NDebug);
- error(Ebadarg);
- }
-
- if(sp<(USTKTOP-BY2PG) || sp>(USTKTOP-sizeof(Sargs)-BY2WD))
- validaddr(sp, sizeof(Sargs)+BY2WD, 0);
-
- up->s = *((Sargs*)(sp+BY2WD));
- up->psstate = sysctab[scallnr];
-
- ret = systab[scallnr]((va_list)up->s.args);
- poperror();
- }else{
- /* failure: save the error buffer for errstr */
- e = up->syserrstr;
- up->syserrstr = up->errstr;
- up->errstr = e;
- }
- if(up->nerrlab){
- print("bad errstack [%d]: %d extra\n", scallnr, up->nerrlab);
- for(i = 0; i < NERR; i++)
- print("sp=%lux pc=%lux\n",
- up->errlab[i].sp, up->errlab[i].pc);
- panic("error stack");
- }
-
- up->insyscall = 0;
- up->psstate = 0;
-
- /*
- * Put return value in frame. On the x86 the syscall is
- * just another trap and the return value from syscall is
- * ignored. On other machines the return value is put into
- * the results register by caller of syscall.
- */
- ureg->r0 = ret;
-
- if(scallnr == NOTED)
- noted(ureg, *(ulong*)(sp+BY2WD));
-
- if(up->delaysched)
- sched();
-
- splhi();
- if(scallnr != RFORK && (up->procctl || up->nnote))
- notify(ureg);
-}
-
-/*
- * Return user to state before notify()
- */
-void
-noted(Ureg* ureg, ulong arg0)
-{
- Ureg *nureg;
- ulong oureg, sp;
-
- qlock(&up->debug);
- if(arg0!=NRSTR && !up->notified) {
- qunlock(&up->debug);
- pprint("call to noted() when not notified\n");
- pexit("Suicide", 0);
- }
- up->notified = 0;
-
- nureg = up->ureg; /* pointer to user returned Ureg struct */
-
- /* sanity clause */
- oureg = (ulong)nureg;
- if(!okaddr(oureg-BY2WD, BY2WD+sizeof(Ureg), 0)){
- qunlock(&up->debug);
- pprint("bad ureg in noted or call to noted when not notified\n");
- pexit("Suicide", 0);
- }
-
- /* don't let user change system flags */
- nureg->psr = (ureg->psr & ~(PsrMask|PsrDfiq|PsrDirq)) |
- (nureg->psr & (PsrMask|PsrDfiq|PsrDirq));
-
- memmove(ureg, nureg, sizeof(Ureg));
-
- switch(arg0){
- case NCONT:
- case NRSTR:
- if(!okaddr(nureg->pc, 1, 0) || !okaddr(nureg->sp, BY2WD, 0)){
- qunlock(&up->debug);
- pprint("suicide: trap in noted\n");
- pexit("Suicide", 0);
- }
- up->ureg = (Ureg*)(*(ulong*)(oureg-BY2WD));
- qunlock(&up->debug);
- break;
-
- case NSAVE:
- if(!okaddr(nureg->pc, BY2WD, 0)
- || !okaddr(nureg->sp, BY2WD, 0)){
- qunlock(&up->debug);
- pprint("suicide: trap in noted\n");
- pexit("Suicide", 0);
- }
- qunlock(&up->debug);
- sp = oureg-4*BY2WD-ERRMAX;
- splhi();
- ureg->sp = sp;
- ((ulong*)sp)[1] = oureg; /* arg 1 0(FP) is ureg* */
- ((ulong*)sp)[0] = 0; /* arg 0 is pc */
- break;
-
- default:
- up->lastnote.flag = NDebug;
- /* fall through */
-
- case NDFLT:
- qunlock(&up->debug);
- if(up->lastnote.flag == NDebug)
- pprint("suicide: %s\n", up->lastnote.msg);
- pexit(up->lastnote.msg, up->lastnote.flag!=NDebug);
- }
-}
-
-/*
- * Call user, if necessary, with note.
- * Pass user the Ureg struct and the note on his stack.
- */
-int
-notify(Ureg* ureg)
-{
- int l;
- ulong s, sp;
- Note *n;
-
- if(up->procctl)
- procctl();
- if(up->nnote == 0)
- return 0;
-
- s = spllo();
- qlock(&up->debug);
- up->notepending = 0;
- n = &up->note[0];
- if(strncmp(n->msg, "sys:", 4) == 0){
- l = strlen(n->msg);
- if(l > ERRMAX-15) /* " pc=0x12345678\0" */
- l = ERRMAX-15;
- sprint(n->msg+l, " pc=0x%.8lux", ureg->pc);
- }
-
- if(n->flag!=NUser && (up->notified || up->notify==0)){
- qunlock(&up->debug);
- if(n->flag == NDebug)
- pprint("suicide: %s\n", n->msg);
- pexit(n->msg, n->flag!=NDebug);
- }
-
- if(up->notified) {
- qunlock(&up->debug);
- splhi();
- return 0;
- }
-
- if(!up->notify){
- qunlock(&up->debug);
- pexit(n->msg, n->flag!=NDebug);
- }
- sp = ureg->sp;
- sp -= sizeof(Ureg);
-
- if(!okaddr((uintptr)up->notify, 1, 0)
- || !okaddr(sp-ERRMAX-4*BY2WD, sizeof(Ureg)+ERRMAX+4*BY2WD, 1)){
- qunlock(&up->debug);
- pprint("suicide: bad address in notify\n");
- pexit("Suicide", 0);
- }
-
- up->ureg = (void*)sp;
- memmove((Ureg*)sp, ureg, sizeof(Ureg));
- *(Ureg**)(sp-BY2WD) = up->ureg; /* word under Ureg is old up->ureg */
- up->ureg = (void*)sp;
- sp -= BY2WD+ERRMAX;
- memmove((char*)sp, up->note[0].msg, ERRMAX);
- sp -= 3*BY2WD;
- *(ulong*)(sp+2*BY2WD) = sp+3*BY2WD; /* arg 2 is string */
- *(ulong*)(sp+1*BY2WD) = (ulong)up->ureg; /* arg 1 is ureg* */
- *(ulong*)(sp+0*BY2WD) = 0; /* arg 0 is pc */
- ureg->sp = sp;
- ureg->pc = (ulong)up->notify;
- up->notified = 1;
- up->nnote--;
- memmove(&up->lastnote, &up->note[0], sizeof(Note));
- memmove(&up->note[0], &up->note[1], up->nnote*sizeof(Note));
-
- qunlock(&up->debug);
- splx(s);
- return 1;
-}
-
-/* Give enough context in the ureg to produce a kernel stack for
- * a sleeping process
- */
-void
-setkernur(Ureg *ureg, Proc *p)
-{
- ureg->pc = p->sched.pc;
- ureg->sp = p->sched.sp+4;
- ureg->r14 = (ulong)sched;
-}
-
-/*
- * return the userpc the last exception happened at
- */
-uintptr
-userpc(void)
-{
- Ureg *ureg;
-
- ureg = (Ureg*)up->dbgreg;
- return ureg->pc;
-}
-
-/* This routine must save the values of registers the user is not permitted
- * to write from devproc and then restore the saved values before returning.
- */
-void
-setregisters(Ureg* ureg, char* pureg, char* uva, int n)
-{
- USED(ureg, pureg, uva, n);
-}
-
-/*
- * this is the body for all kproc's
- */
-static void
-linkproc(void)
-{
- spllo();
- up->kpfun(up->kparg);
- pexit("kproc exiting", 0);
-}
-
-/*
- * setup stack and initial PC for a new kernel proc. This is architecture
- * dependent because of the starting stack location
- */
-void
-kprocchild(Proc *p, void (*func)(void*), void *arg)
-{
- p->sched.pc = (ulong)linkproc;
- p->sched.sp = (ulong)p->kstack+KSTACK;
-
- p->kpfun = func;
- p->kparg = arg;
-}
-
-
-/*
- * Craft a return frame which will cause the child to pop out of
- * the scheduler in user mode with the return register zero. Set
- * pc to point to a l.s return function.
- */
-void
-forkchild(Proc *p, Ureg *ureg)
-{
- Ureg *cureg;
-
-//print("%lud setting up for forking child %lud\n", up->pid, p->pid);
- p->sched.sp = (ulong)p->kstack+KSTACK-sizeof(Ureg);
- p->sched.pc = (ulong)forkret;
-
- cureg = (Ureg*)(p->sched.sp);
- memmove(cureg, ureg, sizeof(Ureg));
-
- /* syscall returns 0 for child */
- cureg->r0 = 0;
-
- /* Things from bottom of syscall which were never executed */
- p->psstate = 0;
- p->insyscall = 0;
-}
-
-/*
- * setup stack, initial PC, and any arch dependent regs for an execing user proc.
- */
-uintptr
-execregs(uintptr entry, ulong ssize, ulong nargs)
-{
- ulong *sp;
- Ureg *ureg;
-
- sp = (ulong*)(USTKTOP - ssize);
- *--sp = nargs;
-
- ureg = up->dbgreg;
- memset(ureg, 0, 15*sizeof(ulong));
- ureg->r13 = (ulong)sp;
- ureg->pc = entry;
-//print("%lud: EXECREGS pc 0x%lux sp 0x%lux\n", up->pid, ureg->pc, ureg->r13);
- return USTKTOP-sizeof(Tos); /* address of kernel/user shared data */
-}
-
-/*
- * Fill in enough of Ureg to get a stack trace, and call a function.
- * Used by debugging interface rdb.
- */
-void
-callwithureg(void (*fn)(Ureg*))
-{
- Ureg ureg;
- ureg.pc = getcallerpc(&fn);
- ureg.sp = (ulong)&fn;
- fn(&ureg);
-}
-
-static void
-_dumpstack(Ureg *ureg)
-{
- ulong l, v, i;
- ulong *p;
- extern ulong etext;
-
- if(up == 0){
- iprint("no current proc\n");
- return;
- }
-
- iprint("ktrace /kernel/path %.8lux %.8lux %.8lux\n", ureg->pc, ureg->sp, ureg->r14);
- i = 0;
- for(l=(ulong)&l; l<(ulong)(up->kstack+KSTACK); l+=4){
- v = *(ulong*)l;
- if(KTZERO < v && v < (ulong)&etext && (v&3)==0){
- v -= 4;
- p = (ulong*)v;
- if((*p & 0x0f000000) == 0x0b000000){
- iprint("%.8lux=%.8lux ", l, v);
- i++;
- }
- }
- if(i == 4){
- i = 0;
- iprint("\n");
- }
- }
- if(i)
- iprint("\n");
-}
-
-void
-dumpstack(void)
-{
- callwithureg(_dumpstack);
-}
-
-/*
- * pc output by ps
- */
-uintptr
-dbgpc(Proc *p)
-{
- Ureg *ureg;
-
- ureg = p->dbgreg;
- if(ureg == 0)
- return 0;
-
- return ureg->pc;
-}
-
-/*
- * called in sysfile.c
- */
-void
-evenaddr(ulong addr)
-{
- if(addr & 3){
- postnote(up, 1, "sys: odd address", NDebug);
- error(Ebadarg);
- }
-}
--- a/sys/src/9/bitsy/uartsa1110.c
+++ /dev/null
@@ -1,514 +1,0 @@
-#include "u.h"
-#include "../port/lib.h"
-#include "mem.h"
-#include "dat.h"
-#include "fns.h"
-#include "io.h"
-#include "../port/error.h"
-
-#include "../port/netif.h"
-
-/* this isn't strictly an sa1110 driver. The rts/cts stuff is h3650 specific */
-
-static void sa1110_uartpower(Uart *, int);
-
-enum
-{
- /* ctl[0] bits */
- Parity= 1<<0,
- Even= 1<<1,
- Stop2= 1<<2,
- Bits8= 1<<3,
- SCE= 1<<4, /* synchronous clock enable */
- RCE= 1<<5, /* rx on falling edge of clock */
- TCE= 1<<6, /* tx on falling edge of clock */
-
- /* ctl[3] bits */
- Rena= 1<<0, /* receiver enable */
- Tena= 1<<1, /* transmitter enable */
- Break= 1<<2, /* force TXD3 low */
- Rintena= 1<<3, /* enable receive interrupt */
- Tintena= 1<<4, /* enable transmitter interrupt */
- Loopback= 1<<5, /* loop back data */
-
- /* data bits */
- DEparity= 1<<8, /* parity error */
- DEframe= 1<<9, /* framing error */
- DEoverrun= 1<<10, /* overrun error */
-
- /* status[0] bits */
- Tint= 1<<0, /* transmit fifo half full interrupt */
- Rint0= 1<<1, /* receiver fifo 1/3-2/3 full */
- Rint1= 1<<2, /* receiver fifo not empty and receiver idle */
- Breakstart= 1<<3,
- Breakend= 1<<4,
- Fifoerror= 1<<5, /* fifo error */
-
- /* status[1] bits */
- Tbusy= 1<<0, /* transmitting */
- Rnotempty= 1<<1, /* receive fifo not empty */
- Tnotfull= 1<<2, /* transmit fifo not full */
- ParityError= 1<<3,
- FrameError= 1<<4,
- Overrun= 1<<5,
-};
-
-extern PhysUart sa1110physuart;
-
-//static
-Uart sa1110uart[2] = {
-{ .regs = (void*)UART3REGS,
- .name = "serialport3",
- .freq = ClockFreq,
- .bits = 8,
- .stop = 1,
- .parity = 'n',
- .baud = 115200,
- .phys = &sa1110physuart,
- .special = 0,
- .next = &sa1110uart[1], },
-
-{ .regs = (void*)UART1REGS,
- .name = "serialport1",
- .freq = ClockFreq,
- .bits = 8,
- .stop = 1,
- .parity = 'n',
- .baud = 115200,
- .phys = &sa1110physuart,
- .putc = µcputc,
- .special = 0,
- .next = nil, },
-};
-static Uart* µcuart;
-
-#define R(p) ((Uartregs*)((p)->regs))
-#define SR(p) ((Uartregs*)((p)->saveregs))
-
-/*
- * enable a port's interrupts. set DTR and RTS
- */
-static void
-sa1110_uartenable(Uart *p, int intena)
-{
- ulong s;
-
- s = R(p)->ctl[3] & ~(Rintena|Tintena|Rena|Tena);
- if(intena)
- R(p)->ctl[3] = s |Rintena|Tintena|Rena|Tena;
- else
- R(p)->ctl[3] = s | Rena|Tena;
-}
-
-/*
- * disable interrupts. clear DTR, and RTS
- */
-static void
-sa1110_uartdisable(Uart *p)
-{
- R(p)->ctl[3] &= ~(Rintena|Tintena|Rena|Tena);
-}
-
-static long
-sa1110_uartstatus(Uart *p, void *buf, long n, long offset)
-{
- char str[256];
- ulong ctl0;
-
- ctl0 = R(p)->ctl[0];
- snprint(str, sizeof(str),
- "b%d c%d d%d e%d l%d m%d p%c r%d s%d i%d\n"
- "dev(%d) type(%d) framing(%d) overruns(%d)%s%s%s%s\n",
-
- p->baud,
- p->hup_dcd,
- 0,
- p->hup_dsr,
- (ctl0 & Bits8) ? 8 : 7,
- 0,
- (ctl0 & Parity) ? ((ctl0 & Even) ? 'e' : 'o') : 'n',
- 0,
- (ctl0 & Stop2) ? 2 : 1,
- 1,
-
- p->dev,
- p->type,
- p->ferr,
- p->oerr,
- "",
- "",
- "",
- "" );
- return readstr(offset, buf, n, str);
-}
-
-/*
- * set the buad rate
- */
-static int
-sa1110_uartbaud(Uart *p, int rate)
-{
- ulong brconst;
- ulong ctl3;
-
- if(rate <= 0)
- return -1;
-
- /* disable */
- ctl3 = R(p)->ctl[3];
- R(p)->ctl[3] = 0;
-
- brconst = p->freq/(16*rate) - 1;
- R(p)->ctl[1] = (brconst>>8) & 0xf;
- R(p)->ctl[2] = brconst & 0xff;
-
- /* reenable */
- R(p)->ctl[3] = ctl3;
-
- p->baud = rate;
- return 0;
-}
-
-/*
- * send a break
- */
-static void
-sa1110_uartbreak(Uart *p, int ms)
-{
- if(ms == 0)
- ms = 200;
-
- R(p)->ctl[3] |= Break;
- tsleep(&up->sleep, return0, 0, ms);
- R(p)->ctl[3] &= ~Break;
-}
-
-/*
- * set bits/char
- */
-static int
-sa1110_uartbits(Uart *p, int n)
-{
- ulong ctl0, ctl3;
-
- ctl0 = R(p)->ctl[0];
- switch(n){
- case 7:
- ctl0 &= ~Bits8;
- break;
- case 8:
- ctl0 |= Bits8;
- break;
- default:
- return -1;
- }
-
- /* disable */
- ctl3 = R(p)->ctl[3];
- R(p)->ctl[3] = 0;
-
- R(p)->ctl[0] = ctl0;
-
- /* reenable */
- R(p)->ctl[3] = ctl3;
-
- p->bits = n;
- return 0;
-}
-
-/*
- * set stop bits
- */
-static int
-sa1110_uartstop(Uart *p, int n)
-{
- ulong ctl0, ctl3;
-
- ctl0 = R(p)->ctl[0];
- switch(n){
- case 1:
- ctl0 &= ~Stop2;
- break;
- case 2:
- ctl0 |= Stop2;
- break;
- default:
- return -1;
- }
-
- /* disable */
- ctl3 = R(p)->ctl[3];
- R(p)->ctl[3] = 0;
-
- R(p)->ctl[0] = ctl0;
-
- /* reenable */
- R(p)->ctl[3] = ctl3;
-
- p->stop = n;
- return 0;
-}
-
-/*
- * turn on/off rts
- */
-static void
-sa1110_uartrts(Uart*, int)
-{
-}
-
-/*
- * turn on/off dtr
- */
-static void
-sa1110_uartdtr(Uart*, int)
-{
-}
-
-/*
- * turn on/off modem flow control on/off (rts/cts)
- */
-static void
-sa1110_uartmodemctl(Uart *p, int on)
-{
- if(on) {
- } else {
- p->cts = 1;
- }
-}
-
-/*
- * set parity
- */
-static int
-sa1110_uartparity(Uart *p, int type)
-{
- ulong ctl0, ctl3;
-
- ctl0 = R(p)->ctl[0];
- switch(type){
- case 'e':
- ctl0 |= Parity|Even;
- break;
- case 'o':
- ctl0 |= Parity;
- break;
- default:
- ctl0 &= ~(Parity|Even);
- break;
- }
-
- /* disable */
- ctl3 = R(p)->ctl[3];
- R(p)->ctl[3] = 0;
-
- R(p)->ctl[0] = ctl0;
-
- /* reenable */
- R(p)->ctl[3] = ctl3;
-
- return 0;
-}
-
-/*
- * restart output if not blocked and OK to send
- */
-static void
-sa1110_uartkick(Uart *p)
-{
- int i;
-
- R(p)->ctl[3] &= ~Tintena;
-
- if(p->cts == 0 || p->blocked)
- return;
-
- for(i = 0; i < 1024; i++){
- if(!(R(p)->status[1] & Tnotfull)){
- R(p)->ctl[3] |= Tintena;
- break;
- }
- if(p->op >= p->oe && uartstageoutput(p) == 0)
- break;
- R(p)->data = *p->op++;
- }
-}
-
-/*
- * take an interrupt
- */
-static void
-sa1110_uartintr(Ureg*, void *x)
-{
- Uart *p;
- ulong s;
- Uartregs *regs;
-
- p = x;
- regs = p->regs;
-
- /* receiver interrupt, snarf bytes */
- while(regs->status[1] & Rnotempty)
- uartrecv(p, regs->data);
-
- /* remember and reset interrupt causes */
- s = regs->status[0];
- regs->status[0] |= s;
-
- if(s & Tint){
- /* transmitter interrupt, restart */
- uartkick(p);
- }
-
- if(s & (ParityError|FrameError|Overrun)){
- if(s & ParityError)
- p->parity++;
- if(s & FrameError)
- p->ferr++;
- if(s & Overrun)
- p->oerr++;
- }
-
- /* receiver interrupt, snarf bytes */
- while(regs->status[1] & Rnotempty)
- uartrecv(p, regs->data);
-}
-
-static Uart*
-sa1110_pnp(void)
-{
- return sa1110uart;
-}
-
-static int
-sa1110_getc(Uart *uart)
-{
- Uartregs *ur;
-
- ur = uart->regs;
- while((ur->status[1] & Rnotempty) == 0)
- ;
- return ur->data;
-}
-
-static void
-sa1110_putc(Uart *uart, int c)
-{
- Uartregs *ur;
-
- ur = uart->regs;
- /* wait for output ready */
- while((ur->status[1] & Tnotfull) == 0)
- ;
- ur->data = c;
- while((ur->status[1] & Tbusy))
- ;
-}
-
-PhysUart sa1110physuart = {
- .name= "sa1110",
- .pnp= sa1110_pnp,
- .enable= sa1110_uartenable,
- .disable= sa1110_uartdisable,
- .bits= sa1110_uartbits,
- .kick= sa1110_uartkick,
- .modemctl= sa1110_uartmodemctl,
- .baud= sa1110_uartbaud,
- .stop= sa1110_uartstop,
- .parity= sa1110_uartparity,
- .dobreak= sa1110_uartbreak,
- .rts= sa1110_uartrts,
- .dtr= sa1110_uartdtr,
- .status= sa1110_uartstatus,
- .power= sa1110_uartpower,
- .getc= sa1110_getc,
- .putc= sa1110_putc,
-};
-
-/*
- * for iprint, just write it
- */
-void
-serialµcputs(uchar *str, int n)
-{
- Uartregs *ur;
-
- if(µcuart == nil)
- return;
- ur = µcuart->regs;
- while(n-- > 0){
- /* wait for output ready */
- while((ur->status[1] & Tnotfull) == 0)
- ;
- ur->data = *str++;
- }
- while((ur->status[1] & Tbusy))
- ;
-}
-
-enum
-{
- /* gpclk register 0 */
- Gpclk_sus= 1<<0, /* set uart mode */
-};
-
-Gpclkregs *gpclkregs;
-
-/*
- * setup all uarts (called early by main() to allow debugging output to
- * a serial port)
- */
-void
-sa1110_uartsetup(int console)
-{
- Uart *p;
-
- /* external serial port (eia0) */
- p = &sa1110uart[0];
- p->regs = mapspecial(UART3REGS, sizeof(Uartregs));
- p->saveregs = xalloc(sizeof(Uartregs));
- /* set eia0 up as a console */
- if(console){
- uartctl(p, "b115200 l8 pn s1");
- (*p->phys->enable)(p, 0);
- p->console = 1;
- consuart = p;
- }
- intrenable(IRQ, IRQuart3, sa1110_uartintr, p, p->name);
-
- /* port for talking to microcontroller (eia1) */
- gpclkregs = mapspecial(GPCLKREGS, sizeof(Gpclkregs));
- gpclkregs->r0 = Gpclk_sus; /* set uart mode */
-
- p = &sa1110uart[1];
- p->regs = mapspecial(UART1REGS, sizeof(Uartregs));
- p->saveregs = xalloc(sizeof(Uartregs));
- uartctl(p, "b115200 l8 pn s1");
- µcuart = p;
- p->special = 1;
- (*p->phys->enable)(p, 0);
- intrenable(IRQ, IRQuart1b, sa1110_uartintr, p, p->name);
-}
-
-static void
-uartcpy(Uartregs *to, Uartregs *from)
-{
- to->ctl[0] = from->ctl[0];
-// to->ctl[1] = from->ctl[1];
-// to->ctl[2] = from->ctl[2];
- to->ctl[3] = from->ctl[3];
-
-}
-
-static void
-sa1110_uartpower(Uart *p, int powerup)
-{
- if (powerup) {
- /* power up, restore the registers */
- uartcpy(R(p), SR(p));
- R(p)->status[0] = R(p)->status[0];
- } else {
- /* power down, save the registers */
- uartcpy(SR(p), R(p));
- }
-}
--- a/sys/src/9/bitsy/wavelan.c
+++ /dev/null
@@ -1,1223 +1,0 @@
-/*
- Lucent Wavelan IEEE 802.11 pcmcia.
- There is almost no documentation for the card.
- the driver is done using both the FreeBSD, Linux and
- original Plan 9 drivers as `documentation'.
-
- Has been used with the card plugged in during all up time.
- no cards removals/insertions yet.
-
- For known BUGS see the comments below. Besides,
- the driver keeps interrupts disabled for just too
- long. When it gets robust, locks should be revisited.
-
- BUGS: check endian, alignment and mem/io issues;
- multicast;
- receive watchdog interrupts.
- TODO: automatic power management;
- improve locking.
- */
-#include "u.h"
-#include "../port/lib.h"
-#include "mem.h"
-#include "dat.h"
-#include "fns.h"
-#include "io.h"
-#include "../port/error.h"
-#include "../port/netif.h"
-#include "etherif.h"
-#include "wavelan.h"
-
-enum
-{
- MSperTick= 50, /* ms between ticks of kproc */
-};
-
-/*
- * When we're using a PCI device and memory-mapped I/O,
- * the registers are spaced out as though each takes 32 bits,
- * even though they are only 16-bit registers. Thus,
- * ctlr->mmb[reg] is the right way to access register reg,
- * even though a priori you'd expect to use ctlr->mmb[reg/2].
- */
-void
-csr_outs(Ctlr *ctlr, int reg, ushort arg)
-{
- if(ctlr->mmb)
- ctlr->mmb[reg] = arg;
- else
- outs(ctlr->iob+reg, arg);
-}
-
-ushort
-csr_ins(Ctlr *ctlr, int reg)
-{
- if(ctlr->mmb)
- return ctlr->mmb[reg];
- else
- return ins(ctlr->iob+reg);
-}
-
-static void
-csr_ack(Ctlr *ctlr, int ev)
-{
- csr_outs(ctlr, WR_EvAck, ev);
-}
-
-static void
-csr_inss(Ctlr *ctlr, int reg, void *dat, int ndat)
-{
- ushort *rp, *wp;
-
- if(ctlr->mmb){
- rp = &ctlr->mmb[reg];
- wp = dat;
- while(ndat-- > 0)
- *wp++ = *rp;
- }else
- inss(ctlr->iob+reg, dat, ndat);
-}
-
-static void
-csr_outss(Ctlr *ctlr, int reg, void *dat, int ndat)
-{
- ushort *rp, *wp;
-
- if(ctlr->mmb){
- rp = dat;
- wp = &ctlr->mmb[reg];
- while(ndat-- > 0)
- *wp = *rp++;
- }else
- outss(ctlr->iob+reg, dat, ndat);
-}
-
-// w_... routines do not ilock the Ctlr and should
-// be called locked.
-
-void
-w_intdis(Ctlr* ctlr)
-{
- csr_outs(ctlr, WR_IntEna, 0);
- csr_ack(ctlr, 0xffff);
-}
-
-static void
-w_intena(Ctlr* ctlr)
-{
- csr_outs(ctlr, WR_IntEna, WEvs);
-}
-
-int
-w_cmd(Ctlr *ctlr, ushort cmd, ushort arg)
-{
- int i, rc;
-
- for(i=0; i<WTmOut; i++)
- if((csr_ins(ctlr, WR_Cmd)&WCmdBusy) == 0)
- break;
- if(i==WTmOut){
- print("#l%d: issuing cmd %.4ux: %.4ux\n", ctlr->ctlrno, cmd, csr_ins(ctlr, WR_Cmd));
- return -1;
- }
-
- csr_outs(ctlr, WR_Parm0, arg);
- csr_outs(ctlr, WR_Cmd, cmd);
-
- for(i=0; i<WTmOut; i++)
- if(csr_ins(ctlr, WR_EvSts)&WCmdEv)
- break;
- if(i==WTmOut){
- /*
- * WCmdIni can take a really long time.
- */
- enum { IniTmOut = 2000 };
- for(i=0; i<IniTmOut; i++){
- if(csr_ins(ctlr, WR_EvSts)&WCmdEv)
- break;
- microdelay(100);
- }
- if(i < IniTmOut)
- if(0) print("#l%d: long cmd %.4ux %d\n", ctlr->ctlrno, cmd, i);
- if(i == IniTmOut){
- print("#l%d: execing cmd %.4ux: %.4ux\n", ctlr->ctlrno, cmd, csr_ins(ctlr, WR_EvSts));
- return -1;
- }
- }
- rc = csr_ins(ctlr, WR_Sts);
- csr_ack(ctlr, WCmdEv);
-
- if((rc&WCmdMsk) != (cmd&WCmdMsk)){
- print("#l%d: cmd %.4ux: status %.4ux\n", ctlr->ctlrno, cmd, rc);
- return -1;
- }
- if(rc&WResSts){
- /*
- * Don't print; this happens on every WCmdAccWr for some reason.
- */
- if(0) print("#l%d: cmd %.4ux: status %.4ux\n", ctlr->ctlrno, cmd, rc);
- return -1;
- }
- return 0;
-}
-
-static int
-w_seek(Ctlr* ctlr, ushort id, ushort offset, int chan)
-{
- int i, rc;
- static ushort sel[] = { WR_Sel0, WR_Sel1 };
- static ushort off[] = { WR_Off0, WR_Off1 };
-
- if(chan != 0 && chan != 1)
- panic("wavelan: bad chan\n");
- csr_outs(ctlr, sel[chan], id);
- csr_outs(ctlr, off[chan], offset);
- for (i=0; i<WTmOut; i++){
- rc = csr_ins(ctlr, off[chan]);
- if((rc & (WBusyOff|WErrOff)) == 0)
- return 0;
- }
- return -1;
-}
-
-int
-w_inltv(Ctlr* ctlr, Wltv* ltv)
-{
- int len;
- ushort code;
-
- if(w_cmd(ctlr, WCmdAccRd, ltv->type)){
- DEBUG("wavelan: access read failed\n");
- return -1;
- }
- if(w_seek(ctlr,ltv->type,0,1)){
- DEBUG("wavelan: seek failed\n");
- return -1;
- }
- len = csr_ins(ctlr, WR_Data1);
- if(len > ltv->len)
- return -1;
- ltv->len = len;
- if((code=csr_ins(ctlr, WR_Data1)) != ltv->type){
- USED(code);
- DEBUG("wavelan: type %x != code %x\n",ltv->type,code);
- return -1;
- }
- if(ltv->len > 0)
- csr_inss(ctlr, WR_Data1, <v->val, ltv->len-1);
-
- return 0;
-}
-
-static void
-w_outltv(Ctlr* ctlr, Wltv* ltv)
-{
- if(w_seek(ctlr,ltv->type, 0, 1))
- return;
- csr_outss(ctlr, WR_Data1, ltv, ltv->len+1);
- w_cmd(ctlr, WCmdAccWr, ltv->type);
-}
-
-void
-ltv_outs(Ctlr* ctlr, int type, ushort val)
-{
- Wltv ltv;
-
- ltv.len = 2;
- ltv.type = type;
- ltv.val = val;
- w_outltv(ctlr, <v);
-}
-
-int
-ltv_ins(Ctlr* ctlr, int type)
-{
- Wltv ltv;
-
- ltv.len = 2;
- ltv.type = type;
- ltv.val = 0;
- if(w_inltv(ctlr, <v))
- return -1;
- return ltv.val;
-}
-
-static void
-ltv_outstr(Ctlr* ctlr, int type, char* val)
-{
- Wltv ltv;
- int len;
-
- len = strlen(val);
- if(len > sizeof(ltv.s))
- len = sizeof(ltv.s);
- memset(<v, 0, sizeof(ltv));
- ltv.len = (sizeof(ltv.type)+sizeof(ltv.slen)+sizeof(ltv.s))/2;
- ltv.type = type;
-
-// This should be ltv.slen = len; according to Axel Belinfante
- ltv.slen = len;
-
- strncpy(ltv.s, val, len);
- w_outltv(ctlr, <v);
-}
-
-static char Unkname[] = "who knows";
-static char Nilname[] = "card does not tell";
-
-static char*
-ltv_inname(Ctlr* ctlr, int type)
-{
- static Wltv ltv;
- int len;
-
- memset(<v,0,sizeof(ltv));
- ltv.len = WNameLen/2+2;
- ltv.type = type;
- if(w_inltv(ctlr, <v))
- return Unkname;
- len = ltv.slen;
- if(len == 0 || ltv.s[0] == 0)
- return Nilname;
- if(len >= sizeof ltv.s)
- len = sizeof ltv.s - 1;
- ltv.s[len] = '\0';
- return ltv.s;
-}
-
-static int
-w_read(Ctlr* ctlr, int type, int off, void* buf, ulong len)
-{
- if(w_seek(ctlr, type, off, 1)){
- DEBUG("wavelan: w_read: seek failed");
- return 0;
- }
- csr_inss(ctlr, WR_Data1, buf, len/2);
-
- return len;
-}
-
-static int
-w_write(Ctlr* ctlr, int type, int off, void* buf, ulong len)
-{
- if(w_seek(ctlr, type, off, 0)){
- DEBUG("wavelan: w_write: seek failed\n");
- return 0;
- }
-
- csr_outss(ctlr, WR_Data0, buf, len/2);
- csr_outs(ctlr, WR_Data0, 0xdead);
- csr_outs(ctlr, WR_Data0, 0xbeef);
- if(w_seek(ctlr, type, off + len, 0)){
- DEBUG("wavelan: write seek failed\n");
- return 0;
- }
- if(csr_ins(ctlr, WR_Data0) == 0xdead && csr_ins(ctlr, WR_Data0) == 0xbeef)
- return len;
-
- DEBUG("wavelan: Hermes bug byte.\n");
- return 0;
-}
-
-static int
-w_alloc(Ctlr* ctlr, int len)
-{
- int rc;
- int i,j;
-
- if(w_cmd(ctlr, WCmdMalloc, len)==0)
- for (i = 0; i<WTmOut; i++)
- if(csr_ins(ctlr, WR_EvSts) & WAllocEv){
- csr_ack(ctlr, WAllocEv);
- rc=csr_ins(ctlr, WR_Alloc);
- if(w_seek(ctlr, rc, 0, 0))
- return -1;
- len = len/2;
- for (j=0; j<len; j++)
- csr_outs(ctlr, WR_Data0, 0);
- return rc;
- }
- return -1;
-}
-
-static int
-w_enable(Ether* ether)
-{
- Wltv ltv;
- Ctlr* ctlr = (Ctlr*) ether->ctlr;
-
- if(!ctlr)
- return -1;
-
- w_intdis(ctlr);
- w_cmd(ctlr, WCmdDis, 0);
- w_intdis(ctlr);
- if(w_cmd(ctlr, WCmdIni, 0))
- return -1;
- w_intdis(ctlr);
-
- ltv_outs(ctlr, WTyp_Tick, 8);
- ltv_outs(ctlr, WTyp_MaxLen, ctlr->maxlen);
- ltv_outs(ctlr, WTyp_Ptype, ctlr->ptype);
- ltv_outs(ctlr, WTyp_CreateIBSS, ctlr->createibss);
- ltv_outs(ctlr, WTyp_RtsThres, ctlr->rtsthres);
- ltv_outs(ctlr, WTyp_TxRate, ctlr->txrate);
- ltv_outs(ctlr, WTyp_ApDens, ctlr->apdensity);
- ltv_outs(ctlr, WTyp_PMWait, ctlr->pmwait);
- ltv_outs(ctlr, WTyp_PM, ctlr->pmena);
- if(*ctlr->netname)
- ltv_outstr(ctlr, WTyp_NetName, ctlr->netname);
- if(*ctlr->wantname)
- ltv_outstr(ctlr, WTyp_WantName, ctlr->wantname);
- ltv_outs(ctlr, WTyp_Chan, ctlr->chan);
- if(*ctlr->nodename)
- ltv_outstr(ctlr, WTyp_NodeName, ctlr->nodename);
- ltv.len = 4;
- ltv.type = WTyp_Mac;
- memmove(ltv.addr, ether->ea, Eaddrlen);
- w_outltv(ctlr, <v);
-
- ltv_outs(ctlr, WTyp_Prom, (ether->prom?1:0));
-
- if(ctlr->hascrypt && ctlr->crypt){
- ltv_outs(ctlr, WTyp_Crypt, ctlr->crypt);
- ltv_outs(ctlr, WTyp_TxKey, ctlr->txkey);
- w_outltv(ctlr, &ctlr->keys);
- ltv_outs(ctlr, WTyp_XClear, ctlr->xclear);
- }
-
- // BUG: set multicast addresses
-
- if(w_cmd(ctlr, WCmdEna, 0)){
- DEBUG("wavelan: Enable failed");
- return -1;
- }
- ctlr->txdid = w_alloc(ctlr, 1518 + sizeof(WFrame) + 8);
- ctlr->txmid = w_alloc(ctlr, 1518 + sizeof(WFrame) + 8);
- if(ctlr->txdid == -1 || ctlr->txmid == -1)
- DEBUG("wavelan: alloc failed");
- ctlr->txbusy = 0;
- w_intena(ctlr);
- return 0;
-}
-
-static void
-w_rxdone(Ether* ether)
-{
- Ctlr* ctlr = (Ctlr*) ether->ctlr;
- int len, sp;
- WFrame f;
- Block* bp=0;
- Etherpkt* ep;
-
- sp = csr_ins(ctlr, WR_RXId);
- len = w_read(ctlr, sp, 0, &f, sizeof(f));
- if(len == 0){
- DEBUG("wavelan: read frame error\n");
- goto rxerror;
- }
- if(f.sts&WF_Err){
- goto rxerror;
- }
- switch(f.sts){
- case WF_1042:
- case WF_Tunnel:
- case WF_WMP:
- len = f.dlen + WSnapHdrLen;
- bp = iallocb(ETHERHDRSIZE + len + 2);
- if(!bp)
- goto rxerror;
- ep = (Etherpkt*) bp->wp;
- memmove(ep->d, f.addr1, Eaddrlen);
- memmove(ep->s, f.addr2, Eaddrlen);
- memmove(ep->type,&f.type,2);
- bp->wp += ETHERHDRSIZE;
- if(w_read(ctlr, sp, WF_802_11_Off, bp->wp, len+2) == 0){
- DEBUG("wavelan: read 802.11 error\n");
- goto rxerror;
- }
- bp->wp = bp->rp+(ETHERHDRSIZE+f.dlen);
- break;
- default:
- len = ETHERHDRSIZE + f.dlen + 2;
- bp = iallocb(len);
- if(!bp)
- goto rxerror;
- if(w_read(ctlr, sp, WF_802_3_Off, bp->wp, len) == 0){
- DEBUG("wavelan: read 800.3 error\n");
- goto rxerror;
- }
- bp->wp += len;
- }
-
- ctlr->nrx++;
- etheriq(ether,bp,1);
- ctlr->signal = ((ctlr->signal*15)+((f.qinfo>>8) & 0xFF))/16;
- ctlr->noise = ((ctlr->noise*15)+(f.qinfo & 0xFF))/16;
- return;
-
-rxerror:
- freeb(bp);
- ctlr->nrxerr++;
-}
-
-static void
-w_txstart(Ether* ether)
-{
- Etherpkt *pkt;
- Ctlr *ctlr;
- Block *bp;
- int len, off;
-
- if((ctlr = ether->ctlr) == nil || (ctlr->state & (Attached|Power)) != (Attached|Power) || ctlr->txbusy)
- return;
-
- if((bp = qget(ether->oq)) == nil)
- return;
- pkt = (Etherpkt*)bp->rp;
-
- //
- // If the packet header type field is > 1500 it is an IP or
- // ARP datagram, otherwise it is an 802.3 packet. See RFC1042.
- //
- memset(&ctlr->txf, 0, sizeof(ctlr->txf));
- if(((pkt->type[0]<<8)|pkt->type[1]) > 1500){
- ctlr->txf.framectl = WF_Data;
- memmove(ctlr->txf.addr1, pkt->d, Eaddrlen);
- memmove(ctlr->txf.addr2, pkt->s, Eaddrlen);
- memmove(ctlr->txf.dstaddr, pkt->d, Eaddrlen);
- memmove(ctlr->txf.srcaddr, pkt->s, Eaddrlen);
- memmove(&ctlr->txf.type, pkt->type, 2);
- bp->rp += ETHERHDRSIZE;
- len = BLEN(bp);
- off = WF_802_11_Off;
- ctlr->txf.dlen = len+ETHERHDRSIZE-WSnapHdrLen;
- hnputs((uchar*)&ctlr->txf.dat[0], WSnap0);
- hnputs((uchar*)&ctlr->txf.dat[1], WSnap1);
- hnputs((uchar*)&ctlr->txf.len, len+ETHERHDRSIZE-WSnapHdrLen);
- }
- else{
- len = BLEN(bp);
- off = WF_802_3_Off;
- ctlr->txf.dlen = len;
- }
- w_write(ctlr, ctlr->txdid, 0, &ctlr->txf, sizeof(ctlr->txf));
- w_write(ctlr, ctlr->txdid, off, bp->rp, len+2);
-
- if(w_cmd(ctlr, WCmdReclaim|WCmdTx, ctlr->txdid)){
- DEBUG("wavelan: transmit failed\n");
- ctlr->ntxerr++;
- }
- else{
- ctlr->txbusy = 1;
- ctlr->txtmout = 2;
- }
- freeb(bp);
-}
-
-static void
-w_txdone(Ctlr* ctlr, int sts)
-{
- ctlr->txbusy = 0;
- ctlr->txtmout = 0;
- if(sts & WTxErrEv)
- ctlr->ntxerr++;
- else
- ctlr->ntx++;
-}
-
-/* save the stats info in the ctlr struct */
-static void
-w_stats(Ctlr* ctlr, int len)
-{
- int i, rc;
- ulong* p = (ulong*)&ctlr->WStats;
- ulong* pend = (ulong*)&ctlr->end;
-
- for (i = 0; i < len && p < pend; i++){
- rc = csr_ins(ctlr, WR_Data1);
- if(rc > 0xf000)
- rc = ~rc & 0xffff;
- p[i] += rc;
- }
-}
-
-/* send the base station scan info to any readers */
-static void
-w_scaninfo(Ether* ether, Ctlr *ctlr, int len)
-{
- int i, j;
- Netfile **ep, *f, **fp;
- Block *bp;
- WScan *wsp;
- ushort *scanbuf;
-
- scanbuf = malloc(len*2);
- if(scanbuf == nil)
- return;
-
- for (i = 0; i < len ; i++)
- scanbuf[i] = csr_ins(ctlr, WR_Data1);
-
- /* calculate number of samples */
- len /= 25;
- if(len == 0)
- goto out;
-
- i = ether->scan;
- ep = ðer->f[Ntypes];
- for(fp = ether->f; fp < ep && i > 0; fp++){
- f = *fp;
- if(f == nil || f->scan == 0)
- continue;
-
- bp = iallocb(100*len);
- if(bp == nil)
- break;
- for(j = 0; j < len; j++){
- wsp = (WScan*)(&scanbuf[j*25]);
- if(wsp->ssid_len > 32)
- wsp->ssid_len = 32;
- bp->wp = (uchar*)seprint((char*)bp->wp, (char*)bp->lim,
- "ssid=%.*s;bssid=%E;signal=%d;noise=%d;chan=%d%s\n",
- wsp->ssid_len, wsp->ssid, wsp->bssid, wsp->signal,
- wsp->noise, wsp->chan, (wsp->capinfo&(1<<4))?";wep":"");
- }
- qpass(f->in, bp);
- i--;
- }
-out:
- free(scanbuf);
-}
-
-static int
-w_info(Ether *ether, Ctlr* ctlr)
-{
- int sp;
- Wltv ltv;
-
- sp = csr_ins(ctlr, WR_InfoId);
- ltv.len = ltv.type = 0;
- w_read(ctlr, sp, 0, <v, 4);
- ltv.len--;
- switch(ltv.type){
- case WTyp_Stats:
- w_stats(ctlr, ltv.len);
- return 0;
- case WTyp_Scan:
- w_scaninfo(ether, ctlr, ltv.len);
- return 0;
- }
- return -1;
-}
-
-/* set scanning interval */
-static void
-w_scanbs(void *a, uint secs)
-{
- Ether *ether = a;
- Ctlr* ctlr = (Ctlr*) ether->ctlr;
-
- ctlr->scanticks = secs*(1000/MSperTick);
-}
-
-static void
-w_intr(Ether *ether)
-{
- int rc, txid;
- Ctlr* ctlr = (Ctlr*) ether->ctlr;
-
- if((ctlr->state & Power) == 0)
- return;
-
- if((ctlr->state & Attached) == 0){
- csr_ack(ctlr, 0xffff);
- csr_outs(ctlr, WR_IntEna, 0);
- return;
- }
-
- rc = csr_ins(ctlr, WR_EvSts);
- csr_ack(ctlr, ~WEvs); // Not interested in them
- if(rc & WRXEv){
- w_rxdone(ether);
- csr_ack(ctlr, WRXEv);
- }
- if(rc & WTXEv){
- w_txdone(ctlr, rc);
- csr_ack(ctlr, WTXEv);
- }
- if(rc & WAllocEv){
- ctlr->nalloc++;
- txid = csr_ins(ctlr, WR_Alloc);
- csr_ack(ctlr, WAllocEv);
- if(txid == ctlr->txdid){
- if((rc & WTXEv) == 0)
- w_txdone(ctlr, rc);
- }
- }
- if(rc & WInfoEv){
- ctlr->ninfo++;
- w_info(ether, ctlr);
- csr_ack(ctlr, WInfoEv);
- }
- if(rc & WTxErrEv){
- w_txdone(ctlr, rc);
- csr_ack(ctlr, WTxErrEv);
- }
- if(rc & WIDropEv){
- ctlr->nidrop++;
- csr_ack(ctlr, WIDropEv);
- }
- w_txstart(ether);
-}
-
-// Watcher to ensure that the card still works properly and
-// to request WStats updates once a minute.
-// BUG: it runs much more often, see the comment below.
-
-static void
-w_timer(void* arg)
-{
- Ether* ether = (Ether*) arg;
- Ctlr* ctlr = (Ctlr*)ether->ctlr;
-
- ctlr->timerproc = up;
- while(waserror())
- ;
- for(;;){
- tsleep(&up->sleep, return0, 0, MSperTick);
- ctlr = (Ctlr*)ether->ctlr;
- if(ctlr == 0)
- break;
- if((ctlr->state & (Attached|Power)) != (Attached|Power))
- continue;
- ctlr->ticks++;
-
- ilock(ctlr);
-
- // Seems that the card gets frames BUT does
- // not send the interrupt; this is a problem because
- // I suspect it runs out of receive buffers and
- // stops receiving until a transmit watchdog
- // reenables the card.
- // The problem is serious because it leads to
- // poor rtts.
- // This can be seen clearly by commenting out
- // the next if and doing a ping: it will stop
- // receiving (although the icmp replies are being
- // issued from the remote) after a few seconds.
- // Of course this `bug' could be because I'm reading
- // the card frames in the wrong way; due to the
- // lack of documentation I cannot know.
-
- if(csr_ins(ctlr, WR_EvSts)&WEvs){
- ctlr->tickintr++;
- w_intr(ether);
- }
-
- if((ctlr->ticks % 10) == 0) {
- if(ctlr->txtmout && --ctlr->txtmout == 0){
- ctlr->nwatchdogs++;
- w_txdone(ctlr, WTxErrEv);
- if(w_enable(ether)){
- DEBUG("wavelan: wdog enable failed\n");
- }
- w_txstart(ether);
- }
- if((ctlr->ticks % 120) == 0)
- if(ctlr->txbusy == 0)
- w_cmd(ctlr, WCmdEnquire, WTyp_Stats);
- if(ctlr->scanticks > 0)
- if((ctlr->ticks % ctlr->scanticks) == 0)
- if(ctlr->txbusy == 0)
- w_cmd(ctlr, WCmdEnquire, WTyp_Scan);
- }
- iunlock(ctlr);
- }
- pexit("terminated", 1);
-}
-
-void
-w_multicast(void*, uchar*, int)
-{
- // BUG: to be added.
-}
-
-void
-w_attach(Ether* ether)
-{
- Ctlr* ctlr;
- char name[64];
- int rc;
-
- if(ether->ctlr == 0)
- return;
-
- snprint(name, sizeof(name), "#l%dtimer", ether->ctlrno);
- ctlr = (Ctlr*) ether->ctlr;
- if((ctlr->state & Attached) == 0){
- ilock(ctlr);
- rc = w_enable(ether);
- iunlock(ctlr);
- if(rc == 0){
- ctlr->state |= Attached;
- kproc(name, w_timer, ether);
- } else
- print("#l%d: enable failed\n",ether->ctlrno);
- }
-}
-
-void
-w_detach(Ether* ether)
-{
- Ctlr* ctlr;
- char name[64];
-
- if(ether->ctlr == nil)
- return;
-
- snprint(name, sizeof(name), "#l%dtimer", ether->ctlrno);
- ctlr = (Ctlr*) ether->ctlr;
- if(ctlr->state & Attached){
- ilock(ctlr);
- w_intdis(ctlr);
- if(ctlr->timerproc){
- if(!postnote(ctlr->timerproc, 1, "kill", NExit))
- print("timerproc note not posted\n");
- print("w_detach, killing 0x%p\n", ctlr->timerproc);
- }
- ctlr->state &= ~Attached;
- iunlock(ctlr);
- }
- ether->ctlr = nil;
-}
-
-void
-w_power(Ether* ether, int on)
-{
- Ctlr *ctlr;
-
- ctlr = (Ctlr*) ether->ctlr;
- ilock(ctlr);
-iprint("w_power %d\n", on);
- if(on){
- if((ctlr->state & Power) == 0){
- if (wavelanreset(ether, ctlr) < 0){
- iprint("w_power: reset failed\n");
- iunlock(ctlr);
- w_detach(ether);
- free(ctlr);
- return;
- }
- if(ctlr->state & Attached)
- w_enable(ether);
- ctlr->state |= Power;
- }
- }else{
- if(ctlr->state & Power){
- if(ctlr->state & Attached)
- w_intdis(ctlr);
- ctlr->state &= ~Power;
- }
- }
- iunlock(ctlr);
-}
-
-#define PRINTSTAT(fmt,val) l += snprint(p+l, READSTR-l, (fmt), (val))
-#define PRINTSTR(fmt) l += snprint(p+l, READSTR-l, (fmt))
-
-long
-w_ifstat(Ether* ether, void* a, long n, ulong offset)
-{
- Ctlr *ctlr = (Ctlr*) ether->ctlr;
- char *k, *p;
- int i, l, txid;
-
- ether->oerrs = ctlr->ntxerr;
- ether->crcs = ctlr->nrxfcserr;
- ether->frames = 0;
- ether->buffs = ctlr->nrxdropnobuf;
- ether->overflows = 0;
-
- //
- // Offset must be zero or there's a possibility the
- // new data won't match the previous read.
- //
- if(n == 0 || offset != 0)
- return 0;
-
- p = malloc(READSTR);
- l = 0;
-
- PRINTSTAT("Signal: %d\n", ctlr->signal-149);
- PRINTSTAT("Noise: %d\n", ctlr->noise-149);
- PRINTSTAT("SNR: %ud\n", ctlr->signal-ctlr->noise);
- PRINTSTAT("Interrupts: %lud\n", ctlr->nints);
- PRINTSTAT("Double Interrupts: %lud\n", ctlr->ndoubleint);
- PRINTSTAT("TxPackets: %lud\n", ctlr->ntx);
- PRINTSTAT("RxPackets: %lud\n", ctlr->nrx);
- PRINTSTAT("TxErrors: %lud\n", ctlr->ntxerr);
- PRINTSTAT("RxErrors: %lud\n", ctlr->nrxerr);
- PRINTSTAT("TxRequests: %lud\n", ctlr->ntxrq);
- PRINTSTAT("AllocEvs: %lud\n", ctlr->nalloc);
- PRINTSTAT("InfoEvs: %lud\n", ctlr->ninfo);
- PRINTSTAT("InfoDrop: %lud\n", ctlr->nidrop);
- PRINTSTAT("WatchDogs: %lud\n", ctlr->nwatchdogs);
- PRINTSTAT("Ticks: %ud\n", ctlr->ticks);
- PRINTSTAT("TickIntr: %ud\n", ctlr->tickintr);
- k = ((ctlr->state & Attached) ? "attached" : "not attached");
- PRINTSTAT("Card %s", k);
- k = ((ctlr->state & Power) ? "on" : "off");
- PRINTSTAT(", power %s", k);
- k = ((ctlr->txbusy)? ", txbusy" : "");
- PRINTSTAT("%s\n", k);
-
- if(ctlr->hascrypt){
- PRINTSTR("Keys: ");
- for (i = 0; i < WNKeys; i++){
- if(ctlr->keys.keys[i].len == 0)
- PRINTSTR("none ");
- else if(SEEKEYS == 0)
- PRINTSTR("set ");
- else
- PRINTSTAT("%s ", ctlr->keys.keys[i].dat);
- }
- PRINTSTR("\n");
- }
-
- // real card stats
- ilock(ctlr);
- PRINTSTR("\nCard stats: \n");
- PRINTSTAT("Status: %ux\n", csr_ins(ctlr, WR_Sts));
- PRINTSTAT("Event status: %ux\n", csr_ins(ctlr, WR_EvSts));
- i = ltv_ins(ctlr, WTyp_Ptype);
- PRINTSTAT("Port type: %d\n", i);
- PRINTSTAT("Transmit rate: %d\n", ltv_ins(ctlr, WTyp_TxRate));
- PRINTSTAT("Current Transmit rate: %d\n",
- ltv_ins(ctlr, WTyp_CurTxRate));
- PRINTSTAT("Channel: %d\n", ltv_ins(ctlr, WTyp_Chan));
- PRINTSTAT("AP density: %d\n", ltv_ins(ctlr, WTyp_ApDens));
- PRINTSTAT("Promiscuous mode: %d\n", ltv_ins(ctlr, WTyp_Prom));
- if(i == WPTypeAdHoc)
- PRINTSTAT("SSID name: %s\n", ltv_inname(ctlr, WTyp_NetName));
- else {
- Wltv ltv;
- PRINTSTAT("Current name: %s\n", ltv_inname(ctlr, WTyp_CurName));
- ltv.type = WTyp_BaseID;
- ltv.len = 4;
- if(w_inltv(ctlr, <v))
- print("#l%d: unable to read base station mac addr\n", ether->ctlrno);
- l += snprint(p+l, READSTR-l, "Base station: %2.2x%2.2x%2.2x%2.2x%2.2x%2.2x\n",
- ltv.addr[0], ltv.addr[1], ltv.addr[2], ltv.addr[3], ltv.addr[4], ltv.addr[5]);
- }
- PRINTSTAT("Net name: %s\n", ltv_inname(ctlr, WTyp_WantName));
- PRINTSTAT("Node name: %s\n", ltv_inname(ctlr, WTyp_NodeName));
- if(ltv_ins(ctlr, WTyp_HasCrypt) == 0)
- PRINTSTR("WEP: not supported\n");
- else {
- if(ltv_ins(ctlr, WTyp_Crypt) == 0)
- PRINTSTR("WEP: disabled\n");
- else{
- PRINTSTR("WEP: enabled\n");
- k = ((ctlr->xclear)? "excluded": "included");
- PRINTSTAT("Clear packets: %s\n", k);
- txid = ltv_ins(ctlr, WTyp_TxKey);
- PRINTSTAT("Transmit key id: %d\n", txid);
- }
- }
- iunlock(ctlr);
-
- PRINTSTAT("ntxuframes: %lud\n", ctlr->ntxuframes);
- PRINTSTAT("ntxmframes: %lud\n", ctlr->ntxmframes);
- PRINTSTAT("ntxfrags: %lud\n", ctlr->ntxfrags);
- PRINTSTAT("ntxubytes: %lud\n", ctlr->ntxubytes);
- PRINTSTAT("ntxmbytes: %lud\n", ctlr->ntxmbytes);
- PRINTSTAT("ntxdeferred: %lud\n", ctlr->ntxdeferred);
- PRINTSTAT("ntxsretries: %lud\n", ctlr->ntxsretries);
- PRINTSTAT("ntxmultiretries: %lud\n", ctlr->ntxmultiretries);
- PRINTSTAT("ntxretrylimit: %lud\n", ctlr->ntxretrylimit);
- PRINTSTAT("ntxdiscards: %lud\n", ctlr->ntxdiscards);
- PRINTSTAT("nrxuframes: %lud\n", ctlr->nrxuframes);
- PRINTSTAT("nrxmframes: %lud\n", ctlr->nrxmframes);
- PRINTSTAT("nrxfrags: %lud\n", ctlr->nrxfrags);
- PRINTSTAT("nrxubytes: %lud\n", ctlr->nrxubytes);
- PRINTSTAT("nrxmbytes: %lud\n", ctlr->nrxmbytes);
- PRINTSTAT("nrxfcserr: %lud\n", ctlr->nrxfcserr);
- PRINTSTAT("nrxdropnobuf: %lud\n", ctlr->nrxdropnobuf);
- PRINTSTAT("nrxdropnosa: %lud\n", ctlr->nrxdropnosa);
- PRINTSTAT("nrxcantdecrypt: %lud\n", ctlr->nrxcantdecrypt);
- PRINTSTAT("nrxmsgfrag: %lud\n", ctlr->nrxmsgfrag);
- PRINTSTAT("nrxmsgbadfrag: %lud\n", ctlr->nrxmsgbadfrag);
- USED(l);
- n = readstr(offset, a, n, p);
- free(p);
- return n;
-}
-#undef PRINTSTR
-#undef PRINTSTAT
-
-int
-w_option(Ctlr* ctlr, char* buf, long n)
-{
- char *p;
- int i, r;
- WKey *key;
- Cmdbuf *cb;
-
- r = 0;
-
- cb = parsecmd(buf, n);
- if(cb->nf < 2)
- r = -1;
- else if(cistrcmp(cb->f[0], "essid") == 0){
- if(cistrcmp(cb->f[1],"default") == 0)
- p = "";
- else
- p = cb->f[1];
- if(ctlr->ptype == WPTypeAdHoc){
- memset(ctlr->netname, 0, sizeof(ctlr->netname));
- strncpy(ctlr->netname, p, WNameLen);
- }
- else{
- memset(ctlr->wantname, 0, sizeof(ctlr->wantname));
- strncpy(ctlr->wantname, p, WNameLen);
- }
- }
- else if(cistrcmp(cb->f[0], "station") == 0){
- memset(ctlr->nodename, 0, sizeof(ctlr->nodename));
- strncpy(ctlr->nodename, cb->f[1], WNameLen);
- }
- else if(cistrcmp(cb->f[0], "channel") == 0){
- if((i = atoi(cb->f[1])) >= 1 && i <= 16)
- ctlr->chan = i;
- else
- r = -1;
- }
- else if(cistrcmp(cb->f[0], "mode") == 0){
- if(cistrcmp(cb->f[1], "managed") == 0)
- ctlr->ptype = WPTypeManaged;
- else if(cistrcmp(cb->f[1], "wds") == 0)
- ctlr->ptype = WPTypeWDS;
- else if(cistrcmp(cb->f[1], "adhoc") == 0)
- ctlr->ptype = WPTypeAdHoc;
- else if((i = atoi(cb->f[1])) >= 1 && i <= 3)
- ctlr->ptype = i;
- else
- r = -1;
- }
- else if(cistrcmp(cb->f[0], "ibss") == 0){
- if(cistrcmp(cb->f[1], "on") == 0)
- ctlr->createibss = 1;
- else
- ctlr->createibss = 0;
- }
- else if(cistrcmp(cb->f[0], "crypt") == 0){
- if(cistrcmp(cb->f[1], "off") == 0)
- ctlr->crypt = 0;
- else if(cistrcmp(cb->f[1], "on") == 0 && ctlr->hascrypt)
- ctlr->crypt = 1;
- else
- r = -1;
- }
- else if(cistrcmp(cb->f[0], "clear") == 0){
- if(cistrcmp(cb->f[1], "on") == 0)
- ctlr->xclear = 0;
- else if(cistrcmp(cb->f[1], "off") == 0 && ctlr->hascrypt)
- ctlr->xclear = 1;
- else
- r = -1;
- }
- else if(cistrncmp(cb->f[0], "key", 3) == 0){
- if((i = atoi(cb->f[0]+3)) >= 1 && i <= WNKeys){
- ctlr->txkey = i-1;
- key = &ctlr->keys.keys[ctlr->txkey];
- key->len = strlen(cb->f[1]);
- if(key->len > WKeyLen)
- key->len = WKeyLen;
- memset(key->dat, 0, sizeof(key->dat));
- memmove(key->dat, cb->f[1], key->len);
- }
- else
- r = -1;
- }
- else if(cistrcmp(cb->f[0], "txkey") == 0){
- if((i = atoi(cb->f[1])) >= 1 && i <= WNKeys)
- ctlr->txkey = i-1;
- else
- r = -1;
- }
- else if(cistrcmp(cb->f[0], "pm") == 0){
- if(cistrcmp(cb->f[1], "off") == 0)
- ctlr->pmena = 0;
- else if(cistrcmp(cb->f[1], "on") == 0){
- ctlr->pmena = 1;
- if(cb->nf == 3){
- i = atoi(cb->f[2]);
- // check range here? what are the units?
- ctlr->pmwait = i;
- }
- }
- else
- r = -1;
- }
- else
- r = -2;
- free(cb);
-
- return r;
-}
-
-long
-w_ctl(Ether* ether, void* buf, long n)
-{
- Ctlr *ctlr;
-
- if((ctlr = ether->ctlr) == nil)
- error(Enonexist);
- if((ctlr->state & Attached) == 0)
- error(Eshutdown);
-
- ilock(ctlr);
- if(w_option(ctlr, buf, n)){
- iunlock(ctlr);
- error(Ebadctl);
- }
- if(ctlr->txbusy)
- w_txdone(ctlr, WTxErrEv);
- w_enable(ether);
- w_txstart(ether);
- iunlock(ctlr);
-
- return n;
-}
-
-void
-w_transmit(Ether* ether)
-{
- Ctlr* ctlr = ether->ctlr;
-
- if(ctlr == 0)
- return;
-
- ilock(ctlr);
- ctlr->ntxrq++;
- w_txstart(ether);
- iunlock(ctlr);
-}
-
-void
-w_promiscuous(void* arg, int on)
-{
- Ether* ether = (Ether*)arg;
- Ctlr* ctlr = ether->ctlr;
-
- if(ctlr == nil)
- error("card not found");
- if((ctlr->state & Attached) == 0)
- error("card not attached");
- ilock(ctlr);
- ltv_outs(ctlr, WTyp_Prom, (on?1:0));
- iunlock(ctlr);
-}
-
-void
-w_interrupt(Ureg* ,void* arg)
-{
- Ether* ether = (Ether*) arg;
- Ctlr* ctlr = (Ctlr*) ether->ctlr;
-
- if(ctlr == 0)
- return;
- ilock(ctlr);
- ctlr->nints++;
- w_intr(ether);
- iunlock(ctlr);
-}
-
-int
-wavelanreset(Ether* ether, Ctlr *ctlr)
-{
- Wltv ltv;
-
- iprint("wavelanreset, iob 0x%ux\n", ctlr->iob);
- w_intdis(ctlr);
- if(w_cmd(ctlr,WCmdIni,0)){
- iprint("#l%d: init failed\n", ether->ctlrno);
- return -1;
- }
- w_intdis(ctlr);
- ltv_outs(ctlr, WTyp_Tick, 8);
-
- ctlr->chan = 0;
- ctlr->ptype = WDfltPType;
- ctlr->txkey = 0;
- ctlr->createibss = 0;
- ctlr->keys.len = sizeof(WKey)*WNKeys/2 + 1;
- ctlr->keys.type = WTyp_Keys;
- if(ctlr->hascrypt = ltv_ins(ctlr, WTyp_HasCrypt))
- ctlr->crypt = 1;
- *ctlr->netname = *ctlr->wantname = 0;
- strcpy(ctlr->nodename, "Plan 9 STA");
-
- ctlr->netname[WNameLen-1] = 0;
- ctlr->wantname[WNameLen-1] = 0;
- ctlr->nodename[WNameLen-1] =0;
-
- ltv.type = WTyp_Mac;
- ltv.len = 4;
- if(w_inltv(ctlr, <v)){
- iprint("#l%d: unable to read mac addr\n",
- ether->ctlrno);
- return -1;
- }
- memmove(ether->ea, ltv.addr, Eaddrlen);
-
- if(ctlr->chan == 0)
- ctlr->chan = ltv_ins(ctlr, WTyp_Chan);
- ctlr->apdensity = WDfltApDens;
- ctlr->rtsthres = WDfltRtsThres;
- ctlr->txrate = WDfltTxRate;
- ctlr->maxlen = WMaxLen;
- ctlr->pmena = 0;
- ctlr->pmwait = 100;
- ctlr->signal = 1;
- ctlr->noise = 1;
- ctlr->state |= Power;
-
- // free old Ctlr struct if resetting after suspend
- if(ether->ctlr && ether->ctlr != ctlr)
- free(ether->ctlr);
-
- // link to ether
- ether->ctlr = ctlr;
- ether->mbps = 10;
- ether->attach = w_attach;
- ether->detach = w_detach;
- ether->interrupt = w_interrupt;
- ether->transmit = w_transmit;
- ether->ifstat = w_ifstat;
- ether->ctl = w_ctl;
- ether->power = w_power;
- ether->promiscuous = w_promiscuous;
- ether->multicast = w_multicast;
- ether->scanbs = w_scanbs;
- ether->arg = ether;
-
- DEBUG("#l%d: irq %lud port %lx type %s",
- ether->ctlrno, ether->intnum, ether->ports[0].port, ether->type);
- DEBUG(" %2.2ux%2.2ux%2.2ux%2.2ux%2.2ux%2.2ux\n",
- ether->ea[0], ether->ea[1], ether->ea[2],
- ether->ea[3], ether->ea[4], ether->ea[5]);
-
- return 0;
-}
-
-char* wavenames[] = {
- "WaveLAN/IEEE",
- "TrueMobile 1150",
- "Instant Wireless ; Network PC CARD",
- "Instant Wireless Network PC Card",
- "Avaya Wireless PC Card",
- "AirLancer MC-11",
- nil,
-};
--- a/sys/src/9/bitsy/wavelan.h
+++ /dev/null
@@ -1,1 +1,0 @@
-#include "../pc/wavelan.h"
--- a/sys/src/9/mkfile
+++ b/sys/src/9/mkfile
@@ -1,6 +1,5 @@
ARCH=\
bcm\
- bitsy\
kw\
mtx\
omap\