[T106][ZXW-22]7520V3SCV2.01.01.02P42U09_VEC_V0.8_AP_VEC origin source commit
Change-Id: Ic6e05d89ecd62fc34f82b23dcf306c93764aec4b
diff --git a/ap/build/uClibc/extra/Configs/Config.alpha b/ap/build/uClibc/extra/Configs/Config.alpha
new file mode 100644
index 0000000..144924a
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.alpha
@@ -0,0 +1,16 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "alpha"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_LITTLE_ENDIAN
+ select ARCH_HAS_MMU
+ select ARCH_HAS_NO_LDSO
+ select UCLIBC_HAS_LFS
diff --git a/ap/build/uClibc/extra/Configs/Config.arm b/ap/build/uClibc/extra/Configs/Config.arm
new file mode 100644
index 0000000..0bb2971
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.arm
@@ -0,0 +1,38 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "arm"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_ANY_ENDIAN
+
+config CONFIG_ARM_EABI
+ bool "Build for EABI"
+ help
+ If you say 'y' here, functions and constants required by the
+ ARM EABI will be built into the library. You should say 'y'
+ if your compiler uses the ARM EABI, in which case you will also
+ need a kernel supporting the EABI system call interface.
+
+ If you say 'n' here, then the library will be built for the
+ old Linux ABI.
+
+config COMPILE_IN_THUMB_MODE
+ bool "Build using Thumb mode"
+ select USE_BX
+ help
+ Say 'y' here to force building uClibc in thumb mode.
+ Say 'n' to use your compiler's default mode.
+
+config USE_BX
+ bool "Use BX in function return"
+ help
+ Say 'y' to use BX to return from functions on your thumb-aware
+ processor. Say 'y' if you need to use interworking. Say 'n' if not.
+ It is safe to say 'y' even if you're not doing interworking.
diff --git a/ap/build/uClibc/extra/Configs/Config.avr32 b/ap/build/uClibc/extra/Configs/Config.avr32
new file mode 100644
index 0000000..cbadb4c
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.avr32
@@ -0,0 +1,28 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "avr32"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_BIG_ENDIAN
+ select FORCE_SHAREABLE_TEXT_SEGMENTS
+
+choice
+ prompt "Target CPU Type"
+ default CONFIG_AVR32_AP7
+
+config CONFIG_AVR32_AP7
+ bool "AVR32 AP7"
+ select ARCH_HAS_MMU
+
+endchoice
+
+config LINKRELAX
+ bool "Enable linker optimizations"
+ default y
diff --git a/ap/build/uClibc/extra/Configs/Config.bfin b/ap/build/uClibc/extra/Configs/Config.bfin
new file mode 100644
index 0000000..a70afcf
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.bfin
@@ -0,0 +1,14 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "bfin"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_LITTLE_ENDIAN
+ select ARCH_HAS_NO_MMU
diff --git a/ap/build/uClibc/extra/Configs/Config.c6x b/ap/build/uClibc/extra/Configs/Config.c6x
new file mode 100644
index 0000000..96adfb3
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.c6x
@@ -0,0 +1,29 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ default "c6x"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_ANY_ENDIAN
+ select ARCH_HAS_NO_MMU
+
+choice
+ prompt "Target Processor Type"
+ default CONFIG_GENERIC_C6X
+
+config CONFIG_GENERIC_C6X
+ bool "Generic C6X DSP"
+
+config CONFIG_TMS320C64X
+ bool "TMS320C64X"
+
+config CONFIG_TMS320C64XPLUS
+ bool "TMS320C64X+"
+
+endchoice
+
diff --git a/ap/build/uClibc/extra/Configs/Config.cris b/ap/build/uClibc/extra/Configs/Config.cris
new file mode 100644
index 0000000..52ca0c3
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.cris
@@ -0,0 +1,34 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "cris"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_LITTLE_ENDIAN
+
+choice
+ prompt "Target Architecture Type"
+ default CONFIG_CRIS
+ help
+ This is the architecture type of your CPU. This information
+ is used for optimizing purposes.
+
+ Possible settings:
+ - CRIS Generic support for Axis' CRIS architecture.
+ - CRISv32 Support for Axis' CRISv32 architecture.
+
+config CONFIG_CRIS
+ select ARCH_HAS_MMU
+ bool "CRIS"
+
+config CONFIG_CRISV32
+ select ARCH_HAS_MMU
+ bool "CRISv32"
+
+endchoice
diff --git a/ap/build/uClibc/extra/Configs/Config.e1 b/ap/build/uClibc/extra/Configs/Config.e1
new file mode 100644
index 0000000..ecaa9f0
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.e1
@@ -0,0 +1,15 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "e1"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_BIG_ENDIAN
+ select ARCH_HAS_NO_MMU
+ select ARCH_HAS_NO_SHARED
diff --git a/ap/build/uClibc/extra/Configs/Config.frv b/ap/build/uClibc/extra/Configs/Config.frv
new file mode 100644
index 0000000..b389870
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.frv
@@ -0,0 +1,15 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "frv"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_BIG_ENDIAN
+ select UCLIBC_HAS_FPU
+ select ARCH_HAS_NO_MMU
diff --git a/ap/build/uClibc/extra/Configs/Config.h8300 b/ap/build/uClibc/extra/Configs/Config.h8300
new file mode 100644
index 0000000..ffcb9c8
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.h8300
@@ -0,0 +1,28 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "h8300"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_ANY_ENDIAN
+ select ARCH_HAS_NO_MMU
+
+choice
+ prompt "Target Processor"
+ default CONFIG_H8300H
+ help
+ This is the processor type of your CPU.
+
+config CONFIG_H8300H
+ bool "H8300H"
+
+config CONFIG_H8S
+ bool "H8S (edosk2674)"
+
+endchoice
diff --git a/ap/build/uClibc/extra/Configs/Config.hppa b/ap/build/uClibc/extra/Configs/Config.hppa
new file mode 100644
index 0000000..1323de2
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.hppa
@@ -0,0 +1,17 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "hppa"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_BIG_ENDIAN
+ select ARCH_HAS_MMU
+ select HAS_NO_THREADS
+ select ARCH_HAS_NO_LDSO
+ select HAVE_NO_SSP
diff --git a/ap/build/uClibc/extra/Configs/Config.i386 b/ap/build/uClibc/extra/Configs/Config.i386
new file mode 100644
index 0000000..288aa5e
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.i386
@@ -0,0 +1,102 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "i386"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_LITTLE_ENDIAN
+ select ARCH_HAS_MMU
+
+choice
+ prompt "Target x86 Processor Family"
+ default CONFIG_486
+ help
+ This is the processor type of your CPU. This information is used for
+ optimizing purposes. To build a library that will run on all x86 CPU
+ types (albeit not optimally fast), you can specify "386" here. If
+ you pick anything other than "386", there is no guarantee that uClibc
+ will even run on anything other than the selected processor type.
+
+ Here are the settings recommended for greatest speed:
+ - "Generic 386" select this if your compiler is already setup to
+ optimize things properly.
+ - "386" for the AMD/Cyrix/Intel 386DX/DXL/SL/SLC/SX, Cyrix/TI
+ 486DLC/DLC2, UMC 486SX-S and NexGen Nx586. Only "386" kernels
+ will run on a 386 class machine.
+ - "486" for the AMD/Cyrix/IBM/Intel 486DX/DX2/DX4 or
+ SL/SLC/SLC2/SLC3/SX/SX2 and UMC U5D or U5S.
+ - "586" for Intel Pentium and other generic Pentium CPUs
+ - "Pentium-MMX" for the Intel Pentium MMX.
+ - "Pentium-Pro" for the Intel Pentium Pro/Celeron/Pentium II.
+ - "Pentium-III" for the Intel Pentium III
+ and Celerons based on the Coppermine core.
+ - "Pentium-4" for the Intel Pentium 4.
+ - "K6" for the AMD K6, K6-II and K6-III (aka K6-3D).
+ - "Athlon" for the AMD K7 family (Athlon/Duron/Thunderbird).
+ - "Elan" for the AMD Elan.
+ - "Crusoe" for the Transmeta Crusoe series.
+ - "Winchip-C6" for original IDT Winchip.
+ - "Winchip-2/Winchip-2A/Winchip-3" for IDT Winchip CPUs
+ - "CyrixIII/VIA C3" for VIA Cyrix III or VIA C3.
+ - "VIA C3-2 Nehemiah" model 9 and above.
+
+ If you don't know what to do, choose "386".
+
+config CONFIG_GENERIC_386
+ bool "Generic 386"
+
+config CONFIG_386
+ bool "386"
+
+config CONFIG_486
+ bool "486"
+
+config CONFIG_586
+ bool "Pentium/586/K5/5x86/6x86/6x86MX"
+
+config CONFIG_586MMX
+ bool "Pentium-MMX"
+
+config CONFIG_686
+ bool "Pentium-Pro"
+
+config CONFIG_PENTIUMII
+ bool "Celeron/Pentium-II"
+
+config CONFIG_PENTIUMIII
+ bool "Pentium-III/Celeron(Coppermine)/Pentium-III Xeon"
+
+config CONFIG_PENTIUM4
+ bool "Pentium-4/Celeron(P4-based)/Xeon"
+
+config CONFIG_K6
+ bool "K6/K6-II/K6-III"
+
+config CONFIG_K7
+ bool "Athlon/Duron/K7"
+
+config CONFIG_ELAN
+ bool "Elan"
+
+config CONFIG_CRUSOE
+ bool "Crusoe"
+
+config CONFIG_WINCHIPC6
+ bool "Winchip-C6"
+
+config CONFIG_WINCHIP2
+ bool "Winchip-2/Winchip-2A/Winchip-3"
+
+config CONFIG_CYRIXIII
+ bool "CyrixIII/VIA-C3"
+
+config CONFIG_NEHEMIAH
+ bool "VIA C3-2 (Nehemiah)"
+
+endchoice
diff --git a/ap/build/uClibc/extra/Configs/Config.i960 b/ap/build/uClibc/extra/Configs/Config.i960
new file mode 100644
index 0000000..798dae0
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.i960
@@ -0,0 +1,15 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "i960"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_LITTLE_ENDIAN
+ select ARCH_HAS_NO_MMU
+ select HAS_NO_THREADS
diff --git a/ap/build/uClibc/extra/Configs/Config.ia64 b/ap/build/uClibc/extra/Configs/Config.ia64
new file mode 100644
index 0000000..ae88be7
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.ia64
@@ -0,0 +1,15 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "ia64"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_LITTLE_ENDIAN
+ select ARCH_HAS_MMU
+ select ARCH_HAS_NO_LDSO
diff --git a/ap/build/uClibc/extra/Configs/Config.in b/ap/build/uClibc/extra/Configs/Config.in
new file mode 100755
index 0000000..26346e7
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.in
@@ -0,0 +1,2414 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+mainmenu "uClibc C Library Configuration"
+
+config DESIRED_TARGET_ARCH
+ string
+ option env="ARCH"
+
+choice
+ prompt "Target Architecture"
+ default TARGET_alpha if DESIRED_TARGET_ARCH = "alpha"
+ default TARGET_arm if DESIRED_TARGET_ARCH = "arm"
+ default TARGET_avr32 if DESIRED_TARGET_ARCH = "avr32"
+ default TARGET_bfin if DESIRED_TARGET_ARCH = "bfin"
+ default TARGET_cris if DESIRED_TARGET_ARCH = "cris"
+ default TARGET_e1 if DESIRED_TARGET_ARCH = "e1"
+ default TARGET_frv if DESIRED_TARGET_ARCH = "frv"
+ default TARGET_h8300 if DESIRED_TARGET_ARCH = "h8300"
+ default TARGET_hppa if DESIRED_TARGET_ARCH = "hppa"
+ default TARGET_i386 if DESIRED_TARGET_ARCH = "i386"
+ default TARGET_i960 if DESIRED_TARGET_ARCH = "i960"
+ default TARGET_ia64 if DESIRED_TARGET_ARCH = "ia64"
+ default TARGET_m68k if DESIRED_TARGET_ARCH = "m68k"
+ default TARGET_microblaze if DESIRED_TARGET_ARCH = "microblaze"
+ default TARGET_mips if DESIRED_TARGET_ARCH = "mips"
+ default TARGET_nios if DESIRED_TARGET_ARCH = "nios"
+ default TARGET_nios2 if DESIRED_TARGET_ARCH = "nios2"
+ default TARGET_powerpc if DESIRED_TARGET_ARCH = "powerpc"
+ default TARGET_sh if DESIRED_TARGET_ARCH = "sh"
+ default TARGET_sh64 if DESIRED_TARGET_ARCH = "sh64"
+ default TARGET_sparc if DESIRED_TARGET_ARCH = "sparc"
+ default TARGET_v850 if DESIRED_TARGET_ARCH = "v850"
+ default TARGET_vax if DESIRED_TARGET_ARCH = "vax"
+ default TARGET_x86_64 if DESIRED_TARGET_ARCH = "x86_64"
+ default TARGET_xtensa if DESIRED_TARGET_ARCH = "xtensa"
+ help
+ The architecture of your target.
+
+config TARGET_alpha
+ bool "alpha"
+
+config TARGET_arm
+ bool "arm"
+
+config TARGET_avr32
+ bool "avr32"
+
+config TARGET_bfin
+ bool "bfin"
+
+config TARGET_c6x
+ bool "c6x"
+
+config TARGET_cris
+ bool "cris"
+
+config TARGET_e1
+ bool "e1 (BROKEN)"
+
+config TARGET_frv
+ bool "frv (BROKEN)"
+
+config TARGET_h8300
+ bool "h8300 (BROKEN)"
+
+config TARGET_hppa
+ bool "hppa"
+
+config TARGET_i386
+ bool "i386"
+
+config TARGET_i960
+ bool "i960 (BROKEN)"
+
+config TARGET_ia64
+ bool "ia64"
+
+config TARGET_m68k
+ bool "m68k"
+
+config TARGET_microblaze
+ bool "microblaze"
+
+config TARGET_mips
+ bool "mips"
+
+config TARGET_nios
+ bool "nios"
+
+config TARGET_nios2
+ bool "nios2"
+
+config TARGET_powerpc
+ bool "powerpc"
+
+config TARGET_sh
+ bool "superh"
+
+config TARGET_sh64
+ bool "sh64"
+
+config TARGET_sparc
+ bool "sparc"
+
+config TARGET_v850
+ bool "v850 (BROKEN)"
+
+config TARGET_vax
+ bool "vax"
+
+config TARGET_x86_64
+ bool "x86_64"
+
+config TARGET_xtensa
+ bool "xtensa"
+
+endchoice
+
+
+menu "Target Architecture Features and Options"
+
+if TARGET_alpha
+source "extra/Configs/Config.alpha"
+endif
+
+if TARGET_arm
+source "extra/Configs/Config.arm"
+endif
+
+if TARGET_avr32
+source "extra/Configs/Config.avr32"
+endif
+
+if TARGET_bfin
+source "extra/Configs/Config.bfin"
+endif
+
+if TARGET_cris
+source "extra/Configs/Config.cris"
+endif
+
+if TARGET_e1
+source "extra/Configs/Config.e1"
+endif
+
+if TARGET_frv
+source "extra/Configs/Config.frv"
+endif
+
+if TARGET_h8300
+source "extra/Configs/Config.h8300"
+endif
+
+if TARGET_hppa
+source "extra/Configs/Config.hppa"
+endif
+
+if TARGET_i386
+source "extra/Configs/Config.i386"
+endif
+
+if TARGET_i960
+source "extra/Configs/Config.i960"
+endif
+
+if TARGET_ia64
+source "extra/Configs/Config.ia64"
+endif
+
+if TARGET_m68k
+source "extra/Configs/Config.m68k"
+endif
+
+if TARGET_nios
+source "extra/Configs/Config.nios"
+endif
+
+if TARGET_nios2
+source "extra/Configs/Config.nios2"
+endif
+
+if TARGET_microblaze
+source "extra/Configs/Config.microblaze"
+endif
+
+if TARGET_mips
+source "extra/Configs/Config.mips"
+endif
+
+if TARGET_powerpc
+source "extra/Configs/Config.powerpc"
+endif
+
+if TARGET_sh
+source "extra/Configs/Config.sh"
+endif
+
+if TARGET_sh64
+source "extra/Configs/Config.sh64"
+endif
+
+if TARGET_sparc
+source "extra/Configs/Config.sparc"
+endif
+
+if TARGET_v850
+source "extra/Configs/Config.v850"
+endif
+
+if TARGET_vax
+source "extra/Configs/Config.vax"
+endif
+
+if TARGET_x86_64
+source "extra/Configs/Config.x86_64"
+endif
+
+if TARGET_xtensa
+source "extra/Configs/Config.xtensa"
+endif
+
+if TARGET_c6x
+source "extra/Configs/Config.c6x"
+endif
+
+config TARGET_SUBARCH
+ string
+ default "e500" if CONFIG_E500
+ default "classic" if CONFIG_CLASSIC
+ default "sh4" if CONFIG_SH4
+ default "" if CONFIG_GENERIC_386 || CONFIG_386
+ default "i486" if CONFIG_486
+ default "i586" if CONFIG_586 || CONFIG_586MMX
+ default "i686" if TARGET_ARCH = "i386"
+ default ""
+
+source "extra/Configs/Config.in.arch"
+
+endmenu
+
+menu "General Library Settings"
+
+config HAVE_NO_PIC
+ bool
+
+config DOPIC
+ bool "Generate only Position Independent Code (PIC)"
+ default y
+ depends on !HAVE_NO_PIC
+ help
+ If you wish to build all of uClibc as PIC objects, then answer Y here.
+ If you are unsure, then you should answer N.
+
+config ARCH_HAS_NO_SHARED
+ bool
+
+config ARCH_HAS_NO_LDSO
+ bool
+ select ARCH_HAS_NO_SHARED
+
+config HAVE_SHARED
+ bool "Enable shared libraries"
+ depends on !ARCH_HAS_NO_SHARED
+ default y
+ help
+ If you wish to build uClibc with support for shared libraries then
+ answer Y here. If you only want to build uClibc as a static library,
+ then answer N.
+
+config FORCE_SHAREABLE_TEXT_SEGMENTS
+ bool "Only load shared libraries which can share their text segment"
+ depends on HAVE_SHARED
+ select DOPIC
+ help
+ If you answer Y here, the uClibc native shared library loader will
+ only load shared libraries, which do not need to modify any
+ non-writable segments. These libraries haven't set the DT_TEXTREL
+ tag in the dynamic section (==> objdump).
+ All your libraries must be compiled with -fPIC or -fpic, and all
+ assembler function must be written as position independent code (PIC).
+ Enabling this option will make uClibc's shared library loader a
+ little bit smaller and guarantee that no memory will be wasted by
+ badly coded shared libraries.
+
+config LDSO_LDD_SUPPORT
+ bool "Native 'ldd' support"
+ depends on HAVE_SHARED
+ default y
+ help
+ Enable all the code needed to support traditional ldd,
+ which executes the shared library loader to resolve all dependencies
+ and then provide a list of shared libraries that are required for an
+ application to function. Disabling this option will make uClibc's
+ shared library loader a little bit smaller.
+ Most people will answer Y.
+
+config LDSO_CACHE_SUPPORT
+ bool "Enable library loader cache (ld.so.conf)"
+ depends on HAVE_SHARED
+ default y
+ help
+ Enable this to make use of /etc/ld.so.conf, the shared library loader
+ cache configuration file to support for non-standard library paths.
+ After updating this file, it is necessary to run 'ldconfig' to update
+ the /etc/ld.so.cache shared library loader cache file.
+
+config LDSO_PRELOAD_ENV_SUPPORT
+ bool "Enable library loader LD_PRELOAD environment"
+ depends on HAVE_SHARED
+ default y
+ help
+ Enable this to make use of LD_PRELOAD environment variable.
+ A whitespace-separated list of additional, user-specified, ELF shared
+ libraries to be loaded before all others. This can be used to
+ selectively override functions in other shared libraries. For
+ set-user-ID/set-group-ID ELF binaries, only libraries in the standard
+ search directories that are also set-user-ID will be loaded.
+
+config LDSO_PRELOAD_FILE_SUPPORT
+ bool "Enable library loader preload file (ld.so.preload)"
+ depends on HAVE_SHARED
+ help
+ Enable this to make use of /etc/ld.so.preload. This file contains a
+ whitespace separated list of shared libraries to be loaded before
+ the program.
+
+config LDSO_BASE_FILENAME
+ string "Shared library loader naming prefix"
+ depends on HAVE_SHARED && (LDSO_CACHE_SUPPORT || LDSO_PRELOAD_FILE_SUPPORT)
+ default "ld.so"
+ help
+ If you wish to support both uClibc and glibc on the same system, it
+ is necessary to set this to something other than "ld.so" to avoid
+ conflicts with glibc, which also uses "ld.so". This prevents both
+ libraries from using the same /etc/ld.so.* files. If you wish to
+ support both uClibc and glibc on the same system then you should set
+ this to "ld-uClibc.so".
+
+ Most people will leave this set to the default of "ld.so".
+
+ WARNING: Changing the default prefix could cause problems with
+ binutils' ld !
+
+config LDSO_STANDALONE_SUPPORT
+ bool "Dynamic linker stand-alone mode support"
+ depends on HAVE_SHARED
+ help
+ The dynamic linker can be run either indirectly through running some
+ dynamically linked program or library (in which case no command line
+ options to the dynamic linker can be passed and, in the ELF case, the
+ dynamic linker which is stored in the .interp section of the program
+ is executed) or directly by running:
+
+ /lib/ld-uClibc.so.* [OPTIONS] [PROGRAM [ARGUMENTS]]
+
+ Stand-alone execution is a prerequisite for adding prelink
+ capabilities to uClibc dynamic linker, as well useful for testing an
+ updated version of the dynamic linker without breaking the system.
+
+config LDSO_PRELINK_SUPPORT
+ bool "Dynamic linker prelink support"
+ depends on HAVE_SHARED
+ select LDSO_STANDALONE_SUPPORT
+ help
+ The dynamic linker can be used in stand-alone mode by the prelink tool
+ for prelinking ELF shared libraries and binaries to speed up startup
+ time. It also is able to load and handle prelinked libraries and
+ binaries at runtime.
+
+config UCLIBC_STATIC_LDCONFIG
+ bool "Link ldconfig statically"
+ depends on HAVE_SHARED
+ default y
+ help
+ Enable this option to statically link the ldconfig binary.
+
+ Making ldconfig static can be beneficial if you have a library
+ problem and need to use ldconfig to recover. Sometimes it is
+ preferable to instead keep the size of the system down, in which
+ case you should disable this option.
+
+config LDSO_RUNPATH
+ bool "Enable ELF RUNPATH tag support"
+ depends on HAVE_SHARED
+ default y if LDSO_CACHE_SUPPORT
+ help
+ ELF's may have dynamic RPATH/RUNPATH tags. These tags list paths
+ which extend the library search paths. They are really only useful
+ if a package installs libraries in non standard locations and
+ ld.so.conf support is disabled.
+
+ Usage of RUNPATH tags is not too common, so disabling this feature
+ should be safe for most people.
+
+config LDSO_SEARCH_INTERP_PATH
+ bool "Add ldso path to lib search path"
+ depends on HAVE_SHARED
+ default y
+ help
+ The ldso is told where it is being executed from and can use that
+ path to find related core libraries. This is useful by default,
+ but can be annoying in a mixed development environment.
+
+ i.e. if the ldso is run from /foo/boo/ldso.so, it will start its
+ library search with /foo/boo/
+
+ If unsure, simply say Y here.
+
+config LDSO_LD_LIBRARY_PATH
+ bool "Add LD_LIBRARY_PATH to lib search path"
+ depends on HAVE_SHARED
+ default y
+ help
+ On hardened system it could be useful to disable the use of
+ LD_LIBRARY_PATH environment variable (a colon-separated list of
+ directories in which to search for ELF libraries at execution-time).
+
+ If unsure, simply say Y here.
+
+config LDSO_NO_CLEANUP
+ bool "Disable automatic unloading of dynamically loaded shared objects"
+ depends on HAVE_SHARED
+ default n
+ help
+ If you need complete allocation traces when debugging memory leaks
+ using Valgrind in a process that dynamically loads shared objects,
+ then answer Y here. Unlike glibc, uClibc unloads all dynamically
+ loaded shared objects when a process exits, which prevents Valgrind
+ from correctly resolving the symbols from the unloaded shared objects.
+ Unless you know you need this, you should answer N.
+
+config UCLIBC_CTOR_DTOR
+ bool "Support global constructors and destructors"
+ default y
+ help
+ If you wish to build uClibc with support for global constructor
+ (ctor) and global destructor (dtor) support, then answer Y here.
+ When ctor/dtor support is enabled, binaries linked with uClibc must
+ also be linked with crtbegin.o and crtend.o which are provided by gcc
+ (the "*startfile:" and "*endfile:" settings in your gcc specs file
+ may need to be adjusted to include these files). This support will
+ also add a small amount of additional size to each binary compiled vs
+ uClibc. If you will be using uClibc with C++, or if you need the gcc
+ __attribute__((constructor)) and __attribute__((destructor)) to work,
+ then you definitely want to answer Y here. If you don't need ctors
+ or dtors and want your binaries to be as small as possible, then
+ answer N.
+
+config LDSO_GNU_HASH_SUPPORT
+ bool "Enable GNU hash style support"
+ depends on HAVE_SHARED
+ help
+ Newest binutils support a new hash style named GNU-hash. The dynamic
+ linker will use the new GNU-hash section (.gnu.hash) for symbol lookup
+ if present into the ELF binaries, otherwise it will use the old SysV
+ hash style (.hash). This ensures that it is completely backward
+ compatible.
+ Further, being the hash table implementation self-contained into each
+ executable and shared libraries, objects with mixed hash style can
+ peacefully coexist in the same process.
+
+ If you want to use this new feature, answer Y
+
+choice
+ prompt "Thread support"
+ #default UCLIBC_HAS_THREADS_NATIVE if (TARGET_alpha || TARGET_arm || TARGET_i386 || TARGET_mips || TARGET_powerpc || TARGET_sh || TARGET_sh64)
+ default HAS_NO_THREADS
+ help
+ If you want to compile uClibc with pthread support, then answer Y.
+ This will increase the size of uClibc by adding a bunch of locking
+ to critical data structures, and adding extra code to ensure that
+ functions are properly reentrant.
+
+config HAS_NO_THREADS
+ bool "none"
+ help
+ Disable thread support.
+
+config LINUXTHREADS_OLD
+ bool "older (stable) version of linuxthreads"
+ # linuxthreads and linuxthreads.old need nanosleep()
+ select UCLIBC_HAS_REALTIME
+ help
+ There are two versions of linuxthreads. The older (stable) version
+ has been in uClibc for quite a long time but hasn't seen too many
+ updates other than bugfixes.
+
+
+config LINUXTHREADS_NEW
+ bool "slightly newer version of linuxthreads"
+ help
+ The new version has not been tested much, and lacks ports for arches
+ which glibc does not support (like bfin/frv/etc...), but is based on
+ the latest code from glibc, so it may be the only choice for the
+ newer ports (like alpha/amd64/64bit arches and hppa).
+
+config UCLIBC_HAS_THREADS_NATIVE
+ bool "Native POSIX Threading (NPTL)"
+ select UCLIBC_HAS_TLS
+ select UCLIBC_HAS_STDIO_FUTEXES
+ # i386 has no lowlevellock support (yet) as opposed to i486 onward
+ depends on !CONFIG_386
+ help
+ If you want to compile uClibc with NPTL support, then answer Y.
+
+ IMPORTANT NOTE! NPTL requires a Linux 2.6 kernel, binutils
+ at least version 2.16 and GCC with at least version 4.1.0. NPTL
+ will not work with older versions of any above sources. If you
+ ignore any of these guidelines, you do so at your own risk. Do
+ not ask for help on any of the development mailing lists.
+
+ !!!! WARNING !!!! BIG FAT WARNING !!!! REALLY BIG FAT WARNING !!!!
+
+ This is experimental code and at times it may not even build and
+ even if it does it might decide to do random damage. This code is
+ potentially hazardous to your health and sanity. It will remain
+ that way until further notice at which point this notice will
+ disappear. Thank you for your support and for not smoking.
+
+endchoice
+
+config UCLIBC_HAS_THREADS
+ def_bool y if !HAS_NO_THREADS
+
+config UCLIBC_HAS_TLS
+ bool "Thread-Local Storage"
+ depends on UCLIBC_HAS_THREADS_NATIVE
+ help
+ If you want to enable TLS support then answer Y.
+ This is fast an efficient way to store per-thread local data
+ which is not on stack. It needs __thread support enabled in
+ gcc.
+
+config PTHREADS_DEBUG_SUPPORT
+ bool "Build pthreads debugging support"
+ depends on UCLIBC_HAS_THREADS
+ help
+ Say Y here if you wish to be able to debug applications that use
+ uClibc's pthreads library. By enabling this option, a library
+ named libthread_db will be built. This library will be dlopen()'d
+ by gdb and will allow gdb to debug the threads in your application.
+
+ IMPORTANT NOTE! Because gdb must dlopen() the libthread_db library,
+ you must compile gdb with uClibc in order for pthread debugging to
+ work properly.
+
+ If you are doing development and want to debug applications using
+ uClibc's pthread library, answer Y. Otherwise, answer N.
+
+
+config UCLIBC_HAS_SYSLOG
+ bool "Syslog support"
+ default y
+ depends on UCLIBC_HAS_NETWORK_SUPPORT
+ select UCLIBC_HAS_SOCKET
+ help
+ Support sending messages to the system logger.
+ This requires socket-support.
+
+config UCLIBC_HAS_LFS
+ bool "Large File Support"
+ default y
+ help
+ If you wish to build uClibc with support for accessing large files
+ (i.e. files greater then 2 GiB) then answer Y. Do not enable this
+ if you are using an older Linux kernel (2.0.x) that lacks large file
+ support. Enabling this option will increase the size of uClibc.
+
+choice
+ prompt "Malloc Implementation"
+ default MALLOC if ! ARCH_USE_MMU
+ default MALLOC_STANDARD if ARCH_USE_MMU
+
+config MALLOC
+ bool "malloc"
+ help
+ "malloc" use mmap for all allocations and so works very well on
+ MMU-less systems that do not support the brk() system call. It is
+ pretty smart about reusing already allocated memory, and minimizing
+ memory wastage.
+ This is the default for uClinux MMU-less systems.
+
+config MALLOC_SIMPLE
+ bool "malloc-simple"
+ help
+ "malloc-simple" is trivially simple and slow as molasses. It
+ was written from scratch for uClibc, and is the simplest possible
+ (and therefore smallest) malloc implementation.
+
+ This uses only the mmap() system call to allocate and free memory,
+ and does not use the brk() system call at all, making it a fine
+ choice for MMU-less systems with very limited memory. It's 100%
+ standards compliant, thread safe, very small, and releases freed
+ memory back to the OS immediately rather than keeping it in the
+ process's heap for reallocation. It is also VERY SLOW.
+
+config MALLOC_STANDARD
+ bool "malloc-standard"
+ depends on ARCH_USE_MMU
+ help
+ "malloc-standard" is derived from the public domain dlmalloc
+ implementation by Doug Lea. It is quite fast, and is pretty smart
+ about reusing already allocated memory, and minimizing memory
+ wastage. This uses brk() for small allocations, while using mmap()
+ for larger allocations. This is the default malloc implementation
+ for uClibc.
+
+ If unsure, answer "malloc-standard".
+
+endchoice
+
+config MALLOC_GLIBC_COMPAT
+ bool "Malloc returns live pointer for malloc(0)"
+ help
+ The behavior of malloc(0) is listed as implementation-defined by
+ SuSv3. Glibc returns a valid pointer to something, while uClibc
+ normally returns NULL. I personally feel glibc's behavior is
+ not particularly safe, and allows buggy applications to hide very
+ serious problems.
+
+ When this option is enabled, uClibc will act just like glibc, and
+ return a live pointer when someone calls malloc(0). This pointer
+ provides a malloc'ed area with a size of 1 byte. This feature is
+ mostly useful when dealing with applications using autoconf's broken
+ AC_FUNC_MALLOC macro (which redefines malloc as rpl_malloc if it
+ does not detect glibc style returning-a-valid-pointer-for-malloc(0)
+ behavior). Most people can safely answer N.
+
+config UCLIBC_DYNAMIC_ATEXIT
+ bool "Dynamic atexit() Support"
+ default y
+ help
+ When this option is enabled, uClibc will support an infinite number,
+ of atexit() and on_exit() functions, limited only by your available
+ memory. This can be important when uClibc is used with C++, since
+ global destructors are implemented via atexit(), and it is quite
+ possible to exceed the default number when this option is disabled.
+ Enabling this option adds a few bytes, and more significantly makes
+ atexit and on_exit depend on malloc, which can be bad when compiling
+ static executables.
+
+ Unless you use uClibc with C++, you should probably answer N.
+
+config COMPAT_ATEXIT
+ bool "Old (visible) atexit Support"
+ help
+ Enable this option if you want to update from 0.9.28 to git/0.9.29,
+ else you will be missing atexit() until you rebuild all apps.
+
+config UCLIBC_SUSV3_LEGACY
+ bool "Enable SuSv3 LEGACY functions"
+ #vfork,
+ # h_errno
+ # gethostbyaddr
+ # gethostbyname
+ help
+ Enable this option if you want to have SuSv3 LEGACY functions
+ in the library, else they are replaced by SuSv3 proposed macros.
+ Currently applies to:
+
+ bcmp, bcopy, bzero, index, rindex, ftime,
+ bsd_signal, (ecvt), (fcvt), gcvt, (getcontext),
+ (getwd), (makecontext),
+ mktemp, (pthread_attr_getstackaddr), (pthread_attr_setstackaddr),
+ scalb, (setcontext), (swapcontext), ualarm, usleep,
+ wcswcs.
+
+ WARNING! ABI incompatibility.
+
+config UCLIBC_SUSV3_LEGACY_MACROS
+ bool "Enable SuSv3 LEGACY macros"
+ help
+ Enable this option if you want to have SuSv3 LEGACY macros.
+ Currently applies to bcopy/bzero/bcmp/index/rindex et al.
+ WARNING! ABI incompatibility.
+
+config UCLIBC_SUSV4_LEGACY
+ bool "Enable SuSv4 LEGACY or obsolescent functions"
+ help
+ Enable this option if you want to have SuSv4 LEGACY functions
+ and macros in the library.
+ Currently applies to:
+
+ - XSI functions:
+ _longjmp, _setjmp, _tolower, _toupper, ftw, getitimer,
+ gettimeofday, isascii, pthread_getconcurrency,
+ pthread_setconcurrency, setitimer, setpgrp, sighold,
+ sigignore, sigpause, sigrelse, sigset, siginterrupt,
+ tempnam, toascii, ulimit.
+
+ - Base functions:
+ asctime, asctime_r, ctime, ctime_r, gets, rand_r,
+ tmpnam, utime.
+
+ WARNING! ABI incompatibility.
+
+config UCLIBC_STRICT_HEADERS
+ bool "Hide structures and constants for unsupported features"
+ help
+ Hide structures and constants in headers that should not be used,
+ because the respective feature is disabled.
+
+ WARNING! enabling this option requires to patch many faulty apps,
+ since they make (wrongly) use of these structures/constants,
+ although the feature was disabled.
+
+config UCLIBC_HAS_STUBS
+ bool "Provide stubs for unavailable functionality"
+ help
+ With this option uClibc provides non-functional stubs for
+ functions which are impossible to implement on the target
+ architecture. Otherwise, such functions are simply omitted.
+
+config UCLIBC_HAS_SHADOW
+ bool "Shadow Password Support"
+ default y
+ help
+ Answer N if you do not need shadow password support.
+ Most people will answer Y.
+
+config UCLIBC_HAS_PROGRAM_INVOCATION_NAME
+ bool "Support for program_invocation_name"
+ help
+ Support for the GNU-specific program_invocation_name and
+ program_invocation_short_name strings. Some GNU packages
+ (like tar and coreutils) utilize these for extra useful
+ output, but in general are not required.
+
+ At startup, these external strings are automatically set
+ up based on the value of ARGV[0].
+
+ If unsure, just answer N.
+
+config UCLIBC_HAS___PROGNAME
+ bool "Support for __progname"
+ default y
+ depends on UCLIBC_HAS_PROGRAM_INVOCATION_NAME
+ help
+ Some packages (like openssh) like to peek into internal libc
+ symbols to make their output a bit more user friendly.
+
+ At startup, __progname is automatically set up based on the
+ value of ARGV[0].
+
+ If unsure, just answer N.
+
+config UCLIBC_HAS_PTY
+ bool "Support for pseudo-terminals"
+ default y
+ help
+ This enables support for pseudo-terminals (see man 4 pts
+ and man 7 pty).
+
+ If unsure, just answer Y.
+
+config ASSUME_DEVPTS
+ bool "Assume that /dev/pts is a devpts or devfs file system"
+ default y
+ depends on UCLIBC_HAS_PTY
+ help
+ Enable this if /dev/pts is on a devpts or devfs filesystem. Both
+ these filesystems automatically manage permissions on the /dev/pts
+ devices. You may need to mount your devpts or devfs filesystem on
+ /dev/pts for this to work.
+
+ Most people should answer Y.
+
+config UNIX98PTY_ONLY
+ bool "Support only Unix 98 PTYs"
+ default y
+ depends on UCLIBC_HAS_PTY
+ help
+ If you want to support only Unix 98 PTYs enable this. Some older
+ applications may need this disabled and will thus use legacy BSD
+ style PTY handling which is more complex and also bigger than
+ Unix 98 PTY handling.
+
+ For most current programs, you can generally answer Y.
+
+if UNIX98PTY_ONLY
+config UCLIBC_HAS_GETPT
+ bool "Support getpt() (glibc-compat)"
+ depends on UCLIBC_HAS_PTY
+ help
+ Some packages may need getpt().
+ All of those are non-standard and can be considered
+ GNU/libc compatibility.
+ Either use posix_openpt() or just open /dev/ptmx yourself.
+
+ If unsure, just say N.
+endif
+
+if !UNIX98PTY_ONLY
+# Have to use __libc_ptyname{1,2}[] and related bloat
+config UCLIBC_HAS_GETPT
+ def_bool y
+endif
+
+config UCLIBC_HAS_LIBUTIL
+ bool "Provide libutil library and functions"
+ depends on UCLIBC_HAS_PTY
+ help
+ Provide a libutil library.
+ This non-standard conforming library provides the following
+ utility functions:
+
+ forkpty(): combines openpty(), fork(2), and login_tty() to
+ create a new process operating in a pseudo-terminal.
+ login(): write utmp and wtmp entries
+ login_tty(): prepares for a login on the tty fd by creating a
+ new session, making fd the controlling terminal for
+ the calling process, setting fd to be the standard
+ input, output, and error streams of the current
+ process, and closing fd.
+ logout(): write utmp and wtmp entries
+ logwtmp(): constructs a utmp structure and calls updwtmp() to
+ append the structure to the utmp file.
+ openpty(): finds an available pseudo-terminal and returns
+ file descriptors for the master and slave
+
+ This library adds about 3k-4k to your system.
+
+config UCLIBC_HAS_TM_EXTENSIONS
+ bool "Support 'struct tm' timezone extension fields"
+ default y
+ help
+ Enabling this option adds fields to 'struct tm' in time.h for
+ tracking the number of seconds east of UTC, and an abbreviation for
+ the current timezone. These fields are not specified by the SuSv3
+ standard, but they are commonly used in both GNU and BSD application
+ code.
+
+ To strictly follow the SuSv3 standard, leave this disabled.
+ Most people will probably want to answer Y.
+
+config UCLIBC_HAS_TZ_CACHING
+ bool "Enable caching of the last valid timezone 'TZ' string"
+ default y
+ help
+ Answer Y to enable caching of the last valid 'TZ' string describing
+ the timezone setting. This allows a quick string compare to avoid
+ repeated parsing of unchanged 'TZ' strings when tzset() is called.
+
+ Most people will answer Y.
+
+config UCLIBC_HAS_TZ_FILE
+ bool "Enable '/etc/TZ' file support to set a default timezone (uClibc-specific)"
+ default y
+ help
+ Answer Y to enable the setting of a default timezone for uClibc.
+
+ Ordinarily, uClibc gets the timezone information exclusively from the
+ 'TZ' environment variable. In particular, there is no support for
+ the zoneinfo directory tree or the /etc/timezone file used by glibc.
+
+ With this option enabled, uClibc will use the value stored in the
+ file '/etc/TZ' (default path) to obtain timezone information if the
+ 'TZ' environment variable is missing or has an invalid value. The
+ file consists of a single line (newline required) of text describing
+ the timezone in the format specified for the TZ environment variable.
+
+ Doing 'echo CST6CDT > /etc/TZ' is enough to create a valid file.
+ See
+ http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap08.html
+ for details on valid settings of 'TZ'.
+
+ Most people will answer Y.
+
+config UCLIBC_HAS_TZ_FILE_READ_MANY
+ bool "Repeatedly read the '/etc/TZ' file"
+ depends on UCLIBC_HAS_TZ_FILE
+ default y
+ help
+ Answer Y to enable repeated reading of the '/etc/TZ' file even after
+ a valid value has been read. This incurs the overhead of an
+ open/read/close for each tzset() call (explicit or implied). However,
+ setting this will allow applications to update their timezone
+ information if the contents of the file change.
+
+ Most people will answer Y.
+
+config UCLIBC_TZ_FILE_PATH
+ string "Path to the 'TZ' file for setting the global timezone"
+ depends on UCLIBC_HAS_TZ_FILE
+ default "/etc/TZ"
+ help
+ This is the path to the 'TZ' file.
+
+ Most people will use the default of '/etc/TZ'.
+
+config UCLIBC_FALLBACK_TO_ETC_LOCALTIME
+ bool "Use /etc/localtime as a fallback"
+ depends on UCLIBC_HAS_TZ_FILE
+ default y
+ help
+ Answer Y to try to use /etc/localtime file.
+ On glibc systems this file (if it is in TZif2 format)
+ contains timezone string at the end.
+
+ Most people will answer Y.
+
+endmenu
+
+menu "Advanced Library Settings"
+
+config UCLIBC_PWD_BUFFER_SIZE
+ int "Buffer size for getpwnam() and friends"
+ default 256
+ range 12 1024
+ help
+ This sets the value of the buffer size for getpwnam() and friends.
+ By default, this is 256. (For reference, glibc uses 1024).
+ The value can be found using sysconf() with the _SC_GETPW_R_SIZE_MAX
+ parameter.
+
+config UCLIBC_GRP_BUFFER_SIZE
+ int "Buffer size for getgrnam() and friends"
+ default 256
+ range 12 1024
+ help
+ This sets the value of the buffer size for getgrnam() and friends.
+ By default, this is 256. (For reference, glibc uses 1024).
+ The value can be found using sysconf() with the _SC_GETGR_R_SIZE_MAX
+ parameter.
+
+comment "Support various families of functions"
+
+config UCLIBC_LINUX_MODULE_26
+ bool "Linux kernel module functions (2.6)"
+ default y
+ help
+ delete_module, init_module
+ are used in linux for loadable kernel modules.
+
+ Say N if you do not use kernel modules.
+
+config UCLIBC_LINUX_MODULE_24
+ bool "Linux kernel module functions (<2.6)"
+ depends on !TARGET_bfin && !TARGET_c6x
+ help
+ create_module, query_module
+ are used in linux (prior to 2.6) for loadable kernel modules.
+
+ Say N if you do not use kernel modules, or you only support
+ Linux 2.6+.
+
+config UCLIBC_LINUX_SPECIFIC
+ bool "Linux specific functions"
+ default y
+ help
+ accept4(), bdflush(),
+ capget(), capset(), eventfd(), fstatfs(),
+ inotify_*(), ioperm(), iopl(),
+ madvise(), modify_ldt(), pipe2(), personality(),
+ prctl()/arch_prctl(), pivot_root(), modify_ldt(),
+ ppoll(), readahead(), reboot(), remap_file_pages(),
+ sched_getaffinity(), sched_setaffinity(), sendfile(),
+ setfsgid(), setfsuid(), setresgid(), setresuid(),
+ splice(), vmsplice(), tee(), signalfd(), swapoff(), swapon(),
+ sync_file_range(), _sysctl(), sysinfo(), timerfd_*(), vhangup(),
+ umount(), umount2()
+
+config UCLIBC_HAS_GNU_ERROR
+ bool "Support GNU extensions for error-reporting"
+ default y
+ help
+ Support for the GNU-specific error(), error_at_line(),
+ void (* error_print_progname)(), error_message_count
+ functions and variables. Some GNU packages
+ utilize these for extra useful output, but in general
+ are not required.
+
+ If unsure, just answer N.
+
+config UCLIBC_BSD_SPECIFIC
+ bool "BSD specific functions"
+ default y
+ help
+ mincore(), getdomainname(), setdomainname()
+
+ If unsure, say N.
+
+config UCLIBC_HAS_BSD_ERR
+ bool "BSD err functions"
+ default y
+ help
+ These functions are non-standard BSD extensions.
+ err(), errx(), warn(), warnx(), verr(), verrx(), vwarn(), vwarnx()
+
+ If unsure, say N.
+
+config UCLIBC_HAS_OBSOLETE_BSD_SIGNAL
+ bool "BSD obsolete signal functions"
+ help
+ These functions are provided as a compatibility interface for
+ programs that make use of the historical System V signal API.
+ This API is obsolete:
+ new applications should use the POSIX signal API (sigaction(2),
+ sigprocmask(2), etc.).
+ Affected functions:
+
+ sigset(), sighold(), sigrelse(), sigignore()
+
+ If unsure, say N.
+
+config UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL
+ bool "SYSV obsolete signal functions"
+ help
+ Use of sysv_signal() should be avoided; use sigaction(2) instead.
+
+ If unsure, say N.
+
+config UCLIBC_NTP_LEGACY
+ bool "ntp_*() aliases"
+ help
+ Provide legacy aliases for ntp functions:
+ ntp_adjtime(), ntp_gettime()
+
+ It is safe to say N here.
+
+config UCLIBC_SV4_DEPRECATED
+ bool "Enable SVr4 deprecated functions"
+ help
+ These functions are DEPRECATED in System V release 4.
+ Say N unless you desparately need one of the functions below:
+
+ ustat() [use statfs(2) in your code instead]
+
+config UCLIBC_HAS_REALTIME
+ bool "Realtime-related family of SUSv functions"
+ default y
+ help
+ These functions are part of the Timers option and need not
+ be available on all implementations.
+ Includes AIO, message-queue, scheduler, semaphore functions:
+
+ aio.h
+ mqueue.h
+ sched.h
+ semaphore.h
+
+ aio_cancel()
+ aio_error()
+ aio_fsync()
+ aio_read()
+ lio_listio()
+ aio_return()
+ aio_suspend()
+ aio_write()
+ clock_getres(), clock_gettime(), clock_settime()
+ fdatasync()
+ mlockall(), munlockall()
+ mlock(), munlock()
+ mq_close()
+ mq_getattr()
+ mq_notify()
+ mq_open()
+ mq_receive()
+ mq_send()
+ mq_setattr()
+ mq_unlink()
+ nanosleep()
+ sched_getparam()
+ sched_get_priority_max(), sched_get_priority_min()
+ sched_getscheduler()
+ sched_rr_get_interval()
+ sched_setparam()
+ sched_setscheduler()
+ sem_close()
+ sem_destroy()
+ sem_getvalue()
+ sem_init()
+ sem_open()
+ sem_post()
+ sem_trywait(), sem_wait()
+ sem_unlink()
+ sigqueue()
+ sigtimedwait(), sigwaitinfo()
+ timer_create()
+ timer_delete()
+ timer_getoverrun(), timer_gettime(), timer_settime()
+
+config UCLIBC_HAS_ADVANCED_REALTIME
+ bool "Advanced realtime-related family of SUSv functions"
+ default y
+ depends on UCLIBC_HAS_REALTIME
+ help
+ These functions are part of the Timers option and need not
+ be available on all implementations.
+
+ clock_getcpuclockid()
+ clock_nanosleep()
+ mq_timedreceive()
+ mq_timedsend()
+ posix_fadvise()
+ posix_fallocate()
+ posix_madvise()
+ posix_memalign()
+ posix_mem_offset()
+ posix_spawnattr_destroy(), posix_spawnattr_init()
+ posix_spawnattr_getflags(), posix_spawnattr_setflags()
+ posix_spawnattr_getpgroup(), posix_spawnattr_setpgroup()
+ posix_spawnattr_getschedparam(), posix_spawnattr_setschedparam()
+ posix_spawnattr_getschedpolicy(), posix_spawnattr_setschedpolicy()
+ posix_spawnattr_getsigdefault(), posix_spawnattr_setsigdefault()
+ posix_spawnattr_getsigmask(), posix_spawnattr_setsigmask()
+ posix_spawn_file_actions_addclose()
+ posix_spawn_file_actions_adddup2()
+ posix_spawn_file_actions_addopen()
+ posix_spawn_file_actions_destroy()
+ posix_spawn_file_actions_init()
+ posix_spawn()
+ posix_spawnp()
+ posix_typed_mem_get_info()
+ pthread_mutex_timedlock()
+ sem_timedwait()
+
+#config UCLIBC_HAS_TERMIOS
+# bool "termios functions"
+# default y
+# help
+# Get and set terminal attributes, line control, get and set baud
+# rate.
+# termios(), tcgetattr(), tcsetattr(), tcsendbreak(), tcdrain(),
+# tcflush(), tcflow(), cfmakeraw(), cfgetospeed(), cfgetispeed(),
+# cfsetispeed(), cfsetospeed(), cfsetspeed()
+#
+# If unsure, say Y.
+
+config UCLIBC_HAS_EPOLL
+ bool "epoll"
+ default y
+ help
+ epoll_create(), epoll_ctl(), epoll_wait() functions.
+
+config UCLIBC_HAS_XATTR
+ bool "Extended Attributes"
+ default y
+ help
+ Extended Attributes support.
+
+ setxattr()
+ lsetxattr()
+ fsetxattr()
+ getxattr()
+ lgetxattr()
+ fgetxattr()
+ listxattr()
+ llistxattr()
+ flistxattr()
+ removexattr()
+ lremovexattr()
+ fremovexattr()
+
+ Say N unless you need support for extended attributes and the
+ filesystems do actually support them.
+
+config UCLIBC_HAS_PROFILING
+ bool "Profiling support"
+ default y
+ help
+ gcc's -finstrument-functions needs these.
+
+ Most people can safely answer N.
+
+config UCLIBC_HAS_CRYPT_IMPL
+ bool "libcrypt support"
+ default y
+ help
+ libcrypt contains crypt(), setkey() and encrypt()
+
+config UCLIBC_HAS_SHA256_CRYPT_IMPL
+ bool "libcrypt SHA256 support"
+ depends on UCLIBC_HAS_CRYPT_IMPL
+ help
+ This adds support for SHA256 password hashing via the crypt() function.
+ Say N here if you do not need SHA256 crypt support.
+
+config UCLIBC_HAS_SHA512_CRYPT_IMPL
+ bool "libcrypt SHA512 support"
+ depends on UCLIBC_HAS_CRYPT_IMPL
+ help
+ This adds support for SHA512 password hashing via the crypt() function.
+ Say N here if you do not need SHA512 crypt support.
+
+config UCLIBC_HAS_CRYPT_STUB
+ bool "libcrypt stubs"
+ default y
+ depends on !UCLIBC_HAS_CRYPT_IMPL
+ help
+ Standards mandate that crypt(3) provides a stub if it is unavailable.
+ If you enable this option then stubs for
+ crypt(), setkey() and encrypt()
+ will be provided in a small libcrypt.
+
+config UCLIBC_HAS_CRYPT
+ def_bool y
+ depends on UCLIBC_HAS_CRYPT_IMPL || UCLIBC_HAS_CRYPT_STUB
+endmenu
+
+menuconfig UCLIBC_HAS_NETWORK_SUPPORT
+ bool "Networking Support"
+ default y
+ help
+ Say N here if you do not need network support.
+
+if UCLIBC_HAS_NETWORK_SUPPORT
+config UCLIBC_HAS_SOCKET
+ bool "Socket support"
+ default y
+ help
+ If you want to include support for sockets then answer Y.
+
+config UCLIBC_HAS_IPV4
+ bool "IP version 4 support"
+ default y
+ select UCLIBC_HAS_SOCKET
+ help
+ If you want to include support for the Internet Protocol
+ (IP version 4) then answer Y.
+
+ Most people will say Y.
+
+config UCLIBC_HAS_IPV6
+ bool "IP version 6 support"
+ select UCLIBC_HAS_SOCKET
+ help
+ If you want to include support for the next version of the Internet
+ Protocol (IP version 6) then answer Y.
+
+ Most people should answer N.
+
+config UCLIBC_HAS_RPC
+ bool "Remote Procedure Call (RPC) support"
+ # RPC+socket-ipvX doesn't currently work.
+ depends on UCLIBC_HAS_IPV4 || UCLIBC_HAS_IPV6
+ help
+ If you want to include RPC support, enable this. RPC is rarely used
+ for anything except for the NFS filesystem. Unless you plan to use
+ NFS, you can probably leave this set to N and save some space.
+
+ If you need to use NFS then you should answer Y.
+
+config UCLIBC_HAS_FULL_RPC
+ bool "Full RPC support"
+ depends on UCLIBC_HAS_RPC
+ default y if !HAVE_SHARED
+ help
+ Normally we enable just enough RPC support for things like rshd and
+ nfs mounts to work. If you find you need the rest of the RPC stuff,
+ then enable this option. Most people can safely answer N.
+
+config UCLIBC_HAS_REENTRANT_RPC
+ bool "Reentrant RPC support"
+ depends on UCLIBC_HAS_RPC
+ default y if !HAVE_SHARED
+ help
+ Most packages utilize the normal (non-reentrant) RPC functions, but
+ some (like exportfs from nfs-utils) need these reentrant versions.
+
+ Most people can safely answer N.
+
+config UCLIBC_USE_NETLINK
+ bool "Use netlink to query interfaces"
+ depends on UCLIBC_HAS_SOCKET
+ help
+ In newer versions of Linux (2.4.17+), support was added for querying
+ network device information via netlink rather than the old style
+ ioctl's. Most of the time, the older ioctl style is sufficient (and
+ it is smaller than netlink), but if you find that not all of your
+ devices are being returned by the if_nameindex() function, you will
+ have to use the netlink implementation.
+
+ Most people can safely answer N.
+
+config UCLIBC_SUPPORT_AI_ADDRCONFIG
+ bool "Support the AI_ADDRCONFIG flag"
+ depends on UCLIBC_USE_NETLINK
+ help
+ The implementation of AI_ADDRCONFIG is aligned with the glibc
+ implementation using netlink to query interfaces to find both
+ ipv4 and ipv6 support. This is only needed if an application uses
+ the AI_ADDRCONFIG flag.
+
+ Most people can safely answer N.
+
+config UCLIBC_HAS_BSD_RES_CLOSE
+ bool "Support res_close() (bsd-compat)"
+ help
+ Answer Y if you desperately want to support BSD compatibility in
+ the network code.
+
+ Most people will say N.
+
+config UCLIBC_HAS_COMPAT_RES_STATE
+ bool "Use compatible but bloated _res"
+ default y
+ help
+ Answer Y if you build network utilities and they muck with resolver
+ internals a lot (_res global structure). uclibc does not use most
+ of _res.XXX fields, and with this option OFF they won't even exist.
+ Which will make e.g. dig build fail.
+ Answering N saves around 400 bytes in bss.
+
+config UCLIBC_HAS_EXTRA_COMPAT_RES_STATE
+ bool "Use extra compatible but extra bloated _res"
+ help
+ Answer Y if selecting UCLIBC_HAS_COMPAT_RES_STATE is not enough.
+ As far as I can say, this should never be needed.
+
+config UCLIBC_HAS_RESOLVER_SUPPORT
+ bool "DNS resolver functions"
+ select UCLIBC_HAS_COMPAT_RES_STATE
+ depends on UCLIBC_HAS_IPV4 || UCLIBC_HAS_IPV6
+ help
+ Provide implementations for DNS resolver functions.
+ In particular, the following functions will be added to the
+ library:
+
+ ns_get16, ns_get32, ns_put16, ns_put32
+
+config UCLIBC_HAS_LIBRESOLV_STUB
+ bool "Provide libresolv stub"
+ help
+ Provide a dummy resolv library.
+
+config UCLIBC_HAS_LIBNSL_STUB
+ bool "Provide libnsl stub"
+ help
+ Provide a dummy nsl library.
+
+endif
+
+
+menu "String and Stdio Support"
+
+config UCLIBC_HAS_STRING_GENERIC_OPT
+ bool "Use faster (but larger) generic string functions"
+ default y
+ help
+ Answer Y to use the (tweaked) glibc generic string functions.
+
+ In general, they are faster (but 3-5K larger) than the base
+ uClibc string functions which are optimized solely for size.
+
+ Many people will answer Y.
+
+config UCLIBC_HAS_STRING_ARCH_OPT
+ bool "Use arch-specific assembly string functions (where available)"
+ default y
+ help
+ Answer Y to use any archtecture-specific assembly language string
+ functions available for this target plaform.
+
+ Note that assembly implementations are not available for all string
+ functions, so some generic (written in C) string functions may
+ still be used.
+
+ These are small and fast, the only reason _not_ to say Y here is
+ for debugging purposes.
+
+config UCLIBC_HAS_CTYPE_TABLES
+ bool "Use Table Versions Of 'ctype.h' Functions."
+ default y
+ help
+ Answer Y to use table versions of the 'ctype.h' functions.
+ While the non-table versions are often smaller when building
+ statically linked apps, they work only in stub locale mode.
+
+ Most people will answer Y.
+
+config UCLIBC_HAS_CTYPE_SIGNED
+ bool "Support Signed Characters In 'ctype.h' Functions."
+ depends on UCLIBC_HAS_CTYPE_TABLES
+ default y
+ help
+ Answer Y to enable support for passing signed char values to
+ the 'ctype.h' functions. ANSI/ISO C99 and SUSv3 specify that
+ these functions are only defined for unsigned char values and
+ EOF. However, glibc allows negative signed char values as well
+ in order to support 'broken old programs'.
+
+ Most people will answer Y.
+
+choice
+ prompt "ctype argument checking"
+ depends on UCLIBC_HAS_CTYPE_TABLES
+ default UCLIBC_HAS_CTYPE_UNSAFE
+ help
+ Please select the invalid arg behavior you want for the 'ctype'
+ functions.
+
+ The 'ctype' functions are now implemented using table lookups, with
+ the arg being the index. This can result in incorrect memory accesses
+ or even segfaults for args outside of the allowed range.
+
+ NOTE: This only affects the 'ctype' _functions_. It does not affect
+ the macro implementations.
+
+config UCLIBC_HAS_CTYPE_UNSAFE
+ bool "Do not check -- unsafe"
+
+config UCLIBC_HAS_CTYPE_CHECKED
+ bool "Detect and handle appropriately"
+
+config UCLIBC_HAS_CTYPE_ENFORCED
+ bool "Issue a diagnostic and abort()"
+
+endchoice
+
+
+config UCLIBC_HAS_WCHAR
+ bool "Wide Character Support"
+ help
+ Answer Y to enable wide character support. This will make uClibc
+ much larger. It is also currently required for locale support.
+
+ Most people will answer N.
+
+config UCLIBC_HAS_LOCALE
+ bool "Locale Support"
+ select UCLIBC_HAS_WCHAR
+ select UCLIBC_HAS_CTYPE_TABLES
+ help
+ uClibc now has full ANSI/ISO C99 locale support (except for
+ wcsftime() and collating items in regex). Be aware that enabling
+ this option will make uClibc much larger.
+
+ Enabling UCLIBC_HAS_LOCALE with the default set of supported locales
+ (169 UTF-8 locales, and 144 locales for other codesets) will enlarge
+ uClibc by around 300k. You can reduce this size by building your own
+ custom set of locate data (see extra/locale/LOCALES for details).
+
+ uClibc's locale support is still under development. For example,
+ codesets using shift states are not currently supported. Support is
+ planned in the next iteration of locale support.
+
+ Answer Y to enable locale support. Most people will answer N.
+
+choice
+
+prompt "Locale data"
+ depends on UCLIBC_HAS_LOCALE
+ default UCLIBC_BUILD_ALL_LOCALE
+
+config UCLIBC_BUILD_ALL_LOCALE
+ bool "All locales"
+ depends on UCLIBC_HAS_LOCALE
+ help
+ This builds all the locales that are available on your
+ host-box.
+
+config UCLIBC_BUILD_MINIMAL_LOCALE
+ bool "Only selected locales"
+ depends on UCLIBC_HAS_LOCALE
+ help
+ If you do not need all locales that are available on your
+ host-box, then set this to 'Y'.
+
+config UCLIBC_PREGENERATED_LOCALE_DATA
+ bool "Use Pre-generated Locale Data"
+ depends on UCLIBC_HAS_LOCALE
+ help
+ Use pre-built locale data.
+
+ Note that these pregenerated locales are sensitive to your
+ target architecture (endianess, bitcount).
+
+ Saying N here is highly recommended.
+
+endchoice
+
+config UCLIBC_BUILD_MINIMAL_LOCALES
+ string "locales to use"
+ depends on UCLIBC_BUILD_MINIMAL_LOCALE
+ default "en_US"
+ help
+ Space separated list of locales to use.
+
+ E.g.:
+ en_US en_GB de_AT
+ default:
+ en_US
+
+config UCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA
+ bool "Automagically Download the Pre-generated Locale Data (if necessary)"
+ depends on UCLIBC_PREGENERATED_LOCALE_DATA
+ help
+ If you would like the build process to use 'wget' to automatically
+ download the pregenerated locale data, enable this option. Otherwise
+ you will need to obtain the locale data yourself from:
+ http://www.uclibc.org/downloads/uClibc-locale-*.tgz
+ and place the uClibc-locale-*.tgz tarball in the extra/locale/
+ directory.
+
+ Note that the use of pregenerated locale data is discouraged.
+
+config UCLIBC_HAS_XLOCALE
+ bool "Extended Locale Support (experimental/incomplete)"
+ depends on UCLIBC_HAS_LOCALE
+ help
+ Answer Y to enable extended locale support similar to that provided
+ by glibc. This is primarily intended to support libstd++
+ functionality.
+ However, it also allows thread-specific locale selection via
+ uselocale().
+
+ Most people will answer N.
+
+config UCLIBC_HAS_HEXADECIMAL_FLOATS
+ bool "Support hexadecimal float notation"
+ depends on UCLIBC_HAS_CTYPE_TABLES
+ depends on UCLIBC_HAS_FLOATS
+ help
+ Answer Y to enable support for hexadecimal float notation in the
+ (wchar and) char string to floating point conversion functions, as
+ well as support for the %a and %A conversion specifiers in the
+ *printf() and *scanf() functions.
+
+ Most people will answer N.
+
+config UCLIBC_HAS_GLIBC_DIGIT_GROUPING
+ bool "Support glibc's \"'\" flag for allowing locale-specific digit grouping"
+ depends on UCLIBC_HAS_LOCALE
+ depends on UCLIBC_HAS_FLOATS
+ help
+ Answer Y to enable support for glibc's \"'\" flag for allowing
+ locale-specific digit grouping in base 10 integer conversions and
+ appropriate floating point conversions in the *printf() and *scanf()
+ functions.
+
+ Most people will answer N.
+
+config UCLIBC_HAS_SCANF_LENIENT_DIGIT_GROUPING
+ bool "Do not require digit grouping when the \"'\" flag is specified"
+ depends on UCLIBC_HAS_GLIBC_DIGIT_GROUPING
+ default y
+ help
+ Answer Y to make digit grouping optional when the \"'\" flag is
+ specified.
+ This is the standard glibc behavior. If the initial string of digits
+ exceeds the maximum group number, the input will be treated as a
+ normal non-grouped number.
+
+ Most people will answer N.
+
+config UCLIBC_HAS_GLIBC_CUSTOM_PRINTF
+ bool "Support glibc's register_printf_function() (glibc-compat)"
+ depends on !USE_OLD_VFPRINTF
+ help
+ Answer Y to support glibc's register_printf_function() to allow an
+ application to add its own printf conversion specifiers.
+ parse_printf_format() is also enabled.
+
+ NOTE: Limits the number or registered specifiers to 10.
+ NOTE: Requires new conversion specifiers to be ASCII
+ characters (0-0x7f). This is to avoid problems with processing
+ format strings in locales with different multibyte conversions.
+
+ Most people will answer N.
+
+config USE_OLD_VFPRINTF
+ bool "Use the old vfprintf implementation"
+ depends on !UCLIBC_HAS_WCHAR
+ help
+ Set to true to use the old vfprintf instead of the new. This is
+ roughly C89 compliant with some extensions, and is much smaller.
+ However, it does not support wide chars, positional args, or glibc
+ custom printf specifiers.
+
+ Most people will answer N.
+
+config UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS
+ int "Maximum number of positional args. Either 0 or >= 9."
+ depends on !USE_OLD_VFPRINTF
+ default 9
+ help
+ Set the maximum number of positional args supported by the
+ printf/scanf functions. The Single Unix Specification Version 3
+ requires a minimum value of 9. Setting this to a value lower than
+ 9 will disable positional arg support and cause the NL_ARGMAX macro
+ in limits.h to be #undef'd.
+
+ WARNING! The workspace to support positional args is currently
+ allocated on the stack. You probably don't want to set
+ this to too high a value.
+
+ Most people will answer 9.
+
+
+config UCLIBC_HAS_SCANF_GLIBC_A_FLAG
+ bool "Support glibc's 'a' flag for scanf string conversions (not implemented)"
+ help
+ NOTE!!! Currently Not Implemented!!! Just A Place Holder!! NOTE!!!
+ NOTE!!! Conflicts with an ANSI/ISO C99 scanf flag!! NOTE!!!
+
+ Answer Y to enable support for glibc's 'a' flag for the scanf string
+ conversions '%s', '%[', '%ls', '%l[', and '%S'. This is used to
+ auto-allocate sufficient memory to hold the data retrieved.
+
+ Most people will answer N.
+
+choice
+ prompt "Stdio buffer size"
+ default UCLIBC_HAS_STDIO_BUFSIZ_4096
+ help
+ Please select a value for BUFSIZ. This will be used by the
+ stdio subsystem as the default buffer size for a file, and
+ affects fopen(), setvbuf(), etc.
+
+ NOTE: Setting this to 'none' will disable buffering completely.
+ However, BUFSIZ will still be defined in stdio.h as 256 because
+ many applications use this value.
+
+config UCLIBC_HAS_STDIO_BUFSIZ_NONE
+ bool "none (WARNING - BUFSIZ will be 256 in stdio.h)"
+ depends on !UCLIBC_HAS_WCHAR
+
+config UCLIBC_HAS_STDIO_BUFSIZ_256
+ bool "256 (minimum ANSI/ISO C99 value)"
+
+config UCLIBC_HAS_STDIO_BUFSIZ_512
+ bool "512"
+
+config UCLIBC_HAS_STDIO_BUFSIZ_1024
+ bool "1024"
+
+config UCLIBC_HAS_STDIO_BUFSIZ_2048
+ bool "2048"
+
+config UCLIBC_HAS_STDIO_BUFSIZ_4096
+ bool "4096"
+
+config UCLIBC_HAS_STDIO_BUFSIZ_8192
+ bool "8192"
+
+# If you add more choices, you will need to update uClibc_stdio.h.
+
+endchoice
+
+choice
+ prompt "Stdio builtin buffer size (uClibc-specific)"
+ depends on !UCLIBC_HAS_STDIO_BUFSIZ_NONE
+ default UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE
+ help
+ When a FILE is created with fopen(), an attempt is made to allocate
+ a BUFSIZ buffer for it. If the allocation fails, fopen() will still
+ succeed but the FILE will be unbuffered.
+
+ This option adds a small amount of space to each FILE to act as an
+ emergency buffer in the event of a buffer allocation failure.
+
+ Most people will answer None.
+
+config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_NONE
+ bool "None"
+
+config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_4
+ bool "4"
+
+config UCLIBC_HAS_STDIO_BUILTIN_BUFFER_8
+ bool "8"
+
+# If you add more choices, you will need to update uClibc_stdio.h.
+
+endchoice
+
+config UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT
+ bool "Attempt to shutdown stdio subsystem when abort() is called."
+ help
+ ANSI/ISO C99 requires abort() to be asyn-signal-safe. So there was
+ a behavioral change made in SUSv3. Previously, abort() was required
+ to have the affect of fclose() on all open streams. The wording has
+ been changed to "may" from "shall".
+
+ Most people will answer N.
+
+config UCLIBC_HAS_STDIO_GETC_MACRO
+ bool "Provide a macro version of getc()"
+ depends on !UCLIBC_HAS_STDIO_BUFSIZ_NONE
+ default y
+ help
+ Provide a macro version of getc().
+
+ Most people will answer Y.
+
+config UCLIBC_HAS_STDIO_PUTC_MACRO
+ bool "Provide a macro version of putc()"
+ depends on !UCLIBC_HAS_STDIO_BUFSIZ_NONE
+ default y
+ help
+ Provide a macro version of putc().
+
+ Most people will answer Y.
+
+config UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION
+ bool "Support auto-r/w transition"
+ default y
+ help
+ Answer Y to enable the stdio subsystem to automaticly transition
+ between reading and writing. This relaxes the ANSI/ISO C99
+ requirement:
+
+ When a file is opened with update mode ('+' as the second or third
+ character in the list of mode argument values), both input and output
+ may be performed on the associated stream. However, output shall not
+ be directly followed by input without an intervening call to the
+ fflush function or to a file positioning function (fseek, fsetpos,
+ or rewind), and input shall not be directly followed by output without
+ an intervening call to a file positioning function, unless the input
+ operation encounters endoffile.
+
+ Most people will answer Y.
+
+config UCLIBC_HAS_FOPEN_LARGEFILE_MODE
+ bool "Support an fopen() 'F' flag for large file mode (uClibc-specific)"
+ depends on UCLIBC_HAS_LFS
+ help
+ Answer Y to enable a uClibc-specific extension to allow passing an
+ additional 'F' flag in the mode string for fopen() to specify that
+ the file should be open()ed with the O_LARGEFILE flag set.
+
+ Most people will answer N.
+
+config UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE
+ bool "Support an fopen() 'x' flag for exclusive mode (glibc-compat)"
+ help
+ Answer Y to support a glibc extension to allow passing
+ additional 'x' flag in the mode string for fopen() to specify that
+ the file should be open()ed with the O_EXCL flag set.
+
+ Most people will answer N.
+
+config UCLIBC_HAS_FOPEN_CLOSEEXEC_MODE
+ bool "Support an fopen() 'e' flag for close-on-exec mode (glibc-compat)"
+ help
+ Answer Y to support a glibc extension to allow passing
+ additional 'e' flag in the mode string for fopen() to specify that
+ the file should be open()ed with the O_CLOEXEC flag set.
+
+ Most people will answer N.
+
+config UCLIBC_HAS_GLIBC_CUSTOM_STREAMS
+ bool "Support fmemopen(), open_memstream(), and fopencookie() (glibc-compat)"
+ help
+ Answer Y to support the glibc 'custom stream' extension functions
+ fmemopen(), open_memstream(), and fopencookie().
+
+ NOTE: There are some minor differences regarding seeking behavior.
+
+ Most people will answer N.
+
+config UCLIBC_HAS_PRINTF_M_SPEC
+ bool "Support the '%m' specifier in printf format strings (glibc-compat)"
+ help
+ Answer Y to support a glibc extension to interpret '%m' in printf
+ format strings as an instruction to output the error message string
+ (as generated by strerror) corresponding to the current value of
+ 'errno'.
+
+ Most people will answer N.
+
+config UCLIBC_HAS_ERRNO_MESSAGES
+ bool "Include the errno message text in the library"
+ default y
+ help
+ Answer Y if you want to include the errno message text in the
+ library. This adds about 3K to the library, but enables strerror()
+ to generate text other than 'Unknown error <number>'.
+
+ Most people will answer Y.
+
+config UCLIBC_HAS_SYS_ERRLIST
+ bool "Support sys_errlist[] (obsolete-compat)"
+ depends on UCLIBC_HAS_ERRNO_MESSAGES
+ help
+ Answer Y if you want to support the obsolete sys_errlist[].
+ This adds about 0.5k to the library, except for the mips
+ arch where it adds over 4K.
+
+ WARNING! In the future, support for sys_errlist[] may be unavailable
+ in at least some configurations. In fact, it may be removed
+ altogether.
+
+ Most people will answer N.
+
+ Application writers: use the strerror(3) function.
+
+config UCLIBC_HAS_SIGNUM_MESSAGES
+ bool "Include the signum message text in the library"
+ default y
+ help
+ Answer Y if you want to include the signum message text in the
+ library. This adds about 0.5K to the library, but enables strsignal()
+ to generate text other than 'Unknown signal <number>'.
+
+ Most people will answer Y.
+
+config UCLIBC_HAS_SYS_SIGLIST
+ bool "Support sys_siglist[] (bsd-compat)"
+ depends on UCLIBC_HAS_SIGNUM_MESSAGES
+ help
+ Answer Y if you want to support sys_siglist[].
+
+ WARNING! In the future, support for sys_siglist[] may be unavailable
+ in at least some configurations. In fact, it may be removed
+ altogether.
+
+ Most people will answer N.
+
+config UCLIBC_HAS_GETTEXT_AWARENESS
+ bool "Include gettext awareness"
+ depends on UCLIBC_HAS_LOCALE && UCLIBC_MJN3_ONLY
+ help
+ NOTE!!! Not yet integrated with strerror and strsignal. NOTE!!!
+
+ Answer Y if you want to include weak stub gettext support and
+ make the *strerror*() and strsignal() functions gettext-aware.
+
+ Currently, to get functional gettext functionality you will need
+ to use gnu gettext.
+
+ Most people will answer N.
+
+config UCLIBC_HAS_GNU_GETOPT
+ bool "Support gnu getopt"
+ default y
+ help
+ Answer Y if you want to include full gnu getopt() instead of a
+ (much smaller) SUSv3 compatible getopt().
+
+ Most people will answer Y.
+
+config UCLIBC_HAS_STDIO_FUTEXES
+ bool "Use futexes for multithreaded I/O locking"
+ depends on UCLIBC_HAS_THREADS_NATIVE
+ help
+ If you want to compile uClibc to use futexes for low-level
+ I/O locking, answer Y. Otherwise, answer N.
+
+config UCLIBC_HAS_GETOPT_LONG
+ bool "Support getopt_long/getopt_long_only"
+ depends on !UCLIBC_HAS_GNU_GETOPT
+ default y
+ help
+ Answer Y if you want to include getopt_long[_only() used by many
+ apps, even busybox.
+
+ Most people will answer Y.
+
+config UCLIBC_HAS_GNU_GETSUBOPT
+ bool "Support glibc getsubopt"
+ default y
+ help
+ Answer Y if you want to include glibc getsubopt() instead of a
+ smaller SUSv3 compatible getsubopt().
+
+ Most people will answer Y.
+endmenu
+
+
+menu "Big and Tall"
+
+config UCLIBC_HAS_REGEX
+ bool "Regular Expression Support"
+ default y
+ help
+ POSIX regular expression code is really big -- 53k all by itself.
+ If you don't use regular expressions, turn this off and save space.
+ Of course, if you only statically link, leave this on, since it will
+ only be included in your apps if you use regular expressions.
+
+config UCLIBC_HAS_REGEX_OLD
+ bool "Use the older (stable) regular expression code"
+ depends on UCLIBC_HAS_REGEX
+ default y
+ help
+ There are two versions of regex. The older (stable) version has
+ been in uClibc for quite a long time but hasn't seen too many
+ updates. It also has some known issues when dealing with uncommon
+ corner cases and multibyte/unicode strings. However, it is quite
+ a bit smaller than the newer version.
+
+ If the older version has worked for you and you don't need unicode
+ support, then stick with the old version (and say Y here).
+ Otherwise, you should use the new version (and say N here).
+
+config UCLIBC_HAS_FNMATCH
+ bool "fnmatch Support"
+ default y
+ help
+ POSIX fnmatch.
+
+config UCLIBC_HAS_FNMATCH_OLD
+ bool "Use the older (stable) fnmatch code"
+ depends on UCLIBC_HAS_FNMATCH
+ default y
+ help
+ There are two versions of fnmatch. The older (stable) version has
+ been in uClibc for quite a long time but hasn't seen too many
+ updates. It also has some known issues when dealing with uncommon
+ corner cases and multibyte/unicode strings. However, it is quite
+ a bit smaller than the newer version.
+
+ If the older version has worked for you and you don't need unicode
+ support, then stick with the old version (and say Y here).
+ Otherwise, you should use the new version (and say N here).
+
+config UCLIBC_HAS_WORDEXP
+ bool "Support the wordexp() interface"
+ depends on UCLIBC_HAS_GLOB
+ help
+ The SuSv3 wordexp() interface performs word expansions per the Shell
+ and Utilities volume of IEEE Std 1003.1-2001, Section 2.6. It is
+ intended for use by applications that want to implement all of the
+ standard Bourne shell expansions on input data.
+
+ This interface is rarely used, and very large. Unless you have a
+ pressing need for wordexp(), you should probably answer N.
+
+config UCLIBC_HAS_NFTW
+ bool "Support the nftw() interface"
+ help
+ The SuSv3 nftw() interface is used to recursively descend
+ directory paths while repeatedly calling a function.
+
+ This interface is rarely used, and adds around 4.5k. Unless you have
+ a pressing need for nftw(), you should probably answer N.
+
+config UCLIBC_HAS_FTW
+ bool "Support the ftw() interface (SUSv4-obsolete)"
+ depends on UCLIBC_SUSV4_LEGACY
+ help
+ The SuSv3 ftw() interface is used to recursively descend
+ directory paths while repeatedly calling a function.
+
+ This interface is rarely used, and adds around 4.5k. Unless you have
+ a pressing need for ftw(), you should probably answer N.
+
+config UCLIBC_HAS_FTS
+ bool "Support the fts() interface (bsd-compat)"
+ help
+ The fts functions are provided for traversing UNIX file hierarchies.
+
+ This interface is currently used by the elfutils and adds
+ around 7.5k.
+ You should port your application to use the POSIX nftw()
+ interface.
+
+ Unless you need to build/use elfutils, you should prolly answer N.
+
+config UCLIBC_HAS_GLOB
+ bool "Support the glob() interface"
+ depends on UCLIBC_HAS_FNMATCH
+ default y
+ help
+
+ The glob interface is somewhat large (weighing in at about 2,5k). It
+ is used fairly often, but is an option since people wanting to go for
+ absolute minimum size may wish to omit it.
+
+ Most people will answer Y.
+
+config UCLIBC_HAS_GNU_GLOB
+ bool "Support gnu glob() interface"
+ depends on UCLIBC_HAS_GLOB
+ help
+ The gnu glob interface is somewhat larger (weighing in at about 4,2k)
+ than it's SuSv3 counterpart (and is out of date). It is an old copy
+ from glibc and does not support all the GNU specific options.
+
+ Answer Y if you want to include full gnu glob() instead of the smaller
+ SUSv3 compatible glob().
+
+ Most people will answer N.
+
+config UCLIBC_HAS_UTMPX
+ bool "utmpx based support for tracking login/logouts to/from the system"
+ help
+ Answer y to enable support for accessing user accounting database.
+ It can be used to track all login/logout to the system.
+
+ If unsure, just answer N.
+
+endmenu
+
+
+
+
+menu "Library Installation Options"
+
+config RUNTIME_PREFIX
+ string "uClibc runtime library directory"
+ default "/usr/$(TARGET_ARCH)-linux-uclibc/"
+ help
+ RUNTIME_PREFIX is the directory into which the uClibc runtime
+ libraries will be installed. The result will look something
+ like the following:
+ $(RUNTIME_PREFIX)/
+ lib/ <contains all runtime libraries>
+ usr/bin/ldd <the ldd utility program>
+ sbin/ldconfig <the ldconfig utility program>
+ This value is used by the 'make install' Makefile target. Since this
+ directory is compiled into the shared library loader, you will need to
+ recompile uClibc if you change this value...
+
+ For a typical target system this should be set to "/", such that
+ 'make install' will install /lib/libuClibc-<VERSION>.so
+
+config DEVEL_PREFIX
+ string "uClibc development environment directory"
+ default "/usr/$(TARGET_ARCH)-linux-uclibc/usr/"
+ help
+ DEVEL_PREFIX is the directory into which the uClibc development
+ environment will be installed. The result will look something
+ like the following:
+ $(DEVEL_PREFIX)/
+ lib/ <contains static libs>
+ include/ <Where all the header files go>
+ This value is used by the 'make install' Makefile target when
+ installing a uClibc development environment.
+
+ For a typical target system this should be set to "/usr", such that
+ 'make install' will install /usr/include/<header files>.
+
+config MULTILIB_DIR
+ string "library path component"
+ default "lib"
+ help
+ Path component where libraries reside.
+
+ For a typical target system this should be set to "lib", such that
+ 'make install' will install libraries to "/lib" and "/usr/lib"
+ respectively
+ DEVEL_PREFIX/MULTILIB_DIR
+ RUNTIME_PREFIX/MULTILIB_DIR
+
+ Other settings may include "lib32" or "lib64".
+
+config HARDWIRED_ABSPATH
+ bool "Hardwire absolute paths into linker scripts"
+ default y
+ help
+ This prepends absolute paths to the libraries mentioned in linker
+ scripts such as libc.so.
+
+ This is a build time optimization. It has no impact on dynamic
+ linking at runtime, which doesn't use linker scripts.
+
+ You must disable this to use uClibc with old non-sysroot toolchains,
+ such as the prebuilt binary cross compilers at:
+ http://uclibc.org/downloads/binaries
+
+ The amount of time saved by this optimization is actually too small to
+ measure. The linker just had to search the library path to find the
+ linker script, so the dentries are cache hot if it has to search the
+ same path again. But it's what glibc does, so we do it too.
+
+endmenu
+
+
+menu "Security options"
+
+config UCLIBC_BUILD_PIE
+ bool "Build utilities as ET_DYN/PIE executables"
+ depends on HAVE_SHARED
+ depends on TARGET_arm || TARGET_frv || TARGET_i386 || TARGET_mips || TARGET_powerpc
+ select FORCE_SHAREABLE_TEXT_SEGMENTS
+ help
+ If you answer Y here, ldd and iconv are built as ET_DYN/PIE
+ executables.
+
+ It requires gcc-3.4 and binutils-2.15 (for arm 2.16) or later.
+ More about ET_DYN/PIE binaries on <http://pax.grsecurity.net/> .
+
+ WARNING: This option also enables FORCE_SHAREABLE_TEXT_SEGMENTS, so
+ all libraries have to be built with -fPIC or -fpic, and all
+ assembler functions must be written as position independent
+ code (PIC).
+
+config UCLIBC_HAS_ARC4RANDOM
+ bool "Include the arc4random() function"
+ help
+ Answer Y to support the OpenBSD-like arc4random() function. This
+ function picks a random number between 0 and N, and will always return
+ something even if the random driver is dead. If urandom fails then
+ gettimeofday(2) will be used as the random seed. This function is
+ designed to be more dependable than invoking /dev/urandom directly.
+ OpenSSL and OpenNTPD currently support this function.
+
+ Most people will answer N.
+
+config HAVE_NO_SSP
+ bool
+
+config UCLIBC_HAS_SSP
+ bool "Support for GCC stack smashing protector"
+ depends on !HAVE_NO_SSP
+ help
+ Add code to support GCC's -fstack-protector[-all] option to uClibc.
+ This requires GCC 4.1 or newer. GCC does not have to provide libssp,
+ the needed functions are added to ldso/libc instead.
+
+ GCC's stack protector is a reimplementation of IBM's propolice.
+ See http://www.trl.ibm.com/projects/security/ssp/ and
+ http://www.linuxfromscratch.org/hints/downloads/files/ssp.txt
+ for details.
+
+ Note that NOEXECSTACK on a kernel with address space randomization
+ is generally sufficient to prevent most buffer overflow exploits
+ without increasing code size. This option essentially adds debugging
+ code to catch them.
+
+ Most people will answer N.
+
+config UCLIBC_HAS_SSP_COMPAT
+ bool "Support for gcc-3.x propolice smashing stack protector"
+ depends on UCLIBC_HAS_SSP
+ help
+ Add gcc-3.x propolice smashing stack protector to the library.
+
+ This requires a patched version of GCC, supporting the
+ -fstack-protector[-all] options, with the __guard and
+ __stack_smash_handler functions removed from libgcc.
+ These functions are added to ldso/libc instead.
+
+ More information at:
+ <http://www.research.ibm.com/trl/projects/security/ssp/>
+
+ Most people will answer N.
+
+config SSP_QUICK_CANARY
+ bool "Use simple guard values without accessing /dev/urandom"
+ depends on UCLIBC_HAS_SSP
+ help
+ Use gettimeofday(2) to define the __guard without accessing
+ /dev/urandom.
+ WARNING: This makes smashing stack protector vulnerable to timing
+ attacks.
+ Most people will answer N.
+
+choice
+ prompt "Propolice protection blocking signal"
+ depends on UCLIBC_HAS_SSP
+ default PROPOLICE_BLOCK_ABRT if ! DODEBUG
+ default PROPOLICE_BLOCK_SEGV if DODEBUG
+ help
+ "abort" use SIGABRT to block offending programs.
+ This is the default implementation.
+
+ "segfault" use SIGSEGV to block offending programs.
+ Use this for debugging.
+
+ If unsure, answer "abort".
+
+config PROPOLICE_BLOCK_ABRT
+ bool "abort"
+
+config PROPOLICE_BLOCK_SEGV
+ bool "segfault"
+
+endchoice
+
+config UCLIBC_BUILD_SSP
+ bool "Build uClibc with -fstack-protector"
+ depends on UCLIBC_HAS_SSP
+ help
+ Build all uClibc libraries and executables with -fstack-protector,
+ adding extra stack overflow checking to most uClibc functions.
+
+config UCLIBC_BUILD_RELRO
+ bool "Build uClibc with linker option -z RELRO"
+ depends on HAVE_SHARED
+ default y
+ help
+ Build all libraries and executables with "ld -z relro".
+
+ This tells the linker to mark chunks of an executable or shared
+ library read-only after applying dynamic relocations. (This comes
+ up when a global const variable is initialized to the address of a
+ function or the value of another global variable.)
+
+ This is a fairly obscure option the ld man page doesn't even bother
+ to document properly. It's a security paranoia issue that's more
+ likely to consume memory (by allocating an extra page) rather than
+ save it.
+
+ This is explained in more depth at
+ http://www.airs.com/blog/archives/189
+
+ Nobody is likely to care whether you say Y or N here.
+
+config UCLIBC_BUILD_NOW
+ bool "Build uClibc with linker option -z NOW"
+ depends on HAVE_SHARED
+ help
+ Build all libraries and executables with "ld -z now".
+
+ This tells the linker to resolve all symbols when the library is
+ first loaded, rather than when each function is first called. This
+ increases start-up latency by a few microseconds and may do
+ unnecessary work (resolving symbols that are never used), but the
+ realtime people like it for making microbenchmark timings slightly
+ more predictable and in some cases it can be slightly faster due to
+ CPU cache behavior (not having to fault the linker back in to do
+ lazy symbol resolution).
+
+ Most people can't tell the difference between selecting Y or N here.
+
+config UCLIBC_BUILD_NOEXECSTACK
+ bool "Build uClibc with noexecstack marking"
+ default y
+ help
+ Mark all assembler files as noexecstack, which will mark uClibc
+ as not requiring an executable stack. (This doesn't prevent other
+ files you link against from claiming to need an executable stack, it
+ just won't cause uClibc to request it unnecessarily.)
+
+ This is a security thing to make buffer overflows harder to exploit.
+ By itself, it's kind of useless, as Linus Torvalds explained in 1998:
+ http://old.lwn.net/1998/0806/a/linus-noexec.html
+
+ It only actually provides any security when combined with address
+ space randomization, explained here: http://lwn.net/Articles/121845/
+
+ Address space randomization is on by default in current linux
+ kernels (although it can be disabled using the option
+ CONFIG_COMPAT_BRK).
+
+ You should probably say Y.
+
+endmenu
+
+menu "Development/debugging options"
+
+config CROSS_COMPILER_PREFIX
+ string "Cross-compiling toolchain prefix"
+ default ""
+ help
+ The prefix used to execute your cross-compiling toolchain. For
+ example, if you run 'arm-linux-uclibc-gcc' to compile something,
+ then enter 'arm-linux-uclibc-' here.
+
+config UCLIBC_EXTRA_CFLAGS
+ string "Extra CFLAGS"
+ default ""
+ help
+ Add any additional CFLAGS to be used to build uClibc.
+
+config UCLIBC_EXTRA_LDFLAGS
+ string "Extra LDFLAGS"
+ default ""
+ help
+ Add any additional LDFLAGS to be used to build uClibc.
+
+config DODEBUG
+ bool "Enable debugging symbols"
+ select EXTRA_WARNINGS
+ help
+ Say Y here if you wish to compile uClibc with debugging symbols.
+ This will allow you to use a debugger to examine uClibc internals
+ while applications are running. This increases the size of the
+ library considerably and should only be used when doing development.
+ If you are doing development and want to debug uClibc, answer Y.
+
+ Otherwise, answer N.
+
+config DODEBUG_PT
+ bool "Build pthread with debugging output"
+ depends on UCLIBC_HAS_THREADS && LINUXTHREADS_OLD
+ help
+ Enable debug output in libpthread. This is only useful when doing
+ development in libpthread itself.
+
+ Otherwise, answer N.
+
+config DOSTRIP
+ bool "Strip libraries and executables"
+ default y
+ depends on !DODEBUG
+ help
+ Say Y here if you do wish to strip all uClibc libraries and
+ executables. No stripping increases the size of the binaries
+ considerably, but makes it possible to debug uClibc libraries.
+ Most people will answer Y.
+
+config DOASSERTS
+ bool "Build with run-time assertion testing"
+ help
+ Say Y here to include runtime assertion tests.
+ This enables runtime assertion testing in some code, which can
+ increase the size of the library and incur runtime overhead.
+ If you say N, then this testing will be disabled.
+
+config SUPPORT_LD_DEBUG
+ bool "Build the shared library loader with debugging support"
+ depends on HAVE_SHARED
+ help
+ Answer Y here to enable all the extra code needed to debug the uClibc
+ native shared library loader. The level of debugging noise that is
+ generated depends on the LD_DEBUG environment variable... Just set
+ LD_DEBUG to something like: 'LD_DEBUG=token1,token2,.. prog' to
+ debug your application. Diagnostic messages will then be printed to
+ the stderr.
+
+ For now these debugging tokens are available:
+ detail provide more information for some options
+ move display copy processing
+ symbols display symbol table processing
+ reloc display relocation processing; detail shows the
+ relocation patch
+ nofixups never fixes up jump relocations
+ bindings displays the resolve processing (function calls);
+ detail shows the relocation patch
+ all Enable everything!
+
+ The additional environment variable:
+ LD_DEBUG_OUTPUT=file
+ redirects the diagnostics to an output file created using
+ the specified name and the process id as a suffix.
+
+ An excellent start is simply:
+ $ LD_DEBUG=binding,move,symbols,reloc,detail ./appname
+ or to log everything to a file named 'logfile', try this
+ $ LD_DEBUG=all LD_DEBUG_OUTPUT=logfile ./appname
+
+ If you are doing development and want to debug uClibc's shared library
+ loader, answer Y. Mere mortals answer N.
+
+config SUPPORT_LD_DEBUG_EARLY
+ bool "Build the shared library loader with early debugging support"
+ depends on HAVE_SHARED
+ help
+ Answer Y here to if you find the uClibc shared library loader is
+ crashing or otherwise not working very early on. This is typical
+ only when starting a new port when you haven't figured out how to
+ properly get the values for argc, argv, environ, etc. This method
+ allows a degree of visibility into the very early shared library
+ loader initialization process. If you are doing development and want
+ to debug the uClibc shared library loader early initialization,
+ answer Y. Mere mortals answer N.
+
+config UCLIBC_MALLOC_DEBUGGING
+ bool "Build malloc with debugging support"
+ depends on MALLOC || MALLOC_STANDARD
+ help
+ Answer Y here to compile extra debugging support code into malloc.
+ Malloc debugging output may then be enabled at runtime using the
+ MALLOC_DEBUG environment variable.
+
+ The value of MALLOC_DEBUG should be an integer, which is interpreted
+ as a bitmask with the following bits:
+ 1 - do extra consistency checking
+ 2 - output messages for malloc/free calls and OS
+ allocation calls
+ 4 - output messages for the `MMB' layer
+ 8 - output messages for internal malloc heap manipulation
+ calls
+
+ Because this increases the size of malloc appreciably (due to strings
+ etc), you should say N unless you need to debug a malloc problem.
+
+config UCLIBC_HAS_BACKTRACE
+ bool "Add support for application self-debugging"
+ depends on HAVE_SHARED
+ help
+ Answer Y here to compile support for application self-debugging, by adding
+ a new shared object "libubacktrace.so" that provides the following new
+ functions:
+ backtrace, backtrace_symbols, backtrace_symbols_fd
+
+ The backtrace functionality is currently supported on SH platform, and it
+ based on dwarf2 informations to properly work, so any application that
+ want to use backtrace needs to be built with -fexceptions flag.
+
+ The symbol names may be unavailable without the use of special linker
+ options. For systems using the GNU linker, it is necessary to use the
+ -rdynamic linker option too. Note that names of "static" functions are not
+ exposed, and won't be available in the backtrace.
+
+config WARNINGS
+ string "Compiler Warnings"
+ default "-Wall"
+ help
+ Set this to the set of compiler warnings you wish to see while compiling.
+
+config EXTRA_WARNINGS
+ bool "Enable extra annoying warnings"
+ help
+ If you wish to build with extra warnings enabled, say Y here.
+
+config DOMULTI
+ bool "Compile all sources at once into an object"
+ help
+ Set this to compile all sources at once into an object (IMA).
+ This mode of compilation uses alot of memory but may produce
+ smaller binaries.
+
+ Note that you need a very recent GCC for this to work, like
+ gcc >= 4.3 plus eventually some patches.
+
+ If unsure, keep the default of N.
+
+config UCLIBC_MJN3_ONLY
+ bool "Manuel's hidden warnings"
+ help
+ Answer Y here to see all Manuel's personal notes, warnings, and todos.
+
+ Most people will answer N.
+
+endmenu
diff --git a/ap/build/uClibc/extra/Configs/Config.in.arch b/ap/build/uClibc/extra/Configs/Config.in.arch
new file mode 100644
index 0000000..ec541f4
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.in.arch
@@ -0,0 +1,219 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+
+#
+# Binary format
+#
+if !ARCH_USE_MMU
+choice
+ prompt "Target File Format"
+config UCLIBC_FORMAT_ELF
+ bool "ELF"
+ depends on ARCH_USE_MMU
+config UCLIBC_FORMAT_FDPIC_ELF
+ bool "FDPIC ELF"
+ depends on !ARCH_USE_MMU && (TARGET_bfin || TARGET_frv)
+ select DOPIC
+config UCLIBC_FORMAT_DSBT_ELF
+ bool "DBST ELF"
+ depends on !ARCH_USE_MMU && TARGET_c6x
+ select DOPIC
+config UCLIBC_FORMAT_FLAT
+ bool "STATIC FLAT"
+ depends on !ARCH_USE_MMU
+ select ARCH_HAS_NO_LDSO
+config UCLIBC_FORMAT_FLAT_SEP_DATA
+ bool "STATIC FLAT (sep-data)"
+ depends on !ARCH_USE_MMU
+ select ARCH_HAS_NO_LDSO
+config UCLIBC_FORMAT_SHARED_FLAT
+ bool "SHARED FLAT"
+ depends on !ARCH_USE_MMU
+ select ARCH_HAS_NO_LDSO
+ help
+ Pick this one if you are using uClinux and wish to build
+ uClibc as a flat-format shared library.
+endchoice
+endif
+if ARCH_USE_MMU
+comment "Using ELF file format"
+endif
+
+config UCLIBC_SHARED_FLAT_ID
+ int "Shared library ID"
+ default 1
+ depends on UCLIBC_FORMAT_SHARED_FLAT
+ help
+ When using flat shared libraries, every library has a unique
+ system-wide identifier. Identifier 0 is reserved for
+ executables and true shared libraries have identifiers
+ starting at 1. The maximum shared library identifier is
+ determined by the kernel and is usually 3. Shared library
+ N must be available on the target system as "/lib/libN.so".
+
+ When a shared C library is used, it usually has identifier 1,
+ but you can use this option to select a different identifier
+ if you need to.
+
+
+
+#
+# Endian Format
+#
+config ARCH_ANY_ENDIAN
+ bool
+config ARCH_BIG_ENDIAN
+ bool
+config ARCH_LITTLE_ENDIAN
+ bool
+if ARCH_ANY_ENDIAN
+choice
+ prompt "Target Processor Endianness"
+ help
+ This is the endianness you wish to use. Choose either Big
+ Endian, or Little Endian.
+config ARCH_WANTS_BIG_ENDIAN
+ bool "Big Endian"
+ select ARCH_BIG_ENDIAN
+config ARCH_WANTS_LITTLE_ENDIAN
+ bool "Little Endian"
+ select ARCH_LITTLE_ENDIAN
+endchoice
+endif
+# if the arch only supports one endian, just display the setting
+if !ARCH_ANY_ENDIAN && ARCH_LITTLE_ENDIAN
+comment "Using Little Endian"
+endif
+if !ARCH_ANY_ENDIAN && ARCH_BIG_ENDIAN
+comment "Using Big Endian"
+endif
+
+config ARCH_HAS_NO_MMU
+ bool
+if ARCH_HAS_NO_MMU
+comment "Target CPU lacks a memory management unit (MMU)"
+endif
+
+config ARCH_HAS_MMU
+ bool "Target CPU has a memory management unit (MMU)"
+ depends on !ARCH_HAS_NO_MMU
+ default y
+ help
+ If your target CPU does not have a memory management unit (MMU),
+ then answer N here. Normally, Linux runs on systems with an MMU.
+ If you are building a uClinux system, answer N.
+
+ Most people will answer Y.
+
+config ARCH_USE_MMU
+ bool "Do you want to utilize the MMU?"
+ depends on ARCH_HAS_MMU
+ default y
+ help
+ If your target CPU has a MMU, and you wish to actually utilize it,
+ then answer Y here. Normal Linux requires an MMU.
+
+ If you're unsure, answer Y.
+
+config UCLIBC_HAS_FLOATS
+ bool "Enable floating point number support"
+ default y
+ help
+ This option allows you to entirely omit all floating point number
+ support from uClibc. This will cause floating point functions like
+ strtod() to be omitted from uClibc. Other floating point functions,
+ such as printf() and scanf() will still be included in the library,
+ but will not contain support for floating point numbers.
+
+ Answering N to this option can reduce the size of uClibc.
+ Most people will answer Y.
+
+config UCLIBC_HAS_FPU
+ bool "Target CPU has a floating point unit (FPU)"
+ default y
+ help
+ If your target CPU does not have a Floating Point Unit (FPU) or a
+ kernel FPU emulator, but you still wish to support floating point
+ functions, then uClibc will need to be compiled with soft floating
+ point support (-msoft-float). If your target CPU does not have an
+ FPU or an FPU emulator within the Linux kernel, then you should
+ answer N.
+
+ Most people will answer Y.
+
+config UCLIBC_HAS_SOFT_FLOAT
+ bool
+ depends on UCLIBC_HAS_FLOATS && !UCLIBC_HAS_FPU
+ default y
+
+config DO_C99_MATH
+ bool "Enable full C99 math library support"
+ depends on UCLIBC_HAS_FLOATS
+ default n
+ help
+ If you want the uClibc math library to contain the full set C99
+ math library features, then answer Y. If you leave this set to
+ N the math library will contain only the math functions that were
+ listed as part of the traditional POSIX/IEEE 1003.1b-1993 standard.
+ Leaving this option set to N will save around 35k on an x86 system.
+
+ If your applications require the newer C99 math library functions,
+ then answer Y.
+
+config DO_XSI_MATH
+ bool "Enable XSI math extensions to the ISO C standard (bessel)"
+ depends on UCLIBC_HAS_FLOATS
+ default n
+ help
+ X/Open System Interfaces extensions to ISO C math functions
+ (differential equation functions):
+
+ j0, j1, jn - Bessel functions of the first kind
+ y0, y1, yn - Bessel functions of the second kind
+
+config UCLIBC_HAS_FENV
+ bool "Enable C99 Floating-point environment"
+ depends on UCLIBC_HAS_FLOATS
+ default n
+ help
+ If you want the uClibc math library to contain the C99 floating
+ point environment, rounding and exception handling functions then
+ say Y here.
+
+ NOTE: Supported architectures currently include:
+ i386
+
+config UCLIBC_HAS_LONG_DOUBLE_MATH
+ bool "Enable long double support"
+ depends on DO_C99_MATH
+ depends on TARGET_i386 || TARGET_m68k || TARGET_sparc || TARGET_x86_64 || TARGET_powerpc || TARGET_sh || TARGET_microblaze
+ default y
+ help
+ If you want the uClibc math library to contain the full set of C99
+ long double math library features, then answer Y. Don't enable it
+ for sparc w/ 32bit ABI.
+
+config KERNEL_HEADERS
+ string "Linux kernel header location"
+ default "/usr/include"
+ help
+ The kernel source you use to compile with should be the same
+ as the Linux kernel you run your apps on. uClibc doesn't even
+ try to achieve binary compatibility across kernel versions.
+ So don't expect, for example, uClibc compiled with Linux kernel
+ 2.0.x to implement lchown properly, since 2.0.x can't do that.
+ Similarly, if you compile uClibc vs Linux 2.4.x kernel headers,
+ but then run on Linux 2.0.x, lchown will be compiled into uClibc,
+ but won't work at all. You have been warned.
+
+config UCLIBC_UCLINUX_BROKEN_MUNMAP
+ bool
+ depends on !ARCH_USE_MMU
+ default y
+
+config HAVE_DOT_CONFIG
+ bool
+ default y
diff --git a/ap/build/uClibc/extra/Configs/Config.m68k b/ap/build/uClibc/extra/Configs/Config.m68k
new file mode 100644
index 0000000..95807c4
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.m68k
@@ -0,0 +1,13 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "m68k"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_BIG_ENDIAN
diff --git a/ap/build/uClibc/extra/Configs/Config.microblaze b/ap/build/uClibc/extra/Configs/Config.microblaze
new file mode 100644
index 0000000..2dfd4a7
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.microblaze
@@ -0,0 +1,8 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "microblaze"
diff --git a/ap/build/uClibc/extra/Configs/Config.mips b/ap/build/uClibc/extra/Configs/Config.mips
new file mode 100644
index 0000000..063b07c
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.mips
@@ -0,0 +1,73 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "mips"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_ANY_ENDIAN
+
+choice
+ prompt "Target ABI"
+ default CONFIG_MIPS_O32_ABI
+ help
+ This is the ABI you wish to build use. Choose either O32, N32
+ or N64.
+
+config CONFIG_MIPS_O32_ABI
+ bool "O32 ABI"
+
+config CONFIG_MIPS_N32_ABI
+ bool "N32 ABI"
+
+config CONFIG_MIPS_N64_ABI
+ bool "N64 ABI"
+
+endchoice
+
+choice
+ prompt "Target Processor Architecture"
+ default CONFIG_MIPS_ISA_1 if CONFIG_MIPS_O32_ABI
+ default CONFIG_MIPS_ISA_3 if CONFIG_MIPS_N32_ABI
+ default CONFIG_MIPS_ISA_3 if CONFIG_MIPS_N64_ABI
+ help
+ This selects the instruction set architecture of your MIPS CPU. This
+ information is used for optimizing purposes. To build a library that
+ will run on any MIPS CPU, you can specify "Generic (MIPS I)" here.
+ If you pick anything other than "Generic (MIPS I)," there is no
+ guarantee that uClibc will even run on anything other than the
+ selected processor type.
+
+ You should probably select the MIPS ISA that best matches the
+ CPU you will be using on your device. uClibc will be tuned
+ for that architecture.
+
+ If you don't know what to do, choose "Generic (MIPS I)"
+
+config CONFIG_MIPS_ISA_1
+ bool "Generic (MIPS I)"
+
+config CONFIG_MIPS_ISA_2
+ bool "MIPS II"
+
+config CONFIG_MIPS_ISA_3
+ bool "MIPS III"
+
+config CONFIG_MIPS_ISA_4
+ bool "MIPS IV"
+
+config CONFIG_MIPS_ISA_MIPS32
+ bool "MIPS32"
+
+config CONFIG_MIPS_ISA_MIPS32R2
+ bool "MIPS32r2"
+
+config CONFIG_MIPS_ISA_MIPS64
+ bool "MIPS64"
+
+endchoice
diff --git a/ap/build/uClibc/extra/Configs/Config.nios b/ap/build/uClibc/extra/Configs/Config.nios
new file mode 100644
index 0000000..4213a4c
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.nios
@@ -0,0 +1,16 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "nios"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_LITTLE_ENDIAN
+ select ARCH_HAS_NO_MMU
+ select ARCH_HAS_NO_LDSO
+ select HAVE_NO_PIC
diff --git a/ap/build/uClibc/extra/Configs/Config.nios2 b/ap/build/uClibc/extra/Configs/Config.nios2
new file mode 100644
index 0000000..2310a46
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.nios2
@@ -0,0 +1,16 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "nios2"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_LITTLE_ENDIAN
+ select ARCH_HAS_NO_MMU
+ select ARCH_HAS_NO_LDSO
+ select HAVE_NO_PIC
diff --git a/ap/build/uClibc/extra/Configs/Config.powerpc b/ap/build/uClibc/extra/Configs/Config.powerpc
new file mode 100644
index 0000000..84c4423
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.powerpc
@@ -0,0 +1,35 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "powerpc"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_BIG_ENDIAN
+ select ARCH_HAS_MMU
+
+choice
+ prompt "Target Processor Type"
+ default CONFIG_CLASSIC
+ help
+ This is the processor core of your CPU. This information is used for
+ determining the correct assembler instructions to use for the core.
+
+ The default is to build for a classic powerpc.
+
+config CONFIG_CLASSIC
+ bool "CLASSIC"
+ help
+ Classic powerpc architecture.
+
+config CONFIG_E500
+ bool "E500"
+ help
+ e500 v1 and v2 core.
+
+endchoice
diff --git a/ap/build/uClibc/extra/Configs/Config.sh b/ap/build/uClibc/extra/Configs/Config.sh
new file mode 100644
index 0000000..6ce54c2
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.sh
@@ -0,0 +1,51 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "sh"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_ANY_ENDIAN
+
+choice
+ prompt "Target Processor Type"
+ default CONFIG_SH4
+ help
+ This is the processor type of your CPU. This information is used for
+ optimizing purposes, as well as to determine if your CPU has an MMU,
+ an FPU, etc. If you pick the wrong CPU type, there is no guarantee
+ that uClibc will work at all....
+
+ Here are the available choices:
+ - "SH2A" Renesas SH-2A (SH7206)
+ - "SH2" SuperH SH-2
+ - "SH3" SuperH SH-3
+ - "SH4" SuperH SH-4
+
+config CONFIG_SH2A
+ select ARCH_HAS_NO_MMU
+ select HAVE_NO_PIC
+ bool "SH2A"
+
+config CONFIG_SH2
+ select ARCH_HAS_NO_MMU
+ bool "SH2"
+
+config CONFIG_SH3
+ select ARCH_HAS_MMU
+ bool "SH3"
+
+config CONFIG_SH4
+ bool "SH4"
+
+endchoice
+
+config ARCH_HAS_BWD_MEMCPY
+ bool
+ default y
+ depends on CONFIG_SH4
diff --git a/ap/build/uClibc/extra/Configs/Config.sh64 b/ap/build/uClibc/extra/Configs/Config.sh64
new file mode 100644
index 0000000..02535b9
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.sh64
@@ -0,0 +1,32 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "sh64"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_ANY_ENDIAN
+
+choice
+ prompt "Target Processor Type"
+ default CONFIG_SH5
+ help
+ This is the processor type of your CPU. This information is used for
+ optimizing purposes, as well as to determine if your CPU has an MMU,
+ an FPU, etc. If you pick the wrong CPU type, there is no guarantee
+ that uClibc will work at all....
+
+ Here are the available choices:
+ - "SH5" SuperH SH-5 101, 103
+
+config CONFIG_SH5
+ select ARCH_HAS_MMU
+ select UCLIBC_HAS_LFS
+ bool "SH5"
+
+endchoice
diff --git a/ap/build/uClibc/extra/Configs/Config.sparc b/ap/build/uClibc/extra/Configs/Config.sparc
new file mode 100644
index 0000000..1852efe
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.sparc
@@ -0,0 +1,34 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "sparc"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_BIG_ENDIAN
+
+choice
+ prompt "Target Processor Type"
+ default CONFIG_SPARC_V8
+ help
+ This is the processor type of your CPU. This information is used for
+ optimizing purposes. Building for a v8 SPARC is pretty safe nowadays.
+
+config CONFIG_SPARC_V7
+ bool "SPARC v7"
+
+config CONFIG_SPARC_V8
+ bool "SPARC v8"
+
+config CONFIG_SPARC_V9
+ bool "SPARC v9"
+
+config CONFIG_SPARC_V9B
+ bool "SPARC v9b"
+
+endchoice
diff --git a/ap/build/uClibc/extra/Configs/Config.v850 b/ap/build/uClibc/extra/Configs/Config.v850
new file mode 100644
index 0000000..fb3c4b1
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.v850
@@ -0,0 +1,15 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "v850"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_LITTLE_ENDIAN
+ select ARCH_HAS_NO_MMU
+ select HAVE_NO_PIC
diff --git a/ap/build/uClibc/extra/Configs/Config.vax b/ap/build/uClibc/extra/Configs/Config.vax
new file mode 100644
index 0000000..989eeea
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.vax
@@ -0,0 +1,14 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "vax"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_LITTLE_ENDIAN
+ select ARCH_HAS_NO_LDSO
diff --git a/ap/build/uClibc/extra/Configs/Config.x86_64 b/ap/build/uClibc/extra/Configs/Config.x86_64
new file mode 100644
index 0000000..1b28088
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.x86_64
@@ -0,0 +1,14 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/Kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "x86_64"
+
+config FORCE_OPTIONS_FOR_ARCH
+ bool
+ default y
+ select ARCH_LITTLE_ENDIAN
+ select ARCH_HAS_MMU
diff --git a/ap/build/uClibc/extra/Configs/Config.xtensa b/ap/build/uClibc/extra/Configs/Config.xtensa
new file mode 100644
index 0000000..d374f91
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/Config.xtensa
@@ -0,0 +1,8 @@
+#
+# For a description of the syntax of this configuration file,
+# see extra/config/kconfig-language.txt
+#
+
+config TARGET_ARCH
+ string
+ default "xtensa"
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/alpha/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/alpha/defconfig
new file mode 100644
index 0000000..05243d7
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/alpha/defconfig
@@ -0,0 +1 @@
+TARGET_alpha=y
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/arm/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/arm/defconfig
new file mode 100644
index 0000000..aa67890
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/arm/defconfig
@@ -0,0 +1 @@
+TARGET_arm=y
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/avr32/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/avr32/defconfig
new file mode 100644
index 0000000..0b890a2
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/avr32/defconfig
@@ -0,0 +1 @@
+TARGET_avr32=y
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/bfin/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/bfin/defconfig
new file mode 100644
index 0000000..fb5c5eb
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/bfin/defconfig
@@ -0,0 +1 @@
+TARGET_bfin=y
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/cris/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/cris/defconfig
new file mode 100644
index 0000000..4e98180
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/cris/defconfig
@@ -0,0 +1 @@
+TARGET_cris=y
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/e1/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/e1/defconfig
new file mode 100644
index 0000000..e204c87
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/e1/defconfig
@@ -0,0 +1 @@
+TARGET_e1=y
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/frv/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/frv/defconfig
new file mode 100644
index 0000000..8230316
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/frv/defconfig
@@ -0,0 +1 @@
+TARGET_frv=y
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/h8300/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/h8300/defconfig
new file mode 100644
index 0000000..66c4a33
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/h8300/defconfig
@@ -0,0 +1 @@
+TARGET_h8300=y
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/hppa/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/hppa/defconfig
new file mode 100644
index 0000000..6358dbd
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/hppa/defconfig
@@ -0,0 +1 @@
+TARGET_hppa=y
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/i386/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/i386/defconfig
new file mode 100644
index 0000000..7c35178
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/i386/defconfig
@@ -0,0 +1 @@
+TARGET_i386=y
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/i960/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/i960/defconfig
new file mode 100644
index 0000000..5abe6dc
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/i960/defconfig
@@ -0,0 +1 @@
+TARGET_i960=y
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/ia64/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/ia64/defconfig
new file mode 100644
index 0000000..7f26470
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/ia64/defconfig
@@ -0,0 +1 @@
+TARGET_ia64=y
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/m68k/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/m68k/defconfig
new file mode 100644
index 0000000..da874a8
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/m68k/defconfig
@@ -0,0 +1 @@
+TARGET_m68k=y
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/microblaze/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/microblaze/defconfig
new file mode 100644
index 0000000..4401200
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/microblaze/defconfig
@@ -0,0 +1 @@
+TARGET_microblaze=y
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/mips/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/mips/defconfig
new file mode 100644
index 0000000..0114a9bd
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/mips/defconfig
@@ -0,0 +1 @@
+TARGET_mips=y
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/nios/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/nios/defconfig
new file mode 100644
index 0000000..2a110b8
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/nios/defconfig
@@ -0,0 +1 @@
+TARGET_nios=y
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/nios2/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/nios2/defconfig
new file mode 100644
index 0000000..870bd53
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/nios2/defconfig
@@ -0,0 +1 @@
+TARGET_nios2=y
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/powerpc/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/powerpc/defconfig
new file mode 100644
index 0000000..3868897
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/powerpc/defconfig
@@ -0,0 +1 @@
+TARGET_powerpc=y
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/sh/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/sh/defconfig
new file mode 100644
index 0000000..650d280
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/sh/defconfig
@@ -0,0 +1 @@
+TARGET_sh=y
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/sh64/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/sh64/defconfig
new file mode 100644
index 0000000..4f23a54
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/sh64/defconfig
@@ -0,0 +1 @@
+TARGET_sh64=y
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/sparc/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/sparc/defconfig
new file mode 100644
index 0000000..c2c74cb
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/sparc/defconfig
@@ -0,0 +1 @@
+TARGET_sparc=y
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/v850/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/v850/defconfig
new file mode 100644
index 0000000..046d5d4
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/v850/defconfig
@@ -0,0 +1 @@
+TARGET_v850=y
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/vax/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/vax/defconfig
new file mode 100644
index 0000000..77a464e
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/vax/defconfig
@@ -0,0 +1 @@
+TARGET_vax=y
diff --git a/ap/build/uClibc/extra/Configs/defconfigs/x86_64/defconfig b/ap/build/uClibc/extra/Configs/defconfigs/x86_64/defconfig
new file mode 100644
index 0000000..e03a36a
--- /dev/null
+++ b/ap/build/uClibc/extra/Configs/defconfigs/x86_64/defconfig
@@ -0,0 +1 @@
+TARGET_x86_64=y
diff --git a/ap/build/uClibc/extra/Makefile b/ap/build/uClibc/extra/Makefile
new file mode 100644
index 0000000..1dae357
--- /dev/null
+++ b/ap/build/uClibc/extra/Makefile
@@ -0,0 +1,13 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+top_srcdir=../
+top_builddir=../
+include $(top_builddir)Rules.mak
+all: objs
+include Makefile.in
+include $(top_srcdir)Makerules
diff --git a/ap/build/uClibc/extra/Makefile.in b/ap/build/uClibc/extra/Makefile.in
new file mode 100644
index 0000000..76f504d
--- /dev/null
+++ b/ap/build/uClibc/extra/Makefile.in
@@ -0,0 +1,9 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+include $(top_srcdir)extra/locale/Makefile.in
+include $(top_srcdir)extra/config/Makefile.in
diff --git a/ap/build/uClibc/extra/config/Makefile b/ap/build/uClibc/extra/config/Makefile
new file mode 100644
index 0000000..46c3614
--- /dev/null
+++ b/ap/build/uClibc/extra/config/Makefile
@@ -0,0 +1,86 @@
+top_srcdir ?= ../../
+
+include $(top_srcdir)Rules.mak
+include $(top_srcdir)Makerules
+
+# ugh
+top_srcdir:=$(shell cd $(top_srcdir) && pwd)/
+ifdef O
+top_builddir ?= ../../
+else
+top_builddir = ../../
+endif
+srctree := $(top_srcdir)
+src := extra/config
+obj := $(top_builddir)$(src)
+
+generated := $(patsubst %_shipped,%,$(wildcard *_shipped))
+generated := $(addprefix $(obj)/,$(generated:.c=.o))
+
+include $(top_srcdir)extra/config/Makefile.kconfig
+PHONY += $(always)
+chk-lxdialog := $(top_srcdir)$(src)/lxdialog/check-lxdialog.sh
+check-lxdialog := cd $(obj) && $(CONFIG_SHELL) $(chk-lxdialog)
+HOST_EXTRACFLAGS = $(shell $(CONFIG_SHELL) -c '$(check-lxdialog) -ccflags')
+HOST_LOADLIBES = $(shell $(CONFIG_SHELL) -c '$(check-lxdialog) -ldflags $(HOSTCC)')
+HOST_EXTRACFLAGS += -DLOCALE
+HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) -c '$(srctree)/$(src)/check.sh $(HOSTCC) $(HOSTCFLAGS)')
+
+# do not create temporary object in the readonly srctree
+$(obj)/dochecklxdialog:
+ $(Q)cd $(obj) && $(CONFIG_SHELL) $(chk-lxdialog) -check $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOST_LOADLIBES)
+HOSTCFLAGS_lex.zconf.o := -I$(top_srcdir)$(src)
+HOSTCFLAGS_zconf.tab.o := -I$(top_srcdir)$(src)
+conf-objs := $(addprefix $(obj)/,$(conf-objs))
+mconf-objs := $(addprefix $(obj)/,$(mconf-objs))
+kxgettext-objs := $(addprefix $(obj)/,$(kxgettext-objs))
+
+ifeq ($(findstring mconf,$(MAKECMDGOALS)),mconf)
+hostprogs-y += mconf
+endif
+
+#BUILD_CFLAGS-config = -W -Wall -pedantic
+#BUILD_CFLAGS-lxdialog = -W -Wall -pedantic
+
+__hostprogs := $(sort $(hostprogs-y) $(hostprogs-m))
+host-csingle:= $(foreach m,$(__hostprogs),$(if $($(m)-objs),,$(m)))
+host-cmulti := $(foreach m,$(__hostprogs),\
+ $(if $($(m)-cxxobjs),,$(if $($(m)-objs),$(m))))
+host-cobjs := $(sort $(foreach m,$(__hostprogs),$($(m)-objs)))
+
+conf mconf kxgettext: %: $(obj)/%
+$(obj)/conf $(obj)/mconf $(obj)/kxgettext: BUILD_LDFLAGS=$(HOST_LOADLIBES)
+$(obj)/conf: $(conf-objs)
+ $(hcompile.u)
+$(obj)/mconf: $(mconf-objs)
+ $(hcompile.u)
+$(obj)/kxgettext: $(kxgettext-objs)
+ $(hcompile.u)
+
+$(host-csingle) $(host-cmulti) $(host-cobjs): BUILD_CFLAGS=$(HOST_EXTRACFLAGS) \
+ $(HOSTCFLAGS) $(HOSTCFLAGS_$(@F))
+
+host-cobjs.nogen := $(filter-out $(generated),$(host-cobjs))
+host-cobjs.generated := $(filter $(generated),$(host-cobjs))
+
+$(host-cobjs.nogen): $(obj)/%.o: $(top_srcdir)$(src)/%.c
+ $(hcompile.o)
+$(host-cobjs.generated): $(obj)/%.o: $(obj)/%.c
+ $(hcompile.o)
+
+ifndef LKC_GENPARSER
+$(obj)/%:: $(top_srcdir)$(src)/%_shipped
+ @$(disp_gen)
+ $(Q)cat $< > $@
+endif
+CLEAN_extra/config menuconfig_clean:
+ $(do_rm) $(clean-files) $(lxdialog) conf $(wildcard *.o)
+distclean: clean
+ $(do_rm) $(lxdialog) $(conf-objs) $(mconf-objs) \
+ $(kxgettext-objs) \
+ $(hostprogs-y) $(qconf-cxxobjs) $(qconf-objs) $(gconf-objs) \
+ .depend
+ $(do_rm) -r $(top_builddir)include/config
+
+FORCE:
+.PHONY: FORCE clean distclean $(always)
diff --git a/ap/build/uClibc/extra/config/Makefile.kconfig b/ap/build/uClibc/extra/config/Makefile.kconfig
new file mode 100644
index 0000000..83c20c4
--- /dev/null
+++ b/ap/build/uClibc/extra/config/Makefile.kconfig
@@ -0,0 +1,289 @@
+# ===========================================================================
+# Kernel configuration targets
+# These targets are used from top-level makefile
+
+PHONY += oldconfig xconfig gconfig menuconfig config silentoldconfig update-po-config
+
+ifdef KBUILD_KCONFIG
+Kconfig := $(KBUILD_KCONFIG)
+else
+Kconfig := arch/$(SRCARCH)/Kconfig
+endif
+
+xconfig: $(obj)/qconf
+ $< $(Kconfig)
+
+gconfig: $(obj)/gconf
+ $< $(Kconfig)
+
+menuconfig: $(obj)/mconf
+ $< $(Kconfig)
+
+config: $(obj)/conf
+ $< $(Kconfig)
+
+oldconfig: $(obj)/conf
+ $< -o $(Kconfig)
+
+silentoldconfig: $(obj)/conf
+ $< -s $(Kconfig)
+
+# Create new linux.pot file
+# Adjust charset to UTF-8 in .po file to accept UTF-8 in Kconfig files
+# The symlink is used to repair a deficiency in arch/um
+update-po-config: $(obj)/kxgettext $(obj)/gconf.glade.h
+ $(Q)echo " GEN config"
+ $(Q)xgettext --default-domain=linux \
+ --add-comments --keyword=_ --keyword=N_ \
+ --from-code=UTF-8 \
+ --files-from=scripts/kconfig/POTFILES.in \
+ --output $(obj)/config.pot
+ $(Q)sed -i s/CHARSET/UTF-8/ $(obj)/config.pot
+ $(Q)ln -fs Kconfig.i386 arch/um/Kconfig.arch
+ $(Q)(for i in `ls arch/*/Kconfig`; \
+ do \
+ echo " GEN $$i"; \
+ $(obj)/kxgettext $$i \
+ >> $(obj)/config.pot; \
+ done )
+ $(Q)msguniq --sort-by-file --to-code=UTF-8 $(obj)/config.pot \
+ --output $(obj)/linux.pot
+ $(Q)rm -f arch/um/Kconfig.arch
+ $(Q)rm -f $(obj)/config.pot
+
+PHONY += randconfig allyesconfig allnoconfig allmodconfig defconfig
+
+randconfig: $(obj)/conf
+ $< -r $(Kconfig)
+
+allyesconfig: $(obj)/conf
+ $< -y $(Kconfig)
+
+allnoconfig: $(obj)/conf
+ $< -n $(Kconfig)
+
+allmodconfig: $(obj)/conf
+ $< -m $(Kconfig)
+
+defconfig: $(obj)/conf
+ifeq ($(KBUILD_DEFCONFIG),)
+ $< -d $(Kconfig)
+else
+ @echo "*** Default configuration is based on '$(KBUILD_DEFCONFIG)'"
+ $(Q)$< -D arch/$(SRCARCH)/configs/$(KBUILD_DEFCONFIG) $(Kconfig)
+endif
+
+%_defconfig: $(obj)/conf
+ $(Q)$< -D arch/$(SRCARCH)/configs/$@ $(Kconfig)
+
+# Help text used by make help
+help:
+ @echo ' config - Update current config utilising a line-oriented program'
+ @echo ' menuconfig - Update current config utilising a menu based program'
+ @echo ' xconfig - Update current config utilising a QT based front-end'
+ @echo ' gconfig - Update current config utilising a GTK based front-end'
+ @echo ' oldconfig - Update current config utilising a provided .config as base'
+ @echo ' silentoldconfig - Same as oldconfig, but quietly'
+ @echo ' randconfig - New config with random answer to all options'
+ @echo ' defconfig - New config with default answer to all options'
+ @echo ' allmodconfig - New config selecting modules when possible'
+ @echo ' allyesconfig - New config where all options are accepted with yes'
+ @echo ' allnoconfig - New config where all options are answered with no'
+
+# lxdialog stuff
+check-lxdialog := $(srctree)/$(src)/lxdialog/check-lxdialog.sh
+
+# Use recursively expanded variables so we do not call gcc unless
+# we really need to do so. (Do not call gcc as part of make mrproper)
+HOST_EXTRACFLAGS = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ccflags)
+HOST_LOADLIBES = $(shell $(CONFIG_SHELL) $(check-lxdialog) -ldflags $(HOSTCC))
+
+HOST_EXTRACFLAGS += -DLOCALE
+
+
+# ===========================================================================
+# Shared Makefile for the various kconfig executables:
+# conf: Used for defconfig, oldconfig and related targets
+# mconf: Used for the mconfig target.
+# Utilizes the lxdialog package
+# qconf: Used for the xconfig target
+# Based on QT which needs to be installed to compile it
+# gconf: Used for the gconfig target
+# Based on GTK which needs to be installed to compile it
+# object files used by all kconfig flavours
+
+lxdialog := lxdialog/checklist.o lxdialog/util.o lxdialog/inputbox.o
+lxdialog += lxdialog/textbox.o lxdialog/yesno.o lxdialog/menubox.o
+
+conf-objs := conf.o zconf.tab.o
+mconf-objs := mconf.o zconf.tab.o $(lxdialog)
+kxgettext-objs := kxgettext.o zconf.tab.o
+
+hostprogs-y := conf qconf gconf kxgettext
+
+ifeq ($(MAKECMDGOALS),menuconfig)
+ hostprogs-y += mconf
+endif
+
+ifeq ($(MAKECMDGOALS),xconfig)
+ qconf-target := 1
+endif
+ifeq ($(MAKECMDGOALS),gconfig)
+ gconf-target := 1
+endif
+
+
+ifeq ($(qconf-target),1)
+qconf-cxxobjs := qconf.o
+qconf-objs := kconfig_load.o zconf.tab.o
+endif
+
+ifeq ($(gconf-target),1)
+gconf-objs := gconf.o kconfig_load.o zconf.tab.o
+endif
+
+clean-files := lkc_defs.h qconf.moc .tmp_qtcheck \
+ .tmp_gtkcheck zconf.tab.c lex.zconf.c zconf.hash.c gconf.glade.h
+clean-files += mconf qconf gconf
+clean-files += config.pot linux.pot
+
+# Check that we have the required ncurses stuff installed for lxdialog (menuconfig)
+PHONY += $(obj)/dochecklxdialog
+$(addprefix $(obj)/,$(lxdialog)): $(obj)/dochecklxdialog
+#$(obj)/dochecklxdialog:
+# $(Q)$(CONFIG_SHELL) $(check-lxdialog) -check $(HOSTCC) $(HOST_EXTRACFLAGS) $(HOST_LOADLIBES)
+
+always := dochecklxdialog
+
+# Add environment specific flags
+HOST_EXTRACFLAGS += $(shell $(CONFIG_SHELL) $(srctree)/$(src)/check.sh $(HOSTCC) $(HOSTCFLAGS))
+
+# generated files seem to need this to find local include files
+HOSTCFLAGS_lex.zconf.o := -I$(src)
+HOSTCFLAGS_zconf.tab.o := -I$(src)
+
+HOSTLOADLIBES_qconf = $(KC_QT_LIBS) -ldl
+HOSTCXXFLAGS_qconf.o = $(KC_QT_CFLAGS) -D LKC_DIRECT_LINK
+
+HOSTLOADLIBES_gconf = `pkg-config --libs gtk+-2.0 gmodule-2.0 libglade-2.0`
+HOSTCFLAGS_gconf.o = `pkg-config --cflags gtk+-2.0 gmodule-2.0 libglade-2.0` \
+ -D LKC_DIRECT_LINK
+
+$(obj)/qconf.o: $(obj)/.tmp_qtcheck
+
+ifeq ($(qconf-target),1)
+$(obj)/.tmp_qtcheck: $(src)/Makefile
+-include $(obj)/.tmp_qtcheck
+
+# QT needs some extra effort...
+$(obj)/.tmp_qtcheck:
+ @set -e; echo " CHECK qt"; dir=""; pkg=""; \
+ pkg-config --exists qt 2> /dev/null && pkg=qt; \
+ pkg-config --exists qt-mt 2> /dev/null && pkg=qt-mt; \
+ if [ -n "$$pkg" ]; then \
+ cflags="\$$(shell pkg-config $$pkg --cflags)"; \
+ libs="\$$(shell pkg-config $$pkg --libs)"; \
+ moc="\$$(shell pkg-config $$pkg --variable=prefix)/bin/moc"; \
+ dir="$$(pkg-config $$pkg --variable=prefix)"; \
+ else \
+ for d in $$QTDIR /usr/share/qt* /usr/lib/qt*; do \
+ if [ -f $$d/include/qconfig.h ]; then dir=$$d; break; fi; \
+ done; \
+ if [ -z "$$dir" ]; then \
+ echo "*"; \
+ echo "* Unable to find the QT3 installation. Please make sure that"; \
+ echo "* the QT3 development package is correctly installed and"; \
+ echo "* either install pkg-config or set the QTDIR environment"; \
+ echo "* variable to the correct location."; \
+ echo "*"; \
+ false; \
+ fi; \
+ libpath=$$dir/lib; lib=qt; osdir=""; \
+ $(HOSTCXX) -print-multi-os-directory > /dev/null 2>&1 && \
+ osdir=x$$($(HOSTCXX) -print-multi-os-directory); \
+ test -d $$libpath/$$osdir && libpath=$$libpath/$$osdir; \
+ test -f $$libpath/libqt-mt.so && lib=qt-mt; \
+ cflags="-I$$dir/include"; \
+ libs="-L$$libpath -Wl,-rpath,$$libpath -l$$lib"; \
+ moc="$$dir/bin/moc"; \
+ fi; \
+ if [ ! -x $$dir/bin/moc -a -x /usr/bin/moc ]; then \
+ echo "*"; \
+ echo "* Unable to find $$dir/bin/moc, using /usr/bin/moc instead."; \
+ echo "*"; \
+ moc="/usr/bin/moc"; \
+ fi; \
+ echo "KC_QT_CFLAGS=$$cflags" > $@; \
+ echo "KC_QT_LIBS=$$libs" >> $@; \
+ echo "KC_QT_MOC=$$moc" >> $@
+endif
+
+$(obj)/gconf.o: $(obj)/.tmp_gtkcheck
+
+ifeq ($(gconf-target),1)
+-include $(obj)/.tmp_gtkcheck
+
+# GTK needs some extra effort, too...
+$(obj)/.tmp_gtkcheck:
+ @if `pkg-config --exists gtk+-2.0 gmodule-2.0 libglade-2.0`; then \
+ if `pkg-config --atleast-version=2.0.0 gtk+-2.0`; then \
+ touch $@; \
+ else \
+ echo "*"; \
+ echo "* GTK+ is present but version >= 2.0.0 is required."; \
+ echo "*"; \
+ false; \
+ fi \
+ else \
+ echo "*"; \
+ echo "* Unable to find the GTK+ installation. Please make sure that"; \
+ echo "* the GTK+ 2.0 development package is correctly installed..."; \
+ echo "* You need gtk+-2.0, glib-2.0 and libglade-2.0."; \
+ echo "*"; \
+ false; \
+ fi
+endif
+
+$(obj)/zconf.tab.o: $(obj)/lex.zconf.c $(obj)/zconf.hash.c
+
+$(obj)/kconfig_load.o: $(obj)/lkc_defs.h
+
+$(obj)/qconf.o: $(obj)/qconf.moc $(obj)/lkc_defs.h
+
+$(obj)/gconf.o: $(obj)/lkc_defs.h
+
+$(obj)/%.moc: $(src)/%.h
+ $(KC_QT_MOC) -i $< -o $@
+
+$(obj)/lkc_defs.h: $(src)/lkc_proto.h
+ sed < $< > $@ 's/P(\([^,]*\),.*/#define \1 (\*\1_p)/'
+
+# Extract gconf menu items for I18N support
+$(obj)/gconf.glade.h: $(obj)/gconf.glade
+ intltool-extract --type=gettext/glade $(obj)/gconf.glade
+
+###
+# The following requires flex/bison/gperf
+# By default we use the _shipped versions, uncomment the following line if
+# you are modifying the flex/bison src.
+# LKC_GENPARSER := 1
+
+ifdef LKC_GENPARSER
+
+$(obj)/zconf.tab.c: $(src)/zconf.y
+$(obj)/lex.zconf.c: $(src)/zconf.l
+$(obj)/zconf.hash.c: $(src)/zconf.gperf
+
+%.tab.c: %.y
+ bison -l -b $* -p $(notdir $*) $<
+ cp $@ $@_shipped
+
+lex.%.c: %.l
+ flex -L -P$(notdir $*) -o$@ $<
+ cp $@ $@_shipped
+
+%.hash.c: %.gperf
+ gperf < $< > $@
+ cp $@ $@_shipped
+
+endif
diff --git a/ap/build/uClibc/extra/config/POTFILES.in b/ap/build/uClibc/extra/config/POTFILES.in
new file mode 100644
index 0000000..9674573
--- /dev/null
+++ b/ap/build/uClibc/extra/config/POTFILES.in
@@ -0,0 +1,12 @@
+scripts/kconfig/lxdialog/checklist.c
+scripts/kconfig/lxdialog/inputbox.c
+scripts/kconfig/lxdialog/menubox.c
+scripts/kconfig/lxdialog/textbox.c
+scripts/kconfig/lxdialog/util.c
+scripts/kconfig/lxdialog/yesno.c
+scripts/kconfig/mconf.c
+scripts/kconfig/conf.c
+scripts/kconfig/confdata.c
+scripts/kconfig/gconf.c
+scripts/kconfig/gconf.glade.h
+scripts/kconfig/qconf.cc
diff --git a/ap/build/uClibc/extra/config/README.uClibc b/ap/build/uClibc/extra/config/README.uClibc
new file mode 100644
index 0000000..b05cabc
--- /dev/null
+++ b/ap/build/uClibc/extra/config/README.uClibc
@@ -0,0 +1,19 @@
+This is a copy of the kconfig code in the kernel tweaked to suit uClibc.
+
+To update:
+ cp -r /usr/src/linux/scripts/kconfig extra/config.new
+ cd extra/config.new
+ cp /usr/src/linux/Documentation/kbuild/kconfig-language.txt .
+ mv Makefile Makefile.kconfig
+ zcat ../config/kconfig-to-uclibc.patch.gz | patch -p1
+ cp ../config/README.uClibc .
+ cp ../config/Makefile .
+ cd ..
+ rm -rf config
+ mv config.new config
+
+Then verify the toplevel targets work:
+ config
+ defconfig
+ menuconfig
+ oldconfig
diff --git a/ap/build/uClibc/extra/config/check.sh b/ap/build/uClibc/extra/config/check.sh
new file mode 100755
index 0000000..fa59cbf
--- /dev/null
+++ b/ap/build/uClibc/extra/config/check.sh
@@ -0,0 +1,14 @@
+#!/bin/sh
+# Needed for systems without gettext
+$* -xc -o /dev/null - > /dev/null 2>&1 << EOF
+#include <libintl.h>
+int main()
+{
+ gettext("");
+ return 0;
+}
+EOF
+if [ ! "$?" -eq "0" ]; then
+ echo -DKBUILD_NO_NLS;
+fi
+
diff --git a/ap/build/uClibc/extra/config/conf.c b/ap/build/uClibc/extra/config/conf.c
new file mode 100644
index 0000000..d623ed1
--- /dev/null
+++ b/ap/build/uClibc/extra/config/conf.c
@@ -0,0 +1,617 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <locale.h>
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+static void conf(struct menu *menu);
+static void check_conf(struct menu *menu);
+
+enum {
+ ask_all,
+ ask_new,
+ ask_silent,
+ set_default,
+ set_yes,
+ set_mod,
+ set_no,
+ set_random
+} input_mode = ask_all;
+char *defconfig_file;
+
+static int indent = 1;
+static int valid_stdin = 1;
+static int sync_kconfig;
+static int conf_cnt;
+static char line[128];
+static struct menu *rootEntry;
+
+static char nohelp_text[] = N_("Sorry, no help available for this option yet.\n");
+
+static const char *get_help(struct menu *menu)
+{
+ if (menu_has_help(menu))
+ return _(menu_get_help(menu));
+ else
+ return nohelp_text;
+}
+
+static void strip(char *str)
+{
+ char *p = str;
+ int l;
+
+ while ((isspace(*p)))
+ p++;
+ l = strlen(p);
+ if (p != str)
+ memmove(str, p, l + 1);
+ if (!l)
+ return;
+ p = str + l - 1;
+ while ((isspace(*p)))
+ *p-- = 0;
+}
+
+static void check_stdin(void)
+{
+ if (!valid_stdin) {
+ printf(_("aborted!\n\n"));
+ printf(_("Console input/output is redirected. "));
+ printf(_("Run 'make oldconfig' to update configuration.\n\n"));
+ exit(1);
+ }
+}
+
+static int conf_askvalue(struct symbol *sym, const char *def)
+{
+ enum symbol_type type = sym_get_type(sym);
+
+ if (!sym_has_value(sym))
+ printf(_("(NEW) "));
+
+ line[0] = '\n';
+ line[1] = 0;
+
+ if (!sym_is_changable(sym)) {
+ printf("%s\n", def);
+ line[0] = '\n';
+ line[1] = 0;
+ return 0;
+ }
+
+ switch (input_mode) {
+ case ask_new:
+ case ask_silent:
+ if (sym_has_value(sym)) {
+ printf("%s\n", def);
+ return 0;
+ }
+ check_stdin();
+ case ask_all:
+ fflush(stdout);
+ fgets(line, 128, stdin);
+ return 1;
+ default:
+ break;
+ }
+
+ switch (type) {
+ case S_INT:
+ case S_HEX:
+ case S_STRING:
+ printf("%s\n", def);
+ return 1;
+ default:
+ ;
+ }
+ printf("%s", line);
+ return 1;
+}
+
+int conf_string(struct menu *menu)
+{
+ struct symbol *sym = menu->sym;
+ const char *def;
+
+ while (1) {
+ printf("%*s%s ", indent - 1, "", _(menu->prompt->text));
+ printf("(%s) ", sym->name);
+ def = sym_get_string_value(sym);
+ if (sym_get_string_value(sym))
+ printf("[%s] ", def);
+ if (!conf_askvalue(sym, def))
+ return 0;
+ switch (line[0]) {
+ case '\n':
+ break;
+ case '?':
+ /* print help */
+ if (line[1] == '\n') {
+ printf("\n%s\n", get_help(menu));
+ def = NULL;
+ break;
+ }
+ default:
+ line[strlen(line)-1] = 0;
+ def = line;
+ }
+ if (def && sym_set_string_value(sym, def))
+ return 0;
+ }
+}
+
+static int conf_sym(struct menu *menu)
+{
+ struct symbol *sym = menu->sym;
+ int type;
+ tristate oldval, newval;
+
+ while (1) {
+ printf("%*s%s ", indent - 1, "", _(menu->prompt->text));
+ if (sym->name)
+ printf("(%s) ", sym->name);
+ type = sym_get_type(sym);
+ putchar('[');
+ oldval = sym_get_tristate_value(sym);
+ switch (oldval) {
+ case no:
+ putchar('N');
+ break;
+ case mod:
+ putchar('M');
+ break;
+ case yes:
+ putchar('Y');
+ break;
+ }
+ if (oldval != no && sym_tristate_within_range(sym, no))
+ printf("/n");
+ if (oldval != mod && sym_tristate_within_range(sym, mod))
+ printf("/m");
+ if (oldval != yes && sym_tristate_within_range(sym, yes))
+ printf("/y");
+ if (menu_has_help(menu))
+ printf("/?");
+ printf("] ");
+ if (!conf_askvalue(sym, sym_get_string_value(sym)))
+ return 0;
+ strip(line);
+
+ switch (line[0]) {
+ case 'n':
+ case 'N':
+ newval = no;
+ if (!line[1] || !strcmp(&line[1], "o"))
+ break;
+ continue;
+ case 'm':
+ case 'M':
+ newval = mod;
+ if (!line[1])
+ break;
+ continue;
+ case 'y':
+ case 'Y':
+ newval = yes;
+ if (!line[1] || !strcmp(&line[1], "es"))
+ break;
+ continue;
+ case 0:
+ newval = oldval;
+ break;
+ case '?':
+ goto help;
+ default:
+ continue;
+ }
+ if (sym_set_tristate_value(sym, newval))
+ return 0;
+help:
+ printf("\n%s\n", get_help(menu));
+ }
+}
+
+static int conf_choice(struct menu *menu)
+{
+ struct symbol *sym, *def_sym;
+ struct menu *child;
+ int type;
+ bool is_new;
+
+ sym = menu->sym;
+ type = sym_get_type(sym);
+ is_new = !sym_has_value(sym);
+ if (sym_is_changable(sym)) {
+ conf_sym(menu);
+ sym_calc_value(sym);
+ switch (sym_get_tristate_value(sym)) {
+ case no:
+ return 1;
+ case mod:
+ return 0;
+ case yes:
+ break;
+ }
+ } else {
+ switch (sym_get_tristate_value(sym)) {
+ case no:
+ return 1;
+ case mod:
+ printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu)));
+ return 0;
+ case yes:
+ break;
+ }
+ }
+
+ while (1) {
+ int cnt, def;
+
+ printf("%*s%s\n", indent - 1, "", _(menu_get_prompt(menu)));
+ def_sym = sym_get_choice_value(sym);
+ cnt = def = 0;
+ line[0] = 0;
+ for (child = menu->list; child; child = child->next) {
+ if (!menu_is_visible(child))
+ continue;
+ if (!child->sym) {
+ printf("%*c %s\n", indent, '*', _(menu_get_prompt(child)));
+ continue;
+ }
+ cnt++;
+ if (child->sym == def_sym) {
+ def = cnt;
+ printf("%*c", indent, '>');
+ } else
+ printf("%*c", indent, ' ');
+ printf(" %d. %s", cnt, _(menu_get_prompt(child)));
+ if (child->sym->name)
+ printf(" (%s)", child->sym->name);
+ if (!sym_has_value(child->sym))
+ printf(_(" (NEW)"));
+ printf("\n");
+ }
+ printf(_("%*schoice"), indent - 1, "");
+ if (cnt == 1) {
+ printf("[1]: 1\n");
+ goto conf_childs;
+ }
+ printf("[1-%d", cnt);
+ if (menu_has_help(menu))
+ printf("?");
+ printf("]: ");
+ switch (input_mode) {
+ case ask_new:
+ case ask_silent:
+ if (!is_new) {
+ cnt = def;
+ printf("%d\n", cnt);
+ break;
+ }
+ check_stdin();
+ case ask_all:
+ fflush(stdout);
+ fgets(line, 128, stdin);
+ strip(line);
+ if (line[0] == '?') {
+ printf("\n%s\n", get_help(menu));
+ continue;
+ }
+ if (!line[0])
+ cnt = def;
+ else if (isdigit(line[0]))
+ cnt = atoi(line);
+ else
+ continue;
+ break;
+ default:
+ break;
+ }
+
+ conf_childs:
+ for (child = menu->list; child; child = child->next) {
+ if (!child->sym || !menu_is_visible(child))
+ continue;
+ if (!--cnt)
+ break;
+ }
+ if (!child)
+ continue;
+ if (line[strlen(line) - 1] == '?') {
+ printf("\n%s\n", get_help(child));
+ continue;
+ }
+ sym_set_choice_value(sym, child->sym);
+ for (child = child->list; child; child = child->next) {
+ indent += 2;
+ conf(child);
+ indent -= 2;
+ }
+ return 1;
+ }
+}
+
+static void conf(struct menu *menu)
+{
+ struct symbol *sym;
+ struct property *prop;
+ struct menu *child;
+
+ if (!menu_is_visible(menu))
+ return;
+
+ sym = menu->sym;
+ prop = menu->prompt;
+ if (prop) {
+ const char *prompt;
+
+ switch (prop->type) {
+ case P_MENU:
+ if (input_mode == ask_silent && rootEntry != menu) {
+ check_conf(menu);
+ return;
+ }
+ case P_COMMENT:
+ prompt = menu_get_prompt(menu);
+ if (prompt)
+ printf("%*c\n%*c %s\n%*c\n",
+ indent, '*',
+ indent, '*', _(prompt),
+ indent, '*');
+ default:
+ ;
+ }
+ }
+
+ if (!sym)
+ goto conf_childs;
+
+ if (sym_is_choice(sym)) {
+ conf_choice(menu);
+ if (sym->curr.tri != mod)
+ return;
+ goto conf_childs;
+ }
+
+ switch (sym->type) {
+ case S_INT:
+ case S_HEX:
+ case S_STRING:
+ conf_string(menu);
+ break;
+ default:
+ conf_sym(menu);
+ break;
+ }
+
+conf_childs:
+ if (sym)
+ indent += 2;
+ for (child = menu->list; child; child = child->next)
+ conf(child);
+ if (sym)
+ indent -= 2;
+}
+
+static void check_conf(struct menu *menu)
+{
+ struct symbol *sym;
+ struct menu *child;
+
+ if (!menu_is_visible(menu))
+ return;
+
+ sym = menu->sym;
+ if (sym && !sym_has_value(sym)) {
+ if (sym_is_changable(sym) ||
+ (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)) {
+ if (!conf_cnt++)
+ printf(_("*\n* Restart config...\n*\n"));
+ rootEntry = menu_get_parent_menu(menu);
+ conf(rootEntry);
+ }
+ }
+
+ for (child = menu->list; child; child = child->next)
+ check_conf(child);
+}
+
+int main(int ac, char **av)
+{
+ int opt;
+ const char *name;
+ const char *configname = conf_get_configname();
+ struct stat tmpstat;
+
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
+ while ((opt = getopt(ac, av, "osdD:nmyrh")) != -1) {
+ switch (opt) {
+ case 'o':
+ input_mode = ask_silent;
+ break;
+ case 's':
+ input_mode = ask_silent;
+ sync_kconfig = 1;
+ break;
+ case 'd':
+ input_mode = set_default;
+ break;
+ case 'D':
+ input_mode = set_default;
+ defconfig_file = optarg;
+ break;
+ case 'n':
+ input_mode = set_no;
+ break;
+ case 'm':
+ input_mode = set_mod;
+ break;
+ case 'y':
+ input_mode = set_yes;
+ break;
+ case 'r':
+ {
+ struct timeval now;
+ unsigned int seed;
+
+ /*
+ * Use microseconds derived seed,
+ * compensate for systems where it may be zero
+ */
+ gettimeofday(&now, NULL);
+
+ seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1));
+ srand(seed);
+
+ input_mode = set_random;
+ break;
+ }
+ case 'h':
+ printf(_("See README for usage info\n"));
+ exit(0);
+ break;
+ default:
+ fprintf(stderr, _("See README for usage info\n"));
+ exit(1);
+ }
+ }
+ if (ac == optind) {
+ printf(_("%s: Kconfig file missing\n"), av[0]);
+ exit(1);
+ }
+ name = av[optind];
+ conf_parse(name);
+ //zconfdump(stdout);
+ if (sync_kconfig) {
+ if (stat(configname, &tmpstat)) {
+ fprintf(stderr, _("***\n"
+ "*** You have not yet configured!\n"
+ "*** (missing .config file)\n"
+ "***\n"
+ "*** Please run some configurator (e.g. \"make oldconfig\" or\n"
+ "*** \"make menuconfig\" or \"make xconfig\").\n"
+ "***\n"));
+ exit(1);
+ }
+ }
+
+ switch (input_mode) {
+ case set_default:
+ if (!defconfig_file)
+ defconfig_file = conf_get_default_confname();
+ if (conf_read(defconfig_file)) {
+ printf(_("***\n"
+ "*** Can't find default configuration \"%s\"!\n"
+ "***\n"), defconfig_file);
+ exit(1);
+ }
+ break;
+ case ask_silent:
+ case ask_all:
+ case ask_new:
+ conf_read(NULL);
+ break;
+ case set_no:
+ case set_mod:
+ case set_yes:
+ case set_random:
+ name = getenv("KCONFIG_ALLCONFIG");
+ if (name && !stat(name, &tmpstat)) {
+ conf_read_simple(name, S_DEF_USER);
+ break;
+ }
+ switch (input_mode) {
+ case set_no: name = "allno.config"; break;
+ case set_mod: name = "allmod.config"; break;
+ case set_yes: name = "allyes.config"; break;
+ case set_random: name = "allrandom.config"; break;
+ default: break;
+ }
+ if (!stat(name, &tmpstat))
+ conf_read_simple(name, S_DEF_USER);
+ else if (!stat("all.config", &tmpstat))
+ conf_read_simple("all.config", S_DEF_USER);
+ break;
+ default:
+ break;
+ }
+
+ if (sync_kconfig) {
+ if (conf_get_changed()) {
+ name = getenv("KCONFIG_NOSILENTUPDATE");
+ if (name && *name) {
+ fprintf(stderr,
+ _("\n*** configuration requires explicit update.\n\n"));
+ return 1;
+ }
+ }
+ valid_stdin = isatty(0) && isatty(1) && isatty(2);
+ }
+
+ switch (input_mode) {
+ case set_no:
+ conf_set_all_new_symbols(def_no);
+ break;
+ case set_yes:
+ conf_set_all_new_symbols(def_yes);
+ break;
+ case set_mod:
+ conf_set_all_new_symbols(def_mod);
+ break;
+ case set_random:
+ conf_set_all_new_symbols(def_random);
+ break;
+ case set_default:
+ conf_set_all_new_symbols(def_default);
+ break;
+ case ask_new:
+ case ask_all:
+ rootEntry = &rootmenu;
+ conf(&rootmenu);
+ input_mode = ask_silent;
+ /* fall through */
+ case ask_silent:
+ /* Update until a loop caused no more changes */
+ do {
+ conf_cnt = 0;
+ check_conf(&rootmenu);
+ } while (conf_cnt);
+ break;
+ }
+
+ if (sync_kconfig) {
+ /* silentoldconfig is used during the build so we shall update autoconf.
+ * All other commands are only used to generate a config.
+ */
+ if (conf_get_changed() && conf_write(NULL)) {
+ fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
+ exit(1);
+ }
+ if (conf_write_autoconf()) {
+ fprintf(stderr, _("\n*** Error during update of the configuration.\n\n"));
+ return 1;
+ }
+ } else {
+ if (conf_write(NULL)) {
+ fprintf(stderr, _("\n*** Error during writing of the configuration.\n\n"));
+ exit(1);
+ }
+ }
+ return 0;
+}
diff --git a/ap/build/uClibc/extra/config/confdata.c b/ap/build/uClibc/extra/config/confdata.c
new file mode 100644
index 0000000..2b848d5
--- /dev/null
+++ b/ap/build/uClibc/extra/config/confdata.c
@@ -0,0 +1,912 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <sys/stat.h>
+#include <ctype.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+#include <libgen.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+static void conf_warning(const char *fmt, ...)
+ __attribute__ ((format (printf, 1, 2)));
+
+static const char *conf_filename;
+static int conf_lineno, conf_warnings, conf_unsaved;
+
+const char conf_defname[] = "extra/Configs/defconfigs/$ARCH";
+
+static void conf_warning(const char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ fprintf(stderr, "%s:%d:warning: ", conf_filename, conf_lineno);
+ vfprintf(stderr, fmt, ap);
+ fprintf(stderr, "\n");
+ va_end(ap);
+ conf_warnings++;
+}
+
+const char *conf_get_configname(void)
+{
+ char *name = getenv("KCONFIG_CONFIG");
+
+ return name ? name : ".config";
+}
+
+static char *conf_expand_value(const char *in)
+{
+ struct symbol *sym;
+ const char *src;
+ static char res_value[SYMBOL_MAXLENGTH];
+ char *dst, name[SYMBOL_MAXLENGTH];
+
+ res_value[0] = 0;
+ dst = name;
+ while ((src = strchr(in, '$'))) {
+ strncat(res_value, in, src - in);
+ src++;
+ dst = name;
+ while (isalnum(*src) || *src == '_')
+ *dst++ = *src++;
+ *dst = 0;
+ sym = sym_lookup(name, 0);
+ sym_calc_value(sym);
+ strcat(res_value, sym_get_string_value(sym));
+ in = src;
+ }
+ strcat(res_value, in);
+
+ return res_value;
+}
+
+char *conf_get_default_confname(void)
+{
+ struct stat buf;
+ static char fullname[PATH_MAX+1];
+ char *env, *name;
+
+ name = conf_expand_value(conf_defname);
+ env = getenv(SRCTREE);
+ if (env) {
+ sprintf(fullname, "%s/%s", env, name);
+ if (!stat(fullname, &buf))
+ return fullname;
+ }
+ return name;
+}
+
+static int conf_set_sym_val(struct symbol *sym, int def, int def_flags, char *p)
+{
+ char *p2;
+
+ switch (sym->type) {
+ case S_TRISTATE:
+ if (p[0] == 'm') {
+ sym->def[def].tri = mod;
+ sym->flags |= def_flags;
+ break;
+ }
+ case S_BOOLEAN:
+ if (p[0] == 'y') {
+ sym->def[def].tri = yes;
+ sym->flags |= def_flags;
+ break;
+ }
+ if (p[0] == 'n') {
+ sym->def[def].tri = no;
+ sym->flags |= def_flags;
+ break;
+ }
+ conf_warning("symbol value '%s' invalid for %s", p, sym->name);
+ break;
+ case S_OTHER:
+ if (*p != '"') {
+ for (p2 = p; *p2 && !isspace(*p2); p2++)
+ ;
+ sym->type = S_STRING;
+ goto done;
+ }
+ case S_STRING:
+ if (*p++ != '"')
+ break;
+ for (p2 = p; (p2 = strpbrk(p2, "\"\\")); p2++) {
+ if (*p2 == '"') {
+ *p2 = 0;
+ break;
+ }
+ memmove(p2, p2 + 1, strlen(p2));
+ }
+ if (!p2) {
+ conf_warning("invalid string found");
+ return 1;
+ }
+ case S_INT:
+ case S_HEX:
+ done:
+ if (sym_string_valid(sym, p)) {
+ sym->def[def].val = strdup(p);
+ sym->flags |= def_flags;
+ } else {
+ conf_warning("symbol value '%s' invalid for %s", p, sym->name);
+ return 1;
+ }
+ break;
+ default:
+ ;
+ }
+ return 0;
+}
+
+int conf_read_simple(const char *name, int def)
+{
+ FILE *in = NULL;
+ char line[1024];
+ char *p, *p2;
+ struct symbol *sym;
+ int i, def_flags;
+
+ if (name) {
+ in = zconf_fopen(name);
+ } else {
+ struct property *prop;
+
+ name = conf_get_configname();
+ in = zconf_fopen(name);
+ if (in)
+ goto load;
+ sym_add_change_count(1);
+ if (!sym_defconfig_list)
+ return 1;
+
+ for_all_defaults(sym_defconfig_list, prop) {
+ if (expr_calc_value(prop->visible.expr) == no ||
+ prop->expr->type != E_SYMBOL)
+ continue;
+ name = conf_expand_value(prop->expr->left.sym->name);
+ in = zconf_fopen(name);
+ if (in) {
+ printf(_("#\n"
+ "# using defaults found in %s\n"
+ "#\n"), name);
+ goto load;
+ }
+ }
+ }
+ if (!in)
+ return 1;
+
+load:
+ conf_filename = name;
+ conf_lineno = 0;
+ conf_warnings = 0;
+ conf_unsaved = 0;
+
+ def_flags = SYMBOL_DEF << def;
+ for_all_symbols(i, sym) {
+ sym->flags |= SYMBOL_CHANGED;
+ sym->flags &= ~(def_flags|SYMBOL_VALID);
+ if (sym_is_choice(sym))
+ sym->flags |= def_flags;
+ switch (sym->type) {
+ case S_INT:
+ case S_HEX:
+ case S_STRING:
+ if (sym->def[def].val)
+ free(sym->def[def].val);
+ default:
+ sym->def[def].val = NULL;
+ sym->def[def].tri = no;
+ }
+ }
+
+ while (fgets(line, sizeof(line), in)) {
+ conf_lineno++;
+ sym = NULL;
+ switch (line[0]) {
+ case '#':
+ if (line[1] != ' ')
+ continue;
+ p = strchr(line + 2, ' ');
+ if (!p)
+ continue;
+ *p++ = 0;
+ if (strncmp(p, "is not set", 10))
+ continue;
+ if (def == S_DEF_USER) {
+ sym = sym_find(line + 2);
+ if (!sym) {
+ sym_add_change_count(1);
+ break;
+ }
+ } else {
+ sym = sym_lookup(line + 2, 0);
+ if (sym->type == S_UNKNOWN)
+ sym->type = S_BOOLEAN;
+ }
+ if (sym->flags & def_flags) {
+ conf_warning("override: reassigning to symbol %s", sym->name);
+ }
+ switch (sym->type) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ sym->def[def].tri = no;
+ sym->flags |= def_flags;
+ break;
+ default:
+ ;
+ }
+ break;
+ case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z':
+ p = strchr(line, '=');
+ if (!p) {
+ conf_warning("unexpected data '%s'", line);
+ continue;
+ }
+ *p++ = 0;
+ p2 = strchr(p, '\n');
+ if (p2) {
+ *p2-- = 0;
+ if (*p2 == '\r')
+ *p2 = 0;
+ }
+ if (def == S_DEF_USER) {
+ sym = sym_find(line);
+ if (!sym) {
+ sym_add_change_count(1);
+ break;
+ }
+ } else {
+ sym = sym_lookup(line, 0);
+ if (sym->type == S_UNKNOWN)
+ sym->type = S_OTHER;
+ }
+ if (sym->flags & def_flags) {
+ conf_warning("override: reassigning to symbol %s", sym->name);
+ }
+ if (conf_set_sym_val(sym, def, def_flags, p))
+ continue;
+ break;
+ case '\r':
+ case '\n':
+ break;
+ default:
+ conf_warning("unexpected data");
+ continue;
+ }
+ if (sym && sym_is_choice_value(sym)) {
+ struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));
+ switch (sym->def[def].tri) {
+ case no:
+ break;
+ case mod:
+ if (cs->def[def].tri == yes) {
+ conf_warning("%s creates inconsistent choice state", sym->name);
+ cs->flags &= ~def_flags;
+ }
+ break;
+ case yes:
+ if (cs->def[def].tri != no)
+ conf_warning("override: %s changes choice state", sym->name);
+ cs->def[def].val = sym;
+ break;
+ }
+ cs->def[def].tri = EXPR_OR(cs->def[def].tri, sym->def[def].tri);
+ }
+ }
+ fclose(in);
+
+ if (modules_sym)
+ sym_calc_value(modules_sym);
+ return 0;
+}
+
+int conf_read(const char *name)
+{
+ struct symbol *sym, *choice_sym;
+ struct property *prop;
+ struct expr *e;
+ int i, flags;
+
+ sym_set_change_count(0);
+
+ if (conf_read_simple(name, S_DEF_USER))
+ return 1;
+
+ for_all_symbols(i, sym) {
+ sym_calc_value(sym);
+ if (sym_is_choice(sym) || (sym->flags & SYMBOL_AUTO))
+ goto sym_ok;
+ if (sym_has_value(sym) && (sym->flags & SYMBOL_WRITE)) {
+ /* check that calculated value agrees with saved value */
+ switch (sym->type) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ if (sym->def[S_DEF_USER].tri != sym_get_tristate_value(sym))
+ break;
+ if (!sym_is_choice(sym))
+ goto sym_ok;
+ default:
+ if (!strcmp(sym->curr.val, sym->def[S_DEF_USER].val))
+ goto sym_ok;
+ break;
+ }
+ } else if (!sym_has_value(sym) && !(sym->flags & SYMBOL_WRITE))
+ /* no previous value and not saved */
+ goto sym_ok;
+ conf_unsaved++;
+ /* maybe print value in verbose mode... */
+ sym_ok:
+ if (!sym_is_choice(sym))
+ continue;
+ /* The choice symbol only has a set value (and thus is not new)
+ * if all its visible childs have values.
+ */
+ prop = sym_get_choice_prop(sym);
+ flags = sym->flags;
+ expr_list_for_each_sym(prop->expr, e, choice_sym)
+ if (choice_sym->visible != no)
+ flags &= choice_sym->flags;
+ sym->flags &= flags | ~SYMBOL_DEF_USER;
+ }
+
+ for_all_symbols(i, sym) {
+ if (sym_has_value(sym) && !sym_is_choice_value(sym)) {
+ /* Reset values of generates values, so they'll appear
+ * as new, if they should become visible, but that
+ * doesn't quite work if the Kconfig and the saved
+ * configuration disagree.
+ */
+ if (sym->visible == no && !conf_unsaved)
+ sym->flags &= ~SYMBOL_DEF_USER;
+ switch (sym->type) {
+ case S_STRING:
+ case S_INT:
+ case S_HEX:
+ /* Reset a string value if it's out of range */
+ if (sym_string_within_range(sym, sym->def[S_DEF_USER].val))
+ break;
+ sym->flags &= ~(SYMBOL_VALID|SYMBOL_DEF_USER);
+ conf_unsaved++;
+ break;
+ default:
+ break;
+ }
+ }
+ }
+
+ sym_add_change_count(conf_warnings || conf_unsaved);
+
+ return 0;
+}
+
+int conf_write(const char *name)
+{
+ FILE *out;
+ struct symbol *sym;
+ struct menu *menu;
+ const char *basename;
+ char dirname[128], tmpname[128], newname[128];
+ int type, l;
+ const char *str;
+ time_t now;
+ int use_timestamp = 1;
+ char *env;
+
+ dirname[0] = 0;
+ if (name == NULL)
+ name = conf_get_configname();
+ if (name && name[0]) {
+ struct stat st;
+ char *slash;
+
+ if (!stat(name, &st) && S_ISDIR(st.st_mode)) {
+ strcpy(dirname, name);
+ strcat(dirname, "/");
+ basename = conf_get_configname();
+ } else if ((slash = strrchr(name, '/'))) {
+ int size = slash - name + 1;
+ memcpy(dirname, name, size);
+ dirname[size] = 0;
+ if (slash[1])
+ basename = slash + 1;
+ else
+ basename = conf_get_configname();
+ } else
+ basename = name;
+ } else
+ basename = conf_get_configname();
+
+ sprintf(newname, "%s%s", dirname, basename);
+ env = getenv("KCONFIG_OVERWRITECONFIG");
+ if (!env || !*env) {
+ sprintf(tmpname, "%s.tmpconfig.%d", dirname, (int)getpid());
+ out = fopen(tmpname, "w");
+ } else {
+ *tmpname = 0;
+ out = fopen(newname, "w");
+ }
+ if (!out)
+ return 1;
+
+ sym = sym_lookup("VERSION", 0);
+ sym_calc_value(sym);
+ time(&now);
+ env = getenv("KCONFIG_NOTIMESTAMP");
+ if (env && *env)
+ use_timestamp = 0;
+
+ fprintf(out, _("#\n"
+ "# Automatically generated make config: don't edit\n"
+ "# Version: %s\n"
+ "%s%s"
+ "#\n"),
+ sym_get_string_value(sym),
+ use_timestamp ? "# " : "",
+ use_timestamp ? ctime(&now) : "");
+
+ if (!conf_get_changed())
+ sym_clear_all_valid();
+
+ menu = rootmenu.list;
+ while (menu) {
+ sym = menu->sym;
+ if (!sym) {
+ if (!menu_is_visible(menu))
+ goto next;
+ str = menu_get_prompt(menu);
+ fprintf(out, "\n"
+ "#\n"
+ "# %s\n"
+ "#\n", str);
+ } else if (!(sym->flags & SYMBOL_CHOICE)) {
+ sym_calc_value(sym);
+ if (!(sym->flags & SYMBOL_WRITE))
+ goto next;
+ sym->flags &= ~SYMBOL_WRITE;
+ type = sym->type;
+ if (type == S_TRISTATE) {
+ sym_calc_value(modules_sym);
+ if (modules_sym->curr.tri == no)
+ type = S_BOOLEAN;
+ }
+ switch (type) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ switch (sym_get_tristate_value(sym)) {
+ case no:
+ fprintf(out, "# %s is not set\n", sym->name);
+ break;
+ case mod:
+ fprintf(out, "%s=m\n", sym->name);
+ break;
+ case yes:
+ fprintf(out, "%s=y\n", sym->name);
+ break;
+ }
+ break;
+ case S_STRING:
+ str = sym_get_string_value(sym);
+ fprintf(out, "%s=\"", sym->name);
+ while (1) {
+ l = strcspn(str, "\"\\");
+ if (l) {
+ fwrite(str, l, 1, out);
+ str += l;
+ }
+ if (!*str)
+ break;
+ fprintf(out, "\\%c", *str++);
+ }
+ fputs("\"\n", out);
+ break;
+ case S_HEX:
+ str = sym_get_string_value(sym);
+ if (str[0] != '0' || (str[1] != 'x' && str[1] != 'X')) {
+ fprintf(out, "%s=%s\n", sym->name, str);
+ break;
+ }
+ case S_INT:
+ str = sym_get_string_value(sym);
+ fprintf(out, "%s=%s\n", sym->name, str);
+ break;
+ }
+ }
+
+ next:
+ if (menu->list) {
+ menu = menu->list;
+ continue;
+ }
+ if (menu->next)
+ menu = menu->next;
+ else while ((menu = menu->parent)) {
+ if (menu->next) {
+ menu = menu->next;
+ break;
+ }
+ }
+ }
+ fclose(out);
+
+ if (*tmpname) {
+ strcat(dirname, basename);
+ strcat(dirname, ".old");
+ rename(newname, dirname);
+ if (rename(tmpname, newname))
+ return 1;
+ }
+
+ printf(_("#\n"
+ "# configuration written to %s\n"
+ "#\n"), newname);
+
+ sym_set_change_count(0);
+
+ return 0;
+}
+
+int conf_split_config(void)
+{
+ char *name, path[128], opwd[512];
+ char *s, *d, c;
+ struct symbol *sym;
+ struct stat sb;
+ int res, i, fd;
+
+ name = getenv("KCONFIG_AUTOCONFIG");
+ if (!name)
+ name = "include/config/auto.conf";
+ conf_read_simple(name, S_DEF_AUTO);
+
+ if (getcwd(opwd, sizeof(opwd)) == NULL)
+ return 1;
+ if (chdir(dirname(strdup(name))))
+ return 1;
+
+ res = 0;
+ for_all_symbols(i, sym) {
+ sym_calc_value(sym);
+ if ((sym->flags & SYMBOL_AUTO) || !sym->name)
+ continue;
+ if (sym->flags & SYMBOL_WRITE) {
+ if (sym->flags & SYMBOL_DEF_AUTO) {
+ /*
+ * symbol has old and new value,
+ * so compare them...
+ */
+ switch (sym->type) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ if (sym_get_tristate_value(sym) ==
+ sym->def[S_DEF_AUTO].tri)
+ continue;
+ break;
+ case S_STRING:
+ case S_HEX:
+ case S_INT:
+ if (!strcmp(sym_get_string_value(sym),
+ sym->def[S_DEF_AUTO].val))
+ continue;
+ break;
+ default:
+ break;
+ }
+ } else {
+ /*
+ * If there is no old value, only 'no' (unset)
+ * is allowed as new value.
+ */
+ switch (sym->type) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ if (sym_get_tristate_value(sym) == no)
+ continue;
+ break;
+ default:
+ break;
+ }
+ }
+ } else if (!(sym->flags & SYMBOL_DEF_AUTO))
+ /* There is neither an old nor a new value. */
+ continue;
+ /* else
+ * There is an old value, but no new value ('no' (unset)
+ * isn't saved in auto.conf, so the old value is always
+ * different from 'no').
+ */
+
+ /* Replace all '_' and append ".h" */
+ s = sym->name;
+ d = path;
+ while ((c = *s++)) {
+ c = tolower(c);
+ *d++ = (c == '_') ? '/' : c;
+ }
+ strcpy(d, ".h");
+
+ /* Assume directory path already exists. */
+ fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644);
+ if (fd == -1) {
+ if (errno != ENOENT) {
+ res = 1;
+ break;
+ }
+ /*
+ * Create directory components,
+ * unless they exist already.
+ */
+ d = path;
+ while ((d = strchr(d, '/'))) {
+ *d = 0;
+ if (stat(path, &sb) && mkdir(path, 0755)) {
+ res = 1;
+ goto out;
+ }
+ *d++ = '/';
+ }
+ /* Try it again. */
+ fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0644);
+ if (fd == -1) {
+ res = 1;
+ break;
+ }
+ }
+ close(fd);
+ }
+out:
+ if (chdir(opwd))
+ return 1;
+
+ return res;
+}
+
+int conf_write_autoconf(void)
+{
+ char opwd[512];
+ struct symbol *sym;
+ const char *str;
+ char *name;
+ FILE *out, *out_h;
+ time_t now;
+ int i, l;
+
+ if (getcwd(opwd, sizeof(opwd)) == NULL)
+ return 1;
+ if (chdir(dirname(strdup(conf_get_configname()))))
+ return 1;
+ sym_clear_all_valid();
+
+ file_write_dep("include/config/auto.conf.cmd");
+
+ if (conf_split_config())
+ return 1;
+
+ out = fopen(".tmpconfig", "w");
+ if (!out)
+ return 1;
+
+ out_h = fopen(".tmpconfig.h", "w");
+ if (!out_h) {
+ fclose(out);
+ return 1;
+ }
+
+ sym = sym_lookup("VERSION", 0);
+ sym_calc_value(sym);
+ time(&now);
+ fprintf(out, "#\n"
+ "# Automatically generated make config: don't edit\n"
+ "# Version: %s\n"
+ "# %s"
+ "#\n",
+ sym_get_string_value(sym), ctime(&now));
+ fprintf(out_h, "/*\n"
+ " * Automatically generated C config: don't edit\n"
+ " * Version: %s\n"
+ " * %s"
+ " */\n"
+ "#define AUTOCONF_INCLUDED\n",
+ sym_get_string_value(sym), ctime(&now));
+
+ for_all_symbols(i, sym) {
+ sym_calc_value(sym);
+ if (!(sym->flags & SYMBOL_WRITE) || !sym->name)
+ continue;
+ switch (sym->type) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ switch (sym_get_tristate_value(sym)) {
+ case no:
+ break;
+ case mod:
+ fprintf(out, "CONFIG_%s=m\n", sym->name);
+ fprintf(out_h, "#define CONFIG_%s_MODULE 1\n", sym->name);
+ break;
+ case yes:
+ fprintf(out, "%s=y\n", sym->name);
+ fprintf(out_h, "#define %s 1\n", sym->name);
+ break;
+ }
+ break;
+ case S_STRING:
+ str = sym_get_string_value(sym);
+ fprintf(out, "%s=\"", sym->name);
+ fprintf(out_h, "#define %s \"", sym->name);
+ while (1) {
+ l = strcspn(str, "\"\\");
+ if (l) {
+ fwrite(str, l, 1, out);
+ fwrite(str, l, 1, out_h);
+ str += l;
+ }
+ if (!*str)
+ break;
+ fprintf(out, "\\%c", *str);
+ fprintf(out_h, "\\%c", *str);
+ str++;
+ }
+ fputs("\"\n", out);
+ fputs("\"\n", out_h);
+ break;
+ case S_HEX:
+ str = sym_get_string_value(sym);
+ if (str[0] != '0' || (str[1] != 'x' && str[1] != 'X')) {
+ fprintf(out, "%s=%s\n", sym->name, str);
+ fprintf(out_h, "#define %s 0x%s\n", sym->name, str);
+ break;
+ }
+ case S_INT:
+ str = sym_get_string_value(sym);
+ fprintf(out, "%s=%s\n", sym->name, str);
+ fprintf(out_h, "#define %s %s\n", sym->name, str);
+ break;
+ default:
+ break;
+ }
+ }
+ fclose(out);
+ fclose(out_h);
+
+ name = getenv("KCONFIG_AUTOHEADER");
+ if (!name)
+ name = "include/config/autoconf.h";
+ if (rename(".tmpconfig.h", name))
+ return 1;
+ name = getenv("KCONFIG_AUTOCONFIG");
+ if (!name)
+ name = "include/config/auto.conf";
+ /*
+ * This must be the last step, kbuild has a dependency on auto.conf
+ * and this marks the successful completion of the previous steps.
+ */
+ if (rename(".tmpconfig", name))
+ return 1;
+ chdir(opwd);
+ return 0;
+}
+
+static int sym_change_count;
+static void (*conf_changed_callback)(void);
+
+void sym_set_change_count(int count)
+{
+ int _sym_change_count = sym_change_count;
+ sym_change_count = count;
+ if (conf_changed_callback &&
+ (bool)_sym_change_count != (bool)count)
+ conf_changed_callback();
+}
+
+void sym_add_change_count(int count)
+{
+ sym_set_change_count(count + sym_change_count);
+}
+
+bool conf_get_changed(void)
+{
+ return sym_change_count;
+}
+
+void conf_set_changed_callback(void (*fn)(void))
+{
+ conf_changed_callback = fn;
+}
+
+
+void conf_set_all_new_symbols(enum conf_def_mode mode)
+{
+ struct symbol *sym, *csym;
+ struct property *prop;
+ struct expr *e;
+ int i, cnt, def;
+
+ for_all_symbols(i, sym) {
+ if (sym_has_value(sym))
+ continue;
+ switch (sym_get_type(sym)) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ switch (mode) {
+ case def_yes:
+ sym->def[S_DEF_USER].tri = yes;
+ break;
+ case def_mod:
+ sym->def[S_DEF_USER].tri = mod;
+ break;
+ case def_no:
+ sym->def[S_DEF_USER].tri = no;
+ break;
+ case def_random:
+ sym->def[S_DEF_USER].tri = (tristate)(rand() % 3);
+ break;
+ default:
+ continue;
+ }
+ if (!(sym_is_choice(sym) && mode == def_random))
+ sym->flags |= SYMBOL_DEF_USER;
+ break;
+ default:
+ break;
+ }
+
+ }
+
+ sym_clear_all_valid();
+
+ if (mode != def_random)
+ return;
+ /*
+ * We have different type of choice blocks.
+ * If curr.tri equal to mod then we can select several
+ * choice symbols in one block.
+ * In this case we do nothing.
+ * If curr.tri equal yes then only one symbol can be
+ * selected in a choice block and we set it to yes,
+ * and the rest to no.
+ */
+ for_all_symbols(i, csym) {
+ if (sym_has_value(csym) || !sym_is_choice(csym))
+ continue;
+
+ sym_calc_value(csym);
+
+ if (csym->curr.tri != yes)
+ continue;
+
+ prop = sym_get_choice_prop(csym);
+
+ /* count entries in choice block */
+ cnt = 0;
+ expr_list_for_each_sym(prop->expr, e, sym)
+ cnt++;
+
+ /*
+ * find a random value and set it to yes,
+ * set the rest to no so we have only one set
+ */
+ def = (rand() % cnt);
+
+ cnt = 0;
+ expr_list_for_each_sym(prop->expr, e, sym) {
+ if (def == cnt++) {
+ sym->def[S_DEF_USER].tri = yes;
+ csym->def[S_DEF_USER].val = sym;
+ }
+ else {
+ sym->def[S_DEF_USER].tri = no;
+ }
+ }
+ csym->flags |= SYMBOL_DEF_USER;
+ /* clear VALID to get value calculated */
+ csym->flags &= ~(SYMBOL_VALID);
+ }
+}
diff --git a/ap/build/uClibc/extra/config/expr.c b/ap/build/uClibc/extra/config/expr.c
new file mode 100644
index 0000000..579ece4
--- /dev/null
+++ b/ap/build/uClibc/extra/config/expr.c
@@ -0,0 +1,1106 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+#define DEBUG_EXPR 0
+
+struct expr *expr_alloc_symbol(struct symbol *sym)
+{
+ struct expr *e = malloc(sizeof(*e));
+ memset(e, 0, sizeof(*e));
+ e->type = E_SYMBOL;
+ e->left.sym = sym;
+ return e;
+}
+
+struct expr *expr_alloc_one(enum expr_type type, struct expr *ce)
+{
+ struct expr *e = malloc(sizeof(*e));
+ memset(e, 0, sizeof(*e));
+ e->type = type;
+ e->left.expr = ce;
+ return e;
+}
+
+struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2)
+{
+ struct expr *e = malloc(sizeof(*e));
+ memset(e, 0, sizeof(*e));
+ e->type = type;
+ e->left.expr = e1;
+ e->right.expr = e2;
+ return e;
+}
+
+struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2)
+{
+ struct expr *e = malloc(sizeof(*e));
+ memset(e, 0, sizeof(*e));
+ e->type = type;
+ e->left.sym = s1;
+ e->right.sym = s2;
+ return e;
+}
+
+struct expr *expr_alloc_and(struct expr *e1, struct expr *e2)
+{
+ if (!e1)
+ return e2;
+ return e2 ? expr_alloc_two(E_AND, e1, e2) : e1;
+}
+
+struct expr *expr_alloc_or(struct expr *e1, struct expr *e2)
+{
+ if (!e1)
+ return e2;
+ return e2 ? expr_alloc_two(E_OR, e1, e2) : e1;
+}
+
+struct expr *expr_copy(struct expr *org)
+{
+ struct expr *e;
+
+ if (!org)
+ return NULL;
+
+ e = malloc(sizeof(*org));
+ memcpy(e, org, sizeof(*org));
+ switch (org->type) {
+ case E_SYMBOL:
+ e->left = org->left;
+ break;
+ case E_NOT:
+ e->left.expr = expr_copy(org->left.expr);
+ break;
+ case E_EQUAL:
+ case E_UNEQUAL:
+ e->left.sym = org->left.sym;
+ e->right.sym = org->right.sym;
+ break;
+ case E_AND:
+ case E_OR:
+ case E_LIST:
+ e->left.expr = expr_copy(org->left.expr);
+ e->right.expr = expr_copy(org->right.expr);
+ break;
+ default:
+ printf("can't copy type %d\n", e->type);
+ free(e);
+ e = NULL;
+ break;
+ }
+
+ return e;
+}
+
+void expr_free(struct expr *e)
+{
+ if (!e)
+ return;
+
+ switch (e->type) {
+ case E_SYMBOL:
+ break;
+ case E_NOT:
+ expr_free(e->left.expr);
+ return;
+ case E_EQUAL:
+ case E_UNEQUAL:
+ break;
+ case E_OR:
+ case E_AND:
+ expr_free(e->left.expr);
+ expr_free(e->right.expr);
+ break;
+ default:
+ printf("how to free type %d?\n", e->type);
+ break;
+ }
+ free(e);
+}
+
+static int trans_count;
+
+#define e1 (*ep1)
+#define e2 (*ep2)
+
+static void __expr_eliminate_eq(enum expr_type type, struct expr **ep1, struct expr **ep2)
+{
+ if (e1->type == type) {
+ __expr_eliminate_eq(type, &e1->left.expr, &e2);
+ __expr_eliminate_eq(type, &e1->right.expr, &e2);
+ return;
+ }
+ if (e2->type == type) {
+ __expr_eliminate_eq(type, &e1, &e2->left.expr);
+ __expr_eliminate_eq(type, &e1, &e2->right.expr);
+ return;
+ }
+ if (e1->type == E_SYMBOL && e2->type == E_SYMBOL &&
+ e1->left.sym == e2->left.sym &&
+ (e1->left.sym == &symbol_yes || e1->left.sym == &symbol_no))
+ return;
+ if (!expr_eq(e1, e2))
+ return;
+ trans_count++;
+ expr_free(e1); expr_free(e2);
+ switch (type) {
+ case E_OR:
+ e1 = expr_alloc_symbol(&symbol_no);
+ e2 = expr_alloc_symbol(&symbol_no);
+ break;
+ case E_AND:
+ e1 = expr_alloc_symbol(&symbol_yes);
+ e2 = expr_alloc_symbol(&symbol_yes);
+ break;
+ default:
+ ;
+ }
+}
+
+void expr_eliminate_eq(struct expr **ep1, struct expr **ep2)
+{
+ if (!e1 || !e2)
+ return;
+ switch (e1->type) {
+ case E_OR:
+ case E_AND:
+ __expr_eliminate_eq(e1->type, ep1, ep2);
+ default:
+ ;
+ }
+ if (e1->type != e2->type) switch (e2->type) {
+ case E_OR:
+ case E_AND:
+ __expr_eliminate_eq(e2->type, ep1, ep2);
+ default:
+ ;
+ }
+ e1 = expr_eliminate_yn(e1);
+ e2 = expr_eliminate_yn(e2);
+}
+
+#undef e1
+#undef e2
+
+int expr_eq(struct expr *e1, struct expr *e2)
+{
+ int res, old_count;
+
+ if (e1->type != e2->type)
+ return 0;
+ switch (e1->type) {
+ case E_EQUAL:
+ case E_UNEQUAL:
+ return e1->left.sym == e2->left.sym && e1->right.sym == e2->right.sym;
+ case E_SYMBOL:
+ return e1->left.sym == e2->left.sym;
+ case E_NOT:
+ return expr_eq(e1->left.expr, e2->left.expr);
+ case E_AND:
+ case E_OR:
+ e1 = expr_copy(e1);
+ e2 = expr_copy(e2);
+ old_count = trans_count;
+ expr_eliminate_eq(&e1, &e2);
+ res = (e1->type == E_SYMBOL && e2->type == E_SYMBOL &&
+ e1->left.sym == e2->left.sym);
+ expr_free(e1);
+ expr_free(e2);
+ trans_count = old_count;
+ return res;
+ case E_LIST:
+ case E_RANGE:
+ case E_NONE:
+ /* panic */;
+ }
+
+ if (DEBUG_EXPR) {
+ expr_fprint(e1, stdout);
+ printf(" = ");
+ expr_fprint(e2, stdout);
+ printf(" ?\n");
+ }
+
+ return 0;
+}
+
+struct expr *expr_eliminate_yn(struct expr *e)
+{
+ struct expr *tmp;
+
+ if (e) switch (e->type) {
+ case E_AND:
+ e->left.expr = expr_eliminate_yn(e->left.expr);
+ e->right.expr = expr_eliminate_yn(e->right.expr);
+ if (e->left.expr->type == E_SYMBOL) {
+ if (e->left.expr->left.sym == &symbol_no) {
+ expr_free(e->left.expr);
+ expr_free(e->right.expr);
+ e->type = E_SYMBOL;
+ e->left.sym = &symbol_no;
+ e->right.expr = NULL;
+ return e;
+ } else if (e->left.expr->left.sym == &symbol_yes) {
+ free(e->left.expr);
+ tmp = e->right.expr;
+ *e = *(e->right.expr);
+ free(tmp);
+ return e;
+ }
+ }
+ if (e->right.expr->type == E_SYMBOL) {
+ if (e->right.expr->left.sym == &symbol_no) {
+ expr_free(e->left.expr);
+ expr_free(e->right.expr);
+ e->type = E_SYMBOL;
+ e->left.sym = &symbol_no;
+ e->right.expr = NULL;
+ return e;
+ } else if (e->right.expr->left.sym == &symbol_yes) {
+ free(e->right.expr);
+ tmp = e->left.expr;
+ *e = *(e->left.expr);
+ free(tmp);
+ return e;
+ }
+ }
+ break;
+ case E_OR:
+ e->left.expr = expr_eliminate_yn(e->left.expr);
+ e->right.expr = expr_eliminate_yn(e->right.expr);
+ if (e->left.expr->type == E_SYMBOL) {
+ if (e->left.expr->left.sym == &symbol_no) {
+ free(e->left.expr);
+ tmp = e->right.expr;
+ *e = *(e->right.expr);
+ free(tmp);
+ return e;
+ } else if (e->left.expr->left.sym == &symbol_yes) {
+ expr_free(e->left.expr);
+ expr_free(e->right.expr);
+ e->type = E_SYMBOL;
+ e->left.sym = &symbol_yes;
+ e->right.expr = NULL;
+ return e;
+ }
+ }
+ if (e->right.expr->type == E_SYMBOL) {
+ if (e->right.expr->left.sym == &symbol_no) {
+ free(e->right.expr);
+ tmp = e->left.expr;
+ *e = *(e->left.expr);
+ free(tmp);
+ return e;
+ } else if (e->right.expr->left.sym == &symbol_yes) {
+ expr_free(e->left.expr);
+ expr_free(e->right.expr);
+ e->type = E_SYMBOL;
+ e->left.sym = &symbol_yes;
+ e->right.expr = NULL;
+ return e;
+ }
+ }
+ break;
+ default:
+ ;
+ }
+ return e;
+}
+
+/*
+ * bool FOO!=n => FOO
+ */
+struct expr *expr_trans_bool(struct expr *e)
+{
+ if (!e)
+ return NULL;
+ switch (e->type) {
+ case E_AND:
+ case E_OR:
+ case E_NOT:
+ e->left.expr = expr_trans_bool(e->left.expr);
+ e->right.expr = expr_trans_bool(e->right.expr);
+ break;
+ case E_UNEQUAL:
+ // FOO!=n -> FOO
+ if (e->left.sym->type == S_TRISTATE) {
+ if (e->right.sym == &symbol_no) {
+ e->type = E_SYMBOL;
+ e->right.sym = NULL;
+ }
+ }
+ break;
+ default:
+ ;
+ }
+ return e;
+}
+
+/*
+ * e1 || e2 -> ?
+ */
+struct expr *expr_join_or(struct expr *e1, struct expr *e2)
+{
+ struct expr *tmp;
+ struct symbol *sym1, *sym2;
+
+ if (expr_eq(e1, e2))
+ return expr_copy(e1);
+ if (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT)
+ return NULL;
+ if (e2->type != E_EQUAL && e2->type != E_UNEQUAL && e2->type != E_SYMBOL && e2->type != E_NOT)
+ return NULL;
+ if (e1->type == E_NOT) {
+ tmp = e1->left.expr;
+ if (tmp->type != E_EQUAL && tmp->type != E_UNEQUAL && tmp->type != E_SYMBOL)
+ return NULL;
+ sym1 = tmp->left.sym;
+ } else
+ sym1 = e1->left.sym;
+ if (e2->type == E_NOT) {
+ if (e2->left.expr->type != E_SYMBOL)
+ return NULL;
+ sym2 = e2->left.expr->left.sym;
+ } else
+ sym2 = e2->left.sym;
+ if (sym1 != sym2)
+ return NULL;
+ if (sym1->type != S_BOOLEAN && sym1->type != S_TRISTATE)
+ return NULL;
+ if (sym1->type == S_TRISTATE) {
+ if (e1->type == E_EQUAL && e2->type == E_EQUAL &&
+ ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) ||
+ (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes))) {
+ // (a='y') || (a='m') -> (a!='n')
+ return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_no);
+ }
+ if (e1->type == E_EQUAL && e2->type == E_EQUAL &&
+ ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) ||
+ (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes))) {
+ // (a='y') || (a='n') -> (a!='m')
+ return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_mod);
+ }
+ if (e1->type == E_EQUAL && e2->type == E_EQUAL &&
+ ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) ||
+ (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod))) {
+ // (a='m') || (a='n') -> (a!='y')
+ return expr_alloc_comp(E_UNEQUAL, sym1, &symbol_yes);
+ }
+ }
+ if (sym1->type == S_BOOLEAN && sym1 == sym2) {
+ if ((e1->type == E_NOT && e1->left.expr->type == E_SYMBOL && e2->type == E_SYMBOL) ||
+ (e2->type == E_NOT && e2->left.expr->type == E_SYMBOL && e1->type == E_SYMBOL))
+ return expr_alloc_symbol(&symbol_yes);
+ }
+
+ if (DEBUG_EXPR) {
+ printf("optimize (");
+ expr_fprint(e1, stdout);
+ printf(") || (");
+ expr_fprint(e2, stdout);
+ printf(")?\n");
+ }
+ return NULL;
+}
+
+struct expr *expr_join_and(struct expr *e1, struct expr *e2)
+{
+ struct expr *tmp;
+ struct symbol *sym1, *sym2;
+
+ if (expr_eq(e1, e2))
+ return expr_copy(e1);
+ if (e1->type != E_EQUAL && e1->type != E_UNEQUAL && e1->type != E_SYMBOL && e1->type != E_NOT)
+ return NULL;
+ if (e2->type != E_EQUAL && e2->type != E_UNEQUAL && e2->type != E_SYMBOL && e2->type != E_NOT)
+ return NULL;
+ if (e1->type == E_NOT) {
+ tmp = e1->left.expr;
+ if (tmp->type != E_EQUAL && tmp->type != E_UNEQUAL && tmp->type != E_SYMBOL)
+ return NULL;
+ sym1 = tmp->left.sym;
+ } else
+ sym1 = e1->left.sym;
+ if (e2->type == E_NOT) {
+ if (e2->left.expr->type != E_SYMBOL)
+ return NULL;
+ sym2 = e2->left.expr->left.sym;
+ } else
+ sym2 = e2->left.sym;
+ if (sym1 != sym2)
+ return NULL;
+ if (sym1->type != S_BOOLEAN && sym1->type != S_TRISTATE)
+ return NULL;
+
+ if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_yes) ||
+ (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_yes))
+ // (a) && (a='y') -> (a='y')
+ return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes);
+
+ if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_no) ||
+ (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_no))
+ // (a) && (a!='n') -> (a)
+ return expr_alloc_symbol(sym1);
+
+ if ((e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_mod) ||
+ (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_mod))
+ // (a) && (a!='m') -> (a='y')
+ return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes);
+
+ if (sym1->type == S_TRISTATE) {
+ if (e1->type == E_EQUAL && e2->type == E_UNEQUAL) {
+ // (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b'
+ sym2 = e1->right.sym;
+ if ((e2->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST))
+ return sym2 != e2->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2)
+ : expr_alloc_symbol(&symbol_no);
+ }
+ if (e1->type == E_UNEQUAL && e2->type == E_EQUAL) {
+ // (a='b') && (a!='c') -> 'b'='c' ? 'n' : a='b'
+ sym2 = e2->right.sym;
+ if ((e1->right.sym->flags & SYMBOL_CONST) && (sym2->flags & SYMBOL_CONST))
+ return sym2 != e1->right.sym ? expr_alloc_comp(E_EQUAL, sym1, sym2)
+ : expr_alloc_symbol(&symbol_no);
+ }
+ if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL &&
+ ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_no) ||
+ (e1->right.sym == &symbol_no && e2->right.sym == &symbol_yes)))
+ // (a!='y') && (a!='n') -> (a='m')
+ return expr_alloc_comp(E_EQUAL, sym1, &symbol_mod);
+
+ if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL &&
+ ((e1->right.sym == &symbol_yes && e2->right.sym == &symbol_mod) ||
+ (e1->right.sym == &symbol_mod && e2->right.sym == &symbol_yes)))
+ // (a!='y') && (a!='m') -> (a='n')
+ return expr_alloc_comp(E_EQUAL, sym1, &symbol_no);
+
+ if (e1->type == E_UNEQUAL && e2->type == E_UNEQUAL &&
+ ((e1->right.sym == &symbol_mod && e2->right.sym == &symbol_no) ||
+ (e1->right.sym == &symbol_no && e2->right.sym == &symbol_mod)))
+ // (a!='m') && (a!='n') -> (a='m')
+ return expr_alloc_comp(E_EQUAL, sym1, &symbol_yes);
+
+ if ((e1->type == E_SYMBOL && e2->type == E_EQUAL && e2->right.sym == &symbol_mod) ||
+ (e2->type == E_SYMBOL && e1->type == E_EQUAL && e1->right.sym == &symbol_mod) ||
+ (e1->type == E_SYMBOL && e2->type == E_UNEQUAL && e2->right.sym == &symbol_yes) ||
+ (e2->type == E_SYMBOL && e1->type == E_UNEQUAL && e1->right.sym == &symbol_yes))
+ return NULL;
+ }
+
+ if (DEBUG_EXPR) {
+ printf("optimize (");
+ expr_fprint(e1, stdout);
+ printf(") && (");
+ expr_fprint(e2, stdout);
+ printf(")?\n");
+ }
+ return NULL;
+}
+
+static void expr_eliminate_dups1(enum expr_type type, struct expr **ep1, struct expr **ep2)
+{
+#define e1 (*ep1)
+#define e2 (*ep2)
+ struct expr *tmp;
+
+ if (e1->type == type) {
+ expr_eliminate_dups1(type, &e1->left.expr, &e2);
+ expr_eliminate_dups1(type, &e1->right.expr, &e2);
+ return;
+ }
+ if (e2->type == type) {
+ expr_eliminate_dups1(type, &e1, &e2->left.expr);
+ expr_eliminate_dups1(type, &e1, &e2->right.expr);
+ return;
+ }
+ if (e1 == e2)
+ return;
+
+ switch (e1->type) {
+ case E_OR: case E_AND:
+ expr_eliminate_dups1(e1->type, &e1, &e1);
+ default:
+ ;
+ }
+
+ switch (type) {
+ case E_OR:
+ tmp = expr_join_or(e1, e2);
+ if (tmp) {
+ expr_free(e1); expr_free(e2);
+ e1 = expr_alloc_symbol(&symbol_no);
+ e2 = tmp;
+ trans_count++;
+ }
+ break;
+ case E_AND:
+ tmp = expr_join_and(e1, e2);
+ if (tmp) {
+ expr_free(e1); expr_free(e2);
+ e1 = expr_alloc_symbol(&symbol_yes);
+ e2 = tmp;
+ trans_count++;
+ }
+ break;
+ default:
+ ;
+ }
+#undef e1
+#undef e2
+}
+
+static void expr_eliminate_dups2(enum expr_type type, struct expr **ep1, struct expr **ep2)
+{
+#define e1 (*ep1)
+#define e2 (*ep2)
+ struct expr *tmp, *tmp1, *tmp2;
+
+ if (e1->type == type) {
+ expr_eliminate_dups2(type, &e1->left.expr, &e2);
+ expr_eliminate_dups2(type, &e1->right.expr, &e2);
+ return;
+ }
+ if (e2->type == type) {
+ expr_eliminate_dups2(type, &e1, &e2->left.expr);
+ expr_eliminate_dups2(type, &e1, &e2->right.expr);
+ }
+ if (e1 == e2)
+ return;
+
+ switch (e1->type) {
+ case E_OR:
+ expr_eliminate_dups2(e1->type, &e1, &e1);
+ // (FOO || BAR) && (!FOO && !BAR) -> n
+ tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1)));
+ tmp2 = expr_copy(e2);
+ tmp = expr_extract_eq_and(&tmp1, &tmp2);
+ if (expr_is_yes(tmp1)) {
+ expr_free(e1);
+ e1 = expr_alloc_symbol(&symbol_no);
+ trans_count++;
+ }
+ expr_free(tmp2);
+ expr_free(tmp1);
+ expr_free(tmp);
+ break;
+ case E_AND:
+ expr_eliminate_dups2(e1->type, &e1, &e1);
+ // (FOO && BAR) || (!FOO || !BAR) -> y
+ tmp1 = expr_transform(expr_alloc_one(E_NOT, expr_copy(e1)));
+ tmp2 = expr_copy(e2);
+ tmp = expr_extract_eq_or(&tmp1, &tmp2);
+ if (expr_is_no(tmp1)) {
+ expr_free(e1);
+ e1 = expr_alloc_symbol(&symbol_yes);
+ trans_count++;
+ }
+ expr_free(tmp2);
+ expr_free(tmp1);
+ expr_free(tmp);
+ break;
+ default:
+ ;
+ }
+#undef e1
+#undef e2
+}
+
+struct expr *expr_eliminate_dups(struct expr *e)
+{
+ int oldcount;
+ if (!e)
+ return e;
+
+ oldcount = trans_count;
+ while (1) {
+ trans_count = 0;
+ switch (e->type) {
+ case E_OR: case E_AND:
+ expr_eliminate_dups1(e->type, &e, &e);
+ expr_eliminate_dups2(e->type, &e, &e);
+ default:
+ ;
+ }
+ if (!trans_count)
+ break;
+ e = expr_eliminate_yn(e);
+ }
+ trans_count = oldcount;
+ return e;
+}
+
+struct expr *expr_transform(struct expr *e)
+{
+ struct expr *tmp;
+
+ if (!e)
+ return NULL;
+ switch (e->type) {
+ case E_EQUAL:
+ case E_UNEQUAL:
+ case E_SYMBOL:
+ case E_LIST:
+ break;
+ default:
+ e->left.expr = expr_transform(e->left.expr);
+ e->right.expr = expr_transform(e->right.expr);
+ }
+
+ switch (e->type) {
+ case E_EQUAL:
+ if (e->left.sym->type != S_BOOLEAN)
+ break;
+ if (e->right.sym == &symbol_no) {
+ e->type = E_NOT;
+ e->left.expr = expr_alloc_symbol(e->left.sym);
+ e->right.sym = NULL;
+ break;
+ }
+ if (e->right.sym == &symbol_mod) {
+ printf("boolean symbol %s tested for 'm'? test forced to 'n'\n", e->left.sym->name);
+ e->type = E_SYMBOL;
+ e->left.sym = &symbol_no;
+ e->right.sym = NULL;
+ break;
+ }
+ if (e->right.sym == &symbol_yes) {
+ e->type = E_SYMBOL;
+ e->right.sym = NULL;
+ break;
+ }
+ break;
+ case E_UNEQUAL:
+ if (e->left.sym->type != S_BOOLEAN)
+ break;
+ if (e->right.sym == &symbol_no) {
+ e->type = E_SYMBOL;
+ e->right.sym = NULL;
+ break;
+ }
+ if (e->right.sym == &symbol_mod) {
+ printf("boolean symbol %s tested for 'm'? test forced to 'y'\n", e->left.sym->name);
+ e->type = E_SYMBOL;
+ e->left.sym = &symbol_yes;
+ e->right.sym = NULL;
+ break;
+ }
+ if (e->right.sym == &symbol_yes) {
+ e->type = E_NOT;
+ e->left.expr = expr_alloc_symbol(e->left.sym);
+ e->right.sym = NULL;
+ break;
+ }
+ break;
+ case E_NOT:
+ switch (e->left.expr->type) {
+ case E_NOT:
+ // !!a -> a
+ tmp = e->left.expr->left.expr;
+ free(e->left.expr);
+ free(e);
+ e = tmp;
+ e = expr_transform(e);
+ break;
+ case E_EQUAL:
+ case E_UNEQUAL:
+ // !a='x' -> a!='x'
+ tmp = e->left.expr;
+ free(e);
+ e = tmp;
+ e->type = e->type == E_EQUAL ? E_UNEQUAL : E_EQUAL;
+ break;
+ case E_OR:
+ // !(a || b) -> !a && !b
+ tmp = e->left.expr;
+ e->type = E_AND;
+ e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr);
+ tmp->type = E_NOT;
+ tmp->right.expr = NULL;
+ e = expr_transform(e);
+ break;
+ case E_AND:
+ // !(a && b) -> !a || !b
+ tmp = e->left.expr;
+ e->type = E_OR;
+ e->right.expr = expr_alloc_one(E_NOT, tmp->right.expr);
+ tmp->type = E_NOT;
+ tmp->right.expr = NULL;
+ e = expr_transform(e);
+ break;
+ case E_SYMBOL:
+ if (e->left.expr->left.sym == &symbol_yes) {
+ // !'y' -> 'n'
+ tmp = e->left.expr;
+ free(e);
+ e = tmp;
+ e->type = E_SYMBOL;
+ e->left.sym = &symbol_no;
+ break;
+ }
+ if (e->left.expr->left.sym == &symbol_mod) {
+ // !'m' -> 'm'
+ tmp = e->left.expr;
+ free(e);
+ e = tmp;
+ e->type = E_SYMBOL;
+ e->left.sym = &symbol_mod;
+ break;
+ }
+ if (e->left.expr->left.sym == &symbol_no) {
+ // !'n' -> 'y'
+ tmp = e->left.expr;
+ free(e);
+ e = tmp;
+ e->type = E_SYMBOL;
+ e->left.sym = &symbol_yes;
+ break;
+ }
+ break;
+ default:
+ ;
+ }
+ break;
+ default:
+ ;
+ }
+ return e;
+}
+
+int expr_contains_symbol(struct expr *dep, struct symbol *sym)
+{
+ if (!dep)
+ return 0;
+
+ switch (dep->type) {
+ case E_AND:
+ case E_OR:
+ return expr_contains_symbol(dep->left.expr, sym) ||
+ expr_contains_symbol(dep->right.expr, sym);
+ case E_SYMBOL:
+ return dep->left.sym == sym;
+ case E_EQUAL:
+ case E_UNEQUAL:
+ return dep->left.sym == sym ||
+ dep->right.sym == sym;
+ case E_NOT:
+ return expr_contains_symbol(dep->left.expr, sym);
+ default:
+ ;
+ }
+ return 0;
+}
+
+bool expr_depends_symbol(struct expr *dep, struct symbol *sym)
+{
+ if (!dep)
+ return false;
+
+ switch (dep->type) {
+ case E_AND:
+ return expr_depends_symbol(dep->left.expr, sym) ||
+ expr_depends_symbol(dep->right.expr, sym);
+ case E_SYMBOL:
+ return dep->left.sym == sym;
+ case E_EQUAL:
+ if (dep->left.sym == sym) {
+ if (dep->right.sym == &symbol_yes || dep->right.sym == &symbol_mod)
+ return true;
+ }
+ break;
+ case E_UNEQUAL:
+ if (dep->left.sym == sym) {
+ if (dep->right.sym == &symbol_no)
+ return true;
+ }
+ break;
+ default:
+ ;
+ }
+ return false;
+}
+
+struct expr *expr_extract_eq_and(struct expr **ep1, struct expr **ep2)
+{
+ struct expr *tmp = NULL;
+ expr_extract_eq(E_AND, &tmp, ep1, ep2);
+ if (tmp) {
+ *ep1 = expr_eliminate_yn(*ep1);
+ *ep2 = expr_eliminate_yn(*ep2);
+ }
+ return tmp;
+}
+
+struct expr *expr_extract_eq_or(struct expr **ep1, struct expr **ep2)
+{
+ struct expr *tmp = NULL;
+ expr_extract_eq(E_OR, &tmp, ep1, ep2);
+ if (tmp) {
+ *ep1 = expr_eliminate_yn(*ep1);
+ *ep2 = expr_eliminate_yn(*ep2);
+ }
+ return tmp;
+}
+
+void expr_extract_eq(enum expr_type type, struct expr **ep, struct expr **ep1, struct expr **ep2)
+{
+#define e1 (*ep1)
+#define e2 (*ep2)
+ if (e1->type == type) {
+ expr_extract_eq(type, ep, &e1->left.expr, &e2);
+ expr_extract_eq(type, ep, &e1->right.expr, &e2);
+ return;
+ }
+ if (e2->type == type) {
+ expr_extract_eq(type, ep, ep1, &e2->left.expr);
+ expr_extract_eq(type, ep, ep1, &e2->right.expr);
+ return;
+ }
+ if (expr_eq(e1, e2)) {
+ *ep = *ep ? expr_alloc_two(type, *ep, e1) : e1;
+ expr_free(e2);
+ if (type == E_AND) {
+ e1 = expr_alloc_symbol(&symbol_yes);
+ e2 = expr_alloc_symbol(&symbol_yes);
+ } else if (type == E_OR) {
+ e1 = expr_alloc_symbol(&symbol_no);
+ e2 = expr_alloc_symbol(&symbol_no);
+ }
+ }
+#undef e1
+#undef e2
+}
+
+struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym)
+{
+ struct expr *e1, *e2;
+
+ if (!e) {
+ e = expr_alloc_symbol(sym);
+ if (type == E_UNEQUAL)
+ e = expr_alloc_one(E_NOT, e);
+ return e;
+ }
+ switch (e->type) {
+ case E_AND:
+ e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym);
+ e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym);
+ if (sym == &symbol_yes)
+ e = expr_alloc_two(E_AND, e1, e2);
+ if (sym == &symbol_no)
+ e = expr_alloc_two(E_OR, e1, e2);
+ if (type == E_UNEQUAL)
+ e = expr_alloc_one(E_NOT, e);
+ return e;
+ case E_OR:
+ e1 = expr_trans_compare(e->left.expr, E_EQUAL, sym);
+ e2 = expr_trans_compare(e->right.expr, E_EQUAL, sym);
+ if (sym == &symbol_yes)
+ e = expr_alloc_two(E_OR, e1, e2);
+ if (sym == &symbol_no)
+ e = expr_alloc_two(E_AND, e1, e2);
+ if (type == E_UNEQUAL)
+ e = expr_alloc_one(E_NOT, e);
+ return e;
+ case E_NOT:
+ return expr_trans_compare(e->left.expr, type == E_EQUAL ? E_UNEQUAL : E_EQUAL, sym);
+ case E_UNEQUAL:
+ case E_EQUAL:
+ if (type == E_EQUAL) {
+ if (sym == &symbol_yes)
+ return expr_copy(e);
+ if (sym == &symbol_mod)
+ return expr_alloc_symbol(&symbol_no);
+ if (sym == &symbol_no)
+ return expr_alloc_one(E_NOT, expr_copy(e));
+ } else {
+ if (sym == &symbol_yes)
+ return expr_alloc_one(E_NOT, expr_copy(e));
+ if (sym == &symbol_mod)
+ return expr_alloc_symbol(&symbol_yes);
+ if (sym == &symbol_no)
+ return expr_copy(e);
+ }
+ break;
+ case E_SYMBOL:
+ return expr_alloc_comp(type, e->left.sym, sym);
+ case E_LIST:
+ case E_RANGE:
+ case E_NONE:
+ /* panic */;
+ }
+ return NULL;
+}
+
+tristate expr_calc_value(struct expr *e)
+{
+ tristate val1, val2;
+ const char *str1, *str2;
+
+ if (!e)
+ return yes;
+
+ switch (e->type) {
+ case E_SYMBOL:
+ sym_calc_value(e->left.sym);
+ return e->left.sym->curr.tri;
+ case E_AND:
+ val1 = expr_calc_value(e->left.expr);
+ val2 = expr_calc_value(e->right.expr);
+ return EXPR_AND(val1, val2);
+ case E_OR:
+ val1 = expr_calc_value(e->left.expr);
+ val2 = expr_calc_value(e->right.expr);
+ return EXPR_OR(val1, val2);
+ case E_NOT:
+ val1 = expr_calc_value(e->left.expr);
+ return EXPR_NOT(val1);
+ case E_EQUAL:
+ sym_calc_value(e->left.sym);
+ sym_calc_value(e->right.sym);
+ str1 = sym_get_string_value(e->left.sym);
+ str2 = sym_get_string_value(e->right.sym);
+ return !strcmp(str1, str2) ? yes : no;
+ case E_UNEQUAL:
+ sym_calc_value(e->left.sym);
+ sym_calc_value(e->right.sym);
+ str1 = sym_get_string_value(e->left.sym);
+ str2 = sym_get_string_value(e->right.sym);
+ return !strcmp(str1, str2) ? no : yes;
+ default:
+ printf("expr_calc_value: %d?\n", e->type);
+ return no;
+ }
+}
+
+int expr_compare_type(enum expr_type t1, enum expr_type t2)
+{
+#if 0
+ return 1;
+#else
+ if (t1 == t2)
+ return 0;
+ switch (t1) {
+ case E_EQUAL:
+ case E_UNEQUAL:
+ if (t2 == E_NOT)
+ return 1;
+ case E_NOT:
+ if (t2 == E_AND)
+ return 1;
+ case E_AND:
+ if (t2 == E_OR)
+ return 1;
+ case E_OR:
+ if (t2 == E_LIST)
+ return 1;
+ case E_LIST:
+ if (t2 == 0)
+ return 1;
+ default:
+ return -1;
+ }
+ printf("[%dgt%d?]", t1, t2);
+ return 0;
+#endif
+}
+
+void expr_print(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken)
+{
+ if (!e) {
+ fn(data, NULL, "y");
+ return;
+ }
+
+ if (expr_compare_type(prevtoken, e->type) > 0)
+ fn(data, NULL, "(");
+ switch (e->type) {
+ case E_SYMBOL:
+ if (e->left.sym->name)
+ fn(data, e->left.sym, e->left.sym->name);
+ else
+ fn(data, NULL, "<choice>");
+ break;
+ case E_NOT:
+ fn(data, NULL, "!");
+ expr_print(e->left.expr, fn, data, E_NOT);
+ break;
+ case E_EQUAL:
+ if (e->left.sym->name)
+ fn(data, e->left.sym, e->left.sym->name);
+ else
+ fn(data, NULL, "<choice>");
+ fn(data, NULL, "=");
+ fn(data, e->right.sym, e->right.sym->name);
+ break;
+ case E_UNEQUAL:
+ if (e->left.sym->name)
+ fn(data, e->left.sym, e->left.sym->name);
+ else
+ fn(data, NULL, "<choice>");
+ fn(data, NULL, "!=");
+ fn(data, e->right.sym, e->right.sym->name);
+ break;
+ case E_OR:
+ expr_print(e->left.expr, fn, data, E_OR);
+ fn(data, NULL, " || ");
+ expr_print(e->right.expr, fn, data, E_OR);
+ break;
+ case E_AND:
+ expr_print(e->left.expr, fn, data, E_AND);
+ fn(data, NULL, " && ");
+ expr_print(e->right.expr, fn, data, E_AND);
+ break;
+ case E_LIST:
+ fn(data, e->right.sym, e->right.sym->name);
+ if (e->left.expr) {
+ fn(data, NULL, " ^ ");
+ expr_print(e->left.expr, fn, data, E_LIST);
+ }
+ break;
+ case E_RANGE:
+ fn(data, NULL, "[");
+ fn(data, e->left.sym, e->left.sym->name);
+ fn(data, NULL, " ");
+ fn(data, e->right.sym, e->right.sym->name);
+ fn(data, NULL, "]");
+ break;
+ default:
+ {
+ char buf[32];
+ sprintf(buf, "<unknown type %d>", e->type);
+ fn(data, NULL, buf);
+ break;
+ }
+ }
+ if (expr_compare_type(prevtoken, e->type) > 0)
+ fn(data, NULL, ")");
+}
+
+static void expr_print_file_helper(void *data, struct symbol *sym, const char *str)
+{
+ fwrite(str, strlen(str), 1, data);
+}
+
+void expr_fprint(struct expr *e, FILE *out)
+{
+ expr_print(e, expr_print_file_helper, out, E_NONE);
+}
+
+static void expr_print_gstr_helper(void *data, struct symbol *sym, const char *str)
+{
+ str_append((struct gstr*)data, str);
+}
+
+void expr_gstr_print(struct expr *e, struct gstr *gs)
+{
+ expr_print(e, expr_print_gstr_helper, gs, E_NONE);
+}
diff --git a/ap/build/uClibc/extra/config/expr.h b/ap/build/uClibc/extra/config/expr.h
new file mode 100644
index 0000000..6408fef
--- /dev/null
+++ b/ap/build/uClibc/extra/config/expr.h
@@ -0,0 +1,228 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#ifndef EXPR_H
+#define EXPR_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdio.h>
+#ifndef __cplusplus
+#include <stdbool.h>
+#endif
+
+struct file {
+ struct file *next;
+ struct file *parent;
+ char *name;
+ int lineno;
+ int flags;
+};
+
+#define FILE_BUSY 0x0001
+#define FILE_SCANNED 0x0002
+
+typedef enum tristate {
+ no, mod, yes
+} tristate;
+
+enum expr_type {
+ E_NONE, E_OR, E_AND, E_NOT, E_EQUAL, E_UNEQUAL, E_LIST, E_SYMBOL, E_RANGE
+};
+
+union expr_data {
+ struct expr *expr;
+ struct symbol *sym;
+};
+
+struct expr {
+ enum expr_type type;
+ union expr_data left, right;
+};
+
+#define EXPR_OR(dep1, dep2) (((dep1)>(dep2))?(dep1):(dep2))
+#define EXPR_AND(dep1, dep2) (((dep1)<(dep2))?(dep1):(dep2))
+#define EXPR_NOT(dep) (2-(dep))
+
+#define expr_list_for_each_sym(l, e, s) \
+ for (e = (l); e && (s = e->right.sym); e = e->left.expr)
+
+struct expr_value {
+ struct expr *expr;
+ tristate tri;
+};
+
+struct symbol_value {
+ void *val;
+ tristate tri;
+};
+
+enum symbol_type {
+ S_UNKNOWN, S_BOOLEAN, S_TRISTATE, S_INT, S_HEX, S_STRING, S_OTHER
+};
+
+/* enum values are used as index to symbol.def[] */
+enum {
+ S_DEF_USER, /* main user value */
+ S_DEF_AUTO, /* values read from auto.conf */
+ S_DEF_DEF3, /* Reserved for UI usage */
+ S_DEF_DEF4, /* Reserved for UI usage */
+ S_DEF_COUNT
+};
+
+struct symbol {
+ struct symbol *next;
+ char *name;
+ enum symbol_type type;
+ struct symbol_value curr;
+ struct symbol_value def[S_DEF_COUNT];
+ tristate visible;
+ int flags;
+ struct property *prop;
+ struct expr_value rev_dep;
+};
+
+#define for_all_symbols(i, sym) for (i = 0; i < 257; i++) for (sym = symbol_hash[i]; sym; sym = sym->next) if (sym->type != S_OTHER)
+
+#define SYMBOL_CONST 0x0001 /* symbol is const */
+#define SYMBOL_CHECK 0x0008 /* used during dependency checking */
+#define SYMBOL_CHOICE 0x0010 /* start of a choice block (null name) */
+#define SYMBOL_CHOICEVAL 0x0020 /* used as a value in a choice block */
+#define SYMBOL_VALID 0x0080 /* set when symbol.curr is calculated */
+#define SYMBOL_OPTIONAL 0x0100 /* choice is optional - values can be 'n' */
+#define SYMBOL_WRITE 0x0200 /* ? */
+#define SYMBOL_CHANGED 0x0400 /* ? */
+#define SYMBOL_AUTO 0x1000 /* value from environment variable */
+#define SYMBOL_CHECKED 0x2000 /* used during dependency checking */
+#define SYMBOL_WARNED 0x8000 /* warning has been issued */
+
+/* Set when symbol.def[] is used */
+#define SYMBOL_DEF 0x10000 /* First bit of SYMBOL_DEF */
+#define SYMBOL_DEF_USER 0x10000 /* symbol.def[S_DEF_USER] is valid */
+#define SYMBOL_DEF_AUTO 0x20000 /* symbol.def[S_DEF_AUTO] is valid */
+#define SYMBOL_DEF3 0x40000 /* symbol.def[S_DEF_3] is valid */
+#define SYMBOL_DEF4 0x80000 /* symbol.def[S_DEF_4] is valid */
+
+#define SYMBOL_MAXLENGTH 256
+#define SYMBOL_HASHSIZE 257
+#define SYMBOL_HASHMASK 0xff
+
+/* A property represent the config options that can be associated
+ * with a config "symbol".
+ * Sample:
+ * config FOO
+ * default y
+ * prompt "foo prompt"
+ * select BAR
+ * config BAZ
+ * int "BAZ Value"
+ * range 1..255
+ */
+enum prop_type {
+ P_UNKNOWN,
+ P_PROMPT, /* prompt "foo prompt" or "BAZ Value" */
+ P_COMMENT, /* text associated with a comment */
+ P_MENU, /* prompt associated with a menuconfig option */
+ P_DEFAULT, /* default y */
+ P_CHOICE, /* choice value */
+ P_SELECT, /* select BAR */
+ P_RANGE, /* range 7..100 (for a symbol) */
+ P_ENV, /* value from environment variable */
+};
+
+struct property {
+ struct property *next; /* next property - null if last */
+ struct symbol *sym; /* the symbol for which the property is associated */
+ enum prop_type type; /* type of property */
+ const char *text; /* the prompt value - P_PROMPT, P_MENU, P_COMMENT */
+ struct expr_value visible;
+ struct expr *expr; /* the optional conditional part of the property */
+ struct menu *menu; /* the menu the property are associated with
+ * valid for: P_SELECT, P_RANGE, P_CHOICE,
+ * P_PROMPT, P_DEFAULT, P_MENU, P_COMMENT */
+ struct file *file; /* what file was this property defined */
+ int lineno; /* what lineno was this property defined */
+};
+
+#define for_all_properties(sym, st, tok) \
+ for (st = sym->prop; st; st = st->next) \
+ if (st->type == (tok))
+#define for_all_defaults(sym, st) for_all_properties(sym, st, P_DEFAULT)
+#define for_all_choices(sym, st) for_all_properties(sym, st, P_CHOICE)
+#define for_all_prompts(sym, st) \
+ for (st = sym->prop; st; st = st->next) \
+ if (st->text)
+
+struct menu {
+ struct menu *next;
+ struct menu *parent;
+ struct menu *list;
+ struct symbol *sym;
+ struct property *prompt;
+ struct expr *dep;
+ unsigned int flags;
+ char *help;
+ struct file *file;
+ int lineno;
+ void *data;
+};
+
+#define MENU_CHANGED 0x0001
+#define MENU_ROOT 0x0002
+
+#ifndef SWIG
+
+extern struct file *file_list;
+extern struct file *current_file;
+struct file *lookup_file(const char *name);
+
+extern struct symbol symbol_yes, symbol_no, symbol_mod;
+extern struct symbol *modules_sym;
+extern struct symbol *sym_defconfig_list;
+extern int cdebug;
+struct expr *expr_alloc_symbol(struct symbol *sym);
+struct expr *expr_alloc_one(enum expr_type type, struct expr *ce);
+struct expr *expr_alloc_two(enum expr_type type, struct expr *e1, struct expr *e2);
+struct expr *expr_alloc_comp(enum expr_type type, struct symbol *s1, struct symbol *s2);
+struct expr *expr_alloc_and(struct expr *e1, struct expr *e2);
+struct expr *expr_alloc_or(struct expr *e1, struct expr *e2);
+struct expr *expr_copy(struct expr *org);
+void expr_free(struct expr *e);
+int expr_eq(struct expr *e1, struct expr *e2);
+void expr_eliminate_eq(struct expr **ep1, struct expr **ep2);
+tristate expr_calc_value(struct expr *e);
+struct expr *expr_eliminate_yn(struct expr *e);
+struct expr *expr_trans_bool(struct expr *e);
+struct expr *expr_eliminate_dups(struct expr *e);
+struct expr *expr_transform(struct expr *e);
+int expr_contains_symbol(struct expr *dep, struct symbol *sym);
+bool expr_depends_symbol(struct expr *dep, struct symbol *sym);
+struct expr *expr_extract_eq_and(struct expr **ep1, struct expr **ep2);
+struct expr *expr_extract_eq_or(struct expr **ep1, struct expr **ep2);
+void expr_extract_eq(enum expr_type type, struct expr **ep, struct expr **ep1, struct expr **ep2);
+struct expr *expr_trans_compare(struct expr *e, enum expr_type type, struct symbol *sym);
+
+void expr_fprint(struct expr *e, FILE *out);
+struct gstr; /* forward */
+void expr_gstr_print(struct expr *e, struct gstr *gs);
+
+static inline int expr_is_yes(struct expr *e)
+{
+ return !e || (e->type == E_SYMBOL && e->left.sym == &symbol_yes);
+}
+
+static inline int expr_is_no(struct expr *e)
+{
+ return e && (e->type == E_SYMBOL && e->left.sym == &symbol_no);
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* EXPR_H */
diff --git a/ap/build/uClibc/extra/config/gconf.c b/ap/build/uClibc/extra/config/gconf.c
new file mode 100644
index 0000000..540a0ff
--- /dev/null
+++ b/ap/build/uClibc/extra/config/gconf.c
@@ -0,0 +1,1632 @@
+/* Hey EMACS -*- linux-c -*- */
+/*
+ *
+ * Copyright (C) 2002-2003 Romain Lievin <roms@tilp.info>
+ * Released under the terms of the GNU GPL v2.0.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#include "lkc.h"
+#include "images.c"
+
+#include <glade/glade.h>
+#include <gtk/gtk.h>
+#include <glib.h>
+#include <gdk/gdkkeysyms.h>
+
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <time.h>
+#include <stdlib.h>
+
+//#define DEBUG
+
+enum {
+ SINGLE_VIEW, SPLIT_VIEW, FULL_VIEW
+};
+
+static gint view_mode = FULL_VIEW;
+static gboolean show_name = TRUE;
+static gboolean show_range = TRUE;
+static gboolean show_value = TRUE;
+static gboolean show_all = FALSE;
+static gboolean show_debug = FALSE;
+static gboolean resizeable = FALSE;
+
+GtkWidget *main_wnd = NULL;
+GtkWidget *tree1_w = NULL; // left frame
+GtkWidget *tree2_w = NULL; // right frame
+GtkWidget *text_w = NULL;
+GtkWidget *hpaned = NULL;
+GtkWidget *vpaned = NULL;
+GtkWidget *back_btn = NULL;
+GtkWidget *save_btn = NULL;
+GtkWidget *save_menu_item = NULL;
+
+GtkTextTag *tag1, *tag2;
+GdkColor color;
+
+GtkTreeStore *tree1, *tree2, *tree;
+GtkTreeModel *model1, *model2;
+static GtkTreeIter *parents[256];
+static gint indent;
+
+static struct menu *current; // current node for SINGLE view
+static struct menu *browsed; // browsed node for SPLIT view
+
+enum {
+ COL_OPTION, COL_NAME, COL_NO, COL_MOD, COL_YES, COL_VALUE,
+ COL_MENU, COL_COLOR, COL_EDIT, COL_PIXBUF,
+ COL_PIXVIS, COL_BTNVIS, COL_BTNACT, COL_BTNINC, COL_BTNRAD,
+ COL_NUMBER
+};
+
+static void display_list(void);
+static void display_tree(struct menu *menu);
+static void display_tree_part(void);
+static void update_tree(struct menu *src, GtkTreeIter * dst);
+static void set_node(GtkTreeIter * node, struct menu *menu, gchar ** row);
+static gchar **fill_row(struct menu *menu);
+static void conf_changed(void);
+
+/* Helping/Debugging Functions */
+
+
+const char *dbg_print_stype(int val)
+{
+ static char buf[256];
+
+ bzero(buf, 256);
+
+ if (val == S_UNKNOWN)
+ strcpy(buf, "unknown");
+ if (val == S_BOOLEAN)
+ strcpy(buf, "boolean");
+ if (val == S_TRISTATE)
+ strcpy(buf, "tristate");
+ if (val == S_INT)
+ strcpy(buf, "int");
+ if (val == S_HEX)
+ strcpy(buf, "hex");
+ if (val == S_STRING)
+ strcpy(buf, "string");
+ if (val == S_OTHER)
+ strcpy(buf, "other");
+
+#ifdef DEBUG
+ printf("%s", buf);
+#endif
+
+ return buf;
+}
+
+const char *dbg_print_flags(int val)
+{
+ static char buf[256];
+
+ bzero(buf, 256);
+
+ if (val & SYMBOL_CONST)
+ strcat(buf, "const/");
+ if (val & SYMBOL_CHECK)
+ strcat(buf, "check/");
+ if (val & SYMBOL_CHOICE)
+ strcat(buf, "choice/");
+ if (val & SYMBOL_CHOICEVAL)
+ strcat(buf, "choiceval/");
+ if (val & SYMBOL_VALID)
+ strcat(buf, "valid/");
+ if (val & SYMBOL_OPTIONAL)
+ strcat(buf, "optional/");
+ if (val & SYMBOL_WRITE)
+ strcat(buf, "write/");
+ if (val & SYMBOL_CHANGED)
+ strcat(buf, "changed/");
+ if (val & SYMBOL_AUTO)
+ strcat(buf, "auto/");
+
+ buf[strlen(buf) - 1] = '\0';
+#ifdef DEBUG
+ printf("%s", buf);
+#endif
+
+ return buf;
+}
+
+const char *dbg_print_ptype(int val)
+{
+ static char buf[256];
+
+ bzero(buf, 256);
+
+ if (val == P_UNKNOWN)
+ strcpy(buf, "unknown");
+ if (val == P_PROMPT)
+ strcpy(buf, "prompt");
+ if (val == P_COMMENT)
+ strcpy(buf, "comment");
+ if (val == P_MENU)
+ strcpy(buf, "menu");
+ if (val == P_DEFAULT)
+ strcpy(buf, "default");
+ if (val == P_CHOICE)
+ strcpy(buf, "choice");
+
+#ifdef DEBUG
+ printf("%s", buf);
+#endif
+
+ return buf;
+}
+
+
+void replace_button_icon(GladeXML * xml, GdkDrawable * window,
+ GtkStyle * style, gchar * btn_name, gchar ** xpm)
+{
+ GdkPixmap *pixmap;
+ GdkBitmap *mask;
+ GtkToolButton *button;
+ GtkWidget *image;
+
+ pixmap = gdk_pixmap_create_from_xpm_d(window, &mask,
+ &style->bg[GTK_STATE_NORMAL],
+ xpm);
+
+ button = GTK_TOOL_BUTTON(glade_xml_get_widget(xml, btn_name));
+ image = gtk_image_new_from_pixmap(pixmap, mask);
+ gtk_widget_show(image);
+ gtk_tool_button_set_icon_widget(button, image);
+}
+
+/* Main Window Initialization */
+void init_main_window(const gchar * glade_file)
+{
+ GladeXML *xml;
+ GtkWidget *widget;
+ GtkTextBuffer *txtbuf;
+ char title[256];
+ GtkStyle *style;
+
+ xml = glade_xml_new(glade_file, "window1", NULL);
+ if (!xml)
+ g_error(_("GUI loading failed !\n"));
+ glade_xml_signal_autoconnect(xml);
+
+ main_wnd = glade_xml_get_widget(xml, "window1");
+ hpaned = glade_xml_get_widget(xml, "hpaned1");
+ vpaned = glade_xml_get_widget(xml, "vpaned1");
+ tree1_w = glade_xml_get_widget(xml, "treeview1");
+ tree2_w = glade_xml_get_widget(xml, "treeview2");
+ text_w = glade_xml_get_widget(xml, "textview3");
+
+ back_btn = glade_xml_get_widget(xml, "button1");
+ gtk_widget_set_sensitive(back_btn, FALSE);
+
+ widget = glade_xml_get_widget(xml, "show_name1");
+ gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget,
+ show_name);
+
+ widget = glade_xml_get_widget(xml, "show_range1");
+ gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget,
+ show_range);
+
+ widget = glade_xml_get_widget(xml, "show_data1");
+ gtk_check_menu_item_set_active((GtkCheckMenuItem *) widget,
+ show_value);
+
+ save_btn = glade_xml_get_widget(xml, "button3");
+ save_menu_item = glade_xml_get_widget(xml, "save1");
+ conf_set_changed_callback(conf_changed);
+
+ style = gtk_widget_get_style(main_wnd);
+ widget = glade_xml_get_widget(xml, "toolbar1");
+
+#if 0 /* Use stock Gtk icons instead */
+ replace_button_icon(xml, main_wnd->window, style,
+ "button1", (gchar **) xpm_back);
+ replace_button_icon(xml, main_wnd->window, style,
+ "button2", (gchar **) xpm_load);
+ replace_button_icon(xml, main_wnd->window, style,
+ "button3", (gchar **) xpm_save);
+#endif
+ replace_button_icon(xml, main_wnd->window, style,
+ "button4", (gchar **) xpm_single_view);
+ replace_button_icon(xml, main_wnd->window, style,
+ "button5", (gchar **) xpm_split_view);
+ replace_button_icon(xml, main_wnd->window, style,
+ "button6", (gchar **) xpm_tree_view);
+
+#if 0
+ switch (view_mode) {
+ case SINGLE_VIEW:
+ widget = glade_xml_get_widget(xml, "button4");
+ g_signal_emit_by_name(widget, "clicked");
+ break;
+ case SPLIT_VIEW:
+ widget = glade_xml_get_widget(xml, "button5");
+ g_signal_emit_by_name(widget, "clicked");
+ break;
+ case FULL_VIEW:
+ widget = glade_xml_get_widget(xml, "button6");
+ g_signal_emit_by_name(widget, "clicked");
+ break;
+ }
+#endif
+ txtbuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w));
+ tag1 = gtk_text_buffer_create_tag(txtbuf, "mytag1",
+ "foreground", "red",
+ "weight", PANGO_WEIGHT_BOLD,
+ NULL);
+ tag2 = gtk_text_buffer_create_tag(txtbuf, "mytag2",
+ /*"style", PANGO_STYLE_OBLIQUE, */
+ NULL);
+
+ sprintf(title, _("uClibc v%s Configuration"),
+ getenv("VERSION"));
+ gtk_window_set_title(GTK_WINDOW(main_wnd), title);
+
+ gtk_widget_show(main_wnd);
+}
+
+void init_tree_model(void)
+{
+ gint i;
+
+ tree = tree2 = gtk_tree_store_new(COL_NUMBER,
+ G_TYPE_STRING, G_TYPE_STRING,
+ G_TYPE_STRING, G_TYPE_STRING,
+ G_TYPE_STRING, G_TYPE_STRING,
+ G_TYPE_POINTER, GDK_TYPE_COLOR,
+ G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF,
+ G_TYPE_BOOLEAN, G_TYPE_BOOLEAN,
+ G_TYPE_BOOLEAN, G_TYPE_BOOLEAN,
+ G_TYPE_BOOLEAN);
+ model2 = GTK_TREE_MODEL(tree2);
+
+ for (parents[0] = NULL, i = 1; i < 256; i++)
+ parents[i] = (GtkTreeIter *) g_malloc(sizeof(GtkTreeIter));
+
+ tree1 = gtk_tree_store_new(COL_NUMBER,
+ G_TYPE_STRING, G_TYPE_STRING,
+ G_TYPE_STRING, G_TYPE_STRING,
+ G_TYPE_STRING, G_TYPE_STRING,
+ G_TYPE_POINTER, GDK_TYPE_COLOR,
+ G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF,
+ G_TYPE_BOOLEAN, G_TYPE_BOOLEAN,
+ G_TYPE_BOOLEAN, G_TYPE_BOOLEAN,
+ G_TYPE_BOOLEAN);
+ model1 = GTK_TREE_MODEL(tree1);
+}
+
+void init_left_tree(void)
+{
+ GtkTreeView *view = GTK_TREE_VIEW(tree1_w);
+ GtkCellRenderer *renderer;
+ GtkTreeSelection *sel;
+ GtkTreeViewColumn *column;
+
+ gtk_tree_view_set_model(view, model1);
+ gtk_tree_view_set_headers_visible(view, TRUE);
+ gtk_tree_view_set_rules_hint(view, FALSE);
+
+ column = gtk_tree_view_column_new();
+ gtk_tree_view_append_column(view, column);
+ gtk_tree_view_column_set_title(column, _("Options"));
+
+ renderer = gtk_cell_renderer_toggle_new();
+ gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column),
+ renderer, FALSE);
+ gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column),
+ renderer,
+ "active", COL_BTNACT,
+ "inconsistent", COL_BTNINC,
+ "visible", COL_BTNVIS,
+ "radio", COL_BTNRAD, NULL);
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column),
+ renderer, FALSE);
+ gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column),
+ renderer,
+ "text", COL_OPTION,
+ "foreground-gdk",
+ COL_COLOR, NULL);
+
+ sel = gtk_tree_view_get_selection(view);
+ gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE);
+ gtk_widget_realize(tree1_w);
+}
+
+static void renderer_edited(GtkCellRendererText * cell,
+ const gchar * path_string,
+ const gchar * new_text, gpointer user_data);
+static void renderer_toggled(GtkCellRendererToggle * cellrenderertoggle,
+ gchar * arg1, gpointer user_data);
+
+void init_right_tree(void)
+{
+ GtkTreeView *view = GTK_TREE_VIEW(tree2_w);
+ GtkCellRenderer *renderer;
+ GtkTreeSelection *sel;
+ GtkTreeViewColumn *column;
+ gint i;
+
+ gtk_tree_view_set_model(view, model2);
+ gtk_tree_view_set_headers_visible(view, TRUE);
+ gtk_tree_view_set_rules_hint(view, FALSE);
+
+ column = gtk_tree_view_column_new();
+ gtk_tree_view_append_column(view, column);
+ gtk_tree_view_column_set_title(column, _("Options"));
+
+ renderer = gtk_cell_renderer_pixbuf_new();
+ gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column),
+ renderer, FALSE);
+ gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column),
+ renderer,
+ "pixbuf", COL_PIXBUF,
+ "visible", COL_PIXVIS, NULL);
+ renderer = gtk_cell_renderer_toggle_new();
+ gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column),
+ renderer, FALSE);
+ gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column),
+ renderer,
+ "active", COL_BTNACT,
+ "inconsistent", COL_BTNINC,
+ "visible", COL_BTNVIS,
+ "radio", COL_BTNRAD, NULL);
+ /*g_signal_connect(G_OBJECT(renderer), "toggled",
+ G_CALLBACK(renderer_toggled), NULL); */
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_column_pack_start(GTK_TREE_VIEW_COLUMN(column),
+ renderer, FALSE);
+ gtk_tree_view_column_set_attributes(GTK_TREE_VIEW_COLUMN(column),
+ renderer,
+ "text", COL_OPTION,
+ "foreground-gdk",
+ COL_COLOR, NULL);
+
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_insert_column_with_attributes(view, -1,
+ _("Name"), renderer,
+ "text", COL_NAME,
+ "foreground-gdk",
+ COL_COLOR, NULL);
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_insert_column_with_attributes(view, -1,
+ "N", renderer,
+ "text", COL_NO,
+ "foreground-gdk",
+ COL_COLOR, NULL);
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_insert_column_with_attributes(view, -1,
+ "M", renderer,
+ "text", COL_MOD,
+ "foreground-gdk",
+ COL_COLOR, NULL);
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_insert_column_with_attributes(view, -1,
+ "Y", renderer,
+ "text", COL_YES,
+ "foreground-gdk",
+ COL_COLOR, NULL);
+ renderer = gtk_cell_renderer_text_new();
+ gtk_tree_view_insert_column_with_attributes(view, -1,
+ _("Value"), renderer,
+ "text", COL_VALUE,
+ "editable",
+ COL_EDIT,
+ "foreground-gdk",
+ COL_COLOR, NULL);
+ g_signal_connect(G_OBJECT(renderer), "edited",
+ G_CALLBACK(renderer_edited), NULL);
+
+ column = gtk_tree_view_get_column(view, COL_NAME);
+ gtk_tree_view_column_set_visible(column, show_name);
+ column = gtk_tree_view_get_column(view, COL_NO);
+ gtk_tree_view_column_set_visible(column, show_range);
+ column = gtk_tree_view_get_column(view, COL_MOD);
+ gtk_tree_view_column_set_visible(column, show_range);
+ column = gtk_tree_view_get_column(view, COL_YES);
+ gtk_tree_view_column_set_visible(column, show_range);
+ column = gtk_tree_view_get_column(view, COL_VALUE);
+ gtk_tree_view_column_set_visible(column, show_value);
+
+ if (resizeable) {
+ for (i = 0; i < COL_VALUE; i++) {
+ column = gtk_tree_view_get_column(view, i);
+ gtk_tree_view_column_set_resizable(column, TRUE);
+ }
+ }
+
+ sel = gtk_tree_view_get_selection(view);
+ gtk_tree_selection_set_mode(sel, GTK_SELECTION_SINGLE);
+}
+
+
+/* Utility Functions */
+
+
+static void text_insert_help(struct menu *menu)
+{
+ GtkTextBuffer *buffer;
+ GtkTextIter start, end;
+ const char *prompt = _(menu_get_prompt(menu));
+ gchar *name;
+ const char *help;
+
+ help = menu_get_help(menu);
+
+ /* Gettextize if the help text not empty */
+ if ((help != 0) && (help[0] != 0))
+ help = _(help);
+
+ if (menu->sym && menu->sym->name)
+ name = g_strdup_printf(menu->sym->name);
+ else
+ name = g_strdup("");
+
+ buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w));
+ gtk_text_buffer_get_bounds(buffer, &start, &end);
+ gtk_text_buffer_delete(buffer, &start, &end);
+ gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text_w), 15);
+
+ gtk_text_buffer_get_end_iter(buffer, &end);
+ gtk_text_buffer_insert_with_tags(buffer, &end, prompt, -1, tag1,
+ NULL);
+ gtk_text_buffer_insert_at_cursor(buffer, " ", 1);
+ gtk_text_buffer_get_end_iter(buffer, &end);
+ gtk_text_buffer_insert_with_tags(buffer, &end, name, -1, tag1,
+ NULL);
+ gtk_text_buffer_insert_at_cursor(buffer, "\n\n", 2);
+ gtk_text_buffer_get_end_iter(buffer, &end);
+ gtk_text_buffer_insert_with_tags(buffer, &end, help, -1, tag2,
+ NULL);
+}
+
+
+static void text_insert_msg(const char *title, const char *message)
+{
+ GtkTextBuffer *buffer;
+ GtkTextIter start, end;
+ const char *msg = message;
+
+ buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_w));
+ gtk_text_buffer_get_bounds(buffer, &start, &end);
+ gtk_text_buffer_delete(buffer, &start, &end);
+ gtk_text_view_set_left_margin(GTK_TEXT_VIEW(text_w), 15);
+
+ gtk_text_buffer_get_end_iter(buffer, &end);
+ gtk_text_buffer_insert_with_tags(buffer, &end, title, -1, tag1,
+ NULL);
+ gtk_text_buffer_insert_at_cursor(buffer, "\n\n", 2);
+ gtk_text_buffer_get_end_iter(buffer, &end);
+ gtk_text_buffer_insert_with_tags(buffer, &end, msg, -1, tag2,
+ NULL);
+}
+
+
+/* Main Windows Callbacks */
+
+void on_save_activate(GtkMenuItem * menuitem, gpointer user_data);
+gboolean on_window1_delete_event(GtkWidget * widget, GdkEvent * event,
+ gpointer user_data)
+{
+ GtkWidget *dialog, *label;
+ gint result;
+
+ if (!conf_get_changed())
+ return FALSE;
+
+ dialog = gtk_dialog_new_with_buttons(_("Warning !"),
+ GTK_WINDOW(main_wnd),
+ (GtkDialogFlags)
+ (GTK_DIALOG_MODAL |
+ GTK_DIALOG_DESTROY_WITH_PARENT),
+ GTK_STOCK_OK,
+ GTK_RESPONSE_YES,
+ GTK_STOCK_NO,
+ GTK_RESPONSE_NO,
+ GTK_STOCK_CANCEL,
+ GTK_RESPONSE_CANCEL, NULL);
+ gtk_dialog_set_default_response(GTK_DIALOG(dialog),
+ GTK_RESPONSE_CANCEL);
+
+ label = gtk_label_new(_("\nSave configuration ?\n"));
+ gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label);
+ gtk_widget_show(label);
+
+ result = gtk_dialog_run(GTK_DIALOG(dialog));
+ switch (result) {
+ case GTK_RESPONSE_YES:
+ on_save_activate(NULL, NULL);
+ return FALSE;
+ case GTK_RESPONSE_NO:
+ return FALSE;
+ case GTK_RESPONSE_CANCEL:
+ case GTK_RESPONSE_DELETE_EVENT:
+ default:
+ gtk_widget_destroy(dialog);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+
+void on_window1_destroy(GtkObject * object, gpointer user_data)
+{
+ gtk_main_quit();
+}
+
+
+void
+on_window1_size_request(GtkWidget * widget,
+ GtkRequisition * requisition, gpointer user_data)
+{
+ static gint old_h;
+ gint w, h;
+
+ if (widget->window == NULL)
+ gtk_window_get_default_size(GTK_WINDOW(main_wnd), &w, &h);
+ else
+ gdk_window_get_size(widget->window, &w, &h);
+
+ if (h == old_h)
+ return;
+ old_h = h;
+
+ gtk_paned_set_position(GTK_PANED(vpaned), 2 * h / 3);
+}
+
+
+/* Menu & Toolbar Callbacks */
+
+
+static void
+load_filename(GtkFileSelection * file_selector, gpointer user_data)
+{
+ const gchar *fn;
+
+ fn = gtk_file_selection_get_filename(GTK_FILE_SELECTION
+ (user_data));
+
+ if (conf_read(fn))
+ text_insert_msg(_("Error"), _("Unable to load configuration !"));
+ else
+ display_tree(&rootmenu);
+}
+
+void on_load1_activate(GtkMenuItem * menuitem, gpointer user_data)
+{
+ GtkWidget *fs;
+
+ fs = gtk_file_selection_new(_("Load file..."));
+ g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button),
+ "clicked",
+ G_CALLBACK(load_filename), (gpointer) fs);
+ g_signal_connect_swapped(GTK_OBJECT
+ (GTK_FILE_SELECTION(fs)->ok_button),
+ "clicked", G_CALLBACK(gtk_widget_destroy),
+ (gpointer) fs);
+ g_signal_connect_swapped(GTK_OBJECT
+ (GTK_FILE_SELECTION(fs)->cancel_button),
+ "clicked", G_CALLBACK(gtk_widget_destroy),
+ (gpointer) fs);
+ gtk_widget_show(fs);
+}
+
+
+void on_save_activate(GtkMenuItem * menuitem, gpointer user_data)
+{
+ if (conf_write(NULL))
+ text_insert_msg(_("Error"), _("Unable to save configuration !"));
+}
+
+
+static void
+store_filename(GtkFileSelection * file_selector, gpointer user_data)
+{
+ const gchar *fn;
+
+ fn = gtk_file_selection_get_filename(GTK_FILE_SELECTION
+ (user_data));
+
+ if (conf_write(fn))
+ text_insert_msg(_("Error"), _("Unable to save configuration !"));
+
+ gtk_widget_destroy(GTK_WIDGET(user_data));
+}
+
+void on_save_as1_activate(GtkMenuItem * menuitem, gpointer user_data)
+{
+ GtkWidget *fs;
+
+ fs = gtk_file_selection_new(_("Save file as..."));
+ g_signal_connect(GTK_OBJECT(GTK_FILE_SELECTION(fs)->ok_button),
+ "clicked",
+ G_CALLBACK(store_filename), (gpointer) fs);
+ g_signal_connect_swapped(GTK_OBJECT
+ (GTK_FILE_SELECTION(fs)->ok_button),
+ "clicked", G_CALLBACK(gtk_widget_destroy),
+ (gpointer) fs);
+ g_signal_connect_swapped(GTK_OBJECT
+ (GTK_FILE_SELECTION(fs)->cancel_button),
+ "clicked", G_CALLBACK(gtk_widget_destroy),
+ (gpointer) fs);
+ gtk_widget_show(fs);
+}
+
+
+void on_quit1_activate(GtkMenuItem * menuitem, gpointer user_data)
+{
+ if (!on_window1_delete_event(NULL, NULL, NULL))
+ gtk_widget_destroy(GTK_WIDGET(main_wnd));
+}
+
+
+void on_show_name1_activate(GtkMenuItem * menuitem, gpointer user_data)
+{
+ GtkTreeViewColumn *col;
+
+ show_name = GTK_CHECK_MENU_ITEM(menuitem)->active;
+ col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_NAME);
+ if (col)
+ gtk_tree_view_column_set_visible(col, show_name);
+}
+
+
+void on_show_range1_activate(GtkMenuItem * menuitem, gpointer user_data)
+{
+ GtkTreeViewColumn *col;
+
+ show_range = GTK_CHECK_MENU_ITEM(menuitem)->active;
+ col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_NO);
+ if (col)
+ gtk_tree_view_column_set_visible(col, show_range);
+ col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_MOD);
+ if (col)
+ gtk_tree_view_column_set_visible(col, show_range);
+ col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_YES);
+ if (col)
+ gtk_tree_view_column_set_visible(col, show_range);
+
+}
+
+
+void on_show_data1_activate(GtkMenuItem * menuitem, gpointer user_data)
+{
+ GtkTreeViewColumn *col;
+
+ show_value = GTK_CHECK_MENU_ITEM(menuitem)->active;
+ col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), COL_VALUE);
+ if (col)
+ gtk_tree_view_column_set_visible(col, show_value);
+}
+
+
+void
+on_show_all_options1_activate(GtkMenuItem * menuitem, gpointer user_data)
+{
+ show_all = GTK_CHECK_MENU_ITEM(menuitem)->active;
+
+ gtk_tree_store_clear(tree2);
+ display_tree(&rootmenu); // instead of update_tree to speed-up
+}
+
+
+void
+on_show_debug_info1_activate(GtkMenuItem * menuitem, gpointer user_data)
+{
+ show_debug = GTK_CHECK_MENU_ITEM(menuitem)->active;
+ update_tree(&rootmenu, NULL);
+}
+
+
+void on_introduction1_activate(GtkMenuItem * menuitem, gpointer user_data)
+{
+ GtkWidget *dialog;
+ const gchar *intro_text = _(
+ "Welcome to gkc, the GTK+ graphical configuration tool\n"
+ "for uClibc.\n"
+ "For each option, a blank box indicates the feature is disabled, a\n"
+ "check indicates it is enabled, and a dot indicates that it is to\n"
+ "be compiled as a module. Clicking on the box will cycle through the three states.\n"
+ "\n"
+ "If you do not see an option (e.g., a device driver) that you\n"
+ "believe should be present, try turning on Show All Options\n"
+ "under the Options menu.\n"
+ "Although there is no cross reference yet to help you figure out\n"
+ "what other options must be enabled to support the option you\n"
+ "are interested in, you can still view the help of a grayed-out\n"
+ "option.\n"
+ "\n"
+ "Toggling Show Debug Info under the Options menu will show \n"
+ "the dependencies, which you can then match by examining other options.");
+
+ dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_INFO,
+ GTK_BUTTONS_CLOSE, intro_text);
+ g_signal_connect_swapped(GTK_OBJECT(dialog), "response",
+ G_CALLBACK(gtk_widget_destroy),
+ GTK_OBJECT(dialog));
+ gtk_widget_show_all(dialog);
+}
+
+
+void on_about1_activate(GtkMenuItem * menuitem, gpointer user_data)
+{
+ GtkWidget *dialog;
+ const gchar *about_text =
+ _("gkc is copyright (c) 2002 Romain Lievin <roms@lpg.ticalc.org>.\n"
+ "Based on the source code from Roman Zippel.\n");
+
+ dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_INFO,
+ GTK_BUTTONS_CLOSE, about_text);
+ g_signal_connect_swapped(GTK_OBJECT(dialog), "response",
+ G_CALLBACK(gtk_widget_destroy),
+ GTK_OBJECT(dialog));
+ gtk_widget_show_all(dialog);
+}
+
+
+void on_license1_activate(GtkMenuItem * menuitem, gpointer user_data)
+{
+ GtkWidget *dialog;
+ const gchar *license_text =
+ _("gkc is released under the terms of the GNU GPL v2.\n"
+ "For more information, please see the source code or\n"
+ "visit http://www.fsf.org/licenses/licenses.html\n");
+
+ dialog = gtk_message_dialog_new(GTK_WINDOW(main_wnd),
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_INFO,
+ GTK_BUTTONS_CLOSE, license_text);
+ g_signal_connect_swapped(GTK_OBJECT(dialog), "response",
+ G_CALLBACK(gtk_widget_destroy),
+ GTK_OBJECT(dialog));
+ gtk_widget_show_all(dialog);
+}
+
+
+void on_back_clicked(GtkButton * button, gpointer user_data)
+{
+ enum prop_type ptype;
+
+ current = current->parent;
+ ptype = current->prompt ? current->prompt->type : P_UNKNOWN;
+ if (ptype != P_MENU)
+ current = current->parent;
+ display_tree_part();
+
+ if (current == &rootmenu)
+ gtk_widget_set_sensitive(back_btn, FALSE);
+}
+
+
+void on_load_clicked(GtkButton * button, gpointer user_data)
+{
+ on_load1_activate(NULL, user_data);
+}
+
+
+void on_single_clicked(GtkButton * button, gpointer user_data)
+{
+ view_mode = SINGLE_VIEW;
+ gtk_paned_set_position(GTK_PANED(hpaned), 0);
+ gtk_widget_hide(tree1_w);
+ current = &rootmenu;
+ display_tree_part();
+}
+
+
+void on_split_clicked(GtkButton * button, gpointer user_data)
+{
+ gint w, h;
+ view_mode = SPLIT_VIEW;
+ gtk_widget_show(tree1_w);
+ gtk_window_get_default_size(GTK_WINDOW(main_wnd), &w, &h);
+ gtk_paned_set_position(GTK_PANED(hpaned), w / 2);
+ if (tree2)
+ gtk_tree_store_clear(tree2);
+ display_list();
+
+ /* Disable back btn, like in full mode. */
+ gtk_widget_set_sensitive(back_btn, FALSE);
+}
+
+
+void on_full_clicked(GtkButton * button, gpointer user_data)
+{
+ view_mode = FULL_VIEW;
+ gtk_paned_set_position(GTK_PANED(hpaned), 0);
+ gtk_widget_hide(tree1_w);
+ if (tree2)
+ gtk_tree_store_clear(tree2);
+ display_tree(&rootmenu);
+ gtk_widget_set_sensitive(back_btn, FALSE);
+}
+
+
+void on_collapse_clicked(GtkButton * button, gpointer user_data)
+{
+ gtk_tree_view_collapse_all(GTK_TREE_VIEW(tree2_w));
+}
+
+
+void on_expand_clicked(GtkButton * button, gpointer user_data)
+{
+ gtk_tree_view_expand_all(GTK_TREE_VIEW(tree2_w));
+}
+
+
+/* CTree Callbacks */
+
+/* Change hex/int/string value in the cell */
+static void renderer_edited(GtkCellRendererText * cell,
+ const gchar * path_string,
+ const gchar * new_text, gpointer user_data)
+{
+ GtkTreePath *path = gtk_tree_path_new_from_string(path_string);
+ GtkTreeIter iter;
+ const char *old_def, *new_def;
+ struct menu *menu;
+ struct symbol *sym;
+
+ if (!gtk_tree_model_get_iter(model2, &iter, path))
+ return;
+
+ gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1);
+ sym = menu->sym;
+
+ gtk_tree_model_get(model2, &iter, COL_VALUE, &old_def, -1);
+ new_def = new_text;
+
+ sym_set_string_value(sym, new_def);
+
+ update_tree(&rootmenu, NULL);
+
+ gtk_tree_path_free(path);
+}
+
+/* Change the value of a symbol and update the tree */
+static void change_sym_value(struct menu *menu, gint col)
+{
+ struct symbol *sym = menu->sym;
+ tristate oldval, newval;
+
+ if (!sym)
+ return;
+
+ if (col == COL_NO)
+ newval = no;
+ else if (col == COL_MOD)
+ newval = mod;
+ else if (col == COL_YES)
+ newval = yes;
+ else
+ return;
+
+ switch (sym_get_type(sym)) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ oldval = sym_get_tristate_value(sym);
+ if (!sym_tristate_within_range(sym, newval))
+ newval = yes;
+ sym_set_tristate_value(sym, newval);
+ if (view_mode == FULL_VIEW)
+ update_tree(&rootmenu, NULL);
+ else if (view_mode == SPLIT_VIEW) {
+ update_tree(browsed, NULL);
+ display_list();
+ }
+ else if (view_mode == SINGLE_VIEW)
+ display_tree_part(); //fixme: keep exp/coll
+ break;
+ case S_INT:
+ case S_HEX:
+ case S_STRING:
+ default:
+ break;
+ }
+}
+
+static void toggle_sym_value(struct menu *menu)
+{
+ if (!menu->sym)
+ return;
+
+ sym_toggle_tristate_value(menu->sym);
+ if (view_mode == FULL_VIEW)
+ update_tree(&rootmenu, NULL);
+ else if (view_mode == SPLIT_VIEW) {
+ update_tree(browsed, NULL);
+ display_list();
+ }
+ else if (view_mode == SINGLE_VIEW)
+ display_tree_part(); //fixme: keep exp/coll
+}
+
+static void renderer_toggled(GtkCellRendererToggle * cell,
+ gchar * path_string, gpointer user_data)
+{
+ GtkTreePath *path, *sel_path = NULL;
+ GtkTreeIter iter, sel_iter;
+ GtkTreeSelection *sel;
+ struct menu *menu;
+
+ path = gtk_tree_path_new_from_string(path_string);
+ if (!gtk_tree_model_get_iter(model2, &iter, path))
+ return;
+
+ sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree2_w));
+ if (gtk_tree_selection_get_selected(sel, NULL, &sel_iter))
+ sel_path = gtk_tree_model_get_path(model2, &sel_iter);
+ if (!sel_path)
+ goto out1;
+ if (gtk_tree_path_compare(path, sel_path))
+ goto out2;
+
+ gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1);
+ toggle_sym_value(menu);
+
+ out2:
+ gtk_tree_path_free(sel_path);
+ out1:
+ gtk_tree_path_free(path);
+}
+
+static gint column2index(GtkTreeViewColumn * column)
+{
+ gint i;
+
+ for (i = 0; i < COL_NUMBER; i++) {
+ GtkTreeViewColumn *col;
+
+ col = gtk_tree_view_get_column(GTK_TREE_VIEW(tree2_w), i);
+ if (col == column)
+ return i;
+ }
+
+ return -1;
+}
+
+
+/* User click: update choice (full) or goes down (single) */
+gboolean
+on_treeview2_button_press_event(GtkWidget * widget,
+ GdkEventButton * event, gpointer user_data)
+{
+ GtkTreeView *view = GTK_TREE_VIEW(widget);
+ GtkTreePath *path;
+ GtkTreeViewColumn *column;
+ GtkTreeIter iter;
+ struct menu *menu;
+ gint col;
+
+#if GTK_CHECK_VERSION(2,1,4) // bug in ctree with earlier version of GTK
+ gint tx = (gint) event->x;
+ gint ty = (gint) event->y;
+ gint cx, cy;
+
+ gtk_tree_view_get_path_at_pos(view, tx, ty, &path, &column, &cx,
+ &cy);
+#else
+ gtk_tree_view_get_cursor(view, &path, &column);
+#endif
+ if (path == NULL)
+ return FALSE;
+
+ if (!gtk_tree_model_get_iter(model2, &iter, path))
+ return FALSE;
+ gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1);
+
+ col = column2index(column);
+ if (event->type == GDK_2BUTTON_PRESS) {
+ enum prop_type ptype;
+ ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN;
+
+ if (ptype == P_MENU && view_mode != FULL_VIEW && col == COL_OPTION) {
+ // goes down into menu
+ current = menu;
+ display_tree_part();
+ gtk_widget_set_sensitive(back_btn, TRUE);
+ } else if ((col == COL_OPTION)) {
+ toggle_sym_value(menu);
+ gtk_tree_view_expand_row(view, path, TRUE);
+ }
+ } else {
+ if (col == COL_VALUE) {
+ toggle_sym_value(menu);
+ gtk_tree_view_expand_row(view, path, TRUE);
+ } else if (col == COL_NO || col == COL_MOD
+ || col == COL_YES) {
+ change_sym_value(menu, col);
+ gtk_tree_view_expand_row(view, path, TRUE);
+ }
+ }
+
+ return FALSE;
+}
+
+/* Key pressed: update choice */
+gboolean
+on_treeview2_key_press_event(GtkWidget * widget,
+ GdkEventKey * event, gpointer user_data)
+{
+ GtkTreeView *view = GTK_TREE_VIEW(widget);
+ GtkTreePath *path;
+ GtkTreeViewColumn *column;
+ GtkTreeIter iter;
+ struct menu *menu;
+ gint col;
+
+ gtk_tree_view_get_cursor(view, &path, &column);
+ if (path == NULL)
+ return FALSE;
+
+ if (event->keyval == GDK_space) {
+ if (gtk_tree_view_row_expanded(view, path))
+ gtk_tree_view_collapse_row(view, path);
+ else
+ gtk_tree_view_expand_row(view, path, FALSE);
+ return TRUE;
+ }
+ if (event->keyval == GDK_KP_Enter) {
+ }
+ if (widget == tree1_w)
+ return FALSE;
+
+ gtk_tree_model_get_iter(model2, &iter, path);
+ gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1);
+
+ if (!strcasecmp(event->string, "n"))
+ col = COL_NO;
+ else if (!strcasecmp(event->string, "m"))
+ col = COL_MOD;
+ else if (!strcasecmp(event->string, "y"))
+ col = COL_YES;
+ else
+ col = -1;
+ change_sym_value(menu, col);
+
+ return FALSE;
+}
+
+
+/* Row selection changed: update help */
+void
+on_treeview2_cursor_changed(GtkTreeView * treeview, gpointer user_data)
+{
+ GtkTreeSelection *selection;
+ GtkTreeIter iter;
+ struct menu *menu;
+
+ selection = gtk_tree_view_get_selection(treeview);
+ if (gtk_tree_selection_get_selected(selection, &model2, &iter)) {
+ gtk_tree_model_get(model2, &iter, COL_MENU, &menu, -1);
+ text_insert_help(menu);
+ }
+}
+
+
+/* User click: display sub-tree in the right frame. */
+gboolean
+on_treeview1_button_press_event(GtkWidget * widget,
+ GdkEventButton * event, gpointer user_data)
+{
+ GtkTreeView *view = GTK_TREE_VIEW(widget);
+ GtkTreePath *path;
+ GtkTreeViewColumn *column;
+ GtkTreeIter iter;
+ struct menu *menu;
+
+ gint tx = (gint) event->x;
+ gint ty = (gint) event->y;
+ gint cx, cy;
+
+ gtk_tree_view_get_path_at_pos(view, tx, ty, &path, &column, &cx,
+ &cy);
+ if (path == NULL)
+ return FALSE;
+
+ gtk_tree_model_get_iter(model1, &iter, path);
+ gtk_tree_model_get(model1, &iter, COL_MENU, &menu, -1);
+
+ if (event->type == GDK_2BUTTON_PRESS) {
+ toggle_sym_value(menu);
+ current = menu;
+ display_tree_part();
+ } else {
+ browsed = menu;
+ display_tree_part();
+ }
+
+ gtk_widget_realize(tree2_w);
+ gtk_tree_view_set_cursor(view, path, NULL, FALSE);
+ gtk_widget_grab_focus(tree2_w);
+
+ return FALSE;
+}
+
+
+/* Fill a row of strings */
+static gchar **fill_row(struct menu *menu)
+{
+ static gchar *row[COL_NUMBER];
+ struct symbol *sym = menu->sym;
+ const char *def;
+ int stype;
+ tristate val;
+ enum prop_type ptype;
+ int i;
+
+ for (i = COL_OPTION; i <= COL_COLOR; i++)
+ g_free(row[i]);
+ bzero(row, sizeof(row));
+
+ row[COL_OPTION] =
+ g_strdup_printf("%s %s", _(menu_get_prompt(menu)),
+ sym && sym_has_value(sym) ? "(NEW)" : "");
+
+ if (show_all && !menu_is_visible(menu))
+ row[COL_COLOR] = g_strdup("DarkGray");
+ else
+ row[COL_COLOR] = g_strdup("Black");
+
+ ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN;
+ switch (ptype) {
+ case P_MENU:
+ row[COL_PIXBUF] = (gchar *) xpm_menu;
+ if (view_mode == SINGLE_VIEW)
+ row[COL_PIXVIS] = GINT_TO_POINTER(TRUE);
+ row[COL_BTNVIS] = GINT_TO_POINTER(FALSE);
+ break;
+ case P_COMMENT:
+ row[COL_PIXBUF] = (gchar *) xpm_void;
+ row[COL_PIXVIS] = GINT_TO_POINTER(FALSE);
+ row[COL_BTNVIS] = GINT_TO_POINTER(FALSE);
+ break;
+ default:
+ row[COL_PIXBUF] = (gchar *) xpm_void;
+ row[COL_PIXVIS] = GINT_TO_POINTER(FALSE);
+ row[COL_BTNVIS] = GINT_TO_POINTER(TRUE);
+ break;
+ }
+
+ if (!sym)
+ return row;
+ row[COL_NAME] = g_strdup(sym->name);
+
+ sym_calc_value(sym);
+ sym->flags &= ~SYMBOL_CHANGED;
+
+ if (sym_is_choice(sym)) { // parse childs for getting final value
+ struct menu *child;
+ struct symbol *def_sym = sym_get_choice_value(sym);
+ struct menu *def_menu = NULL;
+
+ row[COL_BTNVIS] = GINT_TO_POINTER(FALSE);
+
+ for (child = menu->list; child; child = child->next) {
+ if (menu_is_visible(child)
+ && child->sym == def_sym)
+ def_menu = child;
+ }
+
+ if (def_menu)
+ row[COL_VALUE] =
+ g_strdup(_(menu_get_prompt(def_menu)));
+ }
+ if (sym->flags & SYMBOL_CHOICEVAL)
+ row[COL_BTNRAD] = GINT_TO_POINTER(TRUE);
+
+ stype = sym_get_type(sym);
+ switch (stype) {
+ case S_BOOLEAN:
+ if (GPOINTER_TO_INT(row[COL_PIXVIS]) == FALSE)
+ row[COL_BTNVIS] = GINT_TO_POINTER(TRUE);
+ if (sym_is_choice(sym))
+ break;
+ case S_TRISTATE:
+ val = sym_get_tristate_value(sym);
+ switch (val) {
+ case no:
+ row[COL_NO] = g_strdup("N");
+ row[COL_VALUE] = g_strdup("N");
+ row[COL_BTNACT] = GINT_TO_POINTER(FALSE);
+ row[COL_BTNINC] = GINT_TO_POINTER(FALSE);
+ break;
+ case mod:
+ row[COL_MOD] = g_strdup("M");
+ row[COL_VALUE] = g_strdup("M");
+ row[COL_BTNINC] = GINT_TO_POINTER(TRUE);
+ break;
+ case yes:
+ row[COL_YES] = g_strdup("Y");
+ row[COL_VALUE] = g_strdup("Y");
+ row[COL_BTNACT] = GINT_TO_POINTER(TRUE);
+ row[COL_BTNINC] = GINT_TO_POINTER(FALSE);
+ break;
+ }
+
+ if (val != no && sym_tristate_within_range(sym, no))
+ row[COL_NO] = g_strdup("_");
+ if (val != mod && sym_tristate_within_range(sym, mod))
+ row[COL_MOD] = g_strdup("_");
+ if (val != yes && sym_tristate_within_range(sym, yes))
+ row[COL_YES] = g_strdup("_");
+ break;
+ case S_INT:
+ case S_HEX:
+ case S_STRING:
+ def = sym_get_string_value(sym);
+ row[COL_VALUE] = g_strdup(def);
+ row[COL_EDIT] = GINT_TO_POINTER(TRUE);
+ row[COL_BTNVIS] = GINT_TO_POINTER(FALSE);
+ break;
+ }
+
+ return row;
+}
+
+
+/* Set the node content with a row of strings */
+static void set_node(GtkTreeIter * node, struct menu *menu, gchar ** row)
+{
+ GdkColor color;
+ gboolean success;
+ GdkPixbuf *pix;
+
+ pix = gdk_pixbuf_new_from_xpm_data((const char **)
+ row[COL_PIXBUF]);
+
+ gdk_color_parse(row[COL_COLOR], &color);
+ gdk_colormap_alloc_colors(gdk_colormap_get_system(), &color, 1,
+ FALSE, FALSE, &success);
+
+ gtk_tree_store_set(tree, node,
+ COL_OPTION, row[COL_OPTION],
+ COL_NAME, row[COL_NAME],
+ COL_NO, row[COL_NO],
+ COL_MOD, row[COL_MOD],
+ COL_YES, row[COL_YES],
+ COL_VALUE, row[COL_VALUE],
+ COL_MENU, (gpointer) menu,
+ COL_COLOR, &color,
+ COL_EDIT, GPOINTER_TO_INT(row[COL_EDIT]),
+ COL_PIXBUF, pix,
+ COL_PIXVIS, GPOINTER_TO_INT(row[COL_PIXVIS]),
+ COL_BTNVIS, GPOINTER_TO_INT(row[COL_BTNVIS]),
+ COL_BTNACT, GPOINTER_TO_INT(row[COL_BTNACT]),
+ COL_BTNINC, GPOINTER_TO_INT(row[COL_BTNINC]),
+ COL_BTNRAD, GPOINTER_TO_INT(row[COL_BTNRAD]),
+ -1);
+
+ g_object_unref(pix);
+}
+
+
+/* Add a node to the tree */
+static void place_node(struct menu *menu, char **row)
+{
+ GtkTreeIter *parent = parents[indent - 1];
+ GtkTreeIter *node = parents[indent];
+
+ gtk_tree_store_append(tree, node, parent);
+ set_node(node, menu, row);
+}
+
+
+/* Find a node in the GTK+ tree */
+static GtkTreeIter found;
+
+/*
+ * Find a menu in the GtkTree starting at parent.
+ */
+GtkTreeIter *gtktree_iter_find_node(GtkTreeIter * parent,
+ struct menu *tofind)
+{
+ GtkTreeIter iter;
+ GtkTreeIter *child = &iter;
+ gboolean valid;
+ GtkTreeIter *ret;
+
+ valid = gtk_tree_model_iter_children(model2, child, parent);
+ while (valid) {
+ struct menu *menu;
+
+ gtk_tree_model_get(model2, child, 6, &menu, -1);
+
+ if (menu == tofind) {
+ memcpy(&found, child, sizeof(GtkTreeIter));
+ return &found;
+ }
+
+ ret = gtktree_iter_find_node(child, tofind);
+ if (ret)
+ return ret;
+
+ valid = gtk_tree_model_iter_next(model2, child);
+ }
+
+ return NULL;
+}
+
+
+/*
+ * Update the tree by adding/removing entries
+ * Does not change other nodes
+ */
+static void update_tree(struct menu *src, GtkTreeIter * dst)
+{
+ struct menu *child1;
+ GtkTreeIter iter, tmp;
+ GtkTreeIter *child2 = &iter;
+ gboolean valid;
+ GtkTreeIter *sibling;
+ struct symbol *sym;
+ struct property *prop;
+ struct menu *menu1, *menu2;
+
+ if (src == &rootmenu)
+ indent = 1;
+
+ valid = gtk_tree_model_iter_children(model2, child2, dst);
+ for (child1 = src->list; child1; child1 = child1->next) {
+
+ prop = child1->prompt;
+ sym = child1->sym;
+
+ reparse:
+ menu1 = child1;
+ if (valid)
+ gtk_tree_model_get(model2, child2, COL_MENU,
+ &menu2, -1);
+ else
+ menu2 = NULL; // force adding of a first child
+
+#ifdef DEBUG
+ printf("%*c%s | %s\n", indent, ' ',
+ menu1 ? menu_get_prompt(menu1) : "nil",
+ menu2 ? menu_get_prompt(menu2) : "nil");
+#endif
+
+ if (!menu_is_visible(child1) && !show_all) { // remove node
+ if (gtktree_iter_find_node(dst, menu1) != NULL) {
+ memcpy(&tmp, child2, sizeof(GtkTreeIter));
+ valid = gtk_tree_model_iter_next(model2,
+ child2);
+ gtk_tree_store_remove(tree2, &tmp);
+ if (!valid)
+ return; // next parent
+ else
+ goto reparse; // next child
+ } else
+ continue;
+ }
+
+ if (menu1 != menu2) {
+ if (gtktree_iter_find_node(dst, menu1) == NULL) { // add node
+ if (!valid && !menu2)
+ sibling = NULL;
+ else
+ sibling = child2;
+ gtk_tree_store_insert_before(tree2,
+ child2,
+ dst, sibling);
+ set_node(child2, menu1, fill_row(menu1));
+ if (menu2 == NULL)
+ valid = TRUE;
+ } else { // remove node
+ memcpy(&tmp, child2, sizeof(GtkTreeIter));
+ valid = gtk_tree_model_iter_next(model2,
+ child2);
+ gtk_tree_store_remove(tree2, &tmp);
+ if (!valid)
+ return; // next parent
+ else
+ goto reparse; // next child
+ }
+ } else if (sym && (sym->flags & SYMBOL_CHANGED)) {
+ set_node(child2, menu1, fill_row(menu1));
+ }
+
+ indent++;
+ update_tree(child1, child2);
+ indent--;
+
+ valid = gtk_tree_model_iter_next(model2, child2);
+ }
+}
+
+
+/* Display the whole tree (single/split/full view) */
+static void display_tree(struct menu *menu)
+{
+ struct symbol *sym;
+ struct property *prop;
+ struct menu *child;
+ enum prop_type ptype;
+
+ if (menu == &rootmenu) {
+ indent = 1;
+ current = &rootmenu;
+ }
+
+ for (child = menu->list; child; child = child->next) {
+ prop = child->prompt;
+ sym = child->sym;
+ ptype = prop ? prop->type : P_UNKNOWN;
+
+ if (sym)
+ sym->flags &= ~SYMBOL_CHANGED;
+
+ if ((view_mode == SPLIT_VIEW)
+ && !(child->flags & MENU_ROOT) && (tree == tree1))
+ continue;
+
+ if ((view_mode == SPLIT_VIEW) && (child->flags & MENU_ROOT)
+ && (tree == tree2))
+ continue;
+
+ if (menu_is_visible(child) || show_all)
+ place_node(child, fill_row(child));
+#ifdef DEBUG
+ printf("%*c%s: ", indent, ' ', menu_get_prompt(child));
+ printf("%s", child->flags & MENU_ROOT ? "rootmenu | " : "");
+ dbg_print_ptype(ptype);
+ printf(" | ");
+ if (sym) {
+ dbg_print_stype(sym->type);
+ printf(" | ");
+ dbg_print_flags(sym->flags);
+ printf("\n");
+ } else
+ printf("\n");
+#endif
+ if ((view_mode != FULL_VIEW) && (ptype == P_MENU)
+ && (tree == tree2))
+ continue;
+/*
+ if (((menu != &rootmenu) && !(menu->flags & MENU_ROOT))
+ || (view_mode == FULL_VIEW)
+ || (view_mode == SPLIT_VIEW))*/
+ if (((view_mode == SINGLE_VIEW) && (menu->flags & MENU_ROOT))
+ || (view_mode == FULL_VIEW)
+ || (view_mode == SPLIT_VIEW)) {
+ indent++;
+ display_tree(child);
+ indent--;
+ }
+ }
+}
+
+/* Display a part of the tree starting at current node (single/split view) */
+static void display_tree_part(void)
+{
+ if (tree2)
+ gtk_tree_store_clear(tree2);
+ if (view_mode == SINGLE_VIEW)
+ display_tree(current);
+ else if (view_mode == SPLIT_VIEW)
+ display_tree(browsed);
+ gtk_tree_view_expand_all(GTK_TREE_VIEW(tree2_w));
+}
+
+/* Display the list in the left frame (split view) */
+static void display_list(void)
+{
+ if (tree1)
+ gtk_tree_store_clear(tree1);
+
+ tree = tree1;
+ display_tree(&rootmenu);
+ gtk_tree_view_expand_all(GTK_TREE_VIEW(tree1_w));
+ tree = tree2;
+}
+
+void fixup_rootmenu(struct menu *menu)
+{
+ struct menu *child;
+ static int menu_cnt = 0;
+
+ menu->flags |= MENU_ROOT;
+ for (child = menu->list; child; child = child->next) {
+ if (child->prompt && child->prompt->type == P_MENU) {
+ menu_cnt++;
+ fixup_rootmenu(child);
+ menu_cnt--;
+ } else if (!menu_cnt)
+ fixup_rootmenu(child);
+ }
+}
+
+
+/* Main */
+int main(int ac, char *av[])
+{
+ const char *name;
+ char *env;
+ gchar *glade_file;
+
+#ifndef LKC_DIRECT_LINK
+ kconfig_load();
+#endif
+
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ bind_textdomain_codeset(PACKAGE, "UTF-8");
+ textdomain(PACKAGE);
+
+ /* GTK stuffs */
+ gtk_set_locale();
+ gtk_init(&ac, &av);
+ glade_init();
+
+ //add_pixmap_directory (PACKAGE_DATA_DIR "/" PACKAGE "/pixmaps");
+ //add_pixmap_directory (PACKAGE_SOURCE_DIR "/pixmaps");
+
+ /* Determine GUI path */
+ env = getenv(SRCTREE);
+ if (env)
+ glade_file = g_strconcat(env, "/scripts/kconfig/gconf.glade", NULL);
+ else if (av[0][0] == '/')
+ glade_file = g_strconcat(av[0], ".glade", NULL);
+ else
+ glade_file = g_strconcat(g_get_current_dir(), "/", av[0], ".glade", NULL);
+
+ /* Load the interface and connect signals */
+ init_main_window(glade_file);
+ init_tree_model();
+ init_left_tree();
+ init_right_tree();
+
+ /* Conf stuffs */
+ if (ac > 1 && av[1][0] == '-') {
+ switch (av[1][1]) {
+ case 'a':
+ //showAll = 1;
+ break;
+ case 'h':
+ case '?':
+ printf("%s <config>\n", av[0]);
+ exit(0);
+ }
+ name = av[2];
+ } else
+ name = av[1];
+
+ conf_parse(name);
+ fixup_rootmenu(&rootmenu);
+ conf_read(NULL);
+
+ switch (view_mode) {
+ case SINGLE_VIEW:
+ display_tree_part();
+ break;
+ case SPLIT_VIEW:
+ display_list();
+ break;
+ case FULL_VIEW:
+ display_tree(&rootmenu);
+ break;
+ }
+
+ gtk_main();
+
+ return 0;
+}
+
+static void conf_changed(void)
+{
+ bool changed = conf_get_changed();
+ gtk_widget_set_sensitive(save_btn, changed);
+ gtk_widget_set_sensitive(save_menu_item, changed);
+}
diff --git a/ap/build/uClibc/extra/config/gconf.glade b/ap/build/uClibc/extra/config/gconf.glade
new file mode 100644
index 0000000..2e2e2f9
--- /dev/null
+++ b/ap/build/uClibc/extra/config/gconf.glade
@@ -0,0 +1,648 @@
+<?xml version="1.0" standalone="no"?> <!--*- mode: xml -*-->
+<!DOCTYPE glade-interface SYSTEM "http://glade.gnome.org/glade-2.0.dtd">
+
+<glade-interface>
+
+<widget class="GtkWindow" id="window1">
+ <property name="visible">True</property>
+ <property name="title" translatable="yes">Gtk uClibc Configurator</property>
+ <property name="type">GTK_WINDOW_TOPLEVEL</property>
+ <property name="window_position">GTK_WIN_POS_NONE</property>
+ <property name="modal">False</property>
+ <property name="default_width">640</property>
+ <property name="default_height">480</property>
+ <property name="resizable">True</property>
+ <property name="destroy_with_parent">False</property>
+ <property name="decorated">True</property>
+ <property name="skip_taskbar_hint">False</property>
+ <property name="skip_pager_hint">False</property>
+ <property name="type_hint">GDK_WINDOW_TYPE_HINT_NORMAL</property>
+ <property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
+ <signal name="destroy" handler="on_window1_destroy" object="window1"/>
+ <signal name="size_request" handler="on_window1_size_request" object="vpaned1" last_modification_time="Fri, 11 Jan 2002 16:17:11 GMT"/>
+ <signal name="delete_event" handler="on_window1_delete_event" object="window1" last_modification_time="Sun, 09 Mar 2003 19:42:46 GMT"/>
+
+ <child>
+ <widget class="GtkVBox" id="vbox1">
+ <property name="visible">True</property>
+ <property name="homogeneous">False</property>
+ <property name="spacing">0</property>
+
+ <child>
+ <widget class="GtkMenuBar" id="menubar1">
+ <property name="visible">True</property>
+
+ <child>
+ <widget class="GtkMenuItem" id="file1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_File</property>
+ <property name="use_underline">True</property>
+
+ <child>
+ <widget class="GtkMenu" id="file1_menu">
+
+ <child>
+ <widget class="GtkImageMenuItem" id="load1">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Load a config file</property>
+ <property name="label" translatable="yes">_Load</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_load1_activate"/>
+ <accelerator key="L" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image39">
+ <property name="visible">True</property>
+ <property name="stock">gtk-open</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkImageMenuItem" id="save1">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Save the config in .config</property>
+ <property name="label" translatable="yes">_Save</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_save_activate"/>
+ <accelerator key="S" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image40">
+ <property name="visible">True</property>
+ <property name="stock">gtk-save</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkImageMenuItem" id="save_as1">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Save the config in a file</property>
+ <property name="label" translatable="yes">Save _as</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_save_as1_activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image41">
+ <property name="visible">True</property>
+ <property name="stock">gtk-save-as</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="separator1">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkImageMenuItem" id="quit1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Quit</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_quit1_activate"/>
+ <accelerator key="Q" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image42">
+ <property name="visible">True</property>
+ <property name="stock">gtk-quit</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkMenuItem" id="options1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Options</property>
+ <property name="use_underline">True</property>
+
+ <child>
+ <widget class="GtkMenu" id="options1_menu">
+
+ <child>
+ <widget class="GtkCheckMenuItem" id="show_name1">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Show name</property>
+ <property name="label" translatable="yes">Show _name</property>
+ <property name="use_underline">True</property>
+ <property name="active">False</property>
+ <signal name="activate" handler="on_show_name1_activate"/>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkCheckMenuItem" id="show_range1">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Show range (Y/M/N)</property>
+ <property name="label" translatable="yes">Show _range</property>
+ <property name="use_underline">True</property>
+ <property name="active">False</property>
+ <signal name="activate" handler="on_show_range1_activate"/>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkCheckMenuItem" id="show_data1">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Show value of the option</property>
+ <property name="label" translatable="yes">Show _data</property>
+ <property name="use_underline">True</property>
+ <property name="active">False</property>
+ <signal name="activate" handler="on_show_data1_activate"/>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkSeparatorMenuItem" id="separator2">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkCheckMenuItem" id="show_all_options1">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Show all options</property>
+ <property name="label" translatable="yes">Show all _options</property>
+ <property name="use_underline">True</property>
+ <property name="active">False</property>
+ <signal name="activate" handler="on_show_all_options1_activate"/>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkCheckMenuItem" id="show_debug_info1">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Show masked options</property>
+ <property name="label" translatable="yes">Show _debug info</property>
+ <property name="use_underline">True</property>
+ <property name="active">False</property>
+ <signal name="activate" handler="on_show_debug_info1_activate"/>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkMenuItem" id="help1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Help</property>
+ <property name="use_underline">True</property>
+
+ <child>
+ <widget class="GtkMenu" id="help1_menu">
+
+ <child>
+ <widget class="GtkImageMenuItem" id="introduction1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_Introduction</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_introduction1_activate" last_modification_time="Fri, 15 Nov 2002 20:26:30 GMT"/>
+ <accelerator key="I" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image43">
+ <property name="visible">True</property>
+ <property name="stock">gtk-dialog-question</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkImageMenuItem" id="about1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_About</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_about1_activate" last_modification_time="Fri, 15 Nov 2002 20:26:30 GMT"/>
+ <accelerator key="A" modifiers="GDK_CONTROL_MASK" signal="activate"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image44">
+ <property name="visible">True</property>
+ <property name="stock">gtk-properties</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+
+ <child>
+ <widget class="GtkImageMenuItem" id="license1">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">_License</property>
+ <property name="use_underline">True</property>
+ <signal name="activate" handler="on_license1_activate" last_modification_time="Fri, 15 Nov 2002 20:26:30 GMT"/>
+
+ <child internal-child="image">
+ <widget class="GtkImage" id="image45">
+ <property name="visible">True</property>
+ <property name="stock">gtk-justify-fill</property>
+ <property name="icon_size">1</property>
+ <property name="xalign">0.5</property>
+ <property name="yalign">0.5</property>
+ <property name="xpad">0</property>
+ <property name="ypad">0</property>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHandleBox" id="handlebox1">
+ <property name="visible">True</property>
+ <property name="shadow_type">GTK_SHADOW_OUT</property>
+ <property name="handle_position">GTK_POS_LEFT</property>
+ <property name="snap_edge">GTK_POS_TOP</property>
+
+ <child>
+ <widget class="GtkToolbar" id="toolbar1">
+ <property name="visible">True</property>
+ <property name="orientation">GTK_ORIENTATION_HORIZONTAL</property>
+ <property name="toolbar_style">GTK_TOOLBAR_BOTH</property>
+ <property name="tooltips">True</property>
+ <property name="show_arrow">True</property>
+
+ <child>
+ <widget class="GtkToolButton" id="button1">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Goes up of one level (single view)</property>
+ <property name="label" translatable="yes">Back</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-undo</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+ <signal name="clicked" handler="on_back_clicked"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkToolItem" id="toolitem1">
+ <property name="visible">True</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+
+ <child>
+ <widget class="GtkVSeparator" id="vseparator1">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkToolButton" id="button2">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Load a config file</property>
+ <property name="label" translatable="yes">Load</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-open</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+ <signal name="clicked" handler="on_load_clicked"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkToolButton" id="button3">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Save a config file</property>
+ <property name="label" translatable="yes">Save</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-save</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+ <signal name="clicked" handler="on_save_activate"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkToolItem" id="toolitem2">
+ <property name="visible">True</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+
+ <child>
+ <widget class="GtkVSeparator" id="vseparator2">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkToolButton" id="button4">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Single view</property>
+ <property name="label" translatable="yes">Single</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-missing-image</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+ <signal name="clicked" handler="on_single_clicked" last_modification_time="Sun, 12 Jan 2003 14:28:39 GMT"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkToolButton" id="button5">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Split view</property>
+ <property name="label" translatable="yes">Split</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-missing-image</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+ <signal name="clicked" handler="on_split_clicked" last_modification_time="Sun, 12 Jan 2003 14:28:45 GMT"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkToolButton" id="button6">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Full view</property>
+ <property name="label" translatable="yes">Full</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-missing-image</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+ <signal name="clicked" handler="on_full_clicked" last_modification_time="Sun, 12 Jan 2003 14:28:50 GMT"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkToolItem" id="toolitem3">
+ <property name="visible">True</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+
+ <child>
+ <widget class="GtkVSeparator" id="vseparator3">
+ <property name="visible">True</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkToolButton" id="button7">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Collapse the whole tree in the right frame</property>
+ <property name="label" translatable="yes">Collapse</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-remove</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+ <signal name="clicked" handler="on_collapse_clicked"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkToolButton" id="button8">
+ <property name="visible">True</property>
+ <property name="tooltip" translatable="yes">Expand the whole tree in the right frame</property>
+ <property name="label" translatable="yes">Expand</property>
+ <property name="use_underline">True</property>
+ <property name="stock_id">gtk-add</property>
+ <property name="visible_horizontal">True</property>
+ <property name="visible_vertical">True</property>
+ <property name="is_important">False</property>
+ <signal name="clicked" handler="on_expand_clicked"/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkHPaned" id="hpaned1">
+ <property name="width_request">1</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="position">0</property>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow1">
+ <property name="visible">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTreeView" id="treeview1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="headers_visible">True</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">True</property>
+ <signal name="cursor_changed" handler="on_treeview2_cursor_changed" last_modification_time="Sun, 12 Jan 2003 15:58:22 GMT"/>
+ <signal name="button_press_event" handler="on_treeview1_button_press_event" last_modification_time="Sun, 12 Jan 2003 16:03:52 GMT"/>
+ <signal name="key_press_event" handler="on_treeview2_key_press_event" last_modification_time="Sun, 12 Jan 2003 16:11:44 GMT"/>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="shrink">True</property>
+ <property name="resize">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkVPaned" id="vpaned1">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="position">0</property>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow2">
+ <property name="visible">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTreeView" id="treeview2">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="has_focus">True</property>
+ <property name="headers_visible">True</property>
+ <property name="rules_hint">False</property>
+ <property name="reorderable">False</property>
+ <property name="enable_search">True</property>
+ <signal name="cursor_changed" handler="on_treeview2_cursor_changed" last_modification_time="Sun, 12 Jan 2003 15:57:55 GMT"/>
+ <signal name="button_press_event" handler="on_treeview2_button_press_event" last_modification_time="Sun, 12 Jan 2003 15:57:58 GMT"/>
+ <signal name="key_press_event" handler="on_treeview2_key_press_event" last_modification_time="Sun, 12 Jan 2003 15:58:01 GMT"/>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="shrink">True</property>
+ <property name="resize">False</property>
+ </packing>
+ </child>
+
+ <child>
+ <widget class="GtkScrolledWindow" id="scrolledwindow3">
+ <property name="visible">True</property>
+ <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
+ <property name="vscrollbar_policy">GTK_POLICY_AUTOMATIC</property>
+ <property name="shadow_type">GTK_SHADOW_IN</property>
+ <property name="window_placement">GTK_CORNER_TOP_LEFT</property>
+
+ <child>
+ <widget class="GtkTextView" id="textview3">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="editable">False</property>
+ <property name="overwrite">False</property>
+ <property name="accepts_tab">True</property>
+ <property name="justification">GTK_JUSTIFY_LEFT</property>
+ <property name="wrap_mode">GTK_WRAP_WORD</property>
+ <property name="cursor_visible">True</property>
+ <property name="pixels_above_lines">0</property>
+ <property name="pixels_below_lines">0</property>
+ <property name="pixels_inside_wrap">0</property>
+ <property name="left_margin">0</property>
+ <property name="right_margin">0</property>
+ <property name="indent">0</property>
+ <property name="text" translatable="yes">Sorry, no help available for this option yet.</property>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="shrink">True</property>
+ <property name="resize">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="shrink">True</property>
+ <property name="resize">True</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="padding">0</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+</widget>
+
+</glade-interface>
diff --git a/ap/build/uClibc/extra/config/images.c b/ap/build/uClibc/extra/config/images.c
new file mode 100644
index 0000000..d4f84bd
--- /dev/null
+++ b/ap/build/uClibc/extra/config/images.c
@@ -0,0 +1,326 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+static const char *xpm_load[] = {
+"22 22 5 1",
+". c None",
+"# c #000000",
+"c c #838100",
+"a c #ffff00",
+"b c #ffffff",
+"......................",
+"......................",
+"......................",
+"............####....#.",
+"...........#....##.##.",
+"..................###.",
+".................####.",
+".####...........#####.",
+"#abab##########.......",
+"#babababababab#.......",
+"#ababababababa#.......",
+"#babababababab#.......",
+"#ababab###############",
+"#babab##cccccccccccc##",
+"#abab##cccccccccccc##.",
+"#bab##cccccccccccc##..",
+"#ab##cccccccccccc##...",
+"#b##cccccccccccc##....",
+"###cccccccccccc##.....",
+"##cccccccccccc##......",
+"###############.......",
+"......................"};
+
+static const char *xpm_save[] = {
+"22 22 5 1",
+". c None",
+"# c #000000",
+"a c #838100",
+"b c #c5c2c5",
+"c c #cdb6d5",
+"......................",
+".####################.",
+".#aa#bbbbbbbbbbbb#bb#.",
+".#aa#bbbbbbbbbbbb#bb#.",
+".#aa#bbbbbbbbbcbb####.",
+".#aa#bbbccbbbbbbb#aa#.",
+".#aa#bbbccbbbbbbb#aa#.",
+".#aa#bbbbbbbbbbbb#aa#.",
+".#aa#bbbbbbbbbbbb#aa#.",
+".#aa#bbbbbbbbbbbb#aa#.",
+".#aa#bbbbbbbbbbbb#aa#.",
+".#aaa############aaa#.",
+".#aaaaaaaaaaaaaaaaaa#.",
+".#aaaaaaaaaaaaaaaaaa#.",
+".#aaa#############aa#.",
+".#aaa#########bbb#aa#.",
+".#aaa#########bbb#aa#.",
+".#aaa#########bbb#aa#.",
+".#aaa#########bbb#aa#.",
+".#aaa#########bbb#aa#.",
+"..##################..",
+"......................"};
+
+static const char *xpm_back[] = {
+"22 22 3 1",
+". c None",
+"# c #000083",
+"a c #838183",
+"......................",
+"......................",
+"......................",
+"......................",
+"......................",
+"...........######a....",
+"..#......##########...",
+"..##...####......##a..",
+"..###.###.........##..",
+"..######..........##..",
+"..#####...........##..",
+"..######..........##..",
+"..#######.........##..",
+"..########.......##a..",
+"...............a###...",
+"...............###....",
+"......................",
+"......................",
+"......................",
+"......................",
+"......................",
+"......................"};
+
+static const char *xpm_tree_view[] = {
+"22 22 2 1",
+". c None",
+"# c #000000",
+"......................",
+"......................",
+"......#...............",
+"......#...............",
+"......#...............",
+"......#...............",
+"......#...............",
+"......########........",
+"......#...............",
+"......#...............",
+"......#...............",
+"......#...............",
+"......#...............",
+"......########........",
+"......#...............",
+"......#...............",
+"......#...............",
+"......#...............",
+"......#...............",
+"......########........",
+"......................",
+"......................"};
+
+static const char *xpm_single_view[] = {
+"22 22 2 1",
+". c None",
+"# c #000000",
+"......................",
+"......................",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"..........#...........",
+"......................",
+"......................"};
+
+static const char *xpm_split_view[] = {
+"22 22 2 1",
+". c None",
+"# c #000000",
+"......................",
+"......................",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......#......#........",
+"......................",
+"......................"};
+
+static const char *xpm_symbol_no[] = {
+"12 12 2 1",
+" c white",
+". c black",
+" ",
+" .......... ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" .......... ",
+" "};
+
+static const char *xpm_symbol_mod[] = {
+"12 12 2 1",
+" c white",
+". c black",
+" ",
+" .......... ",
+" . . ",
+" . . ",
+" . .. . ",
+" . .... . ",
+" . .... . ",
+" . .. . ",
+" . . ",
+" . . ",
+" .......... ",
+" "};
+
+static const char *xpm_symbol_yes[] = {
+"12 12 2 1",
+" c white",
+". c black",
+" ",
+" .......... ",
+" . . ",
+" . . ",
+" . . . ",
+" . .. . ",
+" . . .. . ",
+" . .... . ",
+" . .. . ",
+" . . ",
+" .......... ",
+" "};
+
+static const char *xpm_choice_no[] = {
+"12 12 2 1",
+" c white",
+". c black",
+" ",
+" .... ",
+" .. .. ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" . . ",
+" .. .. ",
+" .... ",
+" "};
+
+static const char *xpm_choice_yes[] = {
+"12 12 2 1",
+" c white",
+". c black",
+" ",
+" .... ",
+" .. .. ",
+" . . ",
+" . .. . ",
+" . .... . ",
+" . .... . ",
+" . .. . ",
+" . . ",
+" .. .. ",
+" .... ",
+" "};
+
+static const char *xpm_menu[] = {
+"12 12 2 1",
+" c white",
+". c black",
+" ",
+" .......... ",
+" . . ",
+" . .. . ",
+" . .... . ",
+" . ...... . ",
+" . ...... . ",
+" . .... . ",
+" . .. . ",
+" . . ",
+" .......... ",
+" "};
+
+static const char *xpm_menu_inv[] = {
+"12 12 2 1",
+" c white",
+". c black",
+" ",
+" .......... ",
+" .......... ",
+" .. ...... ",
+" .. .... ",
+" .. .. ",
+" .. .. ",
+" .. .... ",
+" .. ...... ",
+" .......... ",
+" .......... ",
+" "};
+
+static const char *xpm_menuback[] = {
+"12 12 2 1",
+" c white",
+". c black",
+" ",
+" .......... ",
+" . . ",
+" . .. . ",
+" . .... . ",
+" . ...... . ",
+" . ...... . ",
+" . .... . ",
+" . .. . ",
+" . . ",
+" .......... ",
+" "};
+
+static const char *xpm_void[] = {
+"12 12 2 1",
+" c white",
+". c black",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" ",
+" "};
diff --git a/ap/build/uClibc/extra/config/kconfig-language.txt b/ap/build/uClibc/extra/config/kconfig-language.txt
new file mode 100644
index 0000000..c412c24
--- /dev/null
+++ b/ap/build/uClibc/extra/config/kconfig-language.txt
@@ -0,0 +1,379 @@
+Introduction
+------------
+
+The configuration database is a collection of configuration options
+organized in a tree structure:
+
+ +- Code maturity level options
+ | +- Prompt for development and/or incomplete code/drivers
+ +- General setup
+ | +- Networking support
+ | +- System V IPC
+ | +- BSD Process Accounting
+ | +- Sysctl support
+ +- Loadable module support
+ | +- Enable loadable module support
+ | +- Set version information on all module symbols
+ | +- Kernel module loader
+ +- ...
+
+Every entry has its own dependencies. These dependencies are used
+to determine the visibility of an entry. Any child entry is only
+visible if its parent entry is also visible.
+
+Menu entries
+------------
+
+Most entries define a config option; all other entries help to organize
+them. A single configuration option is defined like this:
+
+config MODVERSIONS
+ bool "Set version information on all module symbols"
+ depends on MODULES
+ help
+ Usually, modules have to be recompiled whenever you switch to a new
+ kernel. ...
+
+Every line starts with a key word and can be followed by multiple
+arguments. "config" starts a new config entry. The following lines
+define attributes for this config option. Attributes can be the type of
+the config option, input prompt, dependencies, help text and default
+values. A config option can be defined multiple times with the same
+name, but every definition can have only a single input prompt and the
+type must not conflict.
+
+Menu attributes
+---------------
+
+A menu entry can have a number of attributes. Not all of them are
+applicable everywhere (see syntax).
+
+- type definition: "bool"/"tristate"/"string"/"hex"/"int"
+ Every config option must have a type. There are only two basic types:
+ tristate and string; the other types are based on these two. The type
+ definition optionally accepts an input prompt, so these two examples
+ are equivalent:
+
+ bool "Networking support"
+ and
+ bool
+ prompt "Networking support"
+
+- input prompt: "prompt" <prompt> ["if" <expr>]
+ Every menu entry can have at most one prompt, which is used to display
+ to the user. Optionally dependencies only for this prompt can be added
+ with "if".
+
+- default value: "default" <expr> ["if" <expr>]
+ A config option can have any number of default values. If multiple
+ default values are visible, only the first defined one is active.
+ Default values are not limited to the menu entry where they are
+ defined. This means the default can be defined somewhere else or be
+ overridden by an earlier definition.
+ The default value is only assigned to the config symbol if no other
+ value was set by the user (via the input prompt above). If an input
+ prompt is visible the default value is presented to the user and can
+ be overridden by him.
+ Optionally, dependencies only for this default value can be added with
+ "if".
+
+- type definition + default value:
+ "def_bool"/"def_tristate" <expr> ["if" <expr>]
+ This is a shorthand notation for a type definition plus a value.
+ Optionally dependencies for this default value can be added with "if".
+
+- dependencies: "depends on" <expr>
+ This defines a dependency for this menu entry. If multiple
+ dependencies are defined, they are connected with '&&'. Dependencies
+ are applied to all other options within this menu entry (which also
+ accept an "if" expression), so these two examples are equivalent:
+
+ bool "foo" if BAR
+ default y if BAR
+ and
+ depends on BAR
+ bool "foo"
+ default y
+
+- reverse dependencies: "select" <symbol> ["if" <expr>]
+ While normal dependencies reduce the upper limit of a symbol (see
+ below), reverse dependencies can be used to force a lower limit of
+ another symbol. The value of the current menu symbol is used as the
+ minimal value <symbol> can be set to. If <symbol> is selected multiple
+ times, the limit is set to the largest selection.
+ Reverse dependencies can only be used with boolean or tristate
+ symbols.
+ Note:
+ select should be used with care. select will force
+ a symbol to a value without visiting the dependencies.
+ By abusing select you are able to select a symbol FOO even
+ if FOO depends on BAR that is not set.
+ In general use select only for non-visible symbols
+ (no prompts anywhere) and for symbols with no dependencies.
+ That will limit the usefulness but on the other hand avoid
+ the illegal configurations all over.
+ kconfig should one day warn about such things.
+
+- numerical ranges: "range" <symbol> <symbol> ["if" <expr>]
+ This allows to limit the range of possible input values for int
+ and hex symbols. The user can only input a value which is larger than
+ or equal to the first symbol and smaller than or equal to the second
+ symbol.
+
+- help text: "help" or "---help---"
+ This defines a help text. The end of the help text is determined by
+ the indentation level, this means it ends at the first line which has
+ a smaller indentation than the first line of the help text.
+ "---help---" and "help" do not differ in behaviour, "---help---" is
+ used to help visually separate configuration logic from help within
+ the file as an aid to developers.
+
+- misc options: "option" <symbol>[=<value>]
+ Various less common options can be defined via this option syntax,
+ which can modify the behaviour of the menu entry and its config
+ symbol. These options are currently possible:
+
+ - "defconfig_list"
+ This declares a list of default entries which can be used when
+ looking for the default configuration (which is used when the main
+ .config doesn't exists yet.)
+
+ - "modules"
+ This declares the symbol to be used as the MODULES symbol, which
+ enables the third modular state for all config symbols.
+
+ - "env"=<value>
+ This imports the environment variable into Kconfig. It behaves like
+ a default, except that the value comes from the environment, this
+ also means that the behaviour when mixing it with normal defaults is
+ undefined at this point. The symbol is currently not exported back
+ to the build environment (if this is desired, it can be done via
+ another symbol).
+
+Menu dependencies
+-----------------
+
+Dependencies define the visibility of a menu entry and can also reduce
+the input range of tristate symbols. The tristate logic used in the
+expressions uses one more state than normal boolean logic to express the
+module state. Dependency expressions have the following syntax:
+
+<expr> ::= <symbol> (1)
+ <symbol> '=' <symbol> (2)
+ <symbol> '!=' <symbol> (3)
+ '(' <expr> ')' (4)
+ '!' <expr> (5)
+ <expr> '&&' <expr> (6)
+ <expr> '||' <expr> (7)
+
+Expressions are listed in decreasing order of precedence.
+
+(1) Convert the symbol into an expression. Boolean and tristate symbols
+ are simply converted into the respective expression values. All
+ other symbol types result in 'n'.
+(2) If the values of both symbols are equal, it returns 'y',
+ otherwise 'n'.
+(3) If the values of both symbols are equal, it returns 'n',
+ otherwise 'y'.
+(4) Returns the value of the expression. Used to override precedence.
+(5) Returns the result of (2-/expr/).
+(6) Returns the result of min(/expr/, /expr/).
+(7) Returns the result of max(/expr/, /expr/).
+
+An expression can have a value of 'n', 'm' or 'y' (or 0, 1, 2
+respectively for calculations). A menu entry becomes visible when it's
+expression evaluates to 'm' or 'y'.
+
+There are two types of symbols: constant and non-constant symbols.
+Non-constant symbols are the most common ones and are defined with the
+'config' statement. Non-constant symbols consist entirely of alphanumeric
+characters or underscores.
+Constant symbols are only part of expressions. Constant symbols are
+always surrounded by single or double quotes. Within the quote, any
+other character is allowed and the quotes can be escaped using '\'.
+
+Menu structure
+--------------
+
+The position of a menu entry in the tree is determined in two ways. First
+it can be specified explicitly:
+
+menu "Network device support"
+ depends on NET
+
+config NETDEVICES
+ ...
+
+endmenu
+
+All entries within the "menu" ... "endmenu" block become a submenu of
+"Network device support". All subentries inherit the dependencies from
+the menu entry, e.g. this means the dependency "NET" is added to the
+dependency list of the config option NETDEVICES.
+
+The other way to generate the menu structure is done by analyzing the
+dependencies. If a menu entry somehow depends on the previous entry, it
+can be made a submenu of it. First, the previous (parent) symbol must
+be part of the dependency list and then one of these two conditions
+must be true:
+- the child entry must become invisible, if the parent is set to 'n'
+- the child entry must only be visible, if the parent is visible
+
+config MODULES
+ bool "Enable loadable module support"
+
+config MODVERSIONS
+ bool "Set version information on all module symbols"
+ depends on MODULES
+
+comment "module support disabled"
+ depends on !MODULES
+
+MODVERSIONS directly depends on MODULES, this means it's only visible if
+MODULES is different from 'n'. The comment on the other hand is always
+visible when MODULES is visible (the (empty) dependency of MODULES is
+also part of the comment dependencies).
+
+
+Kconfig syntax
+--------------
+
+The configuration file describes a series of menu entries, where every
+line starts with a keyword (except help texts). The following keywords
+end a menu entry:
+- config
+- menuconfig
+- choice/endchoice
+- comment
+- menu/endmenu
+- if/endif
+- source
+The first five also start the definition of a menu entry.
+
+config:
+
+ "config" <symbol>
+ <config options>
+
+This defines a config symbol <symbol> and accepts any of above
+attributes as options.
+
+menuconfig:
+ "menuconfig" <symbol>
+ <config options>
+
+This is similar to the simple config entry above, but it also gives a
+hint to front ends, that all suboptions should be displayed as a
+separate list of options.
+
+choices:
+
+ "choice"
+ <choice options>
+ <choice block>
+ "endchoice"
+
+This defines a choice group and accepts any of the above attributes as
+options. A choice can only be of type bool or tristate, while a boolean
+choice only allows a single config entry to be selected, a tristate
+choice also allows any number of config entries to be set to 'm'. This
+can be used if multiple drivers for a single hardware exists and only a
+single driver can be compiled/loaded into the kernel, but all drivers
+can be compiled as modules.
+A choice accepts another option "optional", which allows to set the
+choice to 'n' and no entry needs to be selected.
+
+comment:
+
+ "comment" <prompt>
+ <comment options>
+
+This defines a comment which is displayed to the user during the
+configuration process and is also echoed to the output files. The only
+possible options are dependencies.
+
+menu:
+
+ "menu" <prompt>
+ <menu options>
+ <menu block>
+ "endmenu"
+
+This defines a menu block, see "Menu structure" above for more
+information. The only possible options are dependencies.
+
+if:
+
+ "if" <expr>
+ <if block>
+ "endif"
+
+This defines an if block. The dependency expression <expr> is appended
+to all enclosed menu entries.
+
+source:
+
+ "source" <prompt>
+
+This reads the specified configuration file. This file is always parsed.
+
+mainmenu:
+
+ "mainmenu" <prompt>
+
+This sets the config program's title bar if the config program chooses
+to use it.
+
+
+Kconfig hints
+-------------
+This is a collection of Kconfig tips, most of which aren't obvious at
+first glance and most of which have become idioms in several Kconfig
+files.
+
+Adding common features and make the usage configurable
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+It is a common idiom to implement a feature/functionality that are
+relevant for some architectures but not all.
+The recommended way to do so is to use a config variable named HAVE_*
+that is defined in a common Kconfig file and selected by the relevant
+architectures.
+An example is the generic IOMAP functionality.
+
+We would in lib/Kconfig see:
+
+# Generic IOMAP is used to ...
+config HAVE_GENERIC_IOMAP
+
+config GENERIC_IOMAP
+ depends on HAVE_GENERIC_IOMAP && FOO
+
+And in lib/Makefile we would see:
+obj-$(CONFIG_GENERIC_IOMAP) += iomap.o
+
+For each architecture using the generic IOMAP functionality we would see:
+
+config X86
+ select ...
+ select HAVE_GENERIC_IOMAP
+ select ...
+
+Note: we use the existing config option and avoid creating a new
+config variable to select HAVE_GENERIC_IOMAP.
+
+Note: the use of the internal config variable HAVE_GENERIC_IOMAP, it is
+introduced to overcome the limitation of select which will force a
+config option to 'y' no matter the dependencies.
+The dependencies are moved to the symbol GENERIC_IOMAP and we avoid the
+situation where select forces a symbol equals to 'y'.
+
+Build as module only
+~~~~~~~~~~~~~~~~~~~~
+To restrict a component build to module-only, qualify its config symbol
+with "depends on m". E.g.:
+
+config FOO
+ depends on BAR && m
+
+limits FOO to module (=m) or disabled (=n).
+
diff --git a/ap/build/uClibc/extra/config/kconfig-to-uclibc.patch.gz b/ap/build/uClibc/extra/config/kconfig-to-uclibc.patch.gz
new file mode 100644
index 0000000..58c4173
--- /dev/null
+++ b/ap/build/uClibc/extra/config/kconfig-to-uclibc.patch.gz
Binary files differ
diff --git a/ap/build/uClibc/extra/config/kconfig_load.c b/ap/build/uClibc/extra/config/kconfig_load.c
new file mode 100644
index 0000000..dbdcaad
--- /dev/null
+++ b/ap/build/uClibc/extra/config/kconfig_load.c
@@ -0,0 +1,35 @@
+#include <dlfcn.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "lkc.h"
+
+#define P(name,type,arg) type (*name ## _p) arg
+#include "lkc_proto.h"
+#undef P
+
+void kconfig_load(void)
+{
+ void *handle;
+ char *error;
+
+ handle = dlopen("./libkconfig.so", RTLD_LAZY);
+ if (!handle) {
+ handle = dlopen("./scripts/kconfig/libkconfig.so", RTLD_LAZY);
+ if (!handle) {
+ fprintf(stderr, "%s\n", dlerror());
+ exit(1);
+ }
+ }
+
+#define P(name,type,arg) \
+{ \
+ name ## _p = dlsym(handle, #name); \
+ if ((error = dlerror())) { \
+ fprintf(stderr, "%s\n", error); \
+ exit(1); \
+ } \
+}
+#include "lkc_proto.h"
+#undef P
+}
diff --git a/ap/build/uClibc/extra/config/kxgettext.c b/ap/build/uClibc/extra/config/kxgettext.c
new file mode 100644
index 0000000..6eb72a7
--- /dev/null
+++ b/ap/build/uClibc/extra/config/kxgettext.c
@@ -0,0 +1,229 @@
+/*
+ * Arnaldo Carvalho de Melo <acme@conectiva.com.br>, 2005
+ *
+ * Released under the terms of the GNU GPL v2.0
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+static char *escape(const char* text, char *bf, int len)
+{
+ char *bfp = bf;
+ int multiline = strchr(text, '\n') != NULL;
+ int eol = 0;
+ int textlen = strlen(text);
+
+ if ((textlen > 0) && (text[textlen-1] == '\n'))
+ eol = 1;
+
+ *bfp++ = '"';
+ --len;
+
+ if (multiline) {
+ *bfp++ = '"';
+ *bfp++ = '\n';
+ *bfp++ = '"';
+ len -= 3;
+ }
+
+ while (*text != '\0' && len > 1) {
+ if (*text == '"')
+ *bfp++ = '\\';
+ else if (*text == '\n') {
+ *bfp++ = '\\';
+ *bfp++ = 'n';
+ *bfp++ = '"';
+ *bfp++ = '\n';
+ *bfp++ = '"';
+ len -= 5;
+ ++text;
+ goto next;
+ }
+ *bfp++ = *text++;
+next:
+ --len;
+ }
+
+ if (multiline && eol)
+ bfp -= 3;
+
+ *bfp++ = '"';
+ *bfp = '\0';
+
+ return bf;
+}
+
+struct file_line {
+ struct file_line *next;
+ char* file;
+ int lineno;
+};
+
+static struct file_line *file_line__new(char *file, int lineno)
+{
+ struct file_line *self = malloc(sizeof(*self));
+
+ if (self == NULL)
+ goto out;
+
+ self->file = file;
+ self->lineno = lineno;
+ self->next = NULL;
+out:
+ return self;
+}
+
+struct message {
+ const char *msg;
+ const char *option;
+ struct message *next;
+ struct file_line *files;
+};
+
+static struct message *message__list;
+
+static struct message *message__new(const char *msg, char *option, char *file, int lineno)
+{
+ struct message *self = malloc(sizeof(*self));
+
+ if (self == NULL)
+ goto out;
+
+ self->files = file_line__new(file, lineno);
+ if (self->files == NULL)
+ goto out_fail;
+
+ self->msg = strdup(msg);
+ if (self->msg == NULL)
+ goto out_fail_msg;
+
+ self->option = option;
+ self->next = NULL;
+out:
+ return self;
+out_fail_msg:
+ free(self->files);
+out_fail:
+ free(self);
+ self = NULL;
+ goto out;
+}
+
+static struct message *mesage__find(const char *msg)
+{
+ struct message *m = message__list;
+
+ while (m != NULL) {
+ if (strcmp(m->msg, msg) == 0)
+ break;
+ m = m->next;
+ }
+
+ return m;
+}
+
+static int message__add_file_line(struct message *self, char *file, int lineno)
+{
+ int rc = -1;
+ struct file_line *fl = file_line__new(file, lineno);
+
+ if (fl == NULL)
+ goto out;
+
+ fl->next = self->files;
+ self->files = fl;
+ rc = 0;
+out:
+ return rc;
+}
+
+static int message__add(const char *msg, char *option, char *file, int lineno)
+{
+ int rc = 0;
+ char bf[16384];
+ char *escaped = escape(msg, bf, sizeof(bf));
+ struct message *m = mesage__find(escaped);
+
+ if (m != NULL)
+ rc = message__add_file_line(m, file, lineno);
+ else {
+ m = message__new(escaped, option, file, lineno);
+
+ if (m != NULL) {
+ m->next = message__list;
+ message__list = m;
+ } else
+ rc = -1;
+ }
+ return rc;
+}
+
+void menu_build_message_list(struct menu *menu)
+{
+ struct menu *child;
+
+ message__add(menu_get_prompt(menu), NULL,
+ menu->file == NULL ? "Root Menu" : menu->file->name,
+ menu->lineno);
+
+ if (menu->sym != NULL && menu_has_help(menu))
+ message__add(menu_get_help(menu), menu->sym->name,
+ menu->file == NULL ? "Root Menu" : menu->file->name,
+ menu->lineno);
+
+ for (child = menu->list; child != NULL; child = child->next)
+ if (child->prompt != NULL)
+ menu_build_message_list(child);
+}
+
+static void message__print_file_lineno(struct message *self)
+{
+ struct file_line *fl = self->files;
+
+ putchar('\n');
+ if (self->option != NULL)
+ printf("# %s:00000\n", self->option);
+
+ printf("#: %s:%d", fl->file, fl->lineno);
+ fl = fl->next;
+
+ while (fl != NULL) {
+ printf(", %s:%d", fl->file, fl->lineno);
+ fl = fl->next;
+ }
+
+ putchar('\n');
+}
+
+static void message__print_gettext_msgid_msgstr(struct message *self)
+{
+ message__print_file_lineno(self);
+
+ printf("msgid %s\n"
+ "msgstr \"\"\n", self->msg);
+}
+
+void menu__xgettext(void)
+{
+ struct message *m = message__list;
+
+ while (m != NULL) {
+ /* skip empty lines ("") */
+ if (strlen(m->msg) > sizeof("\"\""))
+ message__print_gettext_msgid_msgstr(m);
+ m = m->next;
+ }
+}
+
+int main(int ac, char **av)
+{
+ conf_parse(av[1]);
+
+ menu_build_message_list(menu_get_root_menu(NULL));
+ menu__xgettext();
+ return 0;
+}
diff --git a/ap/build/uClibc/extra/config/lex.zconf.c b/ap/build/uClibc/extra/config/lex.zconf.c
new file mode 100644
index 0000000..f6e38b6
--- /dev/null
+++ b/ap/build/uClibc/extra/config/lex.zconf.c
@@ -0,0 +1,2416 @@
+
+#line 3 "scripts/kconfig/lex.zconf.c"
+
+#define YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define yy_create_buffer zconf_create_buffer
+#define yy_delete_buffer zconf_delete_buffer
+#define yy_flex_debug zconf_flex_debug
+#define yy_init_buffer zconf_init_buffer
+#define yy_flush_buffer zconf_flush_buffer
+#define yy_load_buffer_state zconf_load_buffer_state
+#define yy_switch_to_buffer zconf_switch_to_buffer
+#define yyin zconfin
+#define yyleng zconfleng
+#define yylex zconflex
+#define yylineno zconflineno
+#define yyout zconfout
+#define yyrestart zconfrestart
+#define yytext zconftext
+#define yywrap zconfwrap
+#define yyalloc zconfalloc
+#define yyrealloc zconfrealloc
+#define yyfree zconffree
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 35
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types.
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#endif
+
+#endif /* ! C99 */
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else /* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif /* defined (__STDC__) */
+#endif /* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index. If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition. This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN (yy_start) = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state. The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START (((yy_start) - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE zconfrestart(zconfin )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+extern int zconfleng;
+
+extern FILE *zconfin, *zconfout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+ #define YY_LESS_LINENO(n)
+
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up zconftext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ *yy_cp = (yy_hold_char); \
+ YY_RESTORE_YY_MORE_OFFSET \
+ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+ YY_DO_BEFORE_ACTION; /* set up zconftext again */ \
+ } \
+ while ( 0 )
+
+#define unput(c) yyunput( c, (yytext_ptr) )
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+ {
+ FILE *yy_input_file;
+
+ char *yy_ch_buf; /* input buffer */
+ char *yy_buf_pos; /* current position in input buffer */
+
+ /* Size of input buffer in bytes, not including room for EOB
+ * characters.
+ */
+ yy_size_t yy_buf_size;
+
+ /* Number of characters read into yy_ch_buf, not including EOB
+ * characters.
+ */
+ int yy_n_chars;
+
+ /* Whether we "own" the buffer - i.e., we know we created it,
+ * and can realloc() it to grow it, and should free() it to
+ * delete it.
+ */
+ int yy_is_our_buffer;
+
+ /* Whether this is an "interactive" input source; if so, and
+ * if we're using stdio for input, then we want to use getc()
+ * instead of fread(), to make sure we stop fetching input after
+ * each newline.
+ */
+ int yy_is_interactive;
+
+ /* Whether we're considered to be at the beginning of a line.
+ * If so, '^' rules will be active on the next match, otherwise
+ * not.
+ */
+ int yy_at_bol;
+
+ int yy_bs_lineno; /**< The line count. */
+ int yy_bs_column; /**< The column count. */
+
+ /* Whether to try to fill the input buffer when we reach the
+ * end of it.
+ */
+ int yy_fill_buffer;
+
+ int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+ /* When an EOF's been seen but there's still some text to process
+ * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+ * shouldn't try reading from the input source any more. We might
+ * still have a bunch of tokens to match, though, because of
+ * possible backing-up.
+ *
+ * When we actually see the EOF, we change the status to "new"
+ * (via zconfrestart()), so that the user can continue scanning by
+ * just pointing zconfin at a new input file.
+ */
+#define YY_BUFFER_EOF_PENDING 2
+
+ };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* Stack of input buffers. */
+static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
+static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+ : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+
+/* yy_hold_char holds the character lost when zconftext is formed. */
+static char yy_hold_char;
+static int yy_n_chars; /* number of characters read into yy_ch_buf */
+int zconfleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 0; /* whether we need to initialize */
+static int yy_start = 0; /* start state number */
+
+/* Flag which is used to allow zconfwrap()'s to do buffer switches
+ * instead of setting up a fresh zconfin. A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void zconfrestart (FILE *input_file );
+void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer );
+YY_BUFFER_STATE zconf_create_buffer (FILE *file,int size );
+void zconf_delete_buffer (YY_BUFFER_STATE b );
+void zconf_flush_buffer (YY_BUFFER_STATE b );
+void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer );
+void zconfpop_buffer_state (void );
+
+static void zconfensure_buffer_stack (void );
+static void zconf_load_buffer_state (void );
+static void zconf_init_buffer (YY_BUFFER_STATE b,FILE *file );
+
+#define YY_FLUSH_BUFFER zconf_flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE zconf_scan_buffer (char *base,yy_size_t size );
+YY_BUFFER_STATE zconf_scan_string (yyconst char *yy_str );
+YY_BUFFER_STATE zconf_scan_bytes (yyconst char *bytes,int len );
+
+void *zconfalloc (yy_size_t );
+void *zconfrealloc (void *,yy_size_t );
+void zconffree (void * );
+
+#define yy_new_buffer zconf_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){ \
+ zconfensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ zconf_create_buffer(zconfin,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+ }
+
+#define yy_set_bol(at_bol) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){\
+ zconfensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ zconf_create_buffer(zconfin,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+ }
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+/* Begin user sect3 */
+
+#define zconfwrap(n) 1
+#define YY_SKIP_YYWRAP
+
+typedef unsigned char YY_CHAR;
+
+FILE *zconfin = (FILE *) 0, *zconfout = (FILE *) 0;
+
+typedef int yy_state_type;
+
+extern int zconflineno;
+
+int zconflineno = 1;
+
+extern char *zconftext;
+#define yytext_ptr zconftext
+static yyconst flex_int16_t yy_nxt[][17] =
+ {
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0
+ },
+
+ {
+ 11, 12, 13, 14, 12, 12, 15, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12
+ },
+
+ {
+ 11, 12, 13, 14, 12, 12, 15, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12
+ },
+
+ {
+ 11, 16, 16, 17, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 18, 16, 16, 16
+ },
+
+ {
+ 11, 16, 16, 17, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 18, 16, 16, 16
+
+ },
+
+ {
+ 11, 19, 20, 21, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19
+ },
+
+ {
+ 11, 19, 20, 21, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19
+ },
+
+ {
+ 11, 22, 22, 23, 22, 24, 22, 22, 24, 22,
+ 22, 22, 22, 22, 22, 25, 22
+ },
+
+ {
+ 11, 22, 22, 23, 22, 24, 22, 22, 24, 22,
+ 22, 22, 22, 22, 22, 25, 22
+ },
+
+ {
+ 11, 26, 26, 27, 28, 29, 30, 31, 29, 32,
+ 33, 34, 35, 35, 36, 37, 38
+
+ },
+
+ {
+ 11, 26, 26, 27, 28, 29, 30, 31, 29, 32,
+ 33, 34, 35, 35, 36, 37, 38
+ },
+
+ {
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11
+ },
+
+ {
+ 11, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12
+ },
+
+ {
+ 11, -13, 39, 40, -13, -13, 41, -13, -13, -13,
+ -13, -13, -13, -13, -13, -13, -13
+ },
+
+ {
+ 11, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14
+
+ },
+
+ {
+ 11, 42, 42, 43, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42
+ },
+
+ {
+ 11, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16
+ },
+
+ {
+ 11, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17
+ },
+
+ {
+ 11, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, 44, -18, -18, -18
+ },
+
+ {
+ 11, 45, 45, -19, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45
+
+ },
+
+ {
+ 11, -20, 46, 47, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20
+ },
+
+ {
+ 11, 48, -21, -21, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48
+ },
+
+ {
+ 11, 49, 49, 50, 49, -22, 49, 49, -22, 49,
+ 49, 49, 49, 49, 49, -22, 49
+ },
+
+ {
+ 11, -23, -23, -23, -23, -23, -23, -23, -23, -23,
+ -23, -23, -23, -23, -23, -23, -23
+ },
+
+ {
+ 11, -24, -24, -24, -24, -24, -24, -24, -24, -24,
+ -24, -24, -24, -24, -24, -24, -24
+
+ },
+
+ {
+ 11, 51, 51, 52, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51
+ },
+
+ {
+ 11, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26
+ },
+
+ {
+ 11, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27
+ },
+
+ {
+ 11, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, 53, -28, -28
+ },
+
+ {
+ 11, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29
+
+ },
+
+ {
+ 11, 54, 54, -30, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54
+ },
+
+ {
+ 11, -31, -31, -31, -31, -31, -31, 55, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31
+ },
+
+ {
+ 11, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32
+ },
+
+ {
+ 11, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33, -33
+ },
+
+ {
+ 11, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, 56, 57, 57, -34, -34, -34
+
+ },
+
+ {
+ 11, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, 57, 57, 57, -35, -35, -35
+ },
+
+ {
+ 11, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36
+ },
+
+ {
+ 11, -37, -37, 58, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37
+ },
+
+ {
+ 11, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, 59
+ },
+
+ {
+ 11, -39, 39, 40, -39, -39, 41, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39
+
+ },
+
+ {
+ 11, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40
+ },
+
+ {
+ 11, 42, 42, 43, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42
+ },
+
+ {
+ 11, 42, 42, 43, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42
+ },
+
+ {
+ 11, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43
+ },
+
+ {
+ 11, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, 44, -44, -44, -44
+
+ },
+
+ {
+ 11, 45, 45, -45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45
+ },
+
+ {
+ 11, -46, 46, 47, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46
+ },
+
+ {
+ 11, 48, -47, -47, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48
+ },
+
+ {
+ 11, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48
+ },
+
+ {
+ 11, 49, 49, 50, 49, -49, 49, 49, -49, 49,
+ 49, 49, 49, 49, 49, -49, 49
+
+ },
+
+ {
+ 11, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50
+ },
+
+ {
+ 11, -51, -51, 52, -51, -51, -51, -51, -51, -51,
+ -51, -51, -51, -51, -51, -51, -51
+ },
+
+ {
+ 11, -52, -52, -52, -52, -52, -52, -52, -52, -52,
+ -52, -52, -52, -52, -52, -52, -52
+ },
+
+ {
+ 11, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53, -53, -53, -53, -53, -53
+ },
+
+ {
+ 11, 54, 54, -54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54
+
+ },
+
+ {
+ 11, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55
+ },
+
+ {
+ 11, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, 60, 57, 57, -56, -56, -56
+ },
+
+ {
+ 11, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, 57, 57, 57, -57, -57, -57
+ },
+
+ {
+ 11, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58
+ },
+
+ {
+ 11, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59
+
+ },
+
+ {
+ 11, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, 57, 57, 57, -60, -60, -60
+ },
+
+ } ;
+
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (yyconst char msg[] );
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up zconftext.
+ */
+#define YY_DO_BEFORE_ACTION \
+ (yytext_ptr) = yy_bp; \
+ zconfleng = (size_t) (yy_cp - yy_bp); \
+ (yy_hold_char) = *yy_cp; \
+ *yy_cp = '\0'; \
+ (yy_c_buf_p) = yy_cp;
+
+#define YY_NUM_RULES 33
+#define YY_END_OF_BUFFER 34
+/* This struct is not used in this scanner,
+ but its presence is necessary. */
+struct yy_trans_info
+ {
+ flex_int32_t yy_verify;
+ flex_int32_t yy_nxt;
+ };
+static yyconst flex_int16_t yy_accept[61] =
+ { 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 34, 5, 4, 2, 3, 7, 8, 6, 32, 29,
+ 31, 24, 28, 27, 26, 22, 17, 13, 16, 20,
+ 22, 11, 12, 19, 19, 14, 22, 22, 4, 2,
+ 3, 3, 1, 6, 32, 29, 31, 30, 24, 23,
+ 26, 25, 15, 20, 9, 19, 19, 21, 10, 18
+ } ;
+
+static yyconst flex_int32_t yy_ec[256] =
+ { 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 4, 5, 6, 1, 1, 7, 8, 9,
+ 10, 1, 1, 1, 11, 12, 12, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 1, 1, 1,
+ 14, 1, 1, 1, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 1, 15, 1, 1, 13, 1, 13, 13, 13, 13,
+
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 1, 16, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1
+ } ;
+
+extern int zconf_flex_debug;
+int zconf_flex_debug = 0;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *zconftext;
+#define YY_NO_INPUT 1
+
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+#define START_STRSIZE 16
+
+static struct {
+ struct file *file;
+ int lineno;
+} current_pos;
+
+static char *text;
+static int text_size, text_asize;
+
+struct buffer {
+ struct buffer *parent;
+ YY_BUFFER_STATE state;
+};
+
+struct buffer *current_buf;
+
+static int last_ts, first_ts;
+
+static void zconf_endhelp(void);
+static void zconf_endfile(void);
+
+void new_string(void)
+{
+ text = malloc(START_STRSIZE);
+ text_asize = START_STRSIZE;
+ text_size = 0;
+ *text = 0;
+}
+
+void append_string(const char *str, int size)
+{
+ int new_size = text_size + size + 1;
+ if (new_size > text_asize) {
+ new_size += START_STRSIZE - 1;
+ new_size &= -START_STRSIZE;
+ text = realloc(text, new_size);
+ text_asize = new_size;
+ }
+ memcpy(text + text_size, str, size);
+ text_size += size;
+ text[text_size] = 0;
+}
+
+void alloc_string(const char *str, int size)
+{
+ text = malloc(size + 1);
+ memcpy(text, str, size);
+ text[size] = 0;
+}
+
+#define INITIAL 0
+#define COMMAND 1
+#define HELP 2
+#define STRING 3
+#define PARAM 4
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+static int yy_init_globals (void );
+
+/* Accessor methods to globals.
+ These are made visible to non-reentrant scanners for convenience. */
+
+int zconflex_destroy (void );
+
+int zconfget_debug (void );
+
+void zconfset_debug (int debug_flag );
+
+YY_EXTRA_TYPE zconfget_extra (void );
+
+void zconfset_extra (YY_EXTRA_TYPE user_defined );
+
+FILE *zconfget_in (void );
+
+void zconfset_in (FILE * in_str );
+
+FILE *zconfget_out (void );
+
+void zconfset_out (FILE * out_str );
+
+int zconfget_leng (void );
+
+char *zconfget_text (void );
+
+int zconfget_lineno (void );
+
+void zconfset_lineno (int line_number );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int zconfwrap (void );
+#else
+extern int zconfwrap (void );
+#endif
+#endif
+
+ static void yyunput (int c,char *buf_ptr );
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * );
+#endif
+
+#ifndef YY_NO_INPUT
+
+#ifdef __cplusplus
+static int yyinput (void );
+#else
+static int input (void );
+#endif
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO fwrite( zconftext, zconfleng, 1, zconfout )
+#endif
+
+/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+ errno=0; \
+ while ( (result = read( fileno(zconfin), (char *) buf, max_size )) < 0 ) \
+ { \
+ if( errno != EINTR) \
+ { \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ break; \
+ } \
+ errno=0; \
+ clearerr(zconfin); \
+ }\
+\
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int zconflex (void);
+
+#define YY_DECL int zconflex (void)
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after zconftext and zconfleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+ YY_USER_ACTION
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp, *yy_bp;
+ register int yy_act;
+
+ int str = 0;
+ int ts, i;
+
+ if ( !(yy_init) )
+ {
+ (yy_init) = 1;
+
+#ifdef YY_USER_INIT
+ YY_USER_INIT;
+#endif
+
+ if ( ! (yy_start) )
+ (yy_start) = 1; /* first start state */
+
+ if ( ! zconfin )
+ zconfin = stdin;
+
+ if ( ! zconfout )
+ zconfout = stdout;
+
+ if ( ! YY_CURRENT_BUFFER ) {
+ zconfensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ zconf_create_buffer(zconfin,YY_BUF_SIZE );
+ }
+
+ zconf_load_buffer_state( );
+ }
+
+ while ( 1 ) /* loops until end-of-file is reached */
+ {
+ yy_cp = (yy_c_buf_p);
+
+ /* Support of zconftext. */
+ *yy_cp = (yy_hold_char);
+
+ /* yy_bp points to the position in yy_ch_buf of the start of
+ * the current run.
+ */
+ yy_bp = yy_cp;
+
+ yy_current_state = (yy_start);
+yy_match:
+ while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 )
+ ++yy_cp;
+
+ yy_current_state = -yy_current_state;
+
+yy_find_action:
+ yy_act = yy_accept[yy_current_state];
+
+ YY_DO_BEFORE_ACTION;
+
+do_action: /* This label is used only to access EOF actions. */
+
+ switch ( yy_act )
+ { /* beginning of action switch */
+case 1:
+/* rule 1 can match eol */
+case 2:
+/* rule 2 can match eol */
+YY_RULE_SETUP
+{
+ current_file->lineno++;
+ return T_EOL;
+}
+ YY_BREAK
+case 3:
+YY_RULE_SETUP
+
+ YY_BREAK
+case 4:
+YY_RULE_SETUP
+{
+ BEGIN(COMMAND);
+}
+ YY_BREAK
+case 5:
+YY_RULE_SETUP
+{
+ unput(zconftext[0]);
+ BEGIN(COMMAND);
+}
+ YY_BREAK
+
+case 6:
+YY_RULE_SETUP
+{
+ struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng);
+ BEGIN(PARAM);
+ current_pos.file = current_file;
+ current_pos.lineno = current_file->lineno;
+ if (id && id->flags & TF_COMMAND) {
+ zconflval.id = id;
+ return id->token;
+ }
+ alloc_string(zconftext, zconfleng);
+ zconflval.string = text;
+ return T_WORD;
+ }
+ YY_BREAK
+case 7:
+YY_RULE_SETUP
+
+ YY_BREAK
+case 8:
+/* rule 8 can match eol */
+YY_RULE_SETUP
+{
+ BEGIN(INITIAL);
+ current_file->lineno++;
+ return T_EOL;
+ }
+ YY_BREAK
+
+case 9:
+YY_RULE_SETUP
+return T_AND;
+ YY_BREAK
+case 10:
+YY_RULE_SETUP
+return T_OR;
+ YY_BREAK
+case 11:
+YY_RULE_SETUP
+return T_OPEN_PAREN;
+ YY_BREAK
+case 12:
+YY_RULE_SETUP
+return T_CLOSE_PAREN;
+ YY_BREAK
+case 13:
+YY_RULE_SETUP
+return T_NOT;
+ YY_BREAK
+case 14:
+YY_RULE_SETUP
+return T_EQUAL;
+ YY_BREAK
+case 15:
+YY_RULE_SETUP
+return T_UNEQUAL;
+ YY_BREAK
+case 16:
+YY_RULE_SETUP
+{
+ str = zconftext[0];
+ new_string();
+ BEGIN(STRING);
+ }
+ YY_BREAK
+case 17:
+/* rule 17 can match eol */
+YY_RULE_SETUP
+BEGIN(INITIAL); current_file->lineno++; return T_EOL;
+ YY_BREAK
+case 18:
+YY_RULE_SETUP
+/* ignore */
+ YY_BREAK
+case 19:
+YY_RULE_SETUP
+{
+ struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng);
+ if (id && id->flags & TF_PARAM) {
+ zconflval.id = id;
+ return id->token;
+ }
+ alloc_string(zconftext, zconfleng);
+ zconflval.string = text;
+ return T_WORD;
+ }
+ YY_BREAK
+case 20:
+YY_RULE_SETUP
+/* comment */
+ YY_BREAK
+case 21:
+/* rule 21 can match eol */
+YY_RULE_SETUP
+current_file->lineno++;
+ YY_BREAK
+case 22:
+YY_RULE_SETUP
+
+ YY_BREAK
+case YY_STATE_EOF(PARAM):
+{
+ BEGIN(INITIAL);
+ }
+ YY_BREAK
+
+case 23:
+/* rule 23 can match eol */
+*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
+(yy_c_buf_p) = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up zconftext again */
+YY_RULE_SETUP
+{
+ append_string(zconftext, zconfleng);
+ zconflval.string = text;
+ return T_WORD_QUOTE;
+ }
+ YY_BREAK
+case 24:
+YY_RULE_SETUP
+{
+ append_string(zconftext, zconfleng);
+ }
+ YY_BREAK
+case 25:
+/* rule 25 can match eol */
+*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
+(yy_c_buf_p) = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up zconftext again */
+YY_RULE_SETUP
+{
+ append_string(zconftext + 1, zconfleng - 1);
+ zconflval.string = text;
+ return T_WORD_QUOTE;
+ }
+ YY_BREAK
+case 26:
+YY_RULE_SETUP
+{
+ append_string(zconftext + 1, zconfleng - 1);
+ }
+ YY_BREAK
+case 27:
+YY_RULE_SETUP
+{
+ if (str == zconftext[0]) {
+ BEGIN(PARAM);
+ zconflval.string = text;
+ return T_WORD_QUOTE;
+ } else
+ append_string(zconftext, 1);
+ }
+ YY_BREAK
+case 28:
+/* rule 28 can match eol */
+YY_RULE_SETUP
+{
+ printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno());
+ current_file->lineno++;
+ BEGIN(INITIAL);
+ return T_EOL;
+ }
+ YY_BREAK
+case YY_STATE_EOF(STRING):
+{
+ BEGIN(INITIAL);
+ }
+ YY_BREAK
+
+case 29:
+YY_RULE_SETUP
+{
+ ts = 0;
+ for (i = 0; i < zconfleng; i++) {
+ if (zconftext[i] == '\t')
+ ts = (ts & ~7) + 8;
+ else
+ ts++;
+ }
+ last_ts = ts;
+ if (first_ts) {
+ if (ts < first_ts) {
+ zconf_endhelp();
+ return T_HELPTEXT;
+ }
+ ts -= first_ts;
+ while (ts > 8) {
+ append_string(" ", 8);
+ ts -= 8;
+ }
+ append_string(" ", ts);
+ }
+ }
+ YY_BREAK
+case 30:
+/* rule 30 can match eol */
+*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
+(yy_c_buf_p) = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up zconftext again */
+YY_RULE_SETUP
+{
+ current_file->lineno++;
+ zconf_endhelp();
+ return T_HELPTEXT;
+ }
+ YY_BREAK
+case 31:
+/* rule 31 can match eol */
+YY_RULE_SETUP
+{
+ current_file->lineno++;
+ append_string("\n", 1);
+ }
+ YY_BREAK
+case 32:
+YY_RULE_SETUP
+{
+ while (zconfleng) {
+ if ((zconftext[zconfleng-1] != ' ') && (zconftext[zconfleng-1] != '\t'))
+ break;
+ zconfleng--;
+ }
+ append_string(zconftext, zconfleng);
+ if (!first_ts)
+ first_ts = last_ts;
+ }
+ YY_BREAK
+case YY_STATE_EOF(HELP):
+{
+ zconf_endhelp();
+ return T_HELPTEXT;
+ }
+ YY_BREAK
+
+case YY_STATE_EOF(INITIAL):
+case YY_STATE_EOF(COMMAND):
+{
+ if (current_file) {
+ zconf_endfile();
+ return T_EOL;
+ }
+ fclose(zconfin);
+ yyterminate();
+}
+ YY_BREAK
+case 33:
+YY_RULE_SETUP
+YY_FATAL_ERROR( "flex scanner jammed" );
+ YY_BREAK
+
+ case YY_END_OF_BUFFER:
+ {
+ /* Amount of text matched not including the EOB char. */
+ int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
+
+ /* Undo the effects of YY_DO_BEFORE_ACTION. */
+ *yy_cp = (yy_hold_char);
+ YY_RESTORE_YY_MORE_OFFSET
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+ {
+ /* We're scanning a new file or input source. It's
+ * possible that this happened because the user
+ * just pointed zconfin at a new source and called
+ * zconflex(). If so, then we have to assure
+ * consistency between YY_CURRENT_BUFFER and our
+ * globals. Here is the right place to do so, because
+ * this is the first action (other than possibly a
+ * back-up) that will match for the new input source.
+ */
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ YY_CURRENT_BUFFER_LVALUE->yy_input_file = zconfin;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+ }
+
+ /* Note that here we test for yy_c_buf_p "<=" to the position
+ * of the first EOB in the buffer, since yy_c_buf_p will
+ * already have been incremented past the NUL character
+ * (since all states make transitions on EOB to the
+ * end-of-buffer state). Contrast this with the test
+ * in input().
+ */
+ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+ { /* This was really a NUL. */
+ yy_state_type yy_next_state;
+
+ (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( );
+
+ /* Okay, we're now positioned to make the NUL
+ * transition. We couldn't have
+ * yy_get_previous_state() go ahead and do it
+ * for us because it doesn't know how to deal
+ * with the possibility of jamming (and we don't
+ * want to build jamming into it because then it
+ * will run more slowly).
+ */
+
+ yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+
+ if ( yy_next_state )
+ {
+ /* Consume the NUL. */
+ yy_cp = ++(yy_c_buf_p);
+ yy_current_state = yy_next_state;
+ goto yy_match;
+ }
+
+ else
+ {
+ yy_cp = (yy_c_buf_p);
+ goto yy_find_action;
+ }
+ }
+
+ else switch ( yy_get_next_buffer( ) )
+ {
+ case EOB_ACT_END_OF_FILE:
+ {
+ (yy_did_buffer_switch_on_eof) = 0;
+
+ if ( zconfwrap( ) )
+ {
+ /* Note: because we've taken care in
+ * yy_get_next_buffer() to have set up
+ * zconftext, we can now set up
+ * yy_c_buf_p so that if some total
+ * hoser (like flex itself) wants to
+ * call the scanner after we return the
+ * YY_NULL, it'll still work - another
+ * YY_NULL will get returned.
+ */
+ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
+
+ yy_act = YY_STATE_EOF(YY_START);
+ goto do_action;
+ }
+
+ else
+ {
+ if ( ! (yy_did_buffer_switch_on_eof) )
+ YY_NEW_FILE;
+ }
+ break;
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ (yy_c_buf_p) =
+ (yytext_ptr) + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( );
+
+ yy_cp = (yy_c_buf_p);
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+ goto yy_match;
+
+ case EOB_ACT_LAST_MATCH:
+ (yy_c_buf_p) =
+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
+
+ yy_current_state = yy_get_previous_state( );
+
+ yy_cp = (yy_c_buf_p);
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+ goto yy_find_action;
+ }
+ break;
+ }
+
+ default:
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--no action found" );
+ } /* end of action switch */
+ } /* end of scanning one token */
+} /* end of zconflex */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ * EOB_ACT_LAST_MATCH -
+ * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ * EOB_ACT_END_OF_FILE - end of file
+ */
+static int yy_get_next_buffer (void)
+{
+ register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+ register char *source = (yytext_ptr);
+ register int number_to_move, i;
+ int ret_val;
+
+ if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--end of buffer missed" );
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+ { /* Don't try to fill the buffer, so this is an EOF. */
+ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
+ {
+ /* We matched a single character, the EOB, so
+ * treat this as a final EOF.
+ */
+ return EOB_ACT_END_OF_FILE;
+ }
+
+ else
+ {
+ /* We matched some text prior to the EOB, first
+ * process it.
+ */
+ return EOB_ACT_LAST_MATCH;
+ }
+ }
+
+ /* Try to read more data. */
+
+ /* First move last chars to start of buffer. */
+ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+
+ for ( i = 0; i < number_to_move; ++i )
+ *(dest++) = *(source++);
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+ /* don't do the read, it's not guaranteed to return an EOF,
+ * just force an EOF
+ */
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+
+ else
+ {
+ int num_to_read =
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+ while ( num_to_read <= 0 )
+ { /* Not enough room in the buffer - grow it. */
+
+ /* just a shorter name for the current buffer */
+ YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+
+ int yy_c_buf_p_offset =
+ (int) ((yy_c_buf_p) - b->yy_ch_buf);
+
+ if ( b->yy_is_our_buffer )
+ {
+ int new_size = b->yy_buf_size * 2;
+
+ if ( new_size <= 0 )
+ b->yy_buf_size += b->yy_buf_size / 8;
+ else
+ b->yy_buf_size *= 2;
+
+ b->yy_ch_buf = (char *)
+ /* Include room in for 2 EOB chars. */
+ zconfrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
+ }
+ else
+ /* Can't grow it, we don't own it. */
+ b->yy_ch_buf = 0;
+
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR(
+ "fatal error - scanner input buffer overflow" );
+
+ (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+ num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+ number_to_move - 1;
+
+ }
+
+ if ( num_to_read > YY_READ_BUF_SIZE )
+ num_to_read = YY_READ_BUF_SIZE;
+
+ /* Read in more data. */
+ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+ (yy_n_chars), (size_t) num_to_read );
+
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ if ( (yy_n_chars) == 0 )
+ {
+ if ( number_to_move == YY_MORE_ADJ )
+ {
+ ret_val = EOB_ACT_END_OF_FILE;
+ zconfrestart(zconfin );
+ }
+
+ else
+ {
+ ret_val = EOB_ACT_LAST_MATCH;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+ YY_BUFFER_EOF_PENDING;
+ }
+ }
+
+ else
+ ret_val = EOB_ACT_CONTINUE_SCAN;
+
+ if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+ /* Extend the array by 50%, plus the number we really need. */
+ yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) zconfrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
+ if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+ }
+
+ (yy_n_chars) += number_to_move;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+
+ (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+ return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+ static yy_state_type yy_get_previous_state (void)
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp;
+
+ yy_current_state = (yy_start);
+
+ for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
+ {
+ yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)];
+ }
+
+ return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ * next_state = yy_try_NUL_trans( current_state );
+ */
+ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
+{
+ register int yy_is_jam;
+
+ yy_current_state = yy_nxt[yy_current_state][1];
+ yy_is_jam = (yy_current_state <= 0);
+
+ return yy_is_jam ? 0 : yy_current_state;
+}
+
+ static void yyunput (int c, register char * yy_bp )
+{
+ register char *yy_cp;
+
+ yy_cp = (yy_c_buf_p);
+
+ /* undo effects of setting up zconftext */
+ *yy_cp = (yy_hold_char);
+
+ if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+ { /* need to shift things up to make room */
+ /* +2 for EOB chars. */
+ register int number_to_move = (yy_n_chars) + 2;
+ register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
+ register char *source =
+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
+
+ while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ *--dest = *--source;
+
+ yy_cp += (int) (dest - source);
+ yy_bp += (int) (dest - source);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
+
+ if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+ YY_FATAL_ERROR( "flex scanner push-back overflow" );
+ }
+
+ *--yy_cp = (char) c;
+
+ (yytext_ptr) = yy_bp;
+ (yy_hold_char) = *yy_cp;
+ (yy_c_buf_p) = yy_cp;
+}
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+ static int yyinput (void)
+#else
+ static int input (void)
+#endif
+
+{
+ int c;
+
+ *(yy_c_buf_p) = (yy_hold_char);
+
+ if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
+ {
+ /* yy_c_buf_p now points to the character we want to return.
+ * If this occurs *before* the EOB characters, then it's a
+ * valid NUL; if not, then we've hit the end of the buffer.
+ */
+ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+ /* This was really a NUL. */
+ *(yy_c_buf_p) = '\0';
+
+ else
+ { /* need more input */
+ int offset = (yy_c_buf_p) - (yytext_ptr);
+ ++(yy_c_buf_p);
+
+ switch ( yy_get_next_buffer( ) )
+ {
+ case EOB_ACT_LAST_MATCH:
+ /* This happens because yy_g_n_b()
+ * sees that we've accumulated a
+ * token and flags that we need to
+ * try matching the token before
+ * proceeding. But for input(),
+ * there's no matching to consider.
+ * So convert the EOB_ACT_LAST_MATCH
+ * to EOB_ACT_END_OF_FILE.
+ */
+
+ /* Reset buffer status. */
+ zconfrestart(zconfin );
+
+ /*FALLTHROUGH*/
+
+ case EOB_ACT_END_OF_FILE:
+ {
+ if ( zconfwrap( ) )
+ return EOF;
+
+ if ( ! (yy_did_buffer_switch_on_eof) )
+ YY_NEW_FILE;
+#ifdef __cplusplus
+ return yyinput();
+#else
+ return input();
+#endif
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ (yy_c_buf_p) = (yytext_ptr) + offset;
+ break;
+ }
+ }
+ }
+
+ c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
+ *(yy_c_buf_p) = '\0'; /* preserve zconftext */
+ (yy_hold_char) = *++(yy_c_buf_p);
+
+ return c;
+}
+#endif /* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ *
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+ void zconfrestart (FILE * input_file )
+{
+
+ if ( ! YY_CURRENT_BUFFER ){
+ zconfensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ zconf_create_buffer(zconfin,YY_BUF_SIZE );
+ }
+
+ zconf_init_buffer(YY_CURRENT_BUFFER,input_file );
+ zconf_load_buffer_state( );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ *
+ */
+ void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer )
+{
+
+ /* TODO. We should be able to replace this entire function body
+ * with
+ * zconfpop_buffer_state();
+ * zconfpush_buffer_state(new_buffer);
+ */
+ zconfensure_buffer_stack ();
+ if ( YY_CURRENT_BUFFER == new_buffer )
+ return;
+
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *(yy_c_buf_p) = (yy_hold_char);
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+ zconf_load_buffer_state( );
+
+ /* We don't actually know whether we did this switch during
+ * EOF (zconfwrap()) processing, but the only time this flag
+ * is looked at is after zconfwrap() is called, so it's safe
+ * to go ahead and always set it.
+ */
+ (yy_did_buffer_switch_on_eof) = 1;
+}
+
+static void zconf_load_buffer_state (void)
+{
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+ zconfin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+ (yy_hold_char) = *(yy_c_buf_p);
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ *
+ * @return the allocated buffer state.
+ */
+ YY_BUFFER_STATE zconf_create_buffer (FILE * file, int size )
+{
+ YY_BUFFER_STATE b;
+
+ b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );
+
+ b->yy_buf_size = size;
+
+ /* yy_ch_buf has to be 2 characters longer than the size given because
+ * we need to put in 2 end-of-buffer characters.
+ */
+ b->yy_ch_buf = (char *) zconfalloc(b->yy_buf_size + 2 );
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );
+
+ b->yy_is_our_buffer = 1;
+
+ zconf_init_buffer(b,file );
+
+ return b;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with zconf_create_buffer()
+ *
+ */
+ void zconf_delete_buffer (YY_BUFFER_STATE b )
+{
+
+ if ( ! b )
+ return;
+
+ if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+ if ( b->yy_is_our_buffer )
+ zconffree((void *) b->yy_ch_buf );
+
+ zconffree((void *) b );
+}
+
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a zconfrestart() or at EOF.
+ */
+ static void zconf_init_buffer (YY_BUFFER_STATE b, FILE * file )
+
+{
+ int oerrno = errno;
+
+ zconf_flush_buffer(b );
+
+ b->yy_input_file = file;
+ b->yy_fill_buffer = 1;
+
+ /* If b is the current buffer, then zconf_init_buffer was _probably_
+ * called from zconfrestart() or through yy_get_next_buffer.
+ * In that case, we don't want to reset the lineno or column.
+ */
+ if (b != YY_CURRENT_BUFFER){
+ b->yy_bs_lineno = 1;
+ b->yy_bs_column = 0;
+ }
+
+ b->yy_is_interactive = 0;
+
+ errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ *
+ */
+ void zconf_flush_buffer (YY_BUFFER_STATE b )
+{
+ if ( ! b )
+ return;
+
+ b->yy_n_chars = 0;
+
+ /* We always need two end-of-buffer characters. The first causes
+ * a transition to the end-of-buffer state. The second causes
+ * a jam in that state.
+ */
+ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+ b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+ b->yy_buf_pos = &b->yy_ch_buf[0];
+
+ b->yy_at_bol = 1;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ if ( b == YY_CURRENT_BUFFER )
+ zconf_load_buffer_state( );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ * the current state. This function will allocate the stack
+ * if necessary.
+ * @param new_buffer The new state.
+ *
+ */
+void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer )
+{
+ if (new_buffer == NULL)
+ return;
+
+ zconfensure_buffer_stack();
+
+ /* This block is copied from zconf_switch_to_buffer. */
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *(yy_c_buf_p) = (yy_hold_char);
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ /* Only push if top exists. Otherwise, replace top. */
+ if (YY_CURRENT_BUFFER)
+ (yy_buffer_stack_top)++;
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+ /* copied from zconf_switch_to_buffer. */
+ zconf_load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ * The next element becomes the new top.
+ *
+ */
+void zconfpop_buffer_state (void)
+{
+ if (!YY_CURRENT_BUFFER)
+ return;
+
+ zconf_delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ if ((yy_buffer_stack_top) > 0)
+ --(yy_buffer_stack_top);
+
+ if (YY_CURRENT_BUFFER) {
+ zconf_load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+ }
+}
+
+/* Allocates the stack if it does not exist.
+ * Guarantees space for at least one push.
+ */
+static void zconfensure_buffer_stack (void)
+{
+ int num_to_alloc;
+
+ if (!(yy_buffer_stack)) {
+
+ /* First allocation is just for 2 elements, since we don't know if this
+ * scanner will even need a stack. We use 2 instead of 1 to avoid an
+ * immediate realloc on the next call.
+ */
+ num_to_alloc = 1;
+ (yy_buffer_stack) = (struct yy_buffer_state**)zconfalloc
+ (num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+ if ( ! (yy_buffer_stack) )
+ YY_FATAL_ERROR( "out of dynamic memory in zconfensure_buffer_stack()" );
+
+ memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+
+ (yy_buffer_stack_max) = num_to_alloc;
+ (yy_buffer_stack_top) = 0;
+ return;
+ }
+
+ if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
+
+ /* Increase the buffer to prepare for a possible push. */
+ int grow_size = 8 /* arbitrary grow size */;
+
+ num_to_alloc = (yy_buffer_stack_max) + grow_size;
+ (yy_buffer_stack) = (struct yy_buffer_state**)zconfrealloc
+ ((yy_buffer_stack),
+ num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+ if ( ! (yy_buffer_stack) )
+ YY_FATAL_ERROR( "out of dynamic memory in zconfensure_buffer_stack()" );
+
+ /* zero only the new slots.*/
+ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
+ (yy_buffer_stack_max) = num_to_alloc;
+ }
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE zconf_scan_buffer (char * base, yy_size_t size )
+{
+ YY_BUFFER_STATE b;
+
+ if ( size < 2 ||
+ base[size-2] != YY_END_OF_BUFFER_CHAR ||
+ base[size-1] != YY_END_OF_BUFFER_CHAR )
+ /* They forgot to leave room for the EOB's. */
+ return 0;
+
+ b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_buffer()" );
+
+ b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
+ b->yy_buf_pos = b->yy_ch_buf = base;
+ b->yy_is_our_buffer = 0;
+ b->yy_input_file = 0;
+ b->yy_n_chars = b->yy_buf_size;
+ b->yy_is_interactive = 0;
+ b->yy_at_bol = 1;
+ b->yy_fill_buffer = 0;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ zconf_switch_to_buffer(b );
+
+ return b;
+}
+
+/** Setup the input buffer state to scan a string. The next call to zconflex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ *
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ * zconf_scan_bytes() instead.
+ */
+YY_BUFFER_STATE zconf_scan_string (yyconst char * yystr )
+{
+
+ return zconf_scan_bytes(yystr,strlen(yystr) );
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to zconflex() will
+ * scan from a @e copy of @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE zconf_scan_bytes (yyconst char * yybytes, int _yybytes_len )
+{
+ YY_BUFFER_STATE b;
+ char *buf;
+ yy_size_t n;
+ int i;
+
+ /* Get memory for full buffer, including space for trailing EOB's. */
+ n = _yybytes_len + 2;
+ buf = (char *) zconfalloc(n );
+ if ( ! buf )
+ YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_bytes()" );
+
+ for ( i = 0; i < _yybytes_len; ++i )
+ buf[i] = yybytes[i];
+
+ buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+
+ b = zconf_scan_buffer(buf,n );
+ if ( ! b )
+ YY_FATAL_ERROR( "bad buffer in zconf_scan_bytes()" );
+
+ /* It's okay to grow etc. this buffer, and we should throw it
+ * away when we're done.
+ */
+ b->yy_is_our_buffer = 1;
+
+ return b;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yy_fatal_error (yyconst char* msg )
+{
+ (void) fprintf( stderr, "%s\n", msg );
+ exit( YY_EXIT_FAILURE );
+}
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up zconftext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ zconftext[zconfleng] = (yy_hold_char); \
+ (yy_c_buf_p) = zconftext + yyless_macro_arg; \
+ (yy_hold_char) = *(yy_c_buf_p); \
+ *(yy_c_buf_p) = '\0'; \
+ zconfleng = yyless_macro_arg; \
+ } \
+ while ( 0 )
+
+/* Accessor methods (get/set functions) to struct members. */
+
+/** Get the current line number.
+ *
+ */
+int zconfget_lineno (void)
+{
+
+ return zconflineno;
+}
+
+/** Get the input stream.
+ *
+ */
+FILE *zconfget_in (void)
+{
+ return zconfin;
+}
+
+/** Get the output stream.
+ *
+ */
+FILE *zconfget_out (void)
+{
+ return zconfout;
+}
+
+/** Get the length of the current token.
+ *
+ */
+int zconfget_leng (void)
+{
+ return zconfleng;
+}
+
+/** Get the current token.
+ *
+ */
+
+char *zconfget_text (void)
+{
+ return zconftext;
+}
+
+/** Set the current line number.
+ * @param line_number
+ *
+ */
+void zconfset_lineno (int line_number )
+{
+
+ zconflineno = line_number;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ *
+ * @see zconf_switch_to_buffer
+ */
+void zconfset_in (FILE * in_str )
+{
+ zconfin = in_str ;
+}
+
+void zconfset_out (FILE * out_str )
+{
+ zconfout = out_str ;
+}
+
+int zconfget_debug (void)
+{
+ return zconf_flex_debug;
+}
+
+void zconfset_debug (int bdebug )
+{
+ zconf_flex_debug = bdebug ;
+}
+
+static int yy_init_globals (void)
+{
+ /* Initialization is the same as for the non-reentrant scanner.
+ * This function is called from zconflex_destroy(), so don't allocate here.
+ */
+
+ (yy_buffer_stack) = 0;
+ (yy_buffer_stack_top) = 0;
+ (yy_buffer_stack_max) = 0;
+ (yy_c_buf_p) = (char *) 0;
+ (yy_init) = 0;
+ (yy_start) = 0;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+ zconfin = stdin;
+ zconfout = stdout;
+#else
+ zconfin = (FILE *) 0;
+ zconfout = (FILE *) 0;
+#endif
+
+ /* For future reference: Set errno on error, since we are called by
+ * zconflex_init()
+ */
+ return 0;
+}
+
+/* zconflex_destroy is for both reentrant and non-reentrant scanners. */
+int zconflex_destroy (void)
+{
+
+ /* Pop the buffer stack, destroying each element. */
+ while(YY_CURRENT_BUFFER){
+ zconf_delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ zconfpop_buffer_state();
+ }
+
+ /* Destroy the stack itself. */
+ zconffree((yy_buffer_stack) );
+ (yy_buffer_stack) = NULL;
+
+ /* Reset the globals. This is important in a non-reentrant scanner so the next time
+ * zconflex() is called, initialization will occur. */
+ yy_init_globals( );
+
+ return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+{
+ register int i;
+ for ( i = 0; i < n; ++i )
+ s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s )
+{
+ register int n;
+ for ( n = 0; s[n]; ++n )
+ ;
+
+ return n;
+}
+#endif
+
+void *zconfalloc (yy_size_t size )
+{
+ return (void *) malloc( size );
+}
+
+void *zconfrealloc (void * ptr, yy_size_t size )
+{
+ /* The cast to (char *) in the following accommodates both
+ * implementations that use char* generic pointers, and those
+ * that use void* generic pointers. It works with the latter
+ * because both ANSI C and C++ allow castless assignment from
+ * any pointer type to void*, and deal with argument conversions
+ * as though doing an assignment.
+ */
+ return (void *) realloc( (char *) ptr, size );
+}
+
+void zconffree (void * ptr )
+{
+ free( (char *) ptr ); /* see zconfrealloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+void zconf_starthelp(void)
+{
+ new_string();
+ last_ts = first_ts = 0;
+ BEGIN(HELP);
+}
+
+static void zconf_endhelp(void)
+{
+ zconflval.string = text;
+ BEGIN(INITIAL);
+}
+
+/*
+ * Try to open specified file with following names:
+ * ./name
+ * $(srctree)/name
+ * The latter is used when srctree is separate from objtree
+ * when compiling the kernel.
+ * Return NULL if file is not found.
+ */
+FILE *zconf_fopen(const char *name)
+{
+ char *env, fullname[PATH_MAX+1];
+ FILE *f;
+
+ f = fopen(name, "r");
+ if (!f && name != NULL && name[0] != '/') {
+ env = getenv(SRCTREE);
+ if (env) {
+ sprintf(fullname, "%s/%s", env, name);
+ f = fopen(fullname, "r");
+ }
+ }
+ return f;
+}
+
+void zconf_initscan(const char *name)
+{
+ zconfin = zconf_fopen(name);
+ if (!zconfin) {
+ printf("can't find file %s\n", name);
+ exit(1);
+ }
+
+ current_buf = malloc(sizeof(*current_buf));
+ memset(current_buf, 0, sizeof(*current_buf));
+
+ current_file = file_lookup(name);
+ current_file->lineno = 1;
+ current_file->flags = FILE_BUSY;
+}
+
+void zconf_nextfile(const char *name)
+{
+ struct file *file = file_lookup(name);
+ struct buffer *buf = malloc(sizeof(*buf));
+ memset(buf, 0, sizeof(*buf));
+
+ current_buf->state = YY_CURRENT_BUFFER;
+ zconfin = zconf_fopen(name);
+ if (!zconfin) {
+ printf("%s:%d: can't open file \"%s\"\n", zconf_curname(), zconf_lineno(), name);
+ exit(1);
+ }
+ zconf_switch_to_buffer(zconf_create_buffer(zconfin,YY_BUF_SIZE));
+ buf->parent = current_buf;
+ current_buf = buf;
+
+ if (file->flags & FILE_BUSY) {
+ printf("%s:%d: do not source '%s' from itself\n",
+ zconf_curname(), zconf_lineno(), name);
+ exit(1);
+ }
+ if (file->flags & FILE_SCANNED) {
+ printf("%s:%d: file '%s' is already sourced from '%s'\n",
+ zconf_curname(), zconf_lineno(), name,
+ file->parent->name);
+ exit(1);
+ }
+ file->flags |= FILE_BUSY;
+ file->lineno = 1;
+ file->parent = current_file;
+ current_file = file;
+}
+
+static void zconf_endfile(void)
+{
+ struct buffer *parent;
+
+ current_file->flags |= FILE_SCANNED;
+ current_file->flags &= ~FILE_BUSY;
+ current_file = current_file->parent;
+
+ parent = current_buf->parent;
+ if (parent) {
+ fclose(zconfin);
+ zconf_delete_buffer(YY_CURRENT_BUFFER);
+ zconf_switch_to_buffer(parent->state);
+ }
+ free(current_buf);
+ current_buf = parent;
+}
+
+int zconf_lineno(void)
+{
+ return current_pos.lineno;
+}
+
+char *zconf_curname(void)
+{
+ return current_pos.file ? current_pos.file->name : "<none>";
+}
+
diff --git a/ap/build/uClibc/extra/config/lex.zconf.c_shipped b/ap/build/uClibc/extra/config/lex.zconf.c_shipped
new file mode 100644
index 0000000..f6e38b6
--- /dev/null
+++ b/ap/build/uClibc/extra/config/lex.zconf.c_shipped
@@ -0,0 +1,2416 @@
+
+#line 3 "scripts/kconfig/lex.zconf.c"
+
+#define YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define yy_create_buffer zconf_create_buffer
+#define yy_delete_buffer zconf_delete_buffer
+#define yy_flex_debug zconf_flex_debug
+#define yy_init_buffer zconf_init_buffer
+#define yy_flush_buffer zconf_flush_buffer
+#define yy_load_buffer_state zconf_load_buffer_state
+#define yy_switch_to_buffer zconf_switch_to_buffer
+#define yyin zconfin
+#define yyleng zconfleng
+#define yylex zconflex
+#define yylineno zconflineno
+#define yyout zconfout
+#define yyrestart zconfrestart
+#define yytext zconftext
+#define yywrap zconfwrap
+#define yyalloc zconfalloc
+#define yyrealloc zconfrealloc
+#define yyfree zconffree
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 5
+#define YY_FLEX_SUBMINOR_VERSION 35
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+/* First, we deal with platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types.
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t;
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX (4294967295U)
+#endif
+
+#endif /* ! C99 */
+
+#endif /* ! FLEXINT_H */
+
+#ifdef __cplusplus
+
+/* The "const" storage-class-modifier is valid. */
+#define YY_USE_CONST
+
+#else /* ! __cplusplus */
+
+/* C99 requires __STDC__ to be defined as 1. */
+#if defined (__STDC__)
+
+#define YY_USE_CONST
+
+#endif /* defined (__STDC__) */
+#endif /* ! __cplusplus */
+
+#ifdef YY_USE_CONST
+#define yyconst const
+#else
+#define yyconst
+#endif
+
+/* Returned upon end-of-file. */
+#define YY_NULL 0
+
+/* Promotes a possibly negative, possibly signed char to an unsigned
+ * integer for use as an array index. If the signed char is negative,
+ * we want to instead treat it as an 8-bit unsigned char, hence the
+ * double cast.
+ */
+#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+
+/* Enter a start condition. This macro really ought to take a parameter,
+ * but we do it the disgusting crufty way forced on us by the ()-less
+ * definition of BEGIN.
+ */
+#define BEGIN (yy_start) = 1 + 2 *
+
+/* Translate the current start state into a value that can be later handed
+ * to BEGIN to return to the state. The YYSTATE alias is for lex
+ * compatibility.
+ */
+#define YY_START (((yy_start) - 1) / 2)
+#define YYSTATE YY_START
+
+/* Action number for EOF rule of a given start state. */
+#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
+
+/* Special action meaning "start processing a new file". */
+#define YY_NEW_FILE zconfrestart(zconfin )
+
+#define YY_END_OF_BUFFER_CHAR 0
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#define YY_BUF_SIZE 16384
+#endif
+
+/* The state buf must be large enough to hold one state per character in the main buffer.
+ */
+#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+extern int zconfleng;
+
+extern FILE *zconfin, *zconfout;
+
+#define EOB_ACT_CONTINUE_SCAN 0
+#define EOB_ACT_END_OF_FILE 1
+#define EOB_ACT_LAST_MATCH 2
+
+ #define YY_LESS_LINENO(n)
+
+/* Return all but the first "n" matched characters back to the input stream. */
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up zconftext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ *yy_cp = (yy_hold_char); \
+ YY_RESTORE_YY_MORE_OFFSET \
+ (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
+ YY_DO_BEFORE_ACTION; /* set up zconftext again */ \
+ } \
+ while ( 0 )
+
+#define unput(c) yyunput( c, (yytext_ptr) )
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+ {
+ FILE *yy_input_file;
+
+ char *yy_ch_buf; /* input buffer */
+ char *yy_buf_pos; /* current position in input buffer */
+
+ /* Size of input buffer in bytes, not including room for EOB
+ * characters.
+ */
+ yy_size_t yy_buf_size;
+
+ /* Number of characters read into yy_ch_buf, not including EOB
+ * characters.
+ */
+ int yy_n_chars;
+
+ /* Whether we "own" the buffer - i.e., we know we created it,
+ * and can realloc() it to grow it, and should free() it to
+ * delete it.
+ */
+ int yy_is_our_buffer;
+
+ /* Whether this is an "interactive" input source; if so, and
+ * if we're using stdio for input, then we want to use getc()
+ * instead of fread(), to make sure we stop fetching input after
+ * each newline.
+ */
+ int yy_is_interactive;
+
+ /* Whether we're considered to be at the beginning of a line.
+ * If so, '^' rules will be active on the next match, otherwise
+ * not.
+ */
+ int yy_at_bol;
+
+ int yy_bs_lineno; /**< The line count. */
+ int yy_bs_column; /**< The column count. */
+
+ /* Whether to try to fill the input buffer when we reach the
+ * end of it.
+ */
+ int yy_fill_buffer;
+
+ int yy_buffer_status;
+
+#define YY_BUFFER_NEW 0
+#define YY_BUFFER_NORMAL 1
+ /* When an EOF's been seen but there's still some text to process
+ * then we mark the buffer as YY_EOF_PENDING, to indicate that we
+ * shouldn't try reading from the input source any more. We might
+ * still have a bunch of tokens to match, though, because of
+ * possible backing-up.
+ *
+ * When we actually see the EOF, we change the status to "new"
+ * (via zconfrestart()), so that the user can continue scanning by
+ * just pointing zconfin at a new input file.
+ */
+#define YY_BUFFER_EOF_PENDING 2
+
+ };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+/* Stack of input buffers. */
+static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
+static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
+static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+
+/* We provide macros for accessing buffer states in case in the
+ * future we want to put the buffer states in a more general
+ * "scanner state".
+ *
+ * Returns the top of the stack, or NULL.
+ */
+#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
+ ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
+ : NULL)
+
+/* Same as previous macro, but useful when we know that the buffer stack is not
+ * NULL or when we need an lvalue. For internal use only.
+ */
+#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
+
+/* yy_hold_char holds the character lost when zconftext is formed. */
+static char yy_hold_char;
+static int yy_n_chars; /* number of characters read into yy_ch_buf */
+int zconfleng;
+
+/* Points to current character in buffer. */
+static char *yy_c_buf_p = (char *) 0;
+static int yy_init = 0; /* whether we need to initialize */
+static int yy_start = 0; /* start state number */
+
+/* Flag which is used to allow zconfwrap()'s to do buffer switches
+ * instead of setting up a fresh zconfin. A bit of a hack ...
+ */
+static int yy_did_buffer_switch_on_eof;
+
+void zconfrestart (FILE *input_file );
+void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer );
+YY_BUFFER_STATE zconf_create_buffer (FILE *file,int size );
+void zconf_delete_buffer (YY_BUFFER_STATE b );
+void zconf_flush_buffer (YY_BUFFER_STATE b );
+void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer );
+void zconfpop_buffer_state (void );
+
+static void zconfensure_buffer_stack (void );
+static void zconf_load_buffer_state (void );
+static void zconf_init_buffer (YY_BUFFER_STATE b,FILE *file );
+
+#define YY_FLUSH_BUFFER zconf_flush_buffer(YY_CURRENT_BUFFER )
+
+YY_BUFFER_STATE zconf_scan_buffer (char *base,yy_size_t size );
+YY_BUFFER_STATE zconf_scan_string (yyconst char *yy_str );
+YY_BUFFER_STATE zconf_scan_bytes (yyconst char *bytes,int len );
+
+void *zconfalloc (yy_size_t );
+void *zconfrealloc (void *,yy_size_t );
+void zconffree (void * );
+
+#define yy_new_buffer zconf_create_buffer
+
+#define yy_set_interactive(is_interactive) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){ \
+ zconfensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ zconf_create_buffer(zconfin,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
+ }
+
+#define yy_set_bol(at_bol) \
+ { \
+ if ( ! YY_CURRENT_BUFFER ){\
+ zconfensure_buffer_stack (); \
+ YY_CURRENT_BUFFER_LVALUE = \
+ zconf_create_buffer(zconfin,YY_BUF_SIZE ); \
+ } \
+ YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
+ }
+
+#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
+
+/* Begin user sect3 */
+
+#define zconfwrap(n) 1
+#define YY_SKIP_YYWRAP
+
+typedef unsigned char YY_CHAR;
+
+FILE *zconfin = (FILE *) 0, *zconfout = (FILE *) 0;
+
+typedef int yy_state_type;
+
+extern int zconflineno;
+
+int zconflineno = 1;
+
+extern char *zconftext;
+#define yytext_ptr zconftext
+static yyconst flex_int16_t yy_nxt[][17] =
+ {
+ {
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0
+ },
+
+ {
+ 11, 12, 13, 14, 12, 12, 15, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12
+ },
+
+ {
+ 11, 12, 13, 14, 12, 12, 15, 12, 12, 12,
+ 12, 12, 12, 12, 12, 12, 12
+ },
+
+ {
+ 11, 16, 16, 17, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 18, 16, 16, 16
+ },
+
+ {
+ 11, 16, 16, 17, 16, 16, 16, 16, 16, 16,
+ 16, 16, 16, 18, 16, 16, 16
+
+ },
+
+ {
+ 11, 19, 20, 21, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19
+ },
+
+ {
+ 11, 19, 20, 21, 19, 19, 19, 19, 19, 19,
+ 19, 19, 19, 19, 19, 19, 19
+ },
+
+ {
+ 11, 22, 22, 23, 22, 24, 22, 22, 24, 22,
+ 22, 22, 22, 22, 22, 25, 22
+ },
+
+ {
+ 11, 22, 22, 23, 22, 24, 22, 22, 24, 22,
+ 22, 22, 22, 22, 22, 25, 22
+ },
+
+ {
+ 11, 26, 26, 27, 28, 29, 30, 31, 29, 32,
+ 33, 34, 35, 35, 36, 37, 38
+
+ },
+
+ {
+ 11, 26, 26, 27, 28, 29, 30, 31, 29, 32,
+ 33, 34, 35, 35, 36, 37, 38
+ },
+
+ {
+ -11, -11, -11, -11, -11, -11, -11, -11, -11, -11,
+ -11, -11, -11, -11, -11, -11, -11
+ },
+
+ {
+ 11, -12, -12, -12, -12, -12, -12, -12, -12, -12,
+ -12, -12, -12, -12, -12, -12, -12
+ },
+
+ {
+ 11, -13, 39, 40, -13, -13, 41, -13, -13, -13,
+ -13, -13, -13, -13, -13, -13, -13
+ },
+
+ {
+ 11, -14, -14, -14, -14, -14, -14, -14, -14, -14,
+ -14, -14, -14, -14, -14, -14, -14
+
+ },
+
+ {
+ 11, 42, 42, 43, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42
+ },
+
+ {
+ 11, -16, -16, -16, -16, -16, -16, -16, -16, -16,
+ -16, -16, -16, -16, -16, -16, -16
+ },
+
+ {
+ 11, -17, -17, -17, -17, -17, -17, -17, -17, -17,
+ -17, -17, -17, -17, -17, -17, -17
+ },
+
+ {
+ 11, -18, -18, -18, -18, -18, -18, -18, -18, -18,
+ -18, -18, -18, 44, -18, -18, -18
+ },
+
+ {
+ 11, 45, 45, -19, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45
+
+ },
+
+ {
+ 11, -20, 46, 47, -20, -20, -20, -20, -20, -20,
+ -20, -20, -20, -20, -20, -20, -20
+ },
+
+ {
+ 11, 48, -21, -21, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48
+ },
+
+ {
+ 11, 49, 49, 50, 49, -22, 49, 49, -22, 49,
+ 49, 49, 49, 49, 49, -22, 49
+ },
+
+ {
+ 11, -23, -23, -23, -23, -23, -23, -23, -23, -23,
+ -23, -23, -23, -23, -23, -23, -23
+ },
+
+ {
+ 11, -24, -24, -24, -24, -24, -24, -24, -24, -24,
+ -24, -24, -24, -24, -24, -24, -24
+
+ },
+
+ {
+ 11, 51, 51, 52, 51, 51, 51, 51, 51, 51,
+ 51, 51, 51, 51, 51, 51, 51
+ },
+
+ {
+ 11, -26, -26, -26, -26, -26, -26, -26, -26, -26,
+ -26, -26, -26, -26, -26, -26, -26
+ },
+
+ {
+ 11, -27, -27, -27, -27, -27, -27, -27, -27, -27,
+ -27, -27, -27, -27, -27, -27, -27
+ },
+
+ {
+ 11, -28, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, -28, -28, -28, 53, -28, -28
+ },
+
+ {
+ 11, -29, -29, -29, -29, -29, -29, -29, -29, -29,
+ -29, -29, -29, -29, -29, -29, -29
+
+ },
+
+ {
+ 11, 54, 54, -30, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54
+ },
+
+ {
+ 11, -31, -31, -31, -31, -31, -31, 55, -31, -31,
+ -31, -31, -31, -31, -31, -31, -31
+ },
+
+ {
+ 11, -32, -32, -32, -32, -32, -32, -32, -32, -32,
+ -32, -32, -32, -32, -32, -32, -32
+ },
+
+ {
+ 11, -33, -33, -33, -33, -33, -33, -33, -33, -33,
+ -33, -33, -33, -33, -33, -33, -33
+ },
+
+ {
+ 11, -34, -34, -34, -34, -34, -34, -34, -34, -34,
+ -34, 56, 57, 57, -34, -34, -34
+
+ },
+
+ {
+ 11, -35, -35, -35, -35, -35, -35, -35, -35, -35,
+ -35, 57, 57, 57, -35, -35, -35
+ },
+
+ {
+ 11, -36, -36, -36, -36, -36, -36, -36, -36, -36,
+ -36, -36, -36, -36, -36, -36, -36
+ },
+
+ {
+ 11, -37, -37, 58, -37, -37, -37, -37, -37, -37,
+ -37, -37, -37, -37, -37, -37, -37
+ },
+
+ {
+ 11, -38, -38, -38, -38, -38, -38, -38, -38, -38,
+ -38, -38, -38, -38, -38, -38, 59
+ },
+
+ {
+ 11, -39, 39, 40, -39, -39, 41, -39, -39, -39,
+ -39, -39, -39, -39, -39, -39, -39
+
+ },
+
+ {
+ 11, -40, -40, -40, -40, -40, -40, -40, -40, -40,
+ -40, -40, -40, -40, -40, -40, -40
+ },
+
+ {
+ 11, 42, 42, 43, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42
+ },
+
+ {
+ 11, 42, 42, 43, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42
+ },
+
+ {
+ 11, -43, -43, -43, -43, -43, -43, -43, -43, -43,
+ -43, -43, -43, -43, -43, -43, -43
+ },
+
+ {
+ 11, -44, -44, -44, -44, -44, -44, -44, -44, -44,
+ -44, -44, -44, 44, -44, -44, -44
+
+ },
+
+ {
+ 11, 45, 45, -45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 45, 45, 45, 45, 45
+ },
+
+ {
+ 11, -46, 46, 47, -46, -46, -46, -46, -46, -46,
+ -46, -46, -46, -46, -46, -46, -46
+ },
+
+ {
+ 11, 48, -47, -47, 48, 48, 48, 48, 48, 48,
+ 48, 48, 48, 48, 48, 48, 48
+ },
+
+ {
+ 11, -48, -48, -48, -48, -48, -48, -48, -48, -48,
+ -48, -48, -48, -48, -48, -48, -48
+ },
+
+ {
+ 11, 49, 49, 50, 49, -49, 49, 49, -49, 49,
+ 49, 49, 49, 49, 49, -49, 49
+
+ },
+
+ {
+ 11, -50, -50, -50, -50, -50, -50, -50, -50, -50,
+ -50, -50, -50, -50, -50, -50, -50
+ },
+
+ {
+ 11, -51, -51, 52, -51, -51, -51, -51, -51, -51,
+ -51, -51, -51, -51, -51, -51, -51
+ },
+
+ {
+ 11, -52, -52, -52, -52, -52, -52, -52, -52, -52,
+ -52, -52, -52, -52, -52, -52, -52
+ },
+
+ {
+ 11, -53, -53, -53, -53, -53, -53, -53, -53, -53,
+ -53, -53, -53, -53, -53, -53, -53
+ },
+
+ {
+ 11, 54, 54, -54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 54, 54, 54, 54, 54
+
+ },
+
+ {
+ 11, -55, -55, -55, -55, -55, -55, -55, -55, -55,
+ -55, -55, -55, -55, -55, -55, -55
+ },
+
+ {
+ 11, -56, -56, -56, -56, -56, -56, -56, -56, -56,
+ -56, 60, 57, 57, -56, -56, -56
+ },
+
+ {
+ 11, -57, -57, -57, -57, -57, -57, -57, -57, -57,
+ -57, 57, 57, 57, -57, -57, -57
+ },
+
+ {
+ 11, -58, -58, -58, -58, -58, -58, -58, -58, -58,
+ -58, -58, -58, -58, -58, -58, -58
+ },
+
+ {
+ 11, -59, -59, -59, -59, -59, -59, -59, -59, -59,
+ -59, -59, -59, -59, -59, -59, -59
+
+ },
+
+ {
+ 11, -60, -60, -60, -60, -60, -60, -60, -60, -60,
+ -60, 57, 57, 57, -60, -60, -60
+ },
+
+ } ;
+
+static yy_state_type yy_get_previous_state (void );
+static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
+static int yy_get_next_buffer (void );
+static void yy_fatal_error (yyconst char msg[] );
+
+/* Done after the current pattern has been matched and before the
+ * corresponding action - sets up zconftext.
+ */
+#define YY_DO_BEFORE_ACTION \
+ (yytext_ptr) = yy_bp; \
+ zconfleng = (size_t) (yy_cp - yy_bp); \
+ (yy_hold_char) = *yy_cp; \
+ *yy_cp = '\0'; \
+ (yy_c_buf_p) = yy_cp;
+
+#define YY_NUM_RULES 33
+#define YY_END_OF_BUFFER 34
+/* This struct is not used in this scanner,
+ but its presence is necessary. */
+struct yy_trans_info
+ {
+ flex_int32_t yy_verify;
+ flex_int32_t yy_nxt;
+ };
+static yyconst flex_int16_t yy_accept[61] =
+ { 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 34, 5, 4, 2, 3, 7, 8, 6, 32, 29,
+ 31, 24, 28, 27, 26, 22, 17, 13, 16, 20,
+ 22, 11, 12, 19, 19, 14, 22, 22, 4, 2,
+ 3, 3, 1, 6, 32, 29, 31, 30, 24, 23,
+ 26, 25, 15, 20, 9, 19, 19, 21, 10, 18
+ } ;
+
+static yyconst flex_int32_t yy_ec[256] =
+ { 0,
+ 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 2, 4, 5, 6, 1, 1, 7, 8, 9,
+ 10, 1, 1, 1, 11, 12, 12, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 1, 1, 1,
+ 14, 1, 1, 1, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 1, 15, 1, 1, 13, 1, 13, 13, 13, 13,
+
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 1, 16, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1
+ } ;
+
+extern int zconf_flex_debug;
+int zconf_flex_debug = 0;
+
+/* The intent behind this definition is that it'll catch
+ * any uses of REJECT which flex missed.
+ */
+#define REJECT reject_used_but_not_detected
+#define yymore() yymore_used_but_not_detected
+#define YY_MORE_ADJ 0
+#define YY_RESTORE_YY_MORE_OFFSET
+char *zconftext;
+#define YY_NO_INPUT 1
+
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+#define START_STRSIZE 16
+
+static struct {
+ struct file *file;
+ int lineno;
+} current_pos;
+
+static char *text;
+static int text_size, text_asize;
+
+struct buffer {
+ struct buffer *parent;
+ YY_BUFFER_STATE state;
+};
+
+struct buffer *current_buf;
+
+static int last_ts, first_ts;
+
+static void zconf_endhelp(void);
+static void zconf_endfile(void);
+
+void new_string(void)
+{
+ text = malloc(START_STRSIZE);
+ text_asize = START_STRSIZE;
+ text_size = 0;
+ *text = 0;
+}
+
+void append_string(const char *str, int size)
+{
+ int new_size = text_size + size + 1;
+ if (new_size > text_asize) {
+ new_size += START_STRSIZE - 1;
+ new_size &= -START_STRSIZE;
+ text = realloc(text, new_size);
+ text_asize = new_size;
+ }
+ memcpy(text + text_size, str, size);
+ text_size += size;
+ text[text_size] = 0;
+}
+
+void alloc_string(const char *str, int size)
+{
+ text = malloc(size + 1);
+ memcpy(text, str, size);
+ text[size] = 0;
+}
+
+#define INITIAL 0
+#define COMMAND 1
+#define HELP 2
+#define STRING 3
+#define PARAM 4
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+static int yy_init_globals (void );
+
+/* Accessor methods to globals.
+ These are made visible to non-reentrant scanners for convenience. */
+
+int zconflex_destroy (void );
+
+int zconfget_debug (void );
+
+void zconfset_debug (int debug_flag );
+
+YY_EXTRA_TYPE zconfget_extra (void );
+
+void zconfset_extra (YY_EXTRA_TYPE user_defined );
+
+FILE *zconfget_in (void );
+
+void zconfset_in (FILE * in_str );
+
+FILE *zconfget_out (void );
+
+void zconfset_out (FILE * out_str );
+
+int zconfget_leng (void );
+
+char *zconfget_text (void );
+
+int zconfget_lineno (void );
+
+void zconfset_lineno (int line_number );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int zconfwrap (void );
+#else
+extern int zconfwrap (void );
+#endif
+#endif
+
+ static void yyunput (int c,char *buf_ptr );
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char *,yyconst char *,int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * );
+#endif
+
+#ifndef YY_NO_INPUT
+
+#ifdef __cplusplus
+static int yyinput (void );
+#else
+static int input (void );
+#endif
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#define YY_READ_BUF_SIZE 8192
+#endif
+
+/* Copy whatever the last rule matched to the standard output. */
+#ifndef ECHO
+/* This used to be an fputs(), but since the string might contain NUL's,
+ * we now use fwrite().
+ */
+#define ECHO fwrite( zconftext, zconfleng, 1, zconfout )
+#endif
+
+/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
+ * is returned in "result".
+ */
+#ifndef YY_INPUT
+#define YY_INPUT(buf,result,max_size) \
+ errno=0; \
+ while ( (result = read( fileno(zconfin), (char *) buf, max_size )) < 0 ) \
+ { \
+ if( errno != EINTR) \
+ { \
+ YY_FATAL_ERROR( "input in flex scanner failed" ); \
+ break; \
+ } \
+ errno=0; \
+ clearerr(zconfin); \
+ }\
+\
+
+#endif
+
+/* No semi-colon after return; correct usage is to write "yyterminate();" -
+ * we don't want an extra ';' after the "return" because that will cause
+ * some compilers to complain about unreachable statements.
+ */
+#ifndef yyterminate
+#define yyterminate() return YY_NULL
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Report a fatal error. */
+#ifndef YY_FATAL_ERROR
+#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
+#endif
+
+/* end tables serialization structures and prototypes */
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int zconflex (void);
+
+#define YY_DECL int zconflex (void)
+#endif /* !YY_DECL */
+
+/* Code executed at the beginning of each rule, after zconftext and zconfleng
+ * have been set up.
+ */
+#ifndef YY_USER_ACTION
+#define YY_USER_ACTION
+#endif
+
+/* Code executed at the end of each rule. */
+#ifndef YY_BREAK
+#define YY_BREAK break;
+#endif
+
+#define YY_RULE_SETUP \
+ YY_USER_ACTION
+
+/** The main scanner function which does all the work.
+ */
+YY_DECL
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp, *yy_bp;
+ register int yy_act;
+
+ int str = 0;
+ int ts, i;
+
+ if ( !(yy_init) )
+ {
+ (yy_init) = 1;
+
+#ifdef YY_USER_INIT
+ YY_USER_INIT;
+#endif
+
+ if ( ! (yy_start) )
+ (yy_start) = 1; /* first start state */
+
+ if ( ! zconfin )
+ zconfin = stdin;
+
+ if ( ! zconfout )
+ zconfout = stdout;
+
+ if ( ! YY_CURRENT_BUFFER ) {
+ zconfensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ zconf_create_buffer(zconfin,YY_BUF_SIZE );
+ }
+
+ zconf_load_buffer_state( );
+ }
+
+ while ( 1 ) /* loops until end-of-file is reached */
+ {
+ yy_cp = (yy_c_buf_p);
+
+ /* Support of zconftext. */
+ *yy_cp = (yy_hold_char);
+
+ /* yy_bp points to the position in yy_ch_buf of the start of
+ * the current run.
+ */
+ yy_bp = yy_cp;
+
+ yy_current_state = (yy_start);
+yy_match:
+ while ( (yy_current_state = yy_nxt[yy_current_state][ yy_ec[YY_SC_TO_UI(*yy_cp)] ]) > 0 )
+ ++yy_cp;
+
+ yy_current_state = -yy_current_state;
+
+yy_find_action:
+ yy_act = yy_accept[yy_current_state];
+
+ YY_DO_BEFORE_ACTION;
+
+do_action: /* This label is used only to access EOF actions. */
+
+ switch ( yy_act )
+ { /* beginning of action switch */
+case 1:
+/* rule 1 can match eol */
+case 2:
+/* rule 2 can match eol */
+YY_RULE_SETUP
+{
+ current_file->lineno++;
+ return T_EOL;
+}
+ YY_BREAK
+case 3:
+YY_RULE_SETUP
+
+ YY_BREAK
+case 4:
+YY_RULE_SETUP
+{
+ BEGIN(COMMAND);
+}
+ YY_BREAK
+case 5:
+YY_RULE_SETUP
+{
+ unput(zconftext[0]);
+ BEGIN(COMMAND);
+}
+ YY_BREAK
+
+case 6:
+YY_RULE_SETUP
+{
+ struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng);
+ BEGIN(PARAM);
+ current_pos.file = current_file;
+ current_pos.lineno = current_file->lineno;
+ if (id && id->flags & TF_COMMAND) {
+ zconflval.id = id;
+ return id->token;
+ }
+ alloc_string(zconftext, zconfleng);
+ zconflval.string = text;
+ return T_WORD;
+ }
+ YY_BREAK
+case 7:
+YY_RULE_SETUP
+
+ YY_BREAK
+case 8:
+/* rule 8 can match eol */
+YY_RULE_SETUP
+{
+ BEGIN(INITIAL);
+ current_file->lineno++;
+ return T_EOL;
+ }
+ YY_BREAK
+
+case 9:
+YY_RULE_SETUP
+return T_AND;
+ YY_BREAK
+case 10:
+YY_RULE_SETUP
+return T_OR;
+ YY_BREAK
+case 11:
+YY_RULE_SETUP
+return T_OPEN_PAREN;
+ YY_BREAK
+case 12:
+YY_RULE_SETUP
+return T_CLOSE_PAREN;
+ YY_BREAK
+case 13:
+YY_RULE_SETUP
+return T_NOT;
+ YY_BREAK
+case 14:
+YY_RULE_SETUP
+return T_EQUAL;
+ YY_BREAK
+case 15:
+YY_RULE_SETUP
+return T_UNEQUAL;
+ YY_BREAK
+case 16:
+YY_RULE_SETUP
+{
+ str = zconftext[0];
+ new_string();
+ BEGIN(STRING);
+ }
+ YY_BREAK
+case 17:
+/* rule 17 can match eol */
+YY_RULE_SETUP
+BEGIN(INITIAL); current_file->lineno++; return T_EOL;
+ YY_BREAK
+case 18:
+YY_RULE_SETUP
+/* ignore */
+ YY_BREAK
+case 19:
+YY_RULE_SETUP
+{
+ struct kconf_id *id = kconf_id_lookup(zconftext, zconfleng);
+ if (id && id->flags & TF_PARAM) {
+ zconflval.id = id;
+ return id->token;
+ }
+ alloc_string(zconftext, zconfleng);
+ zconflval.string = text;
+ return T_WORD;
+ }
+ YY_BREAK
+case 20:
+YY_RULE_SETUP
+/* comment */
+ YY_BREAK
+case 21:
+/* rule 21 can match eol */
+YY_RULE_SETUP
+current_file->lineno++;
+ YY_BREAK
+case 22:
+YY_RULE_SETUP
+
+ YY_BREAK
+case YY_STATE_EOF(PARAM):
+{
+ BEGIN(INITIAL);
+ }
+ YY_BREAK
+
+case 23:
+/* rule 23 can match eol */
+*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
+(yy_c_buf_p) = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up zconftext again */
+YY_RULE_SETUP
+{
+ append_string(zconftext, zconfleng);
+ zconflval.string = text;
+ return T_WORD_QUOTE;
+ }
+ YY_BREAK
+case 24:
+YY_RULE_SETUP
+{
+ append_string(zconftext, zconfleng);
+ }
+ YY_BREAK
+case 25:
+/* rule 25 can match eol */
+*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
+(yy_c_buf_p) = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up zconftext again */
+YY_RULE_SETUP
+{
+ append_string(zconftext + 1, zconfleng - 1);
+ zconflval.string = text;
+ return T_WORD_QUOTE;
+ }
+ YY_BREAK
+case 26:
+YY_RULE_SETUP
+{
+ append_string(zconftext + 1, zconfleng - 1);
+ }
+ YY_BREAK
+case 27:
+YY_RULE_SETUP
+{
+ if (str == zconftext[0]) {
+ BEGIN(PARAM);
+ zconflval.string = text;
+ return T_WORD_QUOTE;
+ } else
+ append_string(zconftext, 1);
+ }
+ YY_BREAK
+case 28:
+/* rule 28 can match eol */
+YY_RULE_SETUP
+{
+ printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno());
+ current_file->lineno++;
+ BEGIN(INITIAL);
+ return T_EOL;
+ }
+ YY_BREAK
+case YY_STATE_EOF(STRING):
+{
+ BEGIN(INITIAL);
+ }
+ YY_BREAK
+
+case 29:
+YY_RULE_SETUP
+{
+ ts = 0;
+ for (i = 0; i < zconfleng; i++) {
+ if (zconftext[i] == '\t')
+ ts = (ts & ~7) + 8;
+ else
+ ts++;
+ }
+ last_ts = ts;
+ if (first_ts) {
+ if (ts < first_ts) {
+ zconf_endhelp();
+ return T_HELPTEXT;
+ }
+ ts -= first_ts;
+ while (ts > 8) {
+ append_string(" ", 8);
+ ts -= 8;
+ }
+ append_string(" ", ts);
+ }
+ }
+ YY_BREAK
+case 30:
+/* rule 30 can match eol */
+*yy_cp = (yy_hold_char); /* undo effects of setting up zconftext */
+(yy_c_buf_p) = yy_cp -= 1;
+YY_DO_BEFORE_ACTION; /* set up zconftext again */
+YY_RULE_SETUP
+{
+ current_file->lineno++;
+ zconf_endhelp();
+ return T_HELPTEXT;
+ }
+ YY_BREAK
+case 31:
+/* rule 31 can match eol */
+YY_RULE_SETUP
+{
+ current_file->lineno++;
+ append_string("\n", 1);
+ }
+ YY_BREAK
+case 32:
+YY_RULE_SETUP
+{
+ while (zconfleng) {
+ if ((zconftext[zconfleng-1] != ' ') && (zconftext[zconfleng-1] != '\t'))
+ break;
+ zconfleng--;
+ }
+ append_string(zconftext, zconfleng);
+ if (!first_ts)
+ first_ts = last_ts;
+ }
+ YY_BREAK
+case YY_STATE_EOF(HELP):
+{
+ zconf_endhelp();
+ return T_HELPTEXT;
+ }
+ YY_BREAK
+
+case YY_STATE_EOF(INITIAL):
+case YY_STATE_EOF(COMMAND):
+{
+ if (current_file) {
+ zconf_endfile();
+ return T_EOL;
+ }
+ fclose(zconfin);
+ yyterminate();
+}
+ YY_BREAK
+case 33:
+YY_RULE_SETUP
+YY_FATAL_ERROR( "flex scanner jammed" );
+ YY_BREAK
+
+ case YY_END_OF_BUFFER:
+ {
+ /* Amount of text matched not including the EOB char. */
+ int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
+
+ /* Undo the effects of YY_DO_BEFORE_ACTION. */
+ *yy_cp = (yy_hold_char);
+ YY_RESTORE_YY_MORE_OFFSET
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
+ {
+ /* We're scanning a new file or input source. It's
+ * possible that this happened because the user
+ * just pointed zconfin at a new source and called
+ * zconflex(). If so, then we have to assure
+ * consistency between YY_CURRENT_BUFFER and our
+ * globals. Here is the right place to do so, because
+ * this is the first action (other than possibly a
+ * back-up) that will match for the new input source.
+ */
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ YY_CURRENT_BUFFER_LVALUE->yy_input_file = zconfin;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
+ }
+
+ /* Note that here we test for yy_c_buf_p "<=" to the position
+ * of the first EOB in the buffer, since yy_c_buf_p will
+ * already have been incremented past the NUL character
+ * (since all states make transitions on EOB to the
+ * end-of-buffer state). Contrast this with the test
+ * in input().
+ */
+ if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+ { /* This was really a NUL. */
+ yy_state_type yy_next_state;
+
+ (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( );
+
+ /* Okay, we're now positioned to make the NUL
+ * transition. We couldn't have
+ * yy_get_previous_state() go ahead and do it
+ * for us because it doesn't know how to deal
+ * with the possibility of jamming (and we don't
+ * want to build jamming into it because then it
+ * will run more slowly).
+ */
+
+ yy_next_state = yy_try_NUL_trans( yy_current_state );
+
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+
+ if ( yy_next_state )
+ {
+ /* Consume the NUL. */
+ yy_cp = ++(yy_c_buf_p);
+ yy_current_state = yy_next_state;
+ goto yy_match;
+ }
+
+ else
+ {
+ yy_cp = (yy_c_buf_p);
+ goto yy_find_action;
+ }
+ }
+
+ else switch ( yy_get_next_buffer( ) )
+ {
+ case EOB_ACT_END_OF_FILE:
+ {
+ (yy_did_buffer_switch_on_eof) = 0;
+
+ if ( zconfwrap( ) )
+ {
+ /* Note: because we've taken care in
+ * yy_get_next_buffer() to have set up
+ * zconftext, we can now set up
+ * yy_c_buf_p so that if some total
+ * hoser (like flex itself) wants to
+ * call the scanner after we return the
+ * YY_NULL, it'll still work - another
+ * YY_NULL will get returned.
+ */
+ (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
+
+ yy_act = YY_STATE_EOF(YY_START);
+ goto do_action;
+ }
+
+ else
+ {
+ if ( ! (yy_did_buffer_switch_on_eof) )
+ YY_NEW_FILE;
+ }
+ break;
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ (yy_c_buf_p) =
+ (yytext_ptr) + yy_amount_of_matched_text;
+
+ yy_current_state = yy_get_previous_state( );
+
+ yy_cp = (yy_c_buf_p);
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+ goto yy_match;
+
+ case EOB_ACT_LAST_MATCH:
+ (yy_c_buf_p) =
+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
+
+ yy_current_state = yy_get_previous_state( );
+
+ yy_cp = (yy_c_buf_p);
+ yy_bp = (yytext_ptr) + YY_MORE_ADJ;
+ goto yy_find_action;
+ }
+ break;
+ }
+
+ default:
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--no action found" );
+ } /* end of action switch */
+ } /* end of scanning one token */
+} /* end of zconflex */
+
+/* yy_get_next_buffer - try to read in a new buffer
+ *
+ * Returns a code representing an action:
+ * EOB_ACT_LAST_MATCH -
+ * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
+ * EOB_ACT_END_OF_FILE - end of file
+ */
+static int yy_get_next_buffer (void)
+{
+ register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+ register char *source = (yytext_ptr);
+ register int number_to_move, i;
+ int ret_val;
+
+ if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
+ YY_FATAL_ERROR(
+ "fatal flex scanner internal error--end of buffer missed" );
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
+ { /* Don't try to fill the buffer, so this is an EOF. */
+ if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
+ {
+ /* We matched a single character, the EOB, so
+ * treat this as a final EOF.
+ */
+ return EOB_ACT_END_OF_FILE;
+ }
+
+ else
+ {
+ /* We matched some text prior to the EOB, first
+ * process it.
+ */
+ return EOB_ACT_LAST_MATCH;
+ }
+ }
+
+ /* Try to read more data. */
+
+ /* First move last chars to start of buffer. */
+ number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+
+ for ( i = 0; i < number_to_move; ++i )
+ *(dest++) = *(source++);
+
+ if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
+ /* don't do the read, it's not guaranteed to return an EOF,
+ * just force an EOF
+ */
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
+
+ else
+ {
+ int num_to_read =
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
+
+ while ( num_to_read <= 0 )
+ { /* Not enough room in the buffer - grow it. */
+
+ /* just a shorter name for the current buffer */
+ YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+
+ int yy_c_buf_p_offset =
+ (int) ((yy_c_buf_p) - b->yy_ch_buf);
+
+ if ( b->yy_is_our_buffer )
+ {
+ int new_size = b->yy_buf_size * 2;
+
+ if ( new_size <= 0 )
+ b->yy_buf_size += b->yy_buf_size / 8;
+ else
+ b->yy_buf_size *= 2;
+
+ b->yy_ch_buf = (char *)
+ /* Include room in for 2 EOB chars. */
+ zconfrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
+ }
+ else
+ /* Can't grow it, we don't own it. */
+ b->yy_ch_buf = 0;
+
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR(
+ "fatal error - scanner input buffer overflow" );
+
+ (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
+
+ num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
+ number_to_move - 1;
+
+ }
+
+ if ( num_to_read > YY_READ_BUF_SIZE )
+ num_to_read = YY_READ_BUF_SIZE;
+
+ /* Read in more data. */
+ YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
+ (yy_n_chars), (size_t) num_to_read );
+
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ if ( (yy_n_chars) == 0 )
+ {
+ if ( number_to_move == YY_MORE_ADJ )
+ {
+ ret_val = EOB_ACT_END_OF_FILE;
+ zconfrestart(zconfin );
+ }
+
+ else
+ {
+ ret_val = EOB_ACT_LAST_MATCH;
+ YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
+ YY_BUFFER_EOF_PENDING;
+ }
+ }
+
+ else
+ ret_val = EOB_ACT_CONTINUE_SCAN;
+
+ if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+ /* Extend the array by 50%, plus the number we really need. */
+ yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) zconfrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
+ if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+ }
+
+ (yy_n_chars) += number_to_move;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
+ YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
+
+ (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
+
+ return ret_val;
+}
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+ static yy_state_type yy_get_previous_state (void)
+{
+ register yy_state_type yy_current_state;
+ register char *yy_cp;
+
+ yy_current_state = (yy_start);
+
+ for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
+ {
+ yy_current_state = yy_nxt[yy_current_state][(*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1)];
+ }
+
+ return yy_current_state;
+}
+
+/* yy_try_NUL_trans - try to make a transition on the NUL character
+ *
+ * synopsis
+ * next_state = yy_try_NUL_trans( current_state );
+ */
+ static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
+{
+ register int yy_is_jam;
+
+ yy_current_state = yy_nxt[yy_current_state][1];
+ yy_is_jam = (yy_current_state <= 0);
+
+ return yy_is_jam ? 0 : yy_current_state;
+}
+
+ static void yyunput (int c, register char * yy_bp )
+{
+ register char *yy_cp;
+
+ yy_cp = (yy_c_buf_p);
+
+ /* undo effects of setting up zconftext */
+ *yy_cp = (yy_hold_char);
+
+ if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+ { /* need to shift things up to make room */
+ /* +2 for EOB chars. */
+ register int number_to_move = (yy_n_chars) + 2;
+ register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
+ register char *source =
+ &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
+
+ while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
+ *--dest = *--source;
+
+ yy_cp += (int) (dest - source);
+ yy_bp += (int) (dest - source);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
+
+ if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
+ YY_FATAL_ERROR( "flex scanner push-back overflow" );
+ }
+
+ *--yy_cp = (char) c;
+
+ (yytext_ptr) = yy_bp;
+ (yy_hold_char) = *yy_cp;
+ (yy_c_buf_p) = yy_cp;
+}
+
+#ifndef YY_NO_INPUT
+#ifdef __cplusplus
+ static int yyinput (void)
+#else
+ static int input (void)
+#endif
+
+{
+ int c;
+
+ *(yy_c_buf_p) = (yy_hold_char);
+
+ if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
+ {
+ /* yy_c_buf_p now points to the character we want to return.
+ * If this occurs *before* the EOB characters, then it's a
+ * valid NUL; if not, then we've hit the end of the buffer.
+ */
+ if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
+ /* This was really a NUL. */
+ *(yy_c_buf_p) = '\0';
+
+ else
+ { /* need more input */
+ int offset = (yy_c_buf_p) - (yytext_ptr);
+ ++(yy_c_buf_p);
+
+ switch ( yy_get_next_buffer( ) )
+ {
+ case EOB_ACT_LAST_MATCH:
+ /* This happens because yy_g_n_b()
+ * sees that we've accumulated a
+ * token and flags that we need to
+ * try matching the token before
+ * proceeding. But for input(),
+ * there's no matching to consider.
+ * So convert the EOB_ACT_LAST_MATCH
+ * to EOB_ACT_END_OF_FILE.
+ */
+
+ /* Reset buffer status. */
+ zconfrestart(zconfin );
+
+ /*FALLTHROUGH*/
+
+ case EOB_ACT_END_OF_FILE:
+ {
+ if ( zconfwrap( ) )
+ return EOF;
+
+ if ( ! (yy_did_buffer_switch_on_eof) )
+ YY_NEW_FILE;
+#ifdef __cplusplus
+ return yyinput();
+#else
+ return input();
+#endif
+ }
+
+ case EOB_ACT_CONTINUE_SCAN:
+ (yy_c_buf_p) = (yytext_ptr) + offset;
+ break;
+ }
+ }
+ }
+
+ c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
+ *(yy_c_buf_p) = '\0'; /* preserve zconftext */
+ (yy_hold_char) = *++(yy_c_buf_p);
+
+ return c;
+}
+#endif /* ifndef YY_NO_INPUT */
+
+/** Immediately switch to a different input stream.
+ * @param input_file A readable stream.
+ *
+ * @note This function does not reset the start condition to @c INITIAL .
+ */
+ void zconfrestart (FILE * input_file )
+{
+
+ if ( ! YY_CURRENT_BUFFER ){
+ zconfensure_buffer_stack ();
+ YY_CURRENT_BUFFER_LVALUE =
+ zconf_create_buffer(zconfin,YY_BUF_SIZE );
+ }
+
+ zconf_init_buffer(YY_CURRENT_BUFFER,input_file );
+ zconf_load_buffer_state( );
+}
+
+/** Switch to a different input buffer.
+ * @param new_buffer The new input buffer.
+ *
+ */
+ void zconf_switch_to_buffer (YY_BUFFER_STATE new_buffer )
+{
+
+ /* TODO. We should be able to replace this entire function body
+ * with
+ * zconfpop_buffer_state();
+ * zconfpush_buffer_state(new_buffer);
+ */
+ zconfensure_buffer_stack ();
+ if ( YY_CURRENT_BUFFER == new_buffer )
+ return;
+
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *(yy_c_buf_p) = (yy_hold_char);
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+ zconf_load_buffer_state( );
+
+ /* We don't actually know whether we did this switch during
+ * EOF (zconfwrap()) processing, but the only time this flag
+ * is looked at is after zconfwrap() is called, so it's safe
+ * to go ahead and always set it.
+ */
+ (yy_did_buffer_switch_on_eof) = 1;
+}
+
+static void zconf_load_buffer_state (void)
+{
+ (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
+ (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
+ zconfin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+ (yy_hold_char) = *(yy_c_buf_p);
+}
+
+/** Allocate and initialize an input buffer state.
+ * @param file A readable stream.
+ * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
+ *
+ * @return the allocated buffer state.
+ */
+ YY_BUFFER_STATE zconf_create_buffer (FILE * file, int size )
+{
+ YY_BUFFER_STATE b;
+
+ b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );
+
+ b->yy_buf_size = size;
+
+ /* yy_ch_buf has to be 2 characters longer than the size given because
+ * we need to put in 2 end-of-buffer characters.
+ */
+ b->yy_ch_buf = (char *) zconfalloc(b->yy_buf_size + 2 );
+ if ( ! b->yy_ch_buf )
+ YY_FATAL_ERROR( "out of dynamic memory in zconf_create_buffer()" );
+
+ b->yy_is_our_buffer = 1;
+
+ zconf_init_buffer(b,file );
+
+ return b;
+}
+
+/** Destroy the buffer.
+ * @param b a buffer created with zconf_create_buffer()
+ *
+ */
+ void zconf_delete_buffer (YY_BUFFER_STATE b )
+{
+
+ if ( ! b )
+ return;
+
+ if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
+ YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
+
+ if ( b->yy_is_our_buffer )
+ zconffree((void *) b->yy_ch_buf );
+
+ zconffree((void *) b );
+}
+
+/* Initializes or reinitializes a buffer.
+ * This function is sometimes called more than once on the same buffer,
+ * such as during a zconfrestart() or at EOF.
+ */
+ static void zconf_init_buffer (YY_BUFFER_STATE b, FILE * file )
+
+{
+ int oerrno = errno;
+
+ zconf_flush_buffer(b );
+
+ b->yy_input_file = file;
+ b->yy_fill_buffer = 1;
+
+ /* If b is the current buffer, then zconf_init_buffer was _probably_
+ * called from zconfrestart() or through yy_get_next_buffer.
+ * In that case, we don't want to reset the lineno or column.
+ */
+ if (b != YY_CURRENT_BUFFER){
+ b->yy_bs_lineno = 1;
+ b->yy_bs_column = 0;
+ }
+
+ b->yy_is_interactive = 0;
+
+ errno = oerrno;
+}
+
+/** Discard all buffered characters. On the next scan, YY_INPUT will be called.
+ * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
+ *
+ */
+ void zconf_flush_buffer (YY_BUFFER_STATE b )
+{
+ if ( ! b )
+ return;
+
+ b->yy_n_chars = 0;
+
+ /* We always need two end-of-buffer characters. The first causes
+ * a transition to the end-of-buffer state. The second causes
+ * a jam in that state.
+ */
+ b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
+ b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
+
+ b->yy_buf_pos = &b->yy_ch_buf[0];
+
+ b->yy_at_bol = 1;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ if ( b == YY_CURRENT_BUFFER )
+ zconf_load_buffer_state( );
+}
+
+/** Pushes the new state onto the stack. The new state becomes
+ * the current state. This function will allocate the stack
+ * if necessary.
+ * @param new_buffer The new state.
+ *
+ */
+void zconfpush_buffer_state (YY_BUFFER_STATE new_buffer )
+{
+ if (new_buffer == NULL)
+ return;
+
+ zconfensure_buffer_stack();
+
+ /* This block is copied from zconf_switch_to_buffer. */
+ if ( YY_CURRENT_BUFFER )
+ {
+ /* Flush out information for old buffer. */
+ *(yy_c_buf_p) = (yy_hold_char);
+ YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
+ YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
+ }
+
+ /* Only push if top exists. Otherwise, replace top. */
+ if (YY_CURRENT_BUFFER)
+ (yy_buffer_stack_top)++;
+ YY_CURRENT_BUFFER_LVALUE = new_buffer;
+
+ /* copied from zconf_switch_to_buffer. */
+ zconf_load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+}
+
+/** Removes and deletes the top of the stack, if present.
+ * The next element becomes the new top.
+ *
+ */
+void zconfpop_buffer_state (void)
+{
+ if (!YY_CURRENT_BUFFER)
+ return;
+
+ zconf_delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ if ((yy_buffer_stack_top) > 0)
+ --(yy_buffer_stack_top);
+
+ if (YY_CURRENT_BUFFER) {
+ zconf_load_buffer_state( );
+ (yy_did_buffer_switch_on_eof) = 1;
+ }
+}
+
+/* Allocates the stack if it does not exist.
+ * Guarantees space for at least one push.
+ */
+static void zconfensure_buffer_stack (void)
+{
+ int num_to_alloc;
+
+ if (!(yy_buffer_stack)) {
+
+ /* First allocation is just for 2 elements, since we don't know if this
+ * scanner will even need a stack. We use 2 instead of 1 to avoid an
+ * immediate realloc on the next call.
+ */
+ num_to_alloc = 1;
+ (yy_buffer_stack) = (struct yy_buffer_state**)zconfalloc
+ (num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+ if ( ! (yy_buffer_stack) )
+ YY_FATAL_ERROR( "out of dynamic memory in zconfensure_buffer_stack()" );
+
+ memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
+
+ (yy_buffer_stack_max) = num_to_alloc;
+ (yy_buffer_stack_top) = 0;
+ return;
+ }
+
+ if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
+
+ /* Increase the buffer to prepare for a possible push. */
+ int grow_size = 8 /* arbitrary grow size */;
+
+ num_to_alloc = (yy_buffer_stack_max) + grow_size;
+ (yy_buffer_stack) = (struct yy_buffer_state**)zconfrealloc
+ ((yy_buffer_stack),
+ num_to_alloc * sizeof(struct yy_buffer_state*)
+ );
+ if ( ! (yy_buffer_stack) )
+ YY_FATAL_ERROR( "out of dynamic memory in zconfensure_buffer_stack()" );
+
+ /* zero only the new slots.*/
+ memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
+ (yy_buffer_stack_max) = num_to_alloc;
+ }
+}
+
+/** Setup the input buffer state to scan directly from a user-specified character buffer.
+ * @param base the character buffer
+ * @param size the size in bytes of the character buffer
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE zconf_scan_buffer (char * base, yy_size_t size )
+{
+ YY_BUFFER_STATE b;
+
+ if ( size < 2 ||
+ base[size-2] != YY_END_OF_BUFFER_CHAR ||
+ base[size-1] != YY_END_OF_BUFFER_CHAR )
+ /* They forgot to leave room for the EOB's. */
+ return 0;
+
+ b = (YY_BUFFER_STATE) zconfalloc(sizeof( struct yy_buffer_state ) );
+ if ( ! b )
+ YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_buffer()" );
+
+ b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
+ b->yy_buf_pos = b->yy_ch_buf = base;
+ b->yy_is_our_buffer = 0;
+ b->yy_input_file = 0;
+ b->yy_n_chars = b->yy_buf_size;
+ b->yy_is_interactive = 0;
+ b->yy_at_bol = 1;
+ b->yy_fill_buffer = 0;
+ b->yy_buffer_status = YY_BUFFER_NEW;
+
+ zconf_switch_to_buffer(b );
+
+ return b;
+}
+
+/** Setup the input buffer state to scan a string. The next call to zconflex() will
+ * scan from a @e copy of @a str.
+ * @param yystr a NUL-terminated string to scan
+ *
+ * @return the newly allocated buffer state object.
+ * @note If you want to scan bytes that may contain NUL values, then use
+ * zconf_scan_bytes() instead.
+ */
+YY_BUFFER_STATE zconf_scan_string (yyconst char * yystr )
+{
+
+ return zconf_scan_bytes(yystr,strlen(yystr) );
+}
+
+/** Setup the input buffer state to scan the given bytes. The next call to zconflex() will
+ * scan from a @e copy of @a bytes.
+ * @param bytes the byte buffer to scan
+ * @param len the number of bytes in the buffer pointed to by @a bytes.
+ *
+ * @return the newly allocated buffer state object.
+ */
+YY_BUFFER_STATE zconf_scan_bytes (yyconst char * yybytes, int _yybytes_len )
+{
+ YY_BUFFER_STATE b;
+ char *buf;
+ yy_size_t n;
+ int i;
+
+ /* Get memory for full buffer, including space for trailing EOB's. */
+ n = _yybytes_len + 2;
+ buf = (char *) zconfalloc(n );
+ if ( ! buf )
+ YY_FATAL_ERROR( "out of dynamic memory in zconf_scan_bytes()" );
+
+ for ( i = 0; i < _yybytes_len; ++i )
+ buf[i] = yybytes[i];
+
+ buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
+
+ b = zconf_scan_buffer(buf,n );
+ if ( ! b )
+ YY_FATAL_ERROR( "bad buffer in zconf_scan_bytes()" );
+
+ /* It's okay to grow etc. this buffer, and we should throw it
+ * away when we're done.
+ */
+ b->yy_is_our_buffer = 1;
+
+ return b;
+}
+
+#ifndef YY_EXIT_FAILURE
+#define YY_EXIT_FAILURE 2
+#endif
+
+static void yy_fatal_error (yyconst char* msg )
+{
+ (void) fprintf( stderr, "%s\n", msg );
+ exit( YY_EXIT_FAILURE );
+}
+
+/* Redefine yyless() so it works in section 3 code. */
+
+#undef yyless
+#define yyless(n) \
+ do \
+ { \
+ /* Undo effects of setting up zconftext. */ \
+ int yyless_macro_arg = (n); \
+ YY_LESS_LINENO(yyless_macro_arg);\
+ zconftext[zconfleng] = (yy_hold_char); \
+ (yy_c_buf_p) = zconftext + yyless_macro_arg; \
+ (yy_hold_char) = *(yy_c_buf_p); \
+ *(yy_c_buf_p) = '\0'; \
+ zconfleng = yyless_macro_arg; \
+ } \
+ while ( 0 )
+
+/* Accessor methods (get/set functions) to struct members. */
+
+/** Get the current line number.
+ *
+ */
+int zconfget_lineno (void)
+{
+
+ return zconflineno;
+}
+
+/** Get the input stream.
+ *
+ */
+FILE *zconfget_in (void)
+{
+ return zconfin;
+}
+
+/** Get the output stream.
+ *
+ */
+FILE *zconfget_out (void)
+{
+ return zconfout;
+}
+
+/** Get the length of the current token.
+ *
+ */
+int zconfget_leng (void)
+{
+ return zconfleng;
+}
+
+/** Get the current token.
+ *
+ */
+
+char *zconfget_text (void)
+{
+ return zconftext;
+}
+
+/** Set the current line number.
+ * @param line_number
+ *
+ */
+void zconfset_lineno (int line_number )
+{
+
+ zconflineno = line_number;
+}
+
+/** Set the input stream. This does not discard the current
+ * input buffer.
+ * @param in_str A readable stream.
+ *
+ * @see zconf_switch_to_buffer
+ */
+void zconfset_in (FILE * in_str )
+{
+ zconfin = in_str ;
+}
+
+void zconfset_out (FILE * out_str )
+{
+ zconfout = out_str ;
+}
+
+int zconfget_debug (void)
+{
+ return zconf_flex_debug;
+}
+
+void zconfset_debug (int bdebug )
+{
+ zconf_flex_debug = bdebug ;
+}
+
+static int yy_init_globals (void)
+{
+ /* Initialization is the same as for the non-reentrant scanner.
+ * This function is called from zconflex_destroy(), so don't allocate here.
+ */
+
+ (yy_buffer_stack) = 0;
+ (yy_buffer_stack_top) = 0;
+ (yy_buffer_stack_max) = 0;
+ (yy_c_buf_p) = (char *) 0;
+ (yy_init) = 0;
+ (yy_start) = 0;
+
+/* Defined in main.c */
+#ifdef YY_STDINIT
+ zconfin = stdin;
+ zconfout = stdout;
+#else
+ zconfin = (FILE *) 0;
+ zconfout = (FILE *) 0;
+#endif
+
+ /* For future reference: Set errno on error, since we are called by
+ * zconflex_init()
+ */
+ return 0;
+}
+
+/* zconflex_destroy is for both reentrant and non-reentrant scanners. */
+int zconflex_destroy (void)
+{
+
+ /* Pop the buffer stack, destroying each element. */
+ while(YY_CURRENT_BUFFER){
+ zconf_delete_buffer(YY_CURRENT_BUFFER );
+ YY_CURRENT_BUFFER_LVALUE = NULL;
+ zconfpop_buffer_state();
+ }
+
+ /* Destroy the stack itself. */
+ zconffree((yy_buffer_stack) );
+ (yy_buffer_stack) = NULL;
+
+ /* Reset the globals. This is important in a non-reentrant scanner so the next time
+ * zconflex() is called, initialization will occur. */
+ yy_init_globals( );
+
+ return 0;
+}
+
+/*
+ * Internal utility routines.
+ */
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+{
+ register int i;
+ for ( i = 0; i < n; ++i )
+ s1[i] = s2[i];
+}
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen (yyconst char * s )
+{
+ register int n;
+ for ( n = 0; s[n]; ++n )
+ ;
+
+ return n;
+}
+#endif
+
+void *zconfalloc (yy_size_t size )
+{
+ return (void *) malloc( size );
+}
+
+void *zconfrealloc (void * ptr, yy_size_t size )
+{
+ /* The cast to (char *) in the following accommodates both
+ * implementations that use char* generic pointers, and those
+ * that use void* generic pointers. It works with the latter
+ * because both ANSI C and C++ allow castless assignment from
+ * any pointer type to void*, and deal with argument conversions
+ * as though doing an assignment.
+ */
+ return (void *) realloc( (char *) ptr, size );
+}
+
+void zconffree (void * ptr )
+{
+ free( (char *) ptr ); /* see zconfrealloc() for (char *) cast */
+}
+
+#define YYTABLES_NAME "yytables"
+
+void zconf_starthelp(void)
+{
+ new_string();
+ last_ts = first_ts = 0;
+ BEGIN(HELP);
+}
+
+static void zconf_endhelp(void)
+{
+ zconflval.string = text;
+ BEGIN(INITIAL);
+}
+
+/*
+ * Try to open specified file with following names:
+ * ./name
+ * $(srctree)/name
+ * The latter is used when srctree is separate from objtree
+ * when compiling the kernel.
+ * Return NULL if file is not found.
+ */
+FILE *zconf_fopen(const char *name)
+{
+ char *env, fullname[PATH_MAX+1];
+ FILE *f;
+
+ f = fopen(name, "r");
+ if (!f && name != NULL && name[0] != '/') {
+ env = getenv(SRCTREE);
+ if (env) {
+ sprintf(fullname, "%s/%s", env, name);
+ f = fopen(fullname, "r");
+ }
+ }
+ return f;
+}
+
+void zconf_initscan(const char *name)
+{
+ zconfin = zconf_fopen(name);
+ if (!zconfin) {
+ printf("can't find file %s\n", name);
+ exit(1);
+ }
+
+ current_buf = malloc(sizeof(*current_buf));
+ memset(current_buf, 0, sizeof(*current_buf));
+
+ current_file = file_lookup(name);
+ current_file->lineno = 1;
+ current_file->flags = FILE_BUSY;
+}
+
+void zconf_nextfile(const char *name)
+{
+ struct file *file = file_lookup(name);
+ struct buffer *buf = malloc(sizeof(*buf));
+ memset(buf, 0, sizeof(*buf));
+
+ current_buf->state = YY_CURRENT_BUFFER;
+ zconfin = zconf_fopen(name);
+ if (!zconfin) {
+ printf("%s:%d: can't open file \"%s\"\n", zconf_curname(), zconf_lineno(), name);
+ exit(1);
+ }
+ zconf_switch_to_buffer(zconf_create_buffer(zconfin,YY_BUF_SIZE));
+ buf->parent = current_buf;
+ current_buf = buf;
+
+ if (file->flags & FILE_BUSY) {
+ printf("%s:%d: do not source '%s' from itself\n",
+ zconf_curname(), zconf_lineno(), name);
+ exit(1);
+ }
+ if (file->flags & FILE_SCANNED) {
+ printf("%s:%d: file '%s' is already sourced from '%s'\n",
+ zconf_curname(), zconf_lineno(), name,
+ file->parent->name);
+ exit(1);
+ }
+ file->flags |= FILE_BUSY;
+ file->lineno = 1;
+ file->parent = current_file;
+ current_file = file;
+}
+
+static void zconf_endfile(void)
+{
+ struct buffer *parent;
+
+ current_file->flags |= FILE_SCANNED;
+ current_file->flags &= ~FILE_BUSY;
+ current_file = current_file->parent;
+
+ parent = current_buf->parent;
+ if (parent) {
+ fclose(zconfin);
+ zconf_delete_buffer(YY_CURRENT_BUFFER);
+ zconf_switch_to_buffer(parent->state);
+ }
+ free(current_buf);
+ current_buf = parent;
+}
+
+int zconf_lineno(void)
+{
+ return current_pos.lineno;
+}
+
+char *zconf_curname(void)
+{
+ return current_pos.file ? current_pos.file->name : "<none>";
+}
+
diff --git a/ap/build/uClibc/extra/config/lkc.h b/ap/build/uClibc/extra/config/lkc.h
new file mode 100644
index 0000000..4a9af6f
--- /dev/null
+++ b/ap/build/uClibc/extra/config/lkc.h
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#ifndef LKC_H
+#define LKC_H
+
+#include "expr.h"
+
+#ifndef KBUILD_NO_NLS
+# include <libintl.h>
+#else
+static inline const char *gettext(const char *txt) { return txt; }
+static inline void textdomain(const char *domainname) {}
+static inline void bindtextdomain(const char *name, const char *dir) {}
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef LKC_DIRECT_LINK
+#define P(name,type,arg) extern type name arg
+#else
+#include "lkc_defs.h"
+#define P(name,type,arg) extern type (*name ## _p) arg
+#endif
+#include "lkc_proto.h"
+#undef P
+
+#define SRCTREE "srctree"
+
+#define PACKAGE "linux"
+#define LOCALEDIR "/usr/share/locale"
+
+#define _(text) gettext(text)
+#define N_(text) (text)
+
+
+#define TF_COMMAND 0x0001
+#define TF_PARAM 0x0002
+#define TF_OPTION 0x0004
+
+enum conf_def_mode {
+ def_default,
+ def_yes,
+ def_mod,
+ def_no,
+ def_random
+};
+
+#define T_OPT_MODULES 1
+#define T_OPT_DEFCONFIG_LIST 2
+#define T_OPT_ENV 3
+
+struct kconf_id {
+ int name;
+ int token;
+ unsigned int flags;
+ enum symbol_type stype;
+};
+
+int zconfparse(void);
+void zconfdump(FILE *out);
+
+extern int zconfdebug;
+void zconf_starthelp(void);
+FILE *zconf_fopen(const char *name);
+void zconf_initscan(const char *name);
+void zconf_nextfile(const char *name);
+int zconf_lineno(void);
+char *zconf_curname(void);
+
+/* confdata.c */
+const char *conf_get_configname(void);
+char *conf_get_default_confname(void);
+void sym_set_change_count(int count);
+void sym_add_change_count(int count);
+void conf_set_all_new_symbols(enum conf_def_mode mode);
+
+/* kconfig_load.c */
+void kconfig_load(void);
+
+/* menu.c */
+void menu_init(void);
+void menu_warn(struct menu *menu, const char *fmt, ...);
+struct menu *menu_add_menu(void);
+void menu_end_menu(void);
+void menu_add_entry(struct symbol *sym);
+void menu_end_entry(void);
+void menu_add_dep(struct expr *dep);
+struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep);
+struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep);
+void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep);
+void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep);
+void menu_add_option(int token, char *arg);
+void menu_finalize(struct menu *parent);
+void menu_set_type(int type);
+
+/* util.c */
+struct file *file_lookup(const char *name);
+int file_write_dep(const char *name);
+
+struct gstr {
+ size_t len;
+ char *s;
+};
+struct gstr str_new(void);
+struct gstr str_assign(const char *s);
+void str_free(struct gstr *gs);
+void str_append(struct gstr *gs, const char *s);
+void str_printf(struct gstr *gs, const char *fmt, ...);
+const char *str_get(struct gstr *gs);
+
+/* symbol.c */
+extern struct expr *sym_env_list;
+
+void sym_init(void);
+void sym_clear_all_valid(void);
+void sym_set_all_changed(void);
+void sym_set_changed(struct symbol *sym);
+struct symbol *sym_check_deps(struct symbol *sym);
+struct property *prop_alloc(enum prop_type type, struct symbol *sym);
+struct symbol *prop_get_symbol(struct property *prop);
+struct property *sym_get_env_prop(struct symbol *sym);
+
+static inline tristate sym_get_tristate_value(struct symbol *sym)
+{
+ return sym->curr.tri;
+}
+
+
+static inline struct symbol *sym_get_choice_value(struct symbol *sym)
+{
+ return (struct symbol *)sym->curr.val;
+}
+
+static inline bool sym_set_choice_value(struct symbol *ch, struct symbol *chval)
+{
+ return sym_set_tristate_value(chval, yes);
+}
+
+static inline bool sym_is_choice(struct symbol *sym)
+{
+ return sym->flags & SYMBOL_CHOICE ? true : false;
+}
+
+static inline bool sym_is_choice_value(struct symbol *sym)
+{
+ return sym->flags & SYMBOL_CHOICEVAL ? true : false;
+}
+
+static inline bool sym_is_optional(struct symbol *sym)
+{
+ return sym->flags & SYMBOL_OPTIONAL ? true : false;
+}
+
+static inline bool sym_has_value(struct symbol *sym)
+{
+ return sym->flags & SYMBOL_DEF_USER ? true : false;
+}
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* LKC_H */
diff --git a/ap/build/uClibc/extra/config/lkc_proto.h b/ap/build/uClibc/extra/config/lkc_proto.h
new file mode 100644
index 0000000..8e69461
--- /dev/null
+++ b/ap/build/uClibc/extra/config/lkc_proto.h
@@ -0,0 +1,45 @@
+
+/* confdata.c */
+P(conf_parse,void,(const char *name));
+P(conf_read,int,(const char *name));
+P(conf_read_simple,int,(const char *name, int));
+P(conf_write,int,(const char *name));
+P(conf_write_autoconf,int,(void));
+P(conf_get_changed,bool,(void));
+P(conf_set_changed_callback, void,(void (*fn)(void)));
+
+/* menu.c */
+P(rootmenu,struct menu,);
+
+P(menu_is_visible,bool,(struct menu *menu));
+P(menu_get_prompt,const char *,(struct menu *menu));
+P(menu_get_root_menu,struct menu *,(struct menu *menu));
+P(menu_get_parent_menu,struct menu *,(struct menu *menu));
+P(menu_has_help,bool,(struct menu *menu));
+P(menu_get_help,const char *,(struct menu *menu));
+
+/* symbol.c */
+P(symbol_hash,struct symbol *,[SYMBOL_HASHSIZE]);
+
+P(sym_lookup,struct symbol *,(const char *name, int flags));
+P(sym_find,struct symbol *,(const char *name));
+P(sym_re_search,struct symbol **,(const char *pattern));
+P(sym_type_name,const char *,(enum symbol_type type));
+P(sym_calc_value,void,(struct symbol *sym));
+P(sym_get_type,enum symbol_type,(struct symbol *sym));
+P(sym_tristate_within_range,bool,(struct symbol *sym,tristate tri));
+P(sym_set_tristate_value,bool,(struct symbol *sym,tristate tri));
+P(sym_toggle_tristate_value,tristate,(struct symbol *sym));
+P(sym_string_valid,bool,(struct symbol *sym, const char *newval));
+P(sym_string_within_range,bool,(struct symbol *sym, const char *str));
+P(sym_set_string_value,bool,(struct symbol *sym, const char *newval));
+P(sym_is_changable,bool,(struct symbol *sym));
+P(sym_get_choice_prop,struct property *,(struct symbol *sym));
+P(sym_get_default_prop,struct property *,(struct symbol *sym));
+P(sym_get_string_value,const char *,(struct symbol *sym));
+
+P(prop_get_type_name,const char *,(enum prop_type type));
+
+/* expr.c */
+P(expr_compare_type,int,(enum expr_type t1, enum expr_type t2));
+P(expr_print,void,(struct expr *e, void (*fn)(void *, struct symbol *, const char *), void *data, int prevtoken));
diff --git a/ap/build/uClibc/extra/config/lxdialog/BIG.FAT.WARNING b/ap/build/uClibc/extra/config/lxdialog/BIG.FAT.WARNING
new file mode 100644
index 0000000..a8999d8
--- /dev/null
+++ b/ap/build/uClibc/extra/config/lxdialog/BIG.FAT.WARNING
@@ -0,0 +1,4 @@
+This is NOT the official version of dialog. This version has been
+significantly modified from the original. It is for use by the Linux
+kernel configuration script. Please do not bother Savio Lam with
+questions about this program.
diff --git a/ap/build/uClibc/extra/config/lxdialog/check-lxdialog.sh b/ap/build/uClibc/extra/config/lxdialog/check-lxdialog.sh
new file mode 100644
index 0000000..d34dfd4
--- /dev/null
+++ b/ap/build/uClibc/extra/config/lxdialog/check-lxdialog.sh
@@ -0,0 +1,86 @@
+#!/bin/sh
+# Check ncurses compatibility
+
+# What library to link
+ldflags()
+{
+ for ext in so a dylib ; do
+ for lib in ncursesw ncurses curses ; do
+ $cc -print-file-name=lib${lib}.${ext} | grep -q /
+ if [ $? -eq 0 ]; then
+ echo "-l${lib}"
+ exit
+ fi
+ done
+ done
+ exit 1
+}
+
+# Where is ncurses.h?
+ccflags()
+{
+ if [ -f /usr/include/ncursesw/ncurses.h ]; then
+ echo '-I/usr/include/ncursesw -DCURSES_LOC="<ncurses.h>"'
+ elif [ -f /usr/include/ncursesw/curses.h ]; then
+ echo '-I/usr/include/ncursesw -DCURSES_LOC="<ncursesw/curses.h>"'
+ elif [ -f /usr/include/ncurses/ncurses.h ]; then
+ echo '-I/usr/include/ncurses -DCURSES_LOC="<ncurses.h>"'
+ elif [ -f /usr/include/ncurses/curses.h ]; then
+ echo '-I/usr/include/ncurses -DCURSES_LOC="<ncurses/curses.h>"'
+ elif [ -f /usr/include/ncurses.h ]; then
+ echo '-DCURSES_LOC="<ncurses.h>"'
+ else
+ echo '-DCURSES_LOC="<curses.h>"'
+ fi
+}
+
+# Temp file, try to clean up after us
+tmp=.lxdialog.tmp
+trap "rm -f $tmp" 0 1 2 3 15
+
+# Check if we can link to ncurses
+check() {
+ $cc -xc - -o $tmp 2>/dev/null <<'EOF'
+#include CURSES_LOC
+main() {}
+EOF
+ if [ $? != 0 ]; then
+ echo " *** Unable to find the ncurses libraries or the" 1>&2
+ echo " *** required header files." 1>&2
+ echo " *** 'make menuconfig' requires the ncurses libraries." 1>&2
+ echo " *** " 1>&2
+ echo " *** Install ncurses (ncurses-devel) and try again." 1>&2
+ echo " *** " 1>&2
+ exit 1
+ fi
+}
+
+usage() {
+ printf "Usage: $0 [-check compiler options|-ccflags|-ldflags compiler options]\n"
+}
+
+if [ $# -eq 0 ]; then
+ usage
+ exit 1
+fi
+
+cc=""
+case "$1" in
+ "-check")
+ shift
+ cc="$@"
+ check
+ ;;
+ "-ccflags")
+ ccflags
+ ;;
+ "-ldflags")
+ shift
+ cc="$@"
+ ldflags
+ ;;
+ "*")
+ usage
+ exit 1
+ ;;
+esac
diff --git a/ap/build/uClibc/extra/config/lxdialog/checklist.c b/ap/build/uClibc/extra/config/lxdialog/checklist.c
new file mode 100644
index 0000000..b2a878c
--- /dev/null
+++ b/ap/build/uClibc/extra/config/lxdialog/checklist.c
@@ -0,0 +1,325 @@
+/*
+ * checklist.c -- implements the checklist box
+ *
+ * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
+ * Stuart Herbert - S.Herbert@sheffield.ac.uk: radiolist extension
+ * Alessandro Rubini - rubini@ipvvis.unipv.it: merged the two
+ * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "dialog.h"
+
+static int list_width, check_x, item_x;
+
+/*
+ * Print list item
+ */
+static void print_item(WINDOW * win, int choice, int selected)
+{
+ int i;
+
+ /* Clear 'residue' of last item */
+ wattrset(win, dlg.menubox.atr);
+ wmove(win, choice, 0);
+ for (i = 0; i < list_width; i++)
+ waddch(win, ' ');
+
+ wmove(win, choice, check_x);
+ wattrset(win, selected ? dlg.check_selected.atr
+ : dlg.check.atr);
+ wprintw(win, "(%c)", item_is_tag('X') ? 'X' : ' ');
+
+ wattrset(win, selected ? dlg.tag_selected.atr : dlg.tag.atr);
+ mvwaddch(win, choice, item_x, item_str()[0]);
+ wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr);
+ waddstr(win, (char *)item_str() + 1);
+ if (selected) {
+ wmove(win, choice, check_x + 1);
+ wrefresh(win);
+ }
+}
+
+/*
+ * Print the scroll indicators.
+ */
+static void print_arrows(WINDOW * win, int choice, int item_no, int scroll,
+ int y, int x, int height)
+{
+ wmove(win, y, x);
+
+ if (scroll > 0) {
+ wattrset(win, dlg.uarrow.atr);
+ waddch(win, ACS_UARROW);
+ waddstr(win, "(-)");
+ } else {
+ wattrset(win, dlg.menubox.atr);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ }
+
+ y = y + height + 1;
+ wmove(win, y, x);
+
+ if ((height < item_no) && (scroll + choice < item_no - 1)) {
+ wattrset(win, dlg.darrow.atr);
+ waddch(win, ACS_DARROW);
+ waddstr(win, "(+)");
+ } else {
+ wattrset(win, dlg.menubox_border.atr);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ }
+}
+
+/*
+ * Display the termination buttons
+ */
+static void print_buttons(WINDOW * dialog, int height, int width, int selected)
+{
+ int x = width / 2 - 11;
+ int y = height - 2;
+
+ print_button(dialog, gettext("Select"), y, x, selected == 0);
+ print_button(dialog, gettext(" Help "), y, x + 14, selected == 1);
+
+ wmove(dialog, y, x + 1 + 14 * selected);
+ wrefresh(dialog);
+}
+
+/*
+ * Display a dialog box with a list of options that can be turned on or off
+ * in the style of radiolist (only one option turned on at a time).
+ */
+int dialog_checklist(const char *title, const char *prompt, int height,
+ int width, int list_height)
+{
+ int i, x, y, box_x, box_y;
+ int key = 0, button = 0, choice = 0, scroll = 0, max_choice;
+ WINDOW *dialog, *list;
+
+ /* which item to highlight */
+ item_foreach() {
+ if (item_is_tag('X'))
+ choice = item_n();
+ if (item_is_selected()) {
+ choice = item_n();
+ break;
+ }
+ }
+
+do_resize:
+ if (getmaxy(stdscr) < (height + 6))
+ return -ERRDISPLAYTOOSMALL;
+ if (getmaxx(stdscr) < (width + 6))
+ return -ERRDISPLAYTOOSMALL;
+
+ max_choice = MIN(list_height, item_count());
+
+ /* center dialog box on screen */
+ x = (COLS - width) / 2;
+ y = (LINES - height) / 2;
+
+ draw_shadow(stdscr, y, x, height, width);
+
+ dialog = newwin(height, width, y, x);
+ keypad(dialog, TRUE);
+
+ draw_box(dialog, 0, 0, height, width,
+ dlg.dialog.atr, dlg.border.atr);
+ wattrset(dialog, dlg.border.atr);
+ mvwaddch(dialog, height - 3, 0, ACS_LTEE);
+ for (i = 0; i < width - 2; i++)
+ waddch(dialog, ACS_HLINE);
+ wattrset(dialog, dlg.dialog.atr);
+ waddch(dialog, ACS_RTEE);
+
+ print_title(dialog, title, width);
+
+ wattrset(dialog, dlg.dialog.atr);
+ print_autowrap(dialog, prompt, width - 2, 1, 3);
+
+ list_width = width - 6;
+ box_y = height - list_height - 5;
+ box_x = (width - list_width) / 2 - 1;
+
+ /* create new window for the list */
+ list = subwin(dialog, list_height, list_width, y + box_y + 1,
+ x + box_x + 1);
+
+ keypad(list, TRUE);
+
+ /* draw a box around the list items */
+ draw_box(dialog, box_y, box_x, list_height + 2, list_width + 2,
+ dlg.menubox_border.atr, dlg.menubox.atr);
+
+ /* Find length of longest item in order to center checklist */
+ check_x = 0;
+ item_foreach()
+ check_x = MAX(check_x, strlen(item_str()) + 4);
+
+ check_x = (list_width - check_x) / 2;
+ item_x = check_x + 4;
+
+ if (choice >= list_height) {
+ scroll = choice - list_height + 1;
+ choice -= scroll;
+ }
+
+ /* Print the list */
+ for (i = 0; i < max_choice; i++) {
+ item_set(scroll + i);
+ print_item(list, i, i == choice);
+ }
+
+ print_arrows(dialog, choice, item_count(), scroll,
+ box_y, box_x + check_x + 5, list_height);
+
+ print_buttons(dialog, height, width, 0);
+
+ wnoutrefresh(dialog);
+ wnoutrefresh(list);
+ doupdate();
+
+ while (key != KEY_ESC) {
+ key = wgetch(dialog);
+
+ for (i = 0; i < max_choice; i++) {
+ item_set(i + scroll);
+ if (toupper(key) == toupper(item_str()[0]))
+ break;
+ }
+
+ if (i < max_choice || key == KEY_UP || key == KEY_DOWN ||
+ key == '+' || key == '-') {
+ if (key == KEY_UP || key == '-') {
+ if (!choice) {
+ if (!scroll)
+ continue;
+ /* Scroll list down */
+ if (list_height > 1) {
+ /* De-highlight current first item */
+ item_set(scroll);
+ print_item(list, 0, FALSE);
+ scrollok(list, TRUE);
+ wscrl(list, -1);
+ scrollok(list, FALSE);
+ }
+ scroll--;
+ item_set(scroll);
+ print_item(list, 0, TRUE);
+ print_arrows(dialog, choice, item_count(),
+ scroll, box_y, box_x + check_x + 5, list_height);
+
+ wnoutrefresh(dialog);
+ wrefresh(list);
+
+ continue; /* wait for another key press */
+ } else
+ i = choice - 1;
+ } else if (key == KEY_DOWN || key == '+') {
+ if (choice == max_choice - 1) {
+ if (scroll + choice >= item_count() - 1)
+ continue;
+ /* Scroll list up */
+ if (list_height > 1) {
+ /* De-highlight current last item before scrolling up */
+ item_set(scroll + max_choice - 1);
+ print_item(list,
+ max_choice - 1,
+ FALSE);
+ scrollok(list, TRUE);
+ wscrl(list, 1);
+ scrollok(list, FALSE);
+ }
+ scroll++;
+ item_set(scroll + max_choice - 1);
+ print_item(list, max_choice - 1, TRUE);
+
+ print_arrows(dialog, choice, item_count(),
+ scroll, box_y, box_x + check_x + 5, list_height);
+
+ wnoutrefresh(dialog);
+ wrefresh(list);
+
+ continue; /* wait for another key press */
+ } else
+ i = choice + 1;
+ }
+ if (i != choice) {
+ /* De-highlight current item */
+ item_set(scroll + choice);
+ print_item(list, choice, FALSE);
+ /* Highlight new item */
+ choice = i;
+ item_set(scroll + choice);
+ print_item(list, choice, TRUE);
+ wnoutrefresh(dialog);
+ wrefresh(list);
+ }
+ continue; /* wait for another key press */
+ }
+ switch (key) {
+ case 'H':
+ case 'h':
+ case '?':
+ button = 1;
+ /* fall-through */
+ case 'S':
+ case 's':
+ case ' ':
+ case '\n':
+ item_foreach()
+ item_set_selected(0);
+ item_set(scroll + choice);
+ item_set_selected(1);
+ delwin(list);
+ delwin(dialog);
+ return button;
+ case TAB:
+ case KEY_LEFT:
+ case KEY_RIGHT:
+ button = ((key == KEY_LEFT ? --button : ++button) < 0)
+ ? 1 : (button > 1 ? 0 : button);
+
+ print_buttons(dialog, height, width, button);
+ wrefresh(dialog);
+ break;
+ case 'X':
+ case 'x':
+ key = KEY_ESC;
+ break;
+ case KEY_ESC:
+ key = on_key_esc(dialog);
+ break;
+ case KEY_RESIZE:
+ delwin(list);
+ delwin(dialog);
+ on_key_resize();
+ goto do_resize;
+ }
+
+ /* Now, update everything... */
+ doupdate();
+ }
+ delwin(list);
+ delwin(dialog);
+ return key; /* ESC pressed */
+}
diff --git a/ap/build/uClibc/extra/config/lxdialog/dialog.h b/ap/build/uClibc/extra/config/lxdialog/dialog.h
new file mode 100644
index 0000000..b5211fc
--- /dev/null
+++ b/ap/build/uClibc/extra/config/lxdialog/dialog.h
@@ -0,0 +1,230 @@
+/*
+ * dialog.h -- common declarations for all dialog modules
+ *
+ * AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <sys/types.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdbool.h>
+
+#ifndef KBUILD_NO_NLS
+# include <libintl.h>
+#else
+# define gettext(Msgid) ((const char *) (Msgid))
+#endif
+
+#ifdef __sun__
+#define CURS_MACROS
+#endif
+#include CURSES_LOC
+
+/*
+ * Colors in ncurses 1.9.9e do not work properly since foreground and
+ * background colors are OR'd rather than separately masked. This version
+ * of dialog was hacked to work with ncurses 1.9.9e, making it incompatible
+ * with standard curses. The simplest fix (to make this work with standard
+ * curses) uses the wbkgdset() function, not used in the original hack.
+ * Turn it off if we're building with 1.9.9e, since it just confuses things.
+ */
+#if defined(NCURSES_VERSION) && defined(_NEED_WRAP) && !defined(GCC_PRINTFLIKE)
+#define OLD_NCURSES 1
+#undef wbkgdset
+#define wbkgdset(w,p) /*nothing */
+#else
+#define OLD_NCURSES 0
+#endif
+
+#define TR(params) _tracef params
+
+#define KEY_ESC 27
+#define TAB 9
+#define MAX_LEN 2048
+#define BUF_SIZE (10*1024)
+#define MIN(x,y) (x < y ? x : y)
+#define MAX(x,y) (x > y ? x : y)
+
+#ifndef ACS_ULCORNER
+#define ACS_ULCORNER '+'
+#endif
+#ifndef ACS_LLCORNER
+#define ACS_LLCORNER '+'
+#endif
+#ifndef ACS_URCORNER
+#define ACS_URCORNER '+'
+#endif
+#ifndef ACS_LRCORNER
+#define ACS_LRCORNER '+'
+#endif
+#ifndef ACS_HLINE
+#define ACS_HLINE '-'
+#endif
+#ifndef ACS_VLINE
+#define ACS_VLINE '|'
+#endif
+#ifndef ACS_LTEE
+#define ACS_LTEE '+'
+#endif
+#ifndef ACS_RTEE
+#define ACS_RTEE '+'
+#endif
+#ifndef ACS_UARROW
+#define ACS_UARROW '^'
+#endif
+#ifndef ACS_DARROW
+#define ACS_DARROW 'v'
+#endif
+
+/* error return codes */
+#define ERRDISPLAYTOOSMALL (KEY_MAX + 1)
+
+/*
+ * Color definitions
+ */
+struct dialog_color {
+ chtype atr; /* Color attribute */
+ int fg; /* foreground */
+ int bg; /* background */
+ int hl; /* highlight this item */
+};
+
+struct dialog_info {
+ const char *backtitle;
+ struct dialog_color screen;
+ struct dialog_color shadow;
+ struct dialog_color dialog;
+ struct dialog_color title;
+ struct dialog_color border;
+ struct dialog_color button_active;
+ struct dialog_color button_inactive;
+ struct dialog_color button_key_active;
+ struct dialog_color button_key_inactive;
+ struct dialog_color button_label_active;
+ struct dialog_color button_label_inactive;
+ struct dialog_color inputbox;
+ struct dialog_color inputbox_border;
+ struct dialog_color searchbox;
+ struct dialog_color searchbox_title;
+ struct dialog_color searchbox_border;
+ struct dialog_color position_indicator;
+ struct dialog_color menubox;
+ struct dialog_color menubox_border;
+ struct dialog_color item;
+ struct dialog_color item_selected;
+ struct dialog_color tag;
+ struct dialog_color tag_selected;
+ struct dialog_color tag_key;
+ struct dialog_color tag_key_selected;
+ struct dialog_color check;
+ struct dialog_color check_selected;
+ struct dialog_color uarrow;
+ struct dialog_color darrow;
+};
+
+/*
+ * Global variables
+ */
+extern struct dialog_info dlg;
+extern char dialog_input_result[];
+
+/*
+ * Function prototypes
+ */
+
+/* item list as used by checklist and menubox */
+void item_reset(void);
+void item_make(const char *fmt, ...);
+void item_add_str(const char *fmt, ...);
+void item_set_tag(char tag);
+void item_set_data(void *p);
+void item_set_selected(int val);
+int item_activate_selected(void);
+void *item_data(void);
+char item_tag(void);
+
+/* item list manipulation for lxdialog use */
+#define MAXITEMSTR 200
+struct dialog_item {
+ char str[MAXITEMSTR]; /* promtp displayed */
+ char tag;
+ void *data; /* pointer to menu item - used by menubox+checklist */
+ int selected; /* Set to 1 by dialog_*() function if selected. */
+};
+
+/* list of lialog_items */
+struct dialog_list {
+ struct dialog_item node;
+ struct dialog_list *next;
+};
+
+extern struct dialog_list *item_cur;
+extern struct dialog_list item_nil;
+extern struct dialog_list *item_head;
+
+int item_count(void);
+void item_set(int n);
+int item_n(void);
+const char *item_str(void);
+int item_is_selected(void);
+int item_is_tag(char tag);
+#define item_foreach() \
+ for (item_cur = item_head ? item_head: item_cur; \
+ item_cur && (item_cur != &item_nil); item_cur = item_cur->next)
+
+/* generic key handlers */
+int on_key_esc(WINDOW *win);
+int on_key_resize(void);
+
+int init_dialog(const char *backtitle);
+void set_dialog_backtitle(const char *backtitle);
+void end_dialog(int x, int y);
+void attr_clear(WINDOW * win, int height, int width, chtype attr);
+void dialog_clear(void);
+void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x);
+void print_button(WINDOW * win, const char *label, int y, int x, int selected);
+void print_title(WINDOW *dialog, const char *title, int width);
+void draw_box(WINDOW * win, int y, int x, int height, int width, chtype box,
+ chtype border);
+void draw_shadow(WINDOW * win, int y, int x, int height, int width);
+
+int first_alpha(const char *string, const char *exempt);
+int dialog_yesno(const char *title, const char *prompt, int height, int width);
+int dialog_msgbox(const char *title, const char *prompt, int height,
+ int width, int pause);
+int dialog_textbox(const char *title, const char *file, int height, int width);
+int dialog_menu(const char *title, const char *prompt,
+ const void *selected, int *s_scroll);
+int dialog_checklist(const char *title, const char *prompt, int height,
+ int width, int list_height);
+extern char dialog_input_result[];
+int dialog_inputbox(const char *title, const char *prompt, int height,
+ int width, const char *init);
+
+/*
+ * This is the base for fictitious keys, which activate
+ * the buttons.
+ *
+ * Mouse-generated keys are the following:
+ * -- the first 32 are used as numbers, in addition to '0'-'9'
+ * -- the lowercase are used to signal mouse-enter events (M_EVENT + 'o')
+ * -- uppercase chars are used to invoke the button (M_EVENT + 'O')
+ */
+#define M_EVENT (KEY_MAX+1)
diff --git a/ap/build/uClibc/extra/config/lxdialog/inputbox.c b/ap/build/uClibc/extra/config/lxdialog/inputbox.c
new file mode 100644
index 0000000..616c601
--- /dev/null
+++ b/ap/build/uClibc/extra/config/lxdialog/inputbox.c
@@ -0,0 +1,238 @@
+/*
+ * inputbox.c -- implements the input box
+ *
+ * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
+ * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "dialog.h"
+
+char dialog_input_result[MAX_LEN + 1];
+
+/*
+ * Print the termination buttons
+ */
+static void print_buttons(WINDOW * dialog, int height, int width, int selected)
+{
+ int x = width / 2 - 11;
+ int y = height - 2;
+
+ print_button(dialog, gettext(" Ok "), y, x, selected == 0);
+ print_button(dialog, gettext(" Help "), y, x + 14, selected == 1);
+
+ wmove(dialog, y, x + 1 + 14 * selected);
+ wrefresh(dialog);
+}
+
+/*
+ * Display a dialog box for inputing a string
+ */
+int dialog_inputbox(const char *title, const char *prompt, int height, int width,
+ const char *init)
+{
+ int i, x, y, box_y, box_x, box_width;
+ int input_x = 0, scroll = 0, key = 0, button = -1;
+ char *instr = dialog_input_result;
+ WINDOW *dialog;
+
+ if (!init)
+ instr[0] = '\0';
+ else
+ strcpy(instr, init);
+
+do_resize:
+ if (getmaxy(stdscr) <= (height - 2))
+ return -ERRDISPLAYTOOSMALL;
+ if (getmaxx(stdscr) <= (width - 2))
+ return -ERRDISPLAYTOOSMALL;
+
+ /* center dialog box on screen */
+ x = (COLS - width) / 2;
+ y = (LINES - height) / 2;
+
+ draw_shadow(stdscr, y, x, height, width);
+
+ dialog = newwin(height, width, y, x);
+ keypad(dialog, TRUE);
+
+ draw_box(dialog, 0, 0, height, width,
+ dlg.dialog.atr, dlg.border.atr);
+ wattrset(dialog, dlg.border.atr);
+ mvwaddch(dialog, height - 3, 0, ACS_LTEE);
+ for (i = 0; i < width - 2; i++)
+ waddch(dialog, ACS_HLINE);
+ wattrset(dialog, dlg.dialog.atr);
+ waddch(dialog, ACS_RTEE);
+
+ print_title(dialog, title, width);
+
+ wattrset(dialog, dlg.dialog.atr);
+ print_autowrap(dialog, prompt, width - 2, 1, 3);
+
+ /* Draw the input field box */
+ box_width = width - 6;
+ getyx(dialog, y, x);
+ box_y = y + 2;
+ box_x = (width - box_width) / 2;
+ draw_box(dialog, y + 1, box_x - 1, 3, box_width + 2,
+ dlg.dialog.atr, dlg.border.atr);
+
+ print_buttons(dialog, height, width, 0);
+
+ /* Set up the initial value */
+ wmove(dialog, box_y, box_x);
+ wattrset(dialog, dlg.inputbox.atr);
+
+ input_x = strlen(instr);
+
+ if (input_x >= box_width) {
+ scroll = input_x - box_width + 1;
+ input_x = box_width - 1;
+ for (i = 0; i < box_width - 1; i++)
+ waddch(dialog, instr[scroll + i]);
+ } else {
+ waddstr(dialog, instr);
+ }
+
+ wmove(dialog, box_y, box_x + input_x);
+
+ wrefresh(dialog);
+
+ while (key != KEY_ESC) {
+ key = wgetch(dialog);
+
+ if (button == -1) { /* Input box selected */
+ switch (key) {
+ case TAB:
+ case KEY_UP:
+ case KEY_DOWN:
+ break;
+ case KEY_LEFT:
+ continue;
+ case KEY_RIGHT:
+ continue;
+ case KEY_BACKSPACE:
+ case 127:
+ if (input_x || scroll) {
+ wattrset(dialog, dlg.inputbox.atr);
+ if (!input_x) {
+ scroll = scroll < box_width - 1 ? 0 : scroll - (box_width - 1);
+ wmove(dialog, box_y, box_x);
+ for (i = 0; i < box_width; i++)
+ waddch(dialog,
+ instr[scroll + input_x + i] ?
+ instr[scroll + input_x + i] : ' ');
+ input_x = strlen(instr) - scroll;
+ } else
+ input_x--;
+ instr[scroll + input_x] = '\0';
+ mvwaddch(dialog, box_y, input_x + box_x, ' ');
+ wmove(dialog, box_y, input_x + box_x);
+ wrefresh(dialog);
+ }
+ continue;
+ default:
+ if (key < 0x100 && isprint(key)) {
+ if (scroll + input_x < MAX_LEN) {
+ wattrset(dialog, dlg.inputbox.atr);
+ instr[scroll + input_x] = key;
+ instr[scroll + input_x + 1] = '\0';
+ if (input_x == box_width - 1) {
+ scroll++;
+ wmove(dialog, box_y, box_x);
+ for (i = 0; i < box_width - 1; i++)
+ waddch(dialog, instr [scroll + i]);
+ } else {
+ wmove(dialog, box_y, input_x++ + box_x);
+ waddch(dialog, key);
+ }
+ wrefresh(dialog);
+ } else
+ flash(); /* Alarm user about overflow */
+ continue;
+ }
+ }
+ }
+ switch (key) {
+ case 'O':
+ case 'o':
+ delwin(dialog);
+ return 0;
+ case 'H':
+ case 'h':
+ delwin(dialog);
+ return 1;
+ case KEY_UP:
+ case KEY_LEFT:
+ switch (button) {
+ case -1:
+ button = 1; /* Indicates "Cancel" button is selected */
+ print_buttons(dialog, height, width, 1);
+ break;
+ case 0:
+ button = -1; /* Indicates input box is selected */
+ print_buttons(dialog, height, width, 0);
+ wmove(dialog, box_y, box_x + input_x);
+ wrefresh(dialog);
+ break;
+ case 1:
+ button = 0; /* Indicates "OK" button is selected */
+ print_buttons(dialog, height, width, 0);
+ break;
+ }
+ break;
+ case TAB:
+ case KEY_DOWN:
+ case KEY_RIGHT:
+ switch (button) {
+ case -1:
+ button = 0; /* Indicates "OK" button is selected */
+ print_buttons(dialog, height, width, 0);
+ break;
+ case 0:
+ button = 1; /* Indicates "Cancel" button is selected */
+ print_buttons(dialog, height, width, 1);
+ break;
+ case 1:
+ button = -1; /* Indicates input box is selected */
+ print_buttons(dialog, height, width, 0);
+ wmove(dialog, box_y, box_x + input_x);
+ wrefresh(dialog);
+ break;
+ }
+ break;
+ case ' ':
+ case '\n':
+ delwin(dialog);
+ return (button == -1 ? 0 : button);
+ case 'X':
+ case 'x':
+ key = KEY_ESC;
+ break;
+ case KEY_ESC:
+ key = on_key_esc(dialog);
+ break;
+ case KEY_RESIZE:
+ delwin(dialog);
+ on_key_resize();
+ goto do_resize;
+ }
+ }
+
+ delwin(dialog);
+ return KEY_ESC; /* ESC pressed */
+}
diff --git a/ap/build/uClibc/extra/config/lxdialog/menubox.c b/ap/build/uClibc/extra/config/lxdialog/menubox.c
new file mode 100644
index 0000000..c689fc0
--- /dev/null
+++ b/ap/build/uClibc/extra/config/lxdialog/menubox.c
@@ -0,0 +1,434 @@
+/*
+ * menubox.c -- implements the menu box
+ *
+ * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
+ * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcapw@cfw.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+/*
+ * Changes by Clifford Wolf (god@clifford.at)
+ *
+ * [ 1998-06-13 ]
+ *
+ * *) A bugfix for the Page-Down problem
+ *
+ * *) Formerly when I used Page Down and Page Up, the cursor would be set
+ * to the first position in the menu box. Now lxdialog is a bit
+ * smarter and works more like other menu systems (just have a look at
+ * it).
+ *
+ * *) Formerly if I selected something my scrolling would be broken because
+ * lxdialog is re-invoked by the Menuconfig shell script, can't
+ * remember the last scrolling position, and just sets it so that the
+ * cursor is at the bottom of the box. Now it writes the temporary file
+ * lxdialog.scrltmp which contains this information. The file is
+ * deleted by lxdialog if the user leaves a submenu or enters a new
+ * one, but it would be nice if Menuconfig could make another "rm -f"
+ * just to be sure. Just try it out - you will recognise a difference!
+ *
+ * [ 1998-06-14 ]
+ *
+ * *) Now lxdialog is crash-safe against broken "lxdialog.scrltmp" files
+ * and menus change their size on the fly.
+ *
+ * *) If for some reason the last scrolling position is not saved by
+ * lxdialog, it sets the scrolling so that the selected item is in the
+ * middle of the menu box, not at the bottom.
+ *
+ * 02 January 1999, Michael Elizabeth Chastain (mec@shout.net)
+ * Reset 'scroll' to 0 if the value from lxdialog.scrltmp is bogus.
+ * This fixes a bug in Menuconfig where using ' ' to descend into menus
+ * would leave mis-synchronized lxdialog.scrltmp files lying around,
+ * fscanf would read in 'scroll', and eventually that value would get used.
+ */
+
+#include "dialog.h"
+
+static int menu_width, item_x;
+
+/*
+ * Print menu item
+ */
+static void do_print_item(WINDOW * win, const char *item, int line_y,
+ int selected, int hotkey)
+{
+ int j;
+ char *menu_item = malloc(menu_width + 1);
+
+ strncpy(menu_item, item, menu_width - item_x);
+ menu_item[menu_width - item_x] = '\0';
+ j = first_alpha(menu_item, "YyNnMmHh");
+
+ /* Clear 'residue' of last item */
+ wattrset(win, dlg.menubox.atr);
+ wmove(win, line_y, 0);
+#if OLD_NCURSES
+ {
+ int i;
+ for (i = 0; i < menu_width; i++)
+ waddch(win, ' ');
+ }
+#else
+ wclrtoeol(win);
+#endif
+ wattrset(win, selected ? dlg.item_selected.atr : dlg.item.atr);
+ mvwaddstr(win, line_y, item_x, menu_item);
+ if (hotkey) {
+ wattrset(win, selected ? dlg.tag_key_selected.atr
+ : dlg.tag_key.atr);
+ mvwaddch(win, line_y, item_x + j, menu_item[j]);
+ }
+ if (selected) {
+ wmove(win, line_y, item_x + 1);
+ }
+ free(menu_item);
+ wrefresh(win);
+}
+
+#define print_item(index, choice, selected) \
+do { \
+ item_set(index); \
+ do_print_item(menu, item_str(), choice, selected, !item_is_tag(':')); \
+} while (0)
+
+/*
+ * Print the scroll indicators.
+ */
+static void print_arrows(WINDOW * win, int item_no, int scroll, int y, int x,
+ int height)
+{
+ int cur_y, cur_x;
+
+ getyx(win, cur_y, cur_x);
+
+ wmove(win, y, x);
+
+ if (scroll > 0) {
+ wattrset(win, dlg.uarrow.atr);
+ waddch(win, ACS_UARROW);
+ waddstr(win, "(-)");
+ } else {
+ wattrset(win, dlg.menubox.atr);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ }
+
+ y = y + height + 1;
+ wmove(win, y, x);
+ wrefresh(win);
+
+ if ((height < item_no) && (scroll + height < item_no)) {
+ wattrset(win, dlg.darrow.atr);
+ waddch(win, ACS_DARROW);
+ waddstr(win, "(+)");
+ } else {
+ wattrset(win, dlg.menubox_border.atr);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ waddch(win, ACS_HLINE);
+ }
+
+ wmove(win, cur_y, cur_x);
+ wrefresh(win);
+}
+
+/*
+ * Display the termination buttons.
+ */
+static void print_buttons(WINDOW * win, int height, int width, int selected)
+{
+ int x = width / 2 - 16;
+ int y = height - 2;
+
+ print_button(win, gettext("Select"), y, x, selected == 0);
+ print_button(win, gettext(" Exit "), y, x + 12, selected == 1);
+ print_button(win, gettext(" Help "), y, x + 24, selected == 2);
+
+ wmove(win, y, x + 1 + 12 * selected);
+ wrefresh(win);
+}
+
+/* scroll up n lines (n may be negative) */
+static void do_scroll(WINDOW *win, int *scroll, int n)
+{
+ /* Scroll menu up */
+ scrollok(win, TRUE);
+ wscrl(win, n);
+ scrollok(win, FALSE);
+ *scroll = *scroll + n;
+ wrefresh(win);
+}
+
+/*
+ * Display a menu for choosing among a number of options
+ */
+int dialog_menu(const char *title, const char *prompt,
+ const void *selected, int *s_scroll)
+{
+ int i, j, x, y, box_x, box_y;
+ int height, width, menu_height;
+ int key = 0, button = 0, scroll = 0, choice = 0;
+ int first_item = 0, max_choice;
+ WINDOW *dialog, *menu;
+
+do_resize:
+ height = getmaxy(stdscr);
+ width = getmaxx(stdscr);
+ if (height < 15 || width < 65)
+ return -ERRDISPLAYTOOSMALL;
+
+ height -= 4;
+ width -= 5;
+ menu_height = height - 10;
+
+ max_choice = MIN(menu_height, item_count());
+
+ /* center dialog box on screen */
+ x = (COLS - width) / 2;
+ y = (LINES - height) / 2;
+
+ draw_shadow(stdscr, y, x, height, width);
+
+ dialog = newwin(height, width, y, x);
+ keypad(dialog, TRUE);
+
+ draw_box(dialog, 0, 0, height, width,
+ dlg.dialog.atr, dlg.border.atr);
+ wattrset(dialog, dlg.border.atr);
+ mvwaddch(dialog, height - 3, 0, ACS_LTEE);
+ for (i = 0; i < width - 2; i++)
+ waddch(dialog, ACS_HLINE);
+ wattrset(dialog, dlg.dialog.atr);
+ wbkgdset(dialog, dlg.dialog.atr & A_COLOR);
+ waddch(dialog, ACS_RTEE);
+
+ print_title(dialog, title, width);
+
+ wattrset(dialog, dlg.dialog.atr);
+ print_autowrap(dialog, prompt, width - 2, 1, 3);
+
+ menu_width = width - 6;
+ box_y = height - menu_height - 5;
+ box_x = (width - menu_width) / 2 - 1;
+
+ /* create new window for the menu */
+ menu = subwin(dialog, menu_height, menu_width,
+ y + box_y + 1, x + box_x + 1);
+ keypad(menu, TRUE);
+
+ /* draw a box around the menu items */
+ draw_box(dialog, box_y, box_x, menu_height + 2, menu_width + 2,
+ dlg.menubox_border.atr, dlg.menubox.atr);
+
+ if (menu_width >= 80)
+ item_x = (menu_width - 70) / 2;
+ else
+ item_x = 4;
+
+ /* Set choice to default item */
+ item_foreach()
+ if (selected && (selected == item_data()))
+ choice = item_n();
+ /* get the saved scroll info */
+ scroll = *s_scroll;
+ if ((scroll <= choice) && (scroll + max_choice > choice) &&
+ (scroll >= 0) && (scroll + max_choice <= item_count())) {
+ first_item = scroll;
+ choice = choice - scroll;
+ } else {
+ scroll = 0;
+ }
+ if ((choice >= max_choice)) {
+ if (choice >= item_count() - max_choice / 2)
+ scroll = first_item = item_count() - max_choice;
+ else
+ scroll = first_item = choice - max_choice / 2;
+ choice = choice - scroll;
+ }
+
+ /* Print the menu */
+ for (i = 0; i < max_choice; i++) {
+ print_item(first_item + i, i, i == choice);
+ }
+
+ wnoutrefresh(menu);
+
+ print_arrows(dialog, item_count(), scroll,
+ box_y, box_x + item_x + 1, menu_height);
+
+ print_buttons(dialog, height, width, 0);
+ wmove(menu, choice, item_x + 1);
+ wrefresh(menu);
+
+ while (key != KEY_ESC) {
+ key = wgetch(menu);
+
+ if (key < 256 && isalpha(key))
+ key = tolower(key);
+
+ if (strchr("ynmh", key))
+ i = max_choice;
+ else {
+ for (i = choice + 1; i < max_choice; i++) {
+ item_set(scroll + i);
+ j = first_alpha(item_str(), "YyNnMmHh");
+ if (key == tolower(item_str()[j]))
+ break;
+ }
+ if (i == max_choice)
+ for (i = 0; i < max_choice; i++) {
+ item_set(scroll + i);
+ j = first_alpha(item_str(), "YyNnMmHh");
+ if (key == tolower(item_str()[j]))
+ break;
+ }
+ }
+
+ if (i < max_choice ||
+ key == KEY_UP || key == KEY_DOWN ||
+ key == '-' || key == '+' ||
+ key == KEY_PPAGE || key == KEY_NPAGE) {
+ /* Remove highligt of current item */
+ print_item(scroll + choice, choice, FALSE);
+
+ if (key == KEY_UP || key == '-') {
+ if (choice < 2 && scroll) {
+ /* Scroll menu down */
+ do_scroll(menu, &scroll, -1);
+
+ print_item(scroll, 0, FALSE);
+ } else
+ choice = MAX(choice - 1, 0);
+
+ } else if (key == KEY_DOWN || key == '+') {
+ print_item(scroll+choice, choice, FALSE);
+
+ if ((choice > max_choice - 3) &&
+ (scroll + max_choice < item_count())) {
+ /* Scroll menu up */
+ do_scroll(menu, &scroll, 1);
+
+ print_item(scroll+max_choice - 1,
+ max_choice - 1, FALSE);
+ } else
+ choice = MIN(choice + 1, max_choice - 1);
+
+ } else if (key == KEY_PPAGE) {
+ scrollok(menu, TRUE);
+ for (i = 0; (i < max_choice); i++) {
+ if (scroll > 0) {
+ do_scroll(menu, &scroll, -1);
+ print_item(scroll, 0, FALSE);
+ } else {
+ if (choice > 0)
+ choice--;
+ }
+ }
+
+ } else if (key == KEY_NPAGE) {
+ for (i = 0; (i < max_choice); i++) {
+ if (scroll + max_choice < item_count()) {
+ do_scroll(menu, &scroll, 1);
+ print_item(scroll+max_choice-1,
+ max_choice - 1, FALSE);
+ } else {
+ if (choice + 1 < max_choice)
+ choice++;
+ }
+ }
+ } else
+ choice = i;
+
+ print_item(scroll + choice, choice, TRUE);
+
+ print_arrows(dialog, item_count(), scroll,
+ box_y, box_x + item_x + 1, menu_height);
+
+ wnoutrefresh(dialog);
+ wrefresh(menu);
+
+ continue; /* wait for another key press */
+ }
+
+ switch (key) {
+ case KEY_LEFT:
+ case TAB:
+ case KEY_RIGHT:
+ button = ((key == KEY_LEFT ? --button : ++button) < 0)
+ ? 2 : (button > 2 ? 0 : button);
+
+ print_buttons(dialog, height, width, button);
+ wrefresh(menu);
+ break;
+ case ' ':
+ case 's':
+ case 'y':
+ case 'n':
+ case 'm':
+ case '/':
+ /* save scroll info */
+ *s_scroll = scroll;
+ delwin(menu);
+ delwin(dialog);
+ item_set(scroll + choice);
+ item_set_selected(1);
+ switch (key) {
+ case 's':
+ return 3;
+ case 'y':
+ return 3;
+ case 'n':
+ return 4;
+ case 'm':
+ return 5;
+ case ' ':
+ return 6;
+ case '/':
+ return 7;
+ }
+ return 0;
+ case 'h':
+ case '?':
+ button = 2;
+ case '\n':
+ *s_scroll = scroll;
+ delwin(menu);
+ delwin(dialog);
+ item_set(scroll + choice);
+ item_set_selected(1);
+ return button;
+ case 'e':
+ case 'x':
+ key = KEY_ESC;
+ break;
+ case KEY_ESC:
+ key = on_key_esc(menu);
+ break;
+ case KEY_RESIZE:
+ on_key_resize();
+ delwin(menu);
+ delwin(dialog);
+ goto do_resize;
+ }
+ }
+ delwin(menu);
+ delwin(dialog);
+ return key; /* ESC pressed */
+}
diff --git a/ap/build/uClibc/extra/config/lxdialog/textbox.c b/ap/build/uClibc/extra/config/lxdialog/textbox.c
new file mode 100644
index 0000000..c704712
--- /dev/null
+++ b/ap/build/uClibc/extra/config/lxdialog/textbox.c
@@ -0,0 +1,391 @@
+/*
+ * textbox.c -- implements the text box
+ *
+ * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
+ * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "dialog.h"
+
+static void back_lines(int n);
+static void print_page(WINDOW * win, int height, int width);
+static void print_line(WINDOW * win, int row, int width);
+static char *get_line(void);
+static void print_position(WINDOW * win);
+
+static int hscroll;
+static int begin_reached, end_reached, page_length;
+static const char *buf;
+static const char *page;
+
+/*
+ * refresh window content
+ */
+static void refresh_text_box(WINDOW *dialog, WINDOW *box, int boxh, int boxw,
+ int cur_y, int cur_x)
+{
+ print_page(box, boxh, boxw);
+ print_position(dialog);
+ wmove(dialog, cur_y, cur_x); /* Restore cursor position */
+ wrefresh(dialog);
+}
+
+
+/*
+ * Display text from a file in a dialog box.
+ */
+int dialog_textbox(const char *title, const char *tbuf,
+ int initial_height, int initial_width)
+{
+ int i, x, y, cur_x, cur_y, key = 0;
+ int height, width, boxh, boxw;
+ int passed_end;
+ WINDOW *dialog, *box;
+
+ begin_reached = 1;
+ end_reached = 0;
+ page_length = 0;
+ hscroll = 0;
+ buf = tbuf;
+ page = buf; /* page is pointer to start of page to be displayed */
+
+do_resize:
+ getmaxyx(stdscr, height, width);
+ if (height < 8 || width < 8)
+ return -ERRDISPLAYTOOSMALL;
+ if (initial_height != 0)
+ height = initial_height;
+ else
+ if (height > 4)
+ height -= 4;
+ else
+ height = 0;
+ if (initial_width != 0)
+ width = initial_width;
+ else
+ if (width > 5)
+ width -= 5;
+ else
+ width = 0;
+
+ /* center dialog box on screen */
+ x = (COLS - width) / 2;
+ y = (LINES - height) / 2;
+
+ draw_shadow(stdscr, y, x, height, width);
+
+ dialog = newwin(height, width, y, x);
+ keypad(dialog, TRUE);
+
+ /* Create window for box region, used for scrolling text */
+ boxh = height - 4;
+ boxw = width - 2;
+ box = subwin(dialog, boxh, boxw, y + 1, x + 1);
+ wattrset(box, dlg.dialog.atr);
+ wbkgdset(box, dlg.dialog.atr & A_COLOR);
+
+ keypad(box, TRUE);
+
+ /* register the new window, along with its borders */
+ draw_box(dialog, 0, 0, height, width,
+ dlg.dialog.atr, dlg.border.atr);
+
+ wattrset(dialog, dlg.border.atr);
+ mvwaddch(dialog, height - 3, 0, ACS_LTEE);
+ for (i = 0; i < width - 2; i++)
+ waddch(dialog, ACS_HLINE);
+ wattrset(dialog, dlg.dialog.atr);
+ wbkgdset(dialog, dlg.dialog.atr & A_COLOR);
+ waddch(dialog, ACS_RTEE);
+
+ print_title(dialog, title, width);
+
+ print_button(dialog, gettext(" Exit "), height - 2, width / 2 - 4, TRUE);
+ wnoutrefresh(dialog);
+ getyx(dialog, cur_y, cur_x); /* Save cursor position */
+
+ /* Print first page of text */
+ attr_clear(box, boxh, boxw, dlg.dialog.atr);
+ refresh_text_box(dialog, box, boxh, boxw, cur_y, cur_x);
+
+ while ((key != KEY_ESC) && (key != '\n')) {
+ key = wgetch(dialog);
+ switch (key) {
+ case 'E': /* Exit */
+ case 'e':
+ case 'X':
+ case 'x':
+ delwin(box);
+ delwin(dialog);
+ return 0;
+ case 'g': /* First page */
+ case KEY_HOME:
+ if (!begin_reached) {
+ begin_reached = 1;
+ page = buf;
+ refresh_text_box(dialog, box, boxh, boxw,
+ cur_y, cur_x);
+ }
+ break;
+ case 'G': /* Last page */
+ case KEY_END:
+
+ end_reached = 1;
+ /* point to last char in buf */
+ page = buf + strlen(buf);
+ back_lines(boxh);
+ refresh_text_box(dialog, box, boxh, boxw,
+ cur_y, cur_x);
+ break;
+ case 'K': /* Previous line */
+ case 'k':
+ case KEY_UP:
+ if (!begin_reached) {
+ back_lines(page_length + 1);
+
+ /* We don't call print_page() here but use
+ * scrolling to ensure faster screen update.
+ * However, 'end_reached' and 'page_length'
+ * should still be updated, and 'page' should
+ * point to start of next page. This is done
+ * by calling get_line() in the following
+ * 'for' loop. */
+ scrollok(box, TRUE);
+ wscrl(box, -1); /* Scroll box region down one line */
+ scrollok(box, FALSE);
+ page_length = 0;
+ passed_end = 0;
+ for (i = 0; i < boxh; i++) {
+ if (!i) {
+ /* print first line of page */
+ print_line(box, 0, boxw);
+ wnoutrefresh(box);
+ } else
+ /* Called to update 'end_reached' and 'page' */
+ get_line();
+ if (!passed_end)
+ page_length++;
+ if (end_reached && !passed_end)
+ passed_end = 1;
+ }
+
+ print_position(dialog);
+ wmove(dialog, cur_y, cur_x); /* Restore cursor position */
+ wrefresh(dialog);
+ }
+ break;
+ case 'B': /* Previous page */
+ case 'b':
+ case KEY_PPAGE:
+ if (begin_reached)
+ break;
+ back_lines(page_length + boxh);
+ refresh_text_box(dialog, box, boxh, boxw,
+ cur_y, cur_x);
+ break;
+ case 'J': /* Next line */
+ case 'j':
+ case KEY_DOWN:
+ if (!end_reached) {
+ begin_reached = 0;
+ scrollok(box, TRUE);
+ scroll(box); /* Scroll box region up one line */
+ scrollok(box, FALSE);
+ print_line(box, boxh - 1, boxw);
+ wnoutrefresh(box);
+ print_position(dialog);
+ wmove(dialog, cur_y, cur_x); /* Restore cursor position */
+ wrefresh(dialog);
+ }
+ break;
+ case KEY_NPAGE: /* Next page */
+ case ' ':
+ if (end_reached)
+ break;
+
+ begin_reached = 0;
+ refresh_text_box(dialog, box, boxh, boxw,
+ cur_y, cur_x);
+ break;
+ case '0': /* Beginning of line */
+ case 'H': /* Scroll left */
+ case 'h':
+ case KEY_LEFT:
+ if (hscroll <= 0)
+ break;
+
+ if (key == '0')
+ hscroll = 0;
+ else
+ hscroll--;
+ /* Reprint current page to scroll horizontally */
+ back_lines(page_length);
+ refresh_text_box(dialog, box, boxh, boxw,
+ cur_y, cur_x);
+ break;
+ case 'L': /* Scroll right */
+ case 'l':
+ case KEY_RIGHT:
+ if (hscroll >= MAX_LEN)
+ break;
+ hscroll++;
+ /* Reprint current page to scroll horizontally */
+ back_lines(page_length);
+ refresh_text_box(dialog, box, boxh, boxw,
+ cur_y, cur_x);
+ break;
+ case KEY_ESC:
+ key = on_key_esc(dialog);
+ break;
+ case KEY_RESIZE:
+ back_lines(height);
+ delwin(box);
+ delwin(dialog);
+ on_key_resize();
+ goto do_resize;
+ }
+ }
+ delwin(box);
+ delwin(dialog);
+ return key; /* ESC pressed */
+}
+
+/*
+ * Go back 'n' lines in text. Called by dialog_textbox().
+ * 'page' will be updated to point to the desired line in 'buf'.
+ */
+static void back_lines(int n)
+{
+ int i;
+
+ begin_reached = 0;
+ /* Go back 'n' lines */
+ for (i = 0; i < n; i++) {
+ if (*page == '\0') {
+ if (end_reached) {
+ end_reached = 0;
+ continue;
+ }
+ }
+ if (page == buf) {
+ begin_reached = 1;
+ return;
+ }
+ page--;
+ do {
+ if (page == buf) {
+ begin_reached = 1;
+ return;
+ }
+ page--;
+ } while (*page != '\n');
+ page++;
+ }
+}
+
+/*
+ * Print a new page of text. Called by dialog_textbox().
+ */
+static void print_page(WINDOW * win, int height, int width)
+{
+ int i, passed_end = 0;
+
+ page_length = 0;
+ for (i = 0; i < height; i++) {
+ print_line(win, i, width);
+ if (!passed_end)
+ page_length++;
+ if (end_reached && !passed_end)
+ passed_end = 1;
+ }
+ wnoutrefresh(win);
+}
+
+/*
+ * Print a new line of text. Called by dialog_textbox() and print_page().
+ */
+static void print_line(WINDOW * win, int row, int width)
+{
+ int y, x;
+ char *line;
+
+ line = get_line();
+ line += MIN(strlen(line), hscroll); /* Scroll horizontally */
+ wmove(win, row, 0); /* move cursor to correct line */
+ waddch(win, ' ');
+ waddnstr(win, line, MIN(strlen(line), width - 2));
+
+ getyx(win, y, x);
+ /* Clear 'residue' of previous line */
+#if OLD_NCURSES
+ {
+ int i;
+ for (i = 0; i < width - x; i++)
+ waddch(win, ' ');
+ }
+#else
+ wclrtoeol(win);
+#endif
+}
+
+/*
+ * Return current line of text. Called by dialog_textbox() and print_line().
+ * 'page' should point to start of current line before calling, and will be
+ * updated to point to start of next line.
+ */
+static char *get_line(void)
+{
+ int i = 0;
+ static char line[MAX_LEN + 1];
+
+ end_reached = 0;
+ while (*page != '\n') {
+ if (*page == '\0') {
+ if (!end_reached) {
+ end_reached = 1;
+ break;
+ }
+ } else if (i < MAX_LEN)
+ line[i++] = *(page++);
+ else {
+ /* Truncate lines longer than MAX_LEN characters */
+ if (i == MAX_LEN)
+ line[i++] = '\0';
+ page++;
+ }
+ }
+ if (i <= MAX_LEN)
+ line[i] = '\0';
+ if (!end_reached)
+ page++; /* move pass '\n' */
+
+ return line;
+}
+
+/*
+ * Print current position
+ */
+static void print_position(WINDOW * win)
+{
+ int percent;
+
+ wattrset(win, dlg.position_indicator.atr);
+ wbkgdset(win, dlg.position_indicator.atr & A_COLOR);
+ percent = (page - buf) * 100 / strlen(buf);
+ wmove(win, getmaxy(win) - 3, getmaxx(win) - 9);
+ wprintw(win, "(%3d%%)", percent);
+}
diff --git a/ap/build/uClibc/extra/config/lxdialog/util.c b/ap/build/uClibc/extra/config/lxdialog/util.c
new file mode 100644
index 0000000..86d95cc
--- /dev/null
+++ b/ap/build/uClibc/extra/config/lxdialog/util.c
@@ -0,0 +1,655 @@
+/*
+ * util.c
+ *
+ * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
+ * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "dialog.h"
+
+struct dialog_info dlg;
+
+static void set_mono_theme(void)
+{
+ dlg.screen.atr = A_NORMAL;
+ dlg.shadow.atr = A_NORMAL;
+ dlg.dialog.atr = A_NORMAL;
+ dlg.title.atr = A_BOLD;
+ dlg.border.atr = A_NORMAL;
+ dlg.button_active.atr = A_REVERSE;
+ dlg.button_inactive.atr = A_DIM;
+ dlg.button_key_active.atr = A_REVERSE;
+ dlg.button_key_inactive.atr = A_BOLD;
+ dlg.button_label_active.atr = A_REVERSE;
+ dlg.button_label_inactive.atr = A_NORMAL;
+ dlg.inputbox.atr = A_NORMAL;
+ dlg.inputbox_border.atr = A_NORMAL;
+ dlg.searchbox.atr = A_NORMAL;
+ dlg.searchbox_title.atr = A_BOLD;
+ dlg.searchbox_border.atr = A_NORMAL;
+ dlg.position_indicator.atr = A_BOLD;
+ dlg.menubox.atr = A_NORMAL;
+ dlg.menubox_border.atr = A_NORMAL;
+ dlg.item.atr = A_NORMAL;
+ dlg.item_selected.atr = A_REVERSE;
+ dlg.tag.atr = A_BOLD;
+ dlg.tag_selected.atr = A_REVERSE;
+ dlg.tag_key.atr = A_BOLD;
+ dlg.tag_key_selected.atr = A_REVERSE;
+ dlg.check.atr = A_BOLD;
+ dlg.check_selected.atr = A_REVERSE;
+ dlg.uarrow.atr = A_BOLD;
+ dlg.darrow.atr = A_BOLD;
+}
+
+#define DLG_COLOR(dialog, f, b, h) \
+do { \
+ dlg.dialog.fg = (f); \
+ dlg.dialog.bg = (b); \
+ dlg.dialog.hl = (h); \
+} while (0)
+
+static void set_classic_theme(void)
+{
+ DLG_COLOR(screen, COLOR_CYAN, COLOR_BLUE, true);
+ DLG_COLOR(shadow, COLOR_BLACK, COLOR_BLACK, true);
+ DLG_COLOR(dialog, COLOR_BLACK, COLOR_WHITE, false);
+ DLG_COLOR(title, COLOR_YELLOW, COLOR_WHITE, true);
+ DLG_COLOR(border, COLOR_WHITE, COLOR_WHITE, true);
+ DLG_COLOR(button_active, COLOR_WHITE, COLOR_BLUE, true);
+ DLG_COLOR(button_inactive, COLOR_BLACK, COLOR_WHITE, false);
+ DLG_COLOR(button_key_active, COLOR_WHITE, COLOR_BLUE, true);
+ DLG_COLOR(button_key_inactive, COLOR_RED, COLOR_WHITE, false);
+ DLG_COLOR(button_label_active, COLOR_YELLOW, COLOR_BLUE, true);
+ DLG_COLOR(button_label_inactive, COLOR_BLACK, COLOR_WHITE, true);
+ DLG_COLOR(inputbox, COLOR_BLACK, COLOR_WHITE, false);
+ DLG_COLOR(inputbox_border, COLOR_BLACK, COLOR_WHITE, false);
+ DLG_COLOR(searchbox, COLOR_BLACK, COLOR_WHITE, false);
+ DLG_COLOR(searchbox_title, COLOR_YELLOW, COLOR_WHITE, true);
+ DLG_COLOR(searchbox_border, COLOR_WHITE, COLOR_WHITE, true);
+ DLG_COLOR(position_indicator, COLOR_YELLOW, COLOR_WHITE, true);
+ DLG_COLOR(menubox, COLOR_BLACK, COLOR_WHITE, false);
+ DLG_COLOR(menubox_border, COLOR_WHITE, COLOR_WHITE, true);
+ DLG_COLOR(item, COLOR_BLACK, COLOR_WHITE, false);
+ DLG_COLOR(item_selected, COLOR_WHITE, COLOR_BLUE, true);
+ DLG_COLOR(tag, COLOR_YELLOW, COLOR_WHITE, true);
+ DLG_COLOR(tag_selected, COLOR_YELLOW, COLOR_BLUE, true);
+ DLG_COLOR(tag_key, COLOR_YELLOW, COLOR_WHITE, true);
+ DLG_COLOR(tag_key_selected, COLOR_YELLOW, COLOR_BLUE, true);
+ DLG_COLOR(check, COLOR_BLACK, COLOR_WHITE, false);
+ DLG_COLOR(check_selected, COLOR_WHITE, COLOR_BLUE, true);
+ DLG_COLOR(uarrow, COLOR_GREEN, COLOR_WHITE, true);
+ DLG_COLOR(darrow, COLOR_GREEN, COLOR_WHITE, true);
+}
+
+static void set_blackbg_theme(void)
+{
+ DLG_COLOR(screen, COLOR_RED, COLOR_BLACK, true);
+ DLG_COLOR(shadow, COLOR_BLACK, COLOR_BLACK, false);
+ DLG_COLOR(dialog, COLOR_WHITE, COLOR_BLACK, false);
+ DLG_COLOR(title, COLOR_RED, COLOR_BLACK, false);
+ DLG_COLOR(border, COLOR_BLACK, COLOR_BLACK, true);
+
+ DLG_COLOR(button_active, COLOR_YELLOW, COLOR_RED, false);
+ DLG_COLOR(button_inactive, COLOR_YELLOW, COLOR_BLACK, false);
+ DLG_COLOR(button_key_active, COLOR_YELLOW, COLOR_RED, true);
+ DLG_COLOR(button_key_inactive, COLOR_RED, COLOR_BLACK, false);
+ DLG_COLOR(button_label_active, COLOR_WHITE, COLOR_RED, false);
+ DLG_COLOR(button_label_inactive, COLOR_BLACK, COLOR_BLACK, true);
+
+ DLG_COLOR(inputbox, COLOR_YELLOW, COLOR_BLACK, false);
+ DLG_COLOR(inputbox_border, COLOR_YELLOW, COLOR_BLACK, false);
+
+ DLG_COLOR(searchbox, COLOR_YELLOW, COLOR_BLACK, false);
+ DLG_COLOR(searchbox_title, COLOR_YELLOW, COLOR_BLACK, true);
+ DLG_COLOR(searchbox_border, COLOR_BLACK, COLOR_BLACK, true);
+
+ DLG_COLOR(position_indicator, COLOR_RED, COLOR_BLACK, false);
+
+ DLG_COLOR(menubox, COLOR_YELLOW, COLOR_BLACK, false);
+ DLG_COLOR(menubox_border, COLOR_BLACK, COLOR_BLACK, true);
+
+ DLG_COLOR(item, COLOR_WHITE, COLOR_BLACK, false);
+ DLG_COLOR(item_selected, COLOR_WHITE, COLOR_RED, false);
+
+ DLG_COLOR(tag, COLOR_RED, COLOR_BLACK, false);
+ DLG_COLOR(tag_selected, COLOR_YELLOW, COLOR_RED, true);
+ DLG_COLOR(tag_key, COLOR_RED, COLOR_BLACK, false);
+ DLG_COLOR(tag_key_selected, COLOR_YELLOW, COLOR_RED, true);
+
+ DLG_COLOR(check, COLOR_YELLOW, COLOR_BLACK, false);
+ DLG_COLOR(check_selected, COLOR_YELLOW, COLOR_RED, true);
+
+ DLG_COLOR(uarrow, COLOR_RED, COLOR_BLACK, false);
+ DLG_COLOR(darrow, COLOR_RED, COLOR_BLACK, false);
+}
+
+static void set_bluetitle_theme(void)
+{
+ set_classic_theme();
+ DLG_COLOR(title, COLOR_BLUE, COLOR_WHITE, true);
+ DLG_COLOR(button_key_active, COLOR_YELLOW, COLOR_BLUE, true);
+ DLG_COLOR(button_label_active, COLOR_WHITE, COLOR_BLUE, true);
+ DLG_COLOR(searchbox_title, COLOR_BLUE, COLOR_WHITE, true);
+ DLG_COLOR(position_indicator, COLOR_BLUE, COLOR_WHITE, true);
+ DLG_COLOR(tag, COLOR_BLUE, COLOR_WHITE, true);
+ DLG_COLOR(tag_key, COLOR_BLUE, COLOR_WHITE, true);
+
+}
+
+/*
+ * Select color theme
+ */
+static int set_theme(const char *theme)
+{
+ int use_color = 1;
+ if (!theme)
+ set_bluetitle_theme();
+ else if (strcmp(theme, "classic") == 0)
+ set_classic_theme();
+ else if (strcmp(theme, "bluetitle") == 0)
+ set_bluetitle_theme();
+ else if (strcmp(theme, "blackbg") == 0)
+ set_blackbg_theme();
+ else if (strcmp(theme, "mono") == 0)
+ use_color = 0;
+
+ return use_color;
+}
+
+static void init_one_color(struct dialog_color *color)
+{
+ static int pair = 0;
+
+ pair++;
+ init_pair(pair, color->fg, color->bg);
+ if (color->hl)
+ color->atr = A_BOLD | COLOR_PAIR(pair);
+ else
+ color->atr = COLOR_PAIR(pair);
+}
+
+static void init_dialog_colors(void)
+{
+ init_one_color(&dlg.screen);
+ init_one_color(&dlg.shadow);
+ init_one_color(&dlg.dialog);
+ init_one_color(&dlg.title);
+ init_one_color(&dlg.border);
+ init_one_color(&dlg.button_active);
+ init_one_color(&dlg.button_inactive);
+ init_one_color(&dlg.button_key_active);
+ init_one_color(&dlg.button_key_inactive);
+ init_one_color(&dlg.button_label_active);
+ init_one_color(&dlg.button_label_inactive);
+ init_one_color(&dlg.inputbox);
+ init_one_color(&dlg.inputbox_border);
+ init_one_color(&dlg.searchbox);
+ init_one_color(&dlg.searchbox_title);
+ init_one_color(&dlg.searchbox_border);
+ init_one_color(&dlg.position_indicator);
+ init_one_color(&dlg.menubox);
+ init_one_color(&dlg.menubox_border);
+ init_one_color(&dlg.item);
+ init_one_color(&dlg.item_selected);
+ init_one_color(&dlg.tag);
+ init_one_color(&dlg.tag_selected);
+ init_one_color(&dlg.tag_key);
+ init_one_color(&dlg.tag_key_selected);
+ init_one_color(&dlg.check);
+ init_one_color(&dlg.check_selected);
+ init_one_color(&dlg.uarrow);
+ init_one_color(&dlg.darrow);
+}
+
+/*
+ * Setup for color display
+ */
+static void color_setup(const char *theme)
+{
+ int use_color;
+
+ use_color = set_theme(theme);
+ if (use_color && has_colors()) {
+ start_color();
+ init_dialog_colors();
+ } else
+ set_mono_theme();
+}
+
+/*
+ * Set window to attribute 'attr'
+ */
+void attr_clear(WINDOW * win, int height, int width, chtype attr)
+{
+ int i, j;
+
+ wattrset(win, attr);
+ for (i = 0; i < height; i++) {
+ wmove(win, i, 0);
+ for (j = 0; j < width; j++)
+ waddch(win, ' ');
+ }
+ touchwin(win);
+}
+
+void dialog_clear(void)
+{
+ attr_clear(stdscr, LINES, COLS, dlg.screen.atr);
+ /* Display background title if it exists ... - SLH */
+ if (dlg.backtitle != NULL) {
+ int i;
+
+ wattrset(stdscr, dlg.screen.atr);
+ mvwaddstr(stdscr, 0, 1, (char *)dlg.backtitle);
+ wmove(stdscr, 1, 1);
+ for (i = 1; i < COLS - 1; i++)
+ waddch(stdscr, ACS_HLINE);
+ }
+ wnoutrefresh(stdscr);
+}
+
+/*
+ * Do some initialization for dialog
+ */
+int init_dialog(const char *backtitle)
+{
+ int height, width;
+
+ initscr(); /* Init curses */
+ getmaxyx(stdscr, height, width);
+ if (height < 19 || width < 80) {
+ endwin();
+ return -ERRDISPLAYTOOSMALL;
+ }
+
+ dlg.backtitle = backtitle;
+ color_setup(getenv("MENUCONFIG_COLOR"));
+
+ keypad(stdscr, TRUE);
+ cbreak();
+ noecho();
+ dialog_clear();
+
+ return 0;
+}
+
+void set_dialog_backtitle(const char *backtitle)
+{
+ dlg.backtitle = backtitle;
+}
+
+/*
+ * End using dialog functions.
+ */
+void end_dialog(int x, int y)
+{
+ /* move cursor back to original position */
+ move(y, x);
+ refresh();
+ endwin();
+}
+
+/* Print the title of the dialog. Center the title and truncate
+ * tile if wider than dialog (- 2 chars).
+ **/
+void print_title(WINDOW *dialog, const char *title, int width)
+{
+ if (title) {
+ int tlen = MIN(width - 2, strlen(title));
+ wattrset(dialog, dlg.title.atr);
+ mvwaddch(dialog, 0, (width - tlen) / 2 - 1, ' ');
+ mvwaddnstr(dialog, 0, (width - tlen)/2, title, tlen);
+ waddch(dialog, ' ');
+ }
+}
+
+/*
+ * Print a string of text in a window, automatically wrap around to the
+ * next line if the string is too long to fit on one line. Newline
+ * characters '\n' are replaced by spaces. We start on a new line
+ * if there is no room for at least 4 nonblanks following a double-space.
+ */
+void print_autowrap(WINDOW * win, const char *prompt, int width, int y, int x)
+{
+ int newl, cur_x, cur_y;
+ int i, prompt_len, room, wlen;
+ char tempstr[MAX_LEN + 1], *word, *sp, *sp2;
+
+ strcpy(tempstr, prompt);
+
+ prompt_len = strlen(tempstr);
+
+ /*
+ * Remove newlines
+ */
+ for (i = 0; i < prompt_len; i++) {
+ if (tempstr[i] == '\n')
+ tempstr[i] = ' ';
+ }
+
+ if (prompt_len <= width - x * 2) { /* If prompt is short */
+ wmove(win, y, (width - prompt_len) / 2);
+ waddstr(win, tempstr);
+ } else {
+ cur_x = x;
+ cur_y = y;
+ newl = 1;
+ word = tempstr;
+ while (word && *word) {
+ sp = strchr(word, ' ');
+ if (sp)
+ *sp++ = 0;
+
+ /* Wrap to next line if either the word does not fit,
+ or it is the first word of a new sentence, and it is
+ short, and the next word does not fit. */
+ room = width - cur_x;
+ wlen = strlen(word);
+ if (wlen > room ||
+ (newl && wlen < 4 && sp
+ && wlen + 1 + strlen(sp) > room
+ && (!(sp2 = strchr(sp, ' '))
+ || wlen + 1 + (sp2 - sp) > room))) {
+ cur_y++;
+ cur_x = x;
+ }
+ wmove(win, cur_y, cur_x);
+ waddstr(win, word);
+ getyx(win, cur_y, cur_x);
+ cur_x++;
+ if (sp && *sp == ' ') {
+ cur_x++; /* double space */
+ while (*++sp == ' ') ;
+ newl = 1;
+ } else
+ newl = 0;
+ word = sp;
+ }
+ }
+}
+
+/*
+ * Print a button
+ */
+void print_button(WINDOW * win, const char *label, int y, int x, int selected)
+{
+ int i, temp;
+
+ wmove(win, y, x);
+ wattrset(win, selected ? dlg.button_active.atr
+ : dlg.button_inactive.atr);
+ waddstr(win, "<");
+ temp = strspn(label, " ");
+ label += temp;
+ wattrset(win, selected ? dlg.button_label_active.atr
+ : dlg.button_label_inactive.atr);
+ for (i = 0; i < temp; i++)
+ waddch(win, ' ');
+ wattrset(win, selected ? dlg.button_key_active.atr
+ : dlg.button_key_inactive.atr);
+ waddch(win, label[0]);
+ wattrset(win, selected ? dlg.button_label_active.atr
+ : dlg.button_label_inactive.atr);
+ waddstr(win, (char *)label + 1);
+ wattrset(win, selected ? dlg.button_active.atr
+ : dlg.button_inactive.atr);
+ waddstr(win, ">");
+ wmove(win, y, x + temp + 1);
+}
+
+/*
+ * Draw a rectangular box with line drawing characters
+ */
+void
+draw_box(WINDOW * win, int y, int x, int height, int width,
+ chtype box, chtype border)
+{
+ int i, j;
+
+ wattrset(win, 0);
+ for (i = 0; i < height; i++) {
+ wmove(win, y + i, x);
+ for (j = 0; j < width; j++)
+ if (!i && !j)
+ waddch(win, border | ACS_ULCORNER);
+ else if (i == height - 1 && !j)
+ waddch(win, border | ACS_LLCORNER);
+ else if (!i && j == width - 1)
+ waddch(win, box | ACS_URCORNER);
+ else if (i == height - 1 && j == width - 1)
+ waddch(win, box | ACS_LRCORNER);
+ else if (!i)
+ waddch(win, border | ACS_HLINE);
+ else if (i == height - 1)
+ waddch(win, box | ACS_HLINE);
+ else if (!j)
+ waddch(win, border | ACS_VLINE);
+ else if (j == width - 1)
+ waddch(win, box | ACS_VLINE);
+ else
+ waddch(win, box | ' ');
+ }
+}
+
+/*
+ * Draw shadows along the right and bottom edge to give a more 3D look
+ * to the boxes
+ */
+void draw_shadow(WINDOW * win, int y, int x, int height, int width)
+{
+ int i;
+
+ if (has_colors()) { /* Whether terminal supports color? */
+ wattrset(win, dlg.shadow.atr);
+ wmove(win, y + height, x + 2);
+ for (i = 0; i < width; i++)
+ waddch(win, winch(win) & A_CHARTEXT);
+ for (i = y + 1; i < y + height + 1; i++) {
+ wmove(win, i, x + width);
+ waddch(win, winch(win) & A_CHARTEXT);
+ waddch(win, winch(win) & A_CHARTEXT);
+ }
+ wnoutrefresh(win);
+ }
+}
+
+/*
+ * Return the position of the first alphabetic character in a string.
+ */
+int first_alpha(const char *string, const char *exempt)
+{
+ int i, in_paren = 0, c;
+
+ for (i = 0; i < strlen(string); i++) {
+ c = tolower(string[i]);
+
+ if (strchr("<[(", c))
+ ++in_paren;
+ if (strchr(">])", c) && in_paren > 0)
+ --in_paren;
+
+ if ((!in_paren) && isalpha(c) && strchr(exempt, c) == 0)
+ return i;
+ }
+
+ return 0;
+}
+
+/*
+ * ncurses uses ESC to detect escaped char sequences. This resutl in
+ * a small timeout before ESC is actually delivered to the application.
+ * lxdialog suggest <ESC> <ESC> which is correctly translated to two
+ * times esc. But then we need to ignore the second esc to avoid stepping
+ * out one menu too much. Filter away all escaped key sequences since
+ * keypad(FALSE) turn off ncurses support for escape sequences - and thats
+ * needed to make notimeout() do as expected.
+ */
+int on_key_esc(WINDOW *win)
+{
+ int key;
+ int key2;
+ int key3;
+
+ nodelay(win, TRUE);
+ keypad(win, FALSE);
+ key = wgetch(win);
+ key2 = wgetch(win);
+ do {
+ key3 = wgetch(win);
+ } while (key3 != ERR);
+ nodelay(win, FALSE);
+ keypad(win, TRUE);
+ if (key == KEY_ESC && key2 == ERR)
+ return KEY_ESC;
+ else if (key != ERR && key != KEY_ESC && key2 == ERR)
+ ungetch(key);
+
+ return -1;
+}
+
+/* redraw screen in new size */
+int on_key_resize(void)
+{
+ dialog_clear();
+ return KEY_RESIZE;
+}
+
+struct dialog_list *item_cur;
+struct dialog_list item_nil;
+struct dialog_list *item_head;
+
+void item_reset(void)
+{
+ struct dialog_list *p, *next;
+
+ for (p = item_head; p; p = next) {
+ next = p->next;
+ free(p);
+ }
+ item_head = NULL;
+ item_cur = &item_nil;
+}
+
+void item_make(const char *fmt, ...)
+{
+ va_list ap;
+ struct dialog_list *p = malloc(sizeof(*p));
+
+ if (item_head)
+ item_cur->next = p;
+ else
+ item_head = p;
+ item_cur = p;
+ memset(p, 0, sizeof(*p));
+
+ va_start(ap, fmt);
+ vsnprintf(item_cur->node.str, sizeof(item_cur->node.str), fmt, ap);
+ va_end(ap);
+}
+
+void item_add_str(const char *fmt, ...)
+{
+ va_list ap;
+ size_t avail;
+
+ avail = sizeof(item_cur->node.str) - strlen(item_cur->node.str);
+
+ va_start(ap, fmt);
+ vsnprintf(item_cur->node.str + strlen(item_cur->node.str),
+ avail, fmt, ap);
+ item_cur->node.str[sizeof(item_cur->node.str) - 1] = '\0';
+ va_end(ap);
+}
+
+void item_set_tag(char tag)
+{
+ item_cur->node.tag = tag;
+}
+void item_set_data(void *ptr)
+{
+ item_cur->node.data = ptr;
+}
+
+void item_set_selected(int val)
+{
+ item_cur->node.selected = val;
+}
+
+int item_activate_selected(void)
+{
+ item_foreach()
+ if (item_is_selected())
+ return 1;
+ return 0;
+}
+
+void *item_data(void)
+{
+ return item_cur->node.data;
+}
+
+char item_tag(void)
+{
+ return item_cur->node.tag;
+}
+
+int item_count(void)
+{
+ int n = 0;
+ struct dialog_list *p;
+
+ for (p = item_head; p; p = p->next)
+ n++;
+ return n;
+}
+
+void item_set(int n)
+{
+ int i = 0;
+ item_foreach()
+ if (i++ == n)
+ return;
+}
+
+int item_n(void)
+{
+ int n = 0;
+ struct dialog_list *p;
+
+ for (p = item_head; p; p = p->next) {
+ if (p == item_cur)
+ return n;
+ n++;
+ }
+ return 0;
+}
+
+const char *item_str(void)
+{
+ return item_cur->node.str;
+}
+
+int item_is_selected(void)
+{
+ return (item_cur->node.selected != 0);
+}
+
+int item_is_tag(char tag)
+{
+ return (item_cur->node.tag == tag);
+}
diff --git a/ap/build/uClibc/extra/config/lxdialog/yesno.c b/ap/build/uClibc/extra/config/lxdialog/yesno.c
new file mode 100644
index 0000000..4e6e809
--- /dev/null
+++ b/ap/build/uClibc/extra/config/lxdialog/yesno.c
@@ -0,0 +1,114 @@
+/*
+ * yesno.c -- implements the yes/no box
+ *
+ * ORIGINAL AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
+ * MODIFIED FOR LINUX KERNEL CONFIG BY: William Roadcap (roadcap@cfw.com)
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include "dialog.h"
+
+/*
+ * Display termination buttons
+ */
+static void print_buttons(WINDOW * dialog, int height, int width, int selected)
+{
+ int x = width / 2 - 10;
+ int y = height - 2;
+
+ print_button(dialog, gettext(" Yes "), y, x, selected == 0);
+ print_button(dialog, gettext(" No "), y, x + 13, selected == 1);
+
+ wmove(dialog, y, x + 1 + 13 * selected);
+ wrefresh(dialog);
+}
+
+/*
+ * Display a dialog box with two buttons - Yes and No
+ */
+int dialog_yesno(const char *title, const char *prompt, int height, int width)
+{
+ int i, x, y, key = 0, button = 0;
+ WINDOW *dialog;
+
+do_resize:
+ if (getmaxy(stdscr) < (height + 4))
+ return -ERRDISPLAYTOOSMALL;
+ if (getmaxx(stdscr) < (width + 4))
+ return -ERRDISPLAYTOOSMALL;
+
+ /* center dialog box on screen */
+ x = (COLS - width) / 2;
+ y = (LINES - height) / 2;
+
+ draw_shadow(stdscr, y, x, height, width);
+
+ dialog = newwin(height, width, y, x);
+ keypad(dialog, TRUE);
+
+ draw_box(dialog, 0, 0, height, width,
+ dlg.dialog.atr, dlg.border.atr);
+ wattrset(dialog, dlg.border.atr);
+ mvwaddch(dialog, height - 3, 0, ACS_LTEE);
+ for (i = 0; i < width - 2; i++)
+ waddch(dialog, ACS_HLINE);
+ wattrset(dialog, dlg.dialog.atr);
+ waddch(dialog, ACS_RTEE);
+
+ print_title(dialog, title, width);
+
+ wattrset(dialog, dlg.dialog.atr);
+ print_autowrap(dialog, prompt, width - 2, 1, 3);
+
+ print_buttons(dialog, height, width, 0);
+
+ while (key != KEY_ESC) {
+ key = wgetch(dialog);
+ switch (key) {
+ case 'Y':
+ case 'y':
+ delwin(dialog);
+ return 0;
+ case 'N':
+ case 'n':
+ delwin(dialog);
+ return 1;
+
+ case TAB:
+ case KEY_LEFT:
+ case KEY_RIGHT:
+ button = ((key == KEY_LEFT ? --button : ++button) < 0) ? 1 : (button > 1 ? 0 : button);
+
+ print_buttons(dialog, height, width, button);
+ wrefresh(dialog);
+ break;
+ case ' ':
+ case '\n':
+ delwin(dialog);
+ return button;
+ case KEY_ESC:
+ key = on_key_esc(dialog);
+ break;
+ case KEY_RESIZE:
+ delwin(dialog);
+ on_key_resize();
+ goto do_resize;
+ }
+ }
+
+ delwin(dialog);
+ return key; /* ESC pressed */
+}
diff --git a/ap/build/uClibc/extra/config/mconf b/ap/build/uClibc/extra/config/mconf
new file mode 100755
index 0000000..db0a163
--- /dev/null
+++ b/ap/build/uClibc/extra/config/mconf
Binary files differ
diff --git a/ap/build/uClibc/extra/config/mconf.c b/ap/build/uClibc/extra/config/mconf.c
new file mode 100644
index 0000000..18583bd
--- /dev/null
+++ b/ap/build/uClibc/extra/config/mconf.c
@@ -0,0 +1,930 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ *
+ * Introduced single menu mode (show all sub-menus in one large tree).
+ * 2002-11-06 Petr Baudis <pasky@ucw.cz>
+ *
+ * i18n, 2005, Arnaldo Carvalho de Melo <acme@conectiva.com.br>
+ */
+
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <locale.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+#include "lxdialog/dialog.h"
+
+static const char mconf_readme[] = N_(
+"Overview\n"
+"--------\n"
+"Some features may be built directly into uClibc. Some features\n"
+"may be completely removed altogether. There are also certain\n"
+"parameters which are not really features, but must be\n"
+"entered in as decimal or hexadecimal numbers or possibly text.\n"
+"\n"
+"Menu items beginning with following braces represent features that\n"
+" [ ] can be built in or removed\n"
+" < > can be built in, modularized or removed\n"
+" { } can be built in or modularized (selected by other feature)\n"
+" - - are selected by other feature,\n"
+"while *, M or whitespace inside braces means to build in, build as\n"
+"a module or to exclude the feature respectively.\n"
+"\n"
+"To change any of these features, highlight it with the cursor\n"
+"keys and press <Y> to build it in, <M> to make it a module or\n"
+"<N> to removed it. You may also press the <Space Bar> to cycle\n"
+"through the available options (ie. Y->N->M->Y).\n"
+"\n"
+"Some additional keyboard hints:\n"
+"\n"
+"Menus\n"
+"----------\n"
+"o Use the Up/Down arrow keys (cursor keys) to highlight the item\n"
+" you wish to change or submenu wish to select and press <Enter>.\n"
+" Submenus are designated by \"--->\".\n"
+"\n"
+" Shortcut: Press the option's highlighted letter (hotkey).\n"
+" Pressing a hotkey more than once will sequence\n"
+" through all visible items which use that hotkey.\n"
+"\n"
+" You may also use the <PAGE UP> and <PAGE DOWN> keys to scroll\n"
+" unseen options into view.\n"
+"\n"
+"o To exit a menu use the cursor keys to highlight the <Exit> button\n"
+" and press <ENTER>.\n"
+"\n"
+" Shortcut: Press <ESC><ESC> or <E> or <X> if there is no hotkey\n"
+" using those letters. You may press a single <ESC>, but\n"
+" there is a delayed response which you may find annoying.\n"
+"\n"
+" Also, the <TAB> and cursor keys will cycle between <Select>,\n"
+" <Exit> and <Help>\n"
+"\n"
+"o To get help with an item, use the cursor keys to highlight <Help>\n"
+" and Press <ENTER>.\n"
+"\n"
+" Shortcut: Press <H> or <?>.\n"
+"\n"
+"\n"
+"Radiolists (Choice lists)\n"
+"-----------\n"
+"o Use the cursor keys to select the option you wish to set and press\n"
+" <S> or the <SPACE BAR>.\n"
+"\n"
+" Shortcut: Press the first letter of the option you wish to set then\n"
+" press <S> or <SPACE BAR>.\n"
+"\n"
+"o To see available help for the item, use the cursor keys to highlight\n"
+" <Help> and Press <ENTER>.\n"
+"\n"
+" Shortcut: Press <H> or <?>.\n"
+"\n"
+" Also, the <TAB> and cursor keys will cycle between <Select> and\n"
+" <Help>\n"
+"\n"
+"\n"
+"Data Entry\n"
+"-----------\n"
+"o Enter the requested information and press <ENTER>\n"
+" If you are entering hexadecimal values, it is not necessary to\n"
+" add the '0x' prefix to the entry.\n"
+"\n"
+"o For help, use the <TAB> or cursor keys to highlight the help option\n"
+" and press <ENTER>. You can try <TAB><H> as well.\n"
+"\n"
+"\n"
+"Text Box (Help Window)\n"
+"--------\n"
+"o Use the cursor keys to scroll up/down/left/right. The VI editor\n"
+" keys h,j,k,l function here as do <SPACE BAR> and <B> for those\n"
+" who are familiar with less and lynx.\n"
+"\n"
+"o Press <E>, <X>, <Enter> or <Esc><Esc> to exit.\n"
+"\n"
+"\n"
+"Alternate Configuration Files\n"
+"-----------------------------\n"
+"Menuconfig supports the use of alternate configuration files for\n"
+"those who, for various reasons, find it necessary to switch\n"
+"between different configurations.\n"
+"\n"
+"At the end of the main menu you will find two options. One is\n"
+"for saving the current configuration to a file of your choosing.\n"
+"The other option is for loading a previously saved alternate\n"
+"configuration.\n"
+"\n"
+"Even if you don't use alternate configuration files, but you\n"
+"find during a Menuconfig session that you have completely messed\n"
+"up your settings, you may use the \"Load Alternate...\" option to\n"
+"restore your previously saved settings from \".config\" without\n"
+"restarting Menuconfig.\n"
+"\n"
+"Other information\n"
+"-----------------\n"
+"If you use Menuconfig in an XTERM window make sure you have your\n"
+"$TERM variable set to point to a xterm definition which supports color.\n"
+"Otherwise, Menuconfig will look rather bad. Menuconfig will not\n"
+"display correctly in a RXVT window because rxvt displays only one\n"
+"intensity of color, bright.\n"
+"\n"
+"Menuconfig will display larger menus on screens or xterms which are\n"
+"set to display more than the standard 25 row by 80 column geometry.\n"
+"In order for this to work, the \"stty size\" command must be able to\n"
+"display the screen's current row and column geometry. I STRONGLY\n"
+"RECOMMEND that you make sure you do NOT have the shell variables\n"
+"LINES and COLUMNS exported into your environment. Some distributions\n"
+"export those variables via /etc/profile. Some ncurses programs can\n"
+"become confused when those variables (LINES & COLUMNS) don't reflect\n"
+"the true screen size.\n"
+"\n"
+"Optional personality available\n"
+"------------------------------\n"
+"If you prefer to have all of the options listed in a single\n"
+"menu, rather than the default multimenu hierarchy, run the menuconfig\n"
+"with MENUCONFIG_MODE environment variable set to single_menu. Example:\n"
+"\n"
+"make MENUCONFIG_MODE=single_menu menuconfig\n"
+"\n"
+"<Enter> will then unroll the appropriate category, or enfold it if it\n"
+"is already unrolled.\n"
+"\n"
+"Note that this mode can eventually be a little more CPU expensive\n"
+"(especially with a larger number of unrolled categories) than the\n"
+"default mode.\n"
+"\n"
+"Different color themes available\n"
+"--------------------------------\n"
+"It is possible to select different color themes using the variable\n"
+"MENUCONFIG_COLOR. To select a theme use:\n"
+"\n"
+"make MENUCONFIG_COLOR=<theme> menuconfig\n"
+"\n"
+"Available themes are\n"
+" mono => selects colors suitable for monochrome displays\n"
+" blackbg => selects a color scheme with black background\n"
+" classic => theme with blue background. The classic look\n"
+" bluetitle => a LCD friendly version of classic. (default)\n"
+"\n"),
+menu_instructions[] = N_(
+ "Arrow keys navigate the menu. "
+ "<Enter> selects submenus --->. "
+ "Highlighted letters are hotkeys. "
+ "Pressing <Y> selectes a feature, while <N> will exclude a feature. "
+ "Press <Esc><Esc> to exit, <?> for Help, </> for Search. "
+ "Legend: [*] feature is selected [ ] feature is excluded"),
+radiolist_instructions[] = N_(
+ "Use the arrow keys to navigate this window or "
+ "press the hotkey of the item you wish to select "
+ "followed by the <SPACE BAR>. "
+ "Press <?> for additional information about this option."),
+inputbox_instructions_int[] = N_(
+ "Please enter a decimal value. "
+ "Fractions will not be accepted. "
+ "Use the <TAB> key to move from the input field to the buttons below it."),
+inputbox_instructions_hex[] = N_(
+ "Please enter a hexadecimal value. "
+ "Use the <TAB> key to move from the input field to the buttons below it."),
+inputbox_instructions_string[] = N_(
+ "Please enter a string value. "
+ "Use the <TAB> key to move from the input field to the buttons below it."),
+setmod_text[] = N_(
+ "This feature depends on another which has been configured as a module.\n"
+ "As a result, this feature will be built as a module."),
+nohelp_text[] = N_(
+ "There is no help available for this option.\n"),
+load_config_text[] = N_(
+ "Enter the name of the configuration file you wish to load. "
+ "Accept the name shown to restore the configuration you "
+ "last retrieved. Leave blank to abort."),
+load_config_help[] = N_(
+ "\n"
+ "For various reasons, one may wish to keep several different\n"
+ "configurations available on a single machine.\n"
+ "\n"
+ "If you have saved a previous configuration in a file other than the\n"
+ "default, entering the name of the file here will allow you\n"
+ "to modify that configuration.\n"
+ "\n"
+ "If you are uncertain, then you have probably never used alternate\n"
+ "configuration files. You should therefor leave this blank to abort.\n"),
+save_config_text[] = N_(
+ "Enter a filename to which this configuration should be saved "
+ "as an alternate. Leave blank to abort."),
+save_config_help[] = N_(
+ "\n"
+ "For various reasons, one may wish to keep different\n"
+ "configurations available on a single machine.\n"
+ "\n"
+ "Entering a file name here will allow you to later retrieve, modify\n"
+ "and use the current configuration as an alternate to whatever\n"
+ "configuration options you have selected at that time.\n"
+ "\n"
+ "If you are uncertain what all this means then you should probably\n"
+ "leave this blank.\n"),
+search_help[] = N_(
+ "\n"
+ "Search for CONFIG_ symbols and display their relations.\n"
+ "Regular expressions are allowed.\n"
+ "Example: search for \"^FOO\"\n"
+ "Result:\n"
+ "-----------------------------------------------------------------\n"
+ "Symbol: FOO [=m]\n"
+ "Prompt: Foo bus is used to drive the bar HW\n"
+ "Defined at drivers/pci/Kconfig:47\n"
+ "Depends on: X86_LOCAL_APIC && X86_IO_APIC || IA64\n"
+ "Location:\n"
+ " -> Bus options (PCI, PCMCIA, EISA, MCA, ISA)\n"
+ " -> PCI support (PCI [=y])\n"
+ " -> PCI access mode (<choice> [=y])\n"
+ "Selects: LIBCRC32\n"
+ "Selected by: BAR\n"
+ "-----------------------------------------------------------------\n"
+ "o The line 'Prompt:' shows the text used in the menu structure for\n"
+ " this CONFIG_ symbol\n"
+ "o The 'Defined at' line tell at what file / line number the symbol\n"
+ " is defined\n"
+ "o The 'Depends on:' line tell what symbols needs to be defined for\n"
+ " this symbol to be visible in the menu (selectable)\n"
+ "o The 'Location:' lines tell where in the menu structure this symbol\n"
+ " is located\n"
+ " A location followed by a [=y] indicate that this is a selectable\n"
+ " menu item - and current value is displayed inside brackets.\n"
+ "o The 'Selects:' line tell what symbol will be automatically\n"
+ " selected if this symbol is selected (y or m)\n"
+ "o The 'Selected by' line tell what symbol has selected this symbol\n"
+ "\n"
+ "Only relevant lines are shown.\n"
+ "\n\n"
+ "Search examples:\n"
+ "Examples: USB => find all CONFIG_ symbols containing USB\n"
+ " ^USB => find all CONFIG_ symbols starting with USB\n"
+ " USB$ => find all CONFIG_ symbols ending with USB\n"
+ "\n");
+
+static int indent;
+static struct menu *current_menu;
+static int child_count;
+static int single_menu_mode;
+
+static void conf(struct menu *menu);
+static void conf_choice(struct menu *menu);
+static void conf_string(struct menu *menu);
+static void conf_load(void);
+static void conf_save(void);
+static void show_textbox(const char *title, const char *text, int r, int c);
+static void show_helptext(const char *title, const char *text);
+static void show_help(struct menu *menu);
+
+static void get_prompt_str(struct gstr *r, struct property *prop)
+{
+ int i, j;
+ struct menu *submenu[8], *menu;
+
+ str_printf(r, _("Prompt: %s\n"), _(prop->text));
+ str_printf(r, _(" Defined at %s:%d\n"), prop->menu->file->name,
+ prop->menu->lineno);
+ if (!expr_is_yes(prop->visible.expr)) {
+ str_append(r, _(" Depends on: "));
+ expr_gstr_print(prop->visible.expr, r);
+ str_append(r, "\n");
+ }
+ menu = prop->menu->parent;
+ for (i = 0; menu != &rootmenu && i < 8; menu = menu->parent)
+ submenu[i++] = menu;
+ if (i > 0) {
+ str_printf(r, _(" Location:\n"));
+ for (j = 4; --i >= 0; j += 2) {
+ menu = submenu[i];
+ str_printf(r, "%*c-> %s", j, ' ', _(menu_get_prompt(menu)));
+ if (menu->sym) {
+ str_printf(r, " (%s [=%s])", menu->sym->name ?
+ menu->sym->name : _("<choice>"),
+ sym_get_string_value(menu->sym));
+ }
+ str_append(r, "\n");
+ }
+ }
+}
+
+static void get_symbol_str(struct gstr *r, struct symbol *sym)
+{
+ bool hit;
+ struct property *prop;
+
+ if (sym && sym->name)
+ str_printf(r, "Symbol: %s [=%s]\n", sym->name,
+ sym_get_string_value(sym));
+ for_all_prompts(sym, prop)
+ get_prompt_str(r, prop);
+ hit = false;
+ for_all_properties(sym, prop, P_SELECT) {
+ if (!hit) {
+ str_append(r, " Selects: ");
+ hit = true;
+ } else
+ str_printf(r, " && ");
+ expr_gstr_print(prop->expr, r);
+ }
+ if (hit)
+ str_append(r, "\n");
+ if (sym->rev_dep.expr) {
+ str_append(r, _(" Selected by: "));
+ expr_gstr_print(sym->rev_dep.expr, r);
+ str_append(r, "\n");
+ }
+ str_append(r, "\n\n");
+}
+
+static struct gstr get_relations_str(struct symbol **sym_arr)
+{
+ struct symbol *sym;
+ struct gstr res = str_new();
+ int i;
+
+ for (i = 0; sym_arr && (sym = sym_arr[i]); i++)
+ get_symbol_str(&res, sym);
+ if (!i)
+ str_append(&res, _("No matches found.\n"));
+ return res;
+}
+
+static char filename[PATH_MAX+1];
+static void set_config_filename(const char *config_filename)
+{
+ static char menu_backtitle[PATH_MAX+128];
+ int size;
+ struct symbol *sym;
+
+ sym = sym_lookup("VERSION", 0);
+ sym_calc_value(sym);
+ size = snprintf(menu_backtitle, sizeof(menu_backtitle),
+ _("%s - uClibc v%s Configuration"),
+ config_filename, sym_get_string_value(sym));
+ if (size >= sizeof(menu_backtitle))
+ menu_backtitle[sizeof(menu_backtitle)-1] = '\0';
+ set_dialog_backtitle(menu_backtitle);
+
+ size = snprintf(filename, sizeof(filename), "%s", config_filename);
+ if (size >= sizeof(filename))
+ filename[sizeof(filename)-1] = '\0';
+}
+
+
+static void search_conf(void)
+{
+ struct symbol **sym_arr;
+ struct gstr res;
+ char *dialog_input;
+ int dres;
+again:
+ dialog_clear();
+ dres = dialog_inputbox(_("Search Configuration Parameter"),
+ _("Enter CONFIG_ (sub)string to search for "
+ "(with or without \"CONFIG\")"),
+ 10, 75, "");
+ switch (dres) {
+ case 0:
+ break;
+ case 1:
+ show_helptext(_("Search Configuration"), search_help);
+ goto again;
+ default:
+ return;
+ }
+
+ /* strip CONFIG_ if necessary */
+ dialog_input = dialog_input_result;
+ if (strncasecmp(dialog_input_result, "CONFIG_", 7) == 0)
+ dialog_input += 7;
+
+ sym_arr = sym_re_search(dialog_input);
+ res = get_relations_str(sym_arr);
+ free(sym_arr);
+ show_textbox(_("Search Results"), str_get(&res), 0, 0);
+ str_free(&res);
+}
+
+static void build_conf(struct menu *menu)
+{
+ struct symbol *sym;
+ struct property *prop;
+ struct menu *child;
+ int type, tmp, doint = 2;
+ tristate val;
+ char ch;
+
+ if (!menu_is_visible(menu))
+ return;
+
+ sym = menu->sym;
+ prop = menu->prompt;
+ if (!sym) {
+ if (prop && menu != current_menu) {
+ const char *prompt = menu_get_prompt(menu);
+ switch (prop->type) {
+ case P_MENU:
+ child_count++;
+ prompt = _(prompt);
+ if (single_menu_mode) {
+ item_make("%s%*c%s",
+ menu->data ? "-->" : "++>",
+ indent + 1, ' ', prompt);
+ } else
+ item_make(" %*c%s --->", indent + 1, ' ', prompt);
+
+ item_set_tag('m');
+ item_set_data(menu);
+ if (single_menu_mode && menu->data)
+ goto conf_childs;
+ return;
+ case P_COMMENT:
+ if (prompt) {
+ child_count++;
+ item_make(" %*c*** %s ***", indent + 1, ' ', _(prompt));
+ item_set_tag(':');
+ item_set_data(menu);
+ }
+ break;
+ default:
+ if (prompt) {
+ child_count++;
+ item_make("---%*c%s", indent + 1, ' ', _(prompt));
+ item_set_tag(':');
+ item_set_data(menu);
+ }
+ }
+ } else
+ doint = 0;
+ goto conf_childs;
+ }
+
+ type = sym_get_type(sym);
+ if (sym_is_choice(sym)) {
+ struct symbol *def_sym = sym_get_choice_value(sym);
+ struct menu *def_menu = NULL;
+
+ child_count++;
+ for (child = menu->list; child; child = child->next) {
+ if (menu_is_visible(child) && child->sym == def_sym)
+ def_menu = child;
+ }
+
+ val = sym_get_tristate_value(sym);
+ if (sym_is_changable(sym)) {
+ switch (type) {
+ case S_BOOLEAN:
+ item_make("[%c]", val == no ? ' ' : '*');
+ break;
+ case S_TRISTATE:
+ switch (val) {
+ case yes: ch = '*'; break;
+ case mod: ch = 'M'; break;
+ default: ch = ' '; break;
+ }
+ item_make("<%c>", ch);
+ break;
+ }
+ item_set_tag('t');
+ item_set_data(menu);
+ } else {
+ item_make(" ");
+ item_set_tag(def_menu ? 't' : ':');
+ item_set_data(menu);
+ }
+
+ item_add_str("%*c%s", indent + 1, ' ', _(menu_get_prompt(menu)));
+ if (val == yes) {
+ if (def_menu) {
+ item_add_str(" (%s)", _(menu_get_prompt(def_menu)));
+ item_add_str(" --->");
+ if (def_menu->list) {
+ indent += 2;
+ build_conf(def_menu);
+ indent -= 2;
+ }
+ }
+ return;
+ }
+ } else {
+ if (menu == current_menu) {
+ item_make("---%*c%s", indent + 1, ' ', _(menu_get_prompt(menu)));
+ item_set_tag(':');
+ item_set_data(menu);
+ goto conf_childs;
+ }
+ child_count++;
+ val = sym_get_tristate_value(sym);
+ if (sym_is_choice_value(sym) && val == yes) {
+ item_make(" ");
+ item_set_tag(':');
+ item_set_data(menu);
+ } else {
+ switch (type) {
+ case S_BOOLEAN:
+ if (sym_is_changable(sym))
+ item_make("[%c]", val == no ? ' ' : '*');
+ else
+ item_make("-%c-", val == no ? ' ' : '*');
+ item_set_tag('t');
+ item_set_data(menu);
+ break;
+ case S_TRISTATE:
+ switch (val) {
+ case yes: ch = '*'; break;
+ case mod: ch = 'M'; break;
+ default: ch = ' '; break;
+ }
+ if (sym_is_changable(sym)) {
+ if (sym->rev_dep.tri == mod)
+ item_make("{%c}", ch);
+ else
+ item_make("<%c>", ch);
+ } else
+ item_make("-%c-", ch);
+ item_set_tag('t');
+ item_set_data(menu);
+ break;
+ default:
+ tmp = 2 + strlen(sym_get_string_value(sym)); /* () = 2 */
+ item_make("(%s)", sym_get_string_value(sym));
+ tmp = indent - tmp + 4;
+ if (tmp < 0)
+ tmp = 0;
+ item_add_str("%*c%s%s", tmp, ' ', _(menu_get_prompt(menu)),
+ (sym_has_value(sym) || !sym_is_changable(sym)) ?
+ "" : _(" (NEW)"));
+ item_set_tag('s');
+ item_set_data(menu);
+ goto conf_childs;
+ }
+ }
+ item_add_str("%*c%s%s", indent + 1, ' ', _(menu_get_prompt(menu)),
+ (sym_has_value(sym) || !sym_is_changable(sym)) ?
+ "" : _(" (NEW)"));
+ if (menu->prompt->type == P_MENU) {
+ item_add_str(" --->");
+ return;
+ }
+ }
+
+conf_childs:
+ indent += doint;
+ for (child = menu->list; child; child = child->next)
+ build_conf(child);
+ indent -= doint;
+}
+
+static void conf(struct menu *menu)
+{
+ struct menu *submenu;
+ const char *prompt = menu_get_prompt(menu);
+ struct symbol *sym;
+ struct menu *active_menu = NULL;
+ int res;
+ int s_scroll = 0;
+
+ while (1) {
+ item_reset();
+ current_menu = menu;
+ build_conf(menu);
+ if (!child_count)
+ break;
+ if (menu == &rootmenu) {
+ item_make("--- ");
+ item_set_tag(':');
+ item_make(_(" Load an Alternate Configuration File"));
+ item_set_tag('L');
+ item_make(_(" Save an Alternate Configuration File"));
+ item_set_tag('S');
+ }
+ dialog_clear();
+ res = dialog_menu(prompt ? _(prompt) : _("Main Menu"),
+ _(menu_instructions),
+ active_menu, &s_scroll);
+ if (res == 1 || res == KEY_ESC || res == -ERRDISPLAYTOOSMALL)
+ break;
+ if (!item_activate_selected())
+ continue;
+ if (!item_tag())
+ continue;
+
+ submenu = item_data();
+ active_menu = item_data();
+ if (submenu)
+ sym = submenu->sym;
+ else
+ sym = NULL;
+
+ switch (res) {
+ case 0:
+ switch (item_tag()) {
+ case 'm':
+ if (single_menu_mode)
+ submenu->data = (void *) (long) !submenu->data;
+ else
+ conf(submenu);
+ break;
+ case 't':
+ if (sym_is_choice(sym) && sym_get_tristate_value(sym) == yes)
+ conf_choice(submenu);
+ else if (submenu->prompt->type == P_MENU)
+ conf(submenu);
+ break;
+ case 's':
+ conf_string(submenu);
+ break;
+ case 'L':
+ conf_load();
+ break;
+ case 'S':
+ conf_save();
+ break;
+ }
+ break;
+ case 2:
+ if (sym)
+ show_help(submenu);
+ else
+ show_helptext(_("README"), _(mconf_readme));
+ break;
+ case 3:
+ if (item_is_tag('t')) {
+ if (sym_set_tristate_value(sym, yes))
+ break;
+ if (sym_set_tristate_value(sym, mod))
+ show_textbox(NULL, setmod_text, 6, 74);
+ }
+ break;
+ case 4:
+ if (item_is_tag('t'))
+ sym_set_tristate_value(sym, no);
+ break;
+ case 5:
+ if (item_is_tag('t'))
+ sym_set_tristate_value(sym, mod);
+ break;
+ case 6:
+ if (item_is_tag('t'))
+ sym_toggle_tristate_value(sym);
+ else if (item_is_tag('m'))
+ conf(submenu);
+ break;
+ case 7:
+ search_conf();
+ break;
+ }
+ }
+}
+
+static void show_textbox(const char *title, const char *text, int r, int c)
+{
+ dialog_clear();
+ dialog_textbox(title, text, r, c);
+}
+
+static void show_helptext(const char *title, const char *text)
+{
+ show_textbox(title, text, 0, 0);
+}
+
+static void show_help(struct menu *menu)
+{
+ struct gstr help = str_new();
+ struct symbol *sym = menu->sym;
+
+ if (menu_has_help(menu))
+ {
+ if (sym->name) {
+ str_printf(&help, "%s:\n\n", sym->name);
+ }
+ str_append(&help, _(menu_get_help(menu)));
+ str_append(&help, "\n");
+ } else if (menu_has_help(sym->prop->menu->parent)) {
+ str_append(&help, _(menu_get_help(sym->prop->menu->parent)));
+ str_append(&help, "\n");
+ } else {
+ str_append(&help, nohelp_text);
+ }
+ get_symbol_str(&help, sym);
+ show_helptext(_(menu_get_prompt(menu)), str_get(&help));
+ str_free(&help);
+}
+
+static void conf_choice(struct menu *menu)
+{
+ const char *prompt = _(menu_get_prompt(menu));
+ struct menu *child;
+ struct symbol *active;
+
+ active = sym_get_choice_value(menu->sym);
+ while (1) {
+ int res;
+ int selected;
+ item_reset();
+
+ current_menu = menu;
+ for (child = menu->list; child; child = child->next) {
+ if (!menu_is_visible(child))
+ continue;
+ item_make("%s", _(menu_get_prompt(child)));
+ item_set_data(child);
+ if (child->sym == active)
+ item_set_selected(1);
+ if (child->sym == sym_get_choice_value(menu->sym))
+ item_set_tag('X');
+ }
+ dialog_clear();
+ res = dialog_checklist(prompt ? _(prompt) : _("Main Menu"),
+ _(radiolist_instructions),
+ 15, 70, 6);
+ selected = item_activate_selected();
+ switch (res) {
+ case 0:
+ if (selected) {
+ child = item_data();
+ sym_set_tristate_value(child->sym, yes);
+ }
+ return;
+ case 1:
+ if (selected) {
+ child = item_data();
+ show_help(child);
+ active = child->sym;
+ } else
+ show_help(menu);
+ break;
+ case KEY_ESC:
+ return;
+ case -ERRDISPLAYTOOSMALL:
+ return;
+ }
+ }
+}
+
+static void conf_string(struct menu *menu)
+{
+ const char *prompt = menu_get_prompt(menu);
+
+ while (1) {
+ int res;
+ const char *heading;
+
+ switch (sym_get_type(menu->sym)) {
+ case S_INT:
+ heading = _(inputbox_instructions_int);
+ break;
+ case S_HEX:
+ heading = _(inputbox_instructions_hex);
+ break;
+ case S_STRING:
+ heading = _(inputbox_instructions_string);
+ break;
+ default:
+ heading = _("Internal mconf error!");
+ }
+ dialog_clear();
+ res = dialog_inputbox(prompt ? _(prompt) : _("Main Menu"),
+ heading, 10, 75,
+ sym_get_string_value(menu->sym));
+ switch (res) {
+ case 0:
+ if (sym_set_string_value(menu->sym, dialog_input_result))
+ return;
+ show_textbox(NULL, _("You have made an invalid entry."), 5, 43);
+ break;
+ case 1:
+ show_help(menu);
+ break;
+ case KEY_ESC:
+ return;
+ }
+ }
+}
+
+static void conf_load(void)
+{
+
+ while (1) {
+ int res;
+ dialog_clear();
+ res = dialog_inputbox(NULL, load_config_text,
+ 11, 55, filename);
+ switch(res) {
+ case 0:
+ if (!dialog_input_result[0])
+ return;
+ if (!conf_read(dialog_input_result)) {
+ set_config_filename(dialog_input_result);
+ sym_set_change_count(1);
+ return;
+ }
+ show_textbox(NULL, _("File does not exist!"), 5, 38);
+ break;
+ case 1:
+ show_helptext(_("Load Alternate Configuration"), load_config_help);
+ break;
+ case KEY_ESC:
+ return;
+ }
+ }
+}
+
+static void conf_save(void)
+{
+ while (1) {
+ int res;
+ dialog_clear();
+ res = dialog_inputbox(NULL, save_config_text,
+ 11, 55, filename);
+ switch(res) {
+ case 0:
+ if (!dialog_input_result[0])
+ return;
+ if (!conf_write(dialog_input_result)) {
+ set_config_filename(dialog_input_result);
+ return;
+ }
+ show_textbox(NULL, _("Can't create file! Probably a nonexistent directory."), 5, 60);
+ break;
+ case 1:
+ show_helptext(_("Save Alternate Configuration"), save_config_help);
+ break;
+ case KEY_ESC:
+ return;
+ }
+ }
+}
+
+int main(int ac, char **av)
+{
+ int saved_x, saved_y;
+ char *mode;
+ int res;
+
+ setlocale(LC_ALL, "");
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
+ conf_parse(av[1]);
+ conf_read(NULL);
+
+ mode = getenv("MENUCONFIG_MODE");
+ if (mode) {
+ if (!strcasecmp(mode, "single_menu"))
+ single_menu_mode = 1;
+ }
+
+ getyx(stdscr, saved_y, saved_x);
+ if (init_dialog(NULL)) {
+ fprintf(stderr, N_("Your display is too small to run Menuconfig!\n"));
+ fprintf(stderr, N_("It must be at least 19 lines by 80 columns.\n"));
+ return 1;
+ }
+
+ set_config_filename(conf_get_configname());
+ do {
+ conf(&rootmenu);
+ dialog_clear();
+ if (conf_get_changed())
+ res = dialog_yesno(NULL,
+ _("Do you wish to save your "
+ "new configuration?\n"
+ "<ESC><ESC> to continue."),
+ 6, 60);
+ else
+ res = -1;
+ } while (res == KEY_ESC);
+ end_dialog(saved_x, saved_y);
+
+ switch (res) {
+ case 0:
+ if (conf_write(filename)) {
+ fprintf(stderr, _("\n\n"
+ "Error during writing of the configuration.\n"
+ "Your configuration changes were NOT saved."
+ "\n\n"));
+ return 1;
+ }
+ case -1:
+ printf(_("\n\n"
+ "*** End of configuration.\n"
+ "*** Execute 'make' to build or try 'make help'."
+ "\n\n"));
+ break;
+ default:
+ fprintf(stderr, _("\n\n"
+ "Your configuration changes were NOT saved."
+ "\n\n"));
+ }
+
+ return conf_write_autoconf();
+}
+
diff --git a/ap/build/uClibc/extra/config/menu.c b/ap/build/uClibc/extra/config/menu.c
new file mode 100644
index 0000000..07ff8d1
--- /dev/null
+++ b/ap/build/uClibc/extra/config/menu.c
@@ -0,0 +1,453 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <stdlib.h>
+#include <string.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+struct menu rootmenu;
+static struct menu **last_entry_ptr;
+
+struct file *file_list;
+struct file *current_file;
+
+void menu_warn(struct menu *menu, const char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ fprintf(stderr, "%s:%d:warning: ", menu->file->name, menu->lineno);
+ vfprintf(stderr, fmt, ap);
+ fprintf(stderr, "\n");
+ va_end(ap);
+}
+
+static void prop_warn(struct property *prop, const char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ fprintf(stderr, "%s:%d:warning: ", prop->file->name, prop->lineno);
+ vfprintf(stderr, fmt, ap);
+ fprintf(stderr, "\n");
+ va_end(ap);
+}
+
+void menu_init(void)
+{
+ current_entry = current_menu = &rootmenu;
+ last_entry_ptr = &rootmenu.list;
+}
+
+void menu_add_entry(struct symbol *sym)
+{
+ struct menu *menu;
+
+ menu = malloc(sizeof(*menu));
+ memset(menu, 0, sizeof(*menu));
+ menu->sym = sym;
+ menu->parent = current_menu;
+ menu->file = current_file;
+ menu->lineno = zconf_lineno();
+
+ *last_entry_ptr = menu;
+ last_entry_ptr = &menu->next;
+ current_entry = menu;
+}
+
+void menu_end_entry(void)
+{
+}
+
+struct menu *menu_add_menu(void)
+{
+ menu_end_entry();
+ last_entry_ptr = ¤t_entry->list;
+ return current_menu = current_entry;
+}
+
+void menu_end_menu(void)
+{
+ last_entry_ptr = ¤t_menu->next;
+ current_menu = current_menu->parent;
+}
+
+struct expr *menu_check_dep(struct expr *e)
+{
+ if (!e)
+ return e;
+
+ switch (e->type) {
+ case E_NOT:
+ e->left.expr = menu_check_dep(e->left.expr);
+ break;
+ case E_OR:
+ case E_AND:
+ e->left.expr = menu_check_dep(e->left.expr);
+ e->right.expr = menu_check_dep(e->right.expr);
+ break;
+ case E_SYMBOL:
+ /* change 'm' into 'm' && MODULES */
+ if (e->left.sym == &symbol_mod)
+ return expr_alloc_and(e, expr_alloc_symbol(modules_sym));
+ break;
+ default:
+ break;
+ }
+ return e;
+}
+
+void menu_add_dep(struct expr *dep)
+{
+ current_entry->dep = expr_alloc_and(current_entry->dep, menu_check_dep(dep));
+}
+
+void menu_set_type(int type)
+{
+ struct symbol *sym = current_entry->sym;
+
+ if (sym->type == type)
+ return;
+ if (sym->type == S_UNKNOWN) {
+ sym->type = type;
+ return;
+ }
+ menu_warn(current_entry, "type of '%s' redefined from '%s' to '%s'",
+ sym->name ? sym->name : "<choice>",
+ sym_type_name(sym->type), sym_type_name(type));
+}
+
+struct property *menu_add_prop(enum prop_type type, char *prompt, struct expr *expr, struct expr *dep)
+{
+ struct property *prop = prop_alloc(type, current_entry->sym);
+
+ prop->menu = current_entry;
+ prop->expr = expr;
+ prop->visible.expr = menu_check_dep(dep);
+
+ if (prompt) {
+ if (isspace(*prompt)) {
+ prop_warn(prop, "leading whitespace ignored");
+ while (isspace(*prompt))
+ prompt++;
+ }
+ if (current_entry->prompt)
+ prop_warn(prop, "prompt redefined");
+ current_entry->prompt = prop;
+ }
+ prop->text = prompt;
+
+ return prop;
+}
+
+struct property *menu_add_prompt(enum prop_type type, char *prompt, struct expr *dep)
+{
+ return menu_add_prop(type, prompt, NULL, dep);
+}
+
+void menu_add_expr(enum prop_type type, struct expr *expr, struct expr *dep)
+{
+ menu_add_prop(type, NULL, expr, dep);
+}
+
+void menu_add_symbol(enum prop_type type, struct symbol *sym, struct expr *dep)
+{
+ menu_add_prop(type, NULL, expr_alloc_symbol(sym), dep);
+}
+
+void menu_add_option(int token, char *arg)
+{
+ struct property *prop;
+
+ switch (token) {
+ case T_OPT_MODULES:
+ prop = prop_alloc(P_DEFAULT, modules_sym);
+ prop->expr = expr_alloc_symbol(current_entry->sym);
+ break;
+ case T_OPT_DEFCONFIG_LIST:
+ if (!sym_defconfig_list)
+ sym_defconfig_list = current_entry->sym;
+ else if (sym_defconfig_list != current_entry->sym)
+ zconf_error("trying to redefine defconfig symbol");
+ break;
+ case T_OPT_ENV:
+ prop_add_env(arg);
+ break;
+ }
+}
+
+static int menu_range_valid_sym(struct symbol *sym, struct symbol *sym2)
+{
+ return sym2->type == S_INT || sym2->type == S_HEX ||
+ (sym2->type == S_UNKNOWN && sym_string_valid(sym, sym2->name));
+}
+
+void sym_check_prop(struct symbol *sym)
+{
+ struct property *prop;
+ struct symbol *sym2;
+ for (prop = sym->prop; prop; prop = prop->next) {
+ switch (prop->type) {
+ case P_DEFAULT:
+ if ((sym->type == S_STRING || sym->type == S_INT || sym->type == S_HEX) &&
+ prop->expr->type != E_SYMBOL)
+ prop_warn(prop,
+ "default for config symbol '%'"
+ " must be a single symbol", sym->name);
+ break;
+ case P_SELECT:
+ sym2 = prop_get_symbol(prop);
+ if (sym->type != S_BOOLEAN && sym->type != S_TRISTATE)
+ prop_warn(prop,
+ "config symbol '%s' uses select, but is "
+ "not boolean or tristate", sym->name);
+ else if (sym2->type != S_UNKNOWN &&
+ sym2->type != S_BOOLEAN &&
+ sym2->type != S_TRISTATE)
+ prop_warn(prop,
+ "'%s' has wrong type. 'select' only "
+ "accept arguments of boolean and "
+ "tristate type", sym2->name);
+ break;
+ case P_RANGE:
+ if (sym->type != S_INT && sym->type != S_HEX)
+ prop_warn(prop, "range is only allowed "
+ "for int or hex symbols");
+ if (!menu_range_valid_sym(sym, prop->expr->left.sym) ||
+ !menu_range_valid_sym(sym, prop->expr->right.sym))
+ prop_warn(prop, "range is invalid");
+ break;
+ default:
+ ;
+ }
+ }
+}
+
+void menu_finalize(struct menu *parent)
+{
+ struct menu *menu, *last_menu;
+ struct symbol *sym;
+ struct property *prop;
+ struct expr *parentdep, *basedep, *dep, *dep2, **ep;
+
+ sym = parent->sym;
+ if (parent->list) {
+ if (sym && sym_is_choice(sym)) {
+ if (sym->type == S_UNKNOWN) {
+ /* find the first choice value to find out choice type */
+ current_entry = parent;
+ for (menu = parent->list; menu; menu = menu->next) {
+ if (menu->sym && menu->sym->type != S_UNKNOWN) {
+ menu_set_type(menu->sym->type);
+ break;
+ }
+ }
+ }
+ /* set the type of the remaining choice values */
+ for (menu = parent->list; menu; menu = menu->next) {
+ current_entry = menu;
+ if (menu->sym && menu->sym->type == S_UNKNOWN)
+ menu_set_type(sym->type);
+ }
+ parentdep = expr_alloc_symbol(sym);
+ } else if (parent->prompt)
+ parentdep = parent->prompt->visible.expr;
+ else
+ parentdep = parent->dep;
+
+ for (menu = parent->list; menu; menu = menu->next) {
+ basedep = expr_transform(menu->dep);
+ basedep = expr_alloc_and(expr_copy(parentdep), basedep);
+ basedep = expr_eliminate_dups(basedep);
+ menu->dep = basedep;
+ if (menu->sym)
+ prop = menu->sym->prop;
+ else
+ prop = menu->prompt;
+ for (; prop; prop = prop->next) {
+ if (prop->menu != menu)
+ continue;
+ dep = expr_transform(prop->visible.expr);
+ dep = expr_alloc_and(expr_copy(basedep), dep);
+ dep = expr_eliminate_dups(dep);
+ if (menu->sym && menu->sym->type != S_TRISTATE)
+ dep = expr_trans_bool(dep);
+ prop->visible.expr = dep;
+ if (prop->type == P_SELECT) {
+ struct symbol *es = prop_get_symbol(prop);
+ es->rev_dep.expr = expr_alloc_or(es->rev_dep.expr,
+ expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep)));
+ }
+ }
+ }
+ for (menu = parent->list; menu; menu = menu->next)
+ menu_finalize(menu);
+ } else if (sym) {
+ basedep = parent->prompt ? parent->prompt->visible.expr : NULL;
+ basedep = expr_trans_compare(basedep, E_UNEQUAL, &symbol_no);
+ basedep = expr_eliminate_dups(expr_transform(basedep));
+ last_menu = NULL;
+ for (menu = parent->next; menu; menu = menu->next) {
+ dep = menu->prompt ? menu->prompt->visible.expr : menu->dep;
+ if (!expr_contains_symbol(dep, sym))
+ break;
+ if (expr_depends_symbol(dep, sym))
+ goto next;
+ dep = expr_trans_compare(dep, E_UNEQUAL, &symbol_no);
+ dep = expr_eliminate_dups(expr_transform(dep));
+ dep2 = expr_copy(basedep);
+ expr_eliminate_eq(&dep, &dep2);
+ expr_free(dep);
+ if (!expr_is_yes(dep2)) {
+ expr_free(dep2);
+ break;
+ }
+ expr_free(dep2);
+ next:
+ menu_finalize(menu);
+ menu->parent = parent;
+ last_menu = menu;
+ }
+ if (last_menu) {
+ parent->list = parent->next;
+ parent->next = last_menu->next;
+ last_menu->next = NULL;
+ }
+ }
+ for (menu = parent->list; menu; menu = menu->next) {
+ if (sym && sym_is_choice(sym) &&
+ menu->sym && !sym_is_choice_value(menu->sym)) {
+ current_entry = menu;
+ menu->sym->flags |= SYMBOL_CHOICEVAL;
+ if (!menu->prompt)
+ menu_warn(menu, "choice value must have a prompt");
+ for (prop = menu->sym->prop; prop; prop = prop->next) {
+ if (prop->type == P_DEFAULT)
+ prop_warn(prop, "defaults for choice "
+ "values not supported");
+ if (prop->menu == menu)
+ continue;
+ if (prop->type == P_PROMPT &&
+ prop->menu->parent->sym != sym)
+ prop_warn(prop, "choice value used outside its choice group");
+ }
+ /* Non-tristate choice values of tristate choices must
+ * depend on the choice being set to Y. The choice
+ * values' dependencies were propagated to their
+ * properties above, so the change here must be re-
+ * propagated.
+ */
+ if (sym->type == S_TRISTATE && menu->sym->type != S_TRISTATE) {
+ basedep = expr_alloc_comp(E_EQUAL, sym, &symbol_yes);
+ menu->dep = expr_alloc_and(basedep, menu->dep);
+ for (prop = menu->sym->prop; prop; prop = prop->next) {
+ if (prop->menu != menu)
+ continue;
+ prop->visible.expr = expr_alloc_and(expr_copy(basedep),
+ prop->visible.expr);
+ }
+ }
+ menu_add_symbol(P_CHOICE, sym, NULL);
+ prop = sym_get_choice_prop(sym);
+ for (ep = &prop->expr; *ep; ep = &(*ep)->left.expr)
+ ;
+ *ep = expr_alloc_one(E_LIST, NULL);
+ (*ep)->right.sym = menu->sym;
+ }
+ if (menu->list && (!menu->prompt || !menu->prompt->text)) {
+ for (last_menu = menu->list; ; last_menu = last_menu->next) {
+ last_menu->parent = parent;
+ if (!last_menu->next)
+ break;
+ }
+ last_menu->next = menu->next;
+ menu->next = menu->list;
+ menu->list = NULL;
+ }
+ }
+
+ if (sym && !(sym->flags & SYMBOL_WARNED)) {
+ if (sym->type == S_UNKNOWN)
+ menu_warn(parent, "config symbol defined without type");
+
+ if (sym_is_choice(sym) && !parent->prompt)
+ menu_warn(parent, "choice must have a prompt");
+
+ /* Check properties connected to this symbol */
+ sym_check_prop(sym);
+ sym->flags |= SYMBOL_WARNED;
+ }
+
+ if (sym && !sym_is_optional(sym) && parent->prompt) {
+ sym->rev_dep.expr = expr_alloc_or(sym->rev_dep.expr,
+ expr_alloc_and(parent->prompt->visible.expr,
+ expr_alloc_symbol(&symbol_mod)));
+ }
+}
+
+bool menu_is_visible(struct menu *menu)
+{
+ struct menu *child;
+ struct symbol *sym;
+ tristate visible;
+
+ if (!menu->prompt)
+ return false;
+ sym = menu->sym;
+ if (sym) {
+ sym_calc_value(sym);
+ visible = menu->prompt->visible.tri;
+ } else
+ visible = menu->prompt->visible.tri = expr_calc_value(menu->prompt->visible.expr);
+
+ if (visible != no)
+ return true;
+ if (!sym || sym_get_tristate_value(menu->sym) == no)
+ return false;
+
+ for (child = menu->list; child; child = child->next)
+ if (menu_is_visible(child))
+ return true;
+ return false;
+}
+
+const char *menu_get_prompt(struct menu *menu)
+{
+ if (menu->prompt)
+ return menu->prompt->text;
+ else if (menu->sym)
+ return menu->sym->name;
+ return NULL;
+}
+
+struct menu *menu_get_root_menu(struct menu *menu)
+{
+ return &rootmenu;
+}
+
+struct menu *menu_get_parent_menu(struct menu *menu)
+{
+ enum prop_type type;
+
+ for (; menu != &rootmenu; menu = menu->parent) {
+ type = menu->prompt ? menu->prompt->type : 0;
+ if (type == P_MENU)
+ break;
+ }
+ return menu;
+}
+
+bool menu_has_help(struct menu *menu)
+{
+ return menu->help != NULL;
+}
+
+const char *menu_get_help(struct menu *menu)
+{
+ if (menu->help)
+ return menu->help;
+ else
+ return "";
+}
diff --git a/ap/build/uClibc/extra/config/qconf.cc b/ap/build/uClibc/extra/config/qconf.cc
new file mode 100644
index 0000000..ec89fd7
--- /dev/null
+++ b/ap/build/uClibc/extra/config/qconf.cc
@@ -0,0 +1,1759 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <qapplication.h>
+#include <qmainwindow.h>
+#include <qtoolbar.h>
+#include <qlayout.h>
+#include <qvbox.h>
+#include <qsplitter.h>
+#include <qlistview.h>
+#include <qtextbrowser.h>
+#include <qlineedit.h>
+#include <qlabel.h>
+#include <qpushbutton.h>
+#include <qmenubar.h>
+#include <qmessagebox.h>
+#include <qaction.h>
+#include <qheader.h>
+#include <qfiledialog.h>
+#include <qdragobject.h>
+#include <qregexp.h>
+
+#include <stdlib.h>
+
+#include "lkc.h"
+#include "qconf.h"
+
+#include "qconf.moc"
+#include "images.c"
+
+#ifdef _
+# undef _
+# define _ qgettext
+#endif
+
+static QApplication *configApp;
+static ConfigSettings *configSettings;
+
+QAction *ConfigMainWindow::saveAction;
+
+static inline QString qgettext(const char* str)
+{
+ return QString::fromLocal8Bit(gettext(str));
+}
+
+static inline QString qgettext(const QString& str)
+{
+ return QString::fromLocal8Bit(gettext(str.latin1()));
+}
+
+/**
+ * Reads a list of integer values from the application settings.
+ */
+QValueList<int> ConfigSettings::readSizes(const QString& key, bool *ok)
+{
+ QValueList<int> result;
+ QStringList entryList = readListEntry(key, ok);
+ if (ok) {
+ QStringList::Iterator it;
+ for (it = entryList.begin(); it != entryList.end(); ++it)
+ result.push_back((*it).toInt());
+ }
+
+ return result;
+}
+
+/**
+ * Writes a list of integer values to the application settings.
+ */
+bool ConfigSettings::writeSizes(const QString& key, const QValueList<int>& value)
+{
+ QStringList stringList;
+ QValueList<int>::ConstIterator it;
+
+ for (it = value.begin(); it != value.end(); ++it)
+ stringList.push_back(QString::number(*it));
+ return writeEntry(key, stringList);
+}
+
+
+#if QT_VERSION >= 300
+/*
+ * set the new data
+ * TODO check the value
+ */
+void ConfigItem::okRename(int col)
+{
+ Parent::okRename(col);
+ sym_set_string_value(menu->sym, text(dataColIdx).latin1());
+ listView()->updateList(this);
+}
+#endif
+
+/*
+ * update the displayed of a menu entry
+ */
+void ConfigItem::updateMenu(void)
+{
+ ConfigList* list;
+ struct symbol* sym;
+ struct property *prop;
+ QString prompt;
+ int type;
+ tristate expr;
+
+ list = listView();
+ if (goParent) {
+ setPixmap(promptColIdx, list->menuBackPix);
+ prompt = "..";
+ goto set_prompt;
+ }
+
+ sym = menu->sym;
+ prop = menu->prompt;
+ prompt = _(menu_get_prompt(menu));
+
+ if (prop) switch (prop->type) {
+ case P_MENU:
+ if (list->mode == singleMode || list->mode == symbolMode) {
+ /* a menuconfig entry is displayed differently
+ * depending whether it's at the view root or a child.
+ */
+ if (sym && list->rootEntry == menu)
+ break;
+ setPixmap(promptColIdx, list->menuPix);
+ } else {
+ if (sym)
+ break;
+ setPixmap(promptColIdx, 0);
+ }
+ goto set_prompt;
+ case P_COMMENT:
+ setPixmap(promptColIdx, 0);
+ goto set_prompt;
+ default:
+ ;
+ }
+ if (!sym)
+ goto set_prompt;
+
+ setText(nameColIdx, QString::fromLocal8Bit(sym->name));
+
+ type = sym_get_type(sym);
+ switch (type) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ char ch;
+
+ if (!sym_is_changable(sym) && !list->showAll) {
+ setPixmap(promptColIdx, 0);
+ setText(noColIdx, QString::null);
+ setText(modColIdx, QString::null);
+ setText(yesColIdx, QString::null);
+ break;
+ }
+ expr = sym_get_tristate_value(sym);
+ switch (expr) {
+ case yes:
+ if (sym_is_choice_value(sym) && type == S_BOOLEAN)
+ setPixmap(promptColIdx, list->choiceYesPix);
+ else
+ setPixmap(promptColIdx, list->symbolYesPix);
+ setText(yesColIdx, "Y");
+ ch = 'Y';
+ break;
+ case mod:
+ setPixmap(promptColIdx, list->symbolModPix);
+ setText(modColIdx, "M");
+ ch = 'M';
+ break;
+ default:
+ if (sym_is_choice_value(sym) && type == S_BOOLEAN)
+ setPixmap(promptColIdx, list->choiceNoPix);
+ else
+ setPixmap(promptColIdx, list->symbolNoPix);
+ setText(noColIdx, "N");
+ ch = 'N';
+ break;
+ }
+ if (expr != no)
+ setText(noColIdx, sym_tristate_within_range(sym, no) ? "_" : 0);
+ if (expr != mod)
+ setText(modColIdx, sym_tristate_within_range(sym, mod) ? "_" : 0);
+ if (expr != yes)
+ setText(yesColIdx, sym_tristate_within_range(sym, yes) ? "_" : 0);
+
+ setText(dataColIdx, QChar(ch));
+ break;
+ case S_INT:
+ case S_HEX:
+ case S_STRING:
+ const char* data;
+
+ data = sym_get_string_value(sym);
+
+#if QT_VERSION >= 300
+ int i = list->mapIdx(dataColIdx);
+ if (i >= 0)
+ setRenameEnabled(i, TRUE);
+#endif
+ setText(dataColIdx, data);
+ if (type == S_STRING)
+ prompt = QString("%1: %2").arg(prompt).arg(data);
+ else
+ prompt = QString("(%2) %1").arg(prompt).arg(data);
+ break;
+ }
+ if (!sym_has_value(sym) && visible)
+ prompt += _(" (NEW)");
+set_prompt:
+ setText(promptColIdx, prompt);
+}
+
+void ConfigItem::testUpdateMenu(bool v)
+{
+ ConfigItem* i;
+
+ visible = v;
+ if (!menu)
+ return;
+
+ sym_calc_value(menu->sym);
+ if (menu->flags & MENU_CHANGED) {
+ /* the menu entry changed, so update all list items */
+ menu->flags &= ~MENU_CHANGED;
+ for (i = (ConfigItem*)menu->data; i; i = i->nextItem)
+ i->updateMenu();
+ } else if (listView()->updateAll)
+ updateMenu();
+}
+
+void ConfigItem::paintCell(QPainter* p, const QColorGroup& cg, int column, int width, int align)
+{
+ ConfigList* list = listView();
+
+ if (visible) {
+ if (isSelected() && !list->hasFocus() && list->mode == menuMode)
+ Parent::paintCell(p, list->inactivedColorGroup, column, width, align);
+ else
+ Parent::paintCell(p, cg, column, width, align);
+ } else
+ Parent::paintCell(p, list->disabledColorGroup, column, width, align);
+}
+
+/*
+ * construct a menu entry
+ */
+void ConfigItem::init(void)
+{
+ if (menu) {
+ ConfigList* list = listView();
+ nextItem = (ConfigItem*)menu->data;
+ menu->data = this;
+
+ if (list->mode != fullMode)
+ setOpen(TRUE);
+ sym_calc_value(menu->sym);
+ }
+ updateMenu();
+}
+
+/*
+ * destruct a menu entry
+ */
+ConfigItem::~ConfigItem(void)
+{
+ if (menu) {
+ ConfigItem** ip = (ConfigItem**)&menu->data;
+ for (; *ip; ip = &(*ip)->nextItem) {
+ if (*ip == this) {
+ *ip = nextItem;
+ break;
+ }
+ }
+ }
+}
+
+ConfigLineEdit::ConfigLineEdit(ConfigView* parent)
+ : Parent(parent)
+{
+ connect(this, SIGNAL(lostFocus()), SLOT(hide()));
+}
+
+void ConfigLineEdit::show(ConfigItem* i)
+{
+ item = i;
+ if (sym_get_string_value(item->menu->sym))
+ setText(QString::fromLocal8Bit(sym_get_string_value(item->menu->sym)));
+ else
+ setText(QString::null);
+ Parent::show();
+ setFocus();
+}
+
+void ConfigLineEdit::keyPressEvent(QKeyEvent* e)
+{
+ switch (e->key()) {
+ case Key_Escape:
+ break;
+ case Key_Return:
+ case Key_Enter:
+ sym_set_string_value(item->menu->sym, text().latin1());
+ parent()->updateList(item);
+ break;
+ default:
+ Parent::keyPressEvent(e);
+ return;
+ }
+ e->accept();
+ parent()->list->setFocus();
+ hide();
+}
+
+ConfigList::ConfigList(ConfigView* p, const char *name)
+ : Parent(p, name),
+ updateAll(false),
+ symbolYesPix(xpm_symbol_yes), symbolModPix(xpm_symbol_mod), symbolNoPix(xpm_symbol_no),
+ choiceYesPix(xpm_choice_yes), choiceNoPix(xpm_choice_no),
+ menuPix(xpm_menu), menuInvPix(xpm_menu_inv), menuBackPix(xpm_menuback), voidPix(xpm_void),
+ showAll(false), showName(false), showRange(false), showData(false),
+ rootEntry(0), headerPopup(0)
+{
+ int i;
+
+ setSorting(-1);
+ setRootIsDecorated(TRUE);
+ disabledColorGroup = palette().active();
+ disabledColorGroup.setColor(QColorGroup::Text, palette().disabled().text());
+ inactivedColorGroup = palette().active();
+ inactivedColorGroup.setColor(QColorGroup::Highlight, palette().disabled().highlight());
+
+ connect(this, SIGNAL(selectionChanged(void)),
+ SLOT(updateSelection(void)));
+
+ if (name) {
+ configSettings->beginGroup(name);
+ showAll = configSettings->readBoolEntry("/showAll", false);
+ showName = configSettings->readBoolEntry("/showName", false);
+ showRange = configSettings->readBoolEntry("/showRange", false);
+ showData = configSettings->readBoolEntry("/showData", false);
+ configSettings->endGroup();
+ connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings()));
+ }
+
+ for (i = 0; i < colNr; i++)
+ colMap[i] = colRevMap[i] = -1;
+ addColumn(promptColIdx, _("Option"));
+
+ reinit();
+}
+
+void ConfigList::reinit(void)
+{
+ removeColumn(dataColIdx);
+ removeColumn(yesColIdx);
+ removeColumn(modColIdx);
+ removeColumn(noColIdx);
+ removeColumn(nameColIdx);
+
+ if (showName)
+ addColumn(nameColIdx, _("Name"));
+ if (showRange) {
+ addColumn(noColIdx, "N");
+ addColumn(modColIdx, "M");
+ addColumn(yesColIdx, "Y");
+ }
+ if (showData)
+ addColumn(dataColIdx, _("Value"));
+
+ updateListAll();
+}
+
+void ConfigList::saveSettings(void)
+{
+ if (name()) {
+ configSettings->beginGroup(name());
+ configSettings->writeEntry("/showName", showName);
+ configSettings->writeEntry("/showRange", showRange);
+ configSettings->writeEntry("/showData", showData);
+ configSettings->writeEntry("/showAll", showAll);
+ configSettings->endGroup();
+ }
+}
+
+ConfigItem* ConfigList::findConfigItem(struct menu *menu)
+{
+ ConfigItem* item = (ConfigItem*)menu->data;
+
+ for (; item; item = item->nextItem) {
+ if (this == item->listView())
+ break;
+ }
+
+ return item;
+}
+
+void ConfigList::updateSelection(void)
+{
+ struct menu *menu;
+ enum prop_type type;
+
+ ConfigItem* item = (ConfigItem*)selectedItem();
+ if (!item)
+ return;
+
+ menu = item->menu;
+ emit menuChanged(menu);
+ if (!menu)
+ return;
+ type = menu->prompt ? menu->prompt->type : P_UNKNOWN;
+ if (mode == menuMode && type == P_MENU)
+ emit menuSelected(menu);
+}
+
+void ConfigList::updateList(ConfigItem* item)
+{
+ ConfigItem* last = 0;
+
+ if (!rootEntry) {
+ if (mode != listMode)
+ goto update;
+ QListViewItemIterator it(this);
+ ConfigItem* item;
+
+ for (; it.current(); ++it) {
+ item = (ConfigItem*)it.current();
+ if (!item->menu)
+ continue;
+ item->testUpdateMenu(menu_is_visible(item->menu));
+ }
+ return;
+ }
+
+ if (rootEntry != &rootmenu && (mode == singleMode ||
+ (mode == symbolMode && rootEntry->parent != &rootmenu))) {
+ item = firstChild();
+ if (!item)
+ item = new ConfigItem(this, 0, true);
+ last = item;
+ }
+ if ((mode == singleMode || (mode == symbolMode && !(rootEntry->flags & MENU_ROOT))) &&
+ rootEntry->sym && rootEntry->prompt) {
+ item = last ? last->nextSibling() : firstChild();
+ if (!item)
+ item = new ConfigItem(this, last, rootEntry, true);
+ else
+ item->testUpdateMenu(true);
+
+ updateMenuList(item, rootEntry);
+ triggerUpdate();
+ return;
+ }
+update:
+ updateMenuList(this, rootEntry);
+ triggerUpdate();
+}
+
+void ConfigList::setValue(ConfigItem* item, tristate val)
+{
+ struct symbol* sym;
+ int type;
+ tristate oldval;
+
+ sym = item->menu ? item->menu->sym : 0;
+ if (!sym)
+ return;
+
+ type = sym_get_type(sym);
+ switch (type) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ oldval = sym_get_tristate_value(sym);
+
+ if (!sym_set_tristate_value(sym, val))
+ return;
+ if (oldval == no && item->menu->list)
+ item->setOpen(TRUE);
+ parent()->updateList(item);
+ break;
+ }
+}
+
+void ConfigList::changeValue(ConfigItem* item)
+{
+ struct symbol* sym;
+ struct menu* menu;
+ int type, oldexpr, newexpr;
+
+ menu = item->menu;
+ if (!menu)
+ return;
+ sym = menu->sym;
+ if (!sym) {
+ if (item->menu->list)
+ item->setOpen(!item->isOpen());
+ return;
+ }
+
+ type = sym_get_type(sym);
+ switch (type) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ oldexpr = sym_get_tristate_value(sym);
+ newexpr = sym_toggle_tristate_value(sym);
+ if (item->menu->list) {
+ if (oldexpr == newexpr)
+ item->setOpen(!item->isOpen());
+ else if (oldexpr == no)
+ item->setOpen(TRUE);
+ }
+ if (oldexpr != newexpr)
+ parent()->updateList(item);
+ break;
+ case S_INT:
+ case S_HEX:
+ case S_STRING:
+#if QT_VERSION >= 300
+ if (colMap[dataColIdx] >= 0)
+ item->startRename(colMap[dataColIdx]);
+ else
+#endif
+ parent()->lineEdit->show(item);
+ break;
+ }
+}
+
+void ConfigList::setRootMenu(struct menu *menu)
+{
+ enum prop_type type;
+
+ if (rootEntry == menu)
+ return;
+ type = menu && menu->prompt ? menu->prompt->type : P_UNKNOWN;
+ if (type != P_MENU)
+ return;
+ updateMenuList(this, 0);
+ rootEntry = menu;
+ updateListAll();
+ setSelected(currentItem(), hasFocus());
+ ensureItemVisible(currentItem());
+}
+
+void ConfigList::setParentMenu(void)
+{
+ ConfigItem* item;
+ struct menu *oldroot;
+
+ oldroot = rootEntry;
+ if (rootEntry == &rootmenu)
+ return;
+ setRootMenu(menu_get_parent_menu(rootEntry->parent));
+
+ QListViewItemIterator it(this);
+ for (; (item = (ConfigItem*)it.current()); it++) {
+ if (item->menu == oldroot) {
+ setCurrentItem(item);
+ ensureItemVisible(item);
+ break;
+ }
+ }
+}
+
+/*
+ * update all the children of a menu entry
+ * removes/adds the entries from the parent widget as necessary
+ *
+ * parent: either the menu list widget or a menu entry widget
+ * menu: entry to be updated
+ */
+template <class P>
+void ConfigList::updateMenuList(P* parent, struct menu* menu)
+{
+ struct menu* child;
+ ConfigItem* item;
+ ConfigItem* last;
+ bool visible;
+ enum prop_type type;
+
+ if (!menu) {
+ while ((item = parent->firstChild()))
+ delete item;
+ return;
+ }
+
+ last = parent->firstChild();
+ if (last && !last->goParent)
+ last = 0;
+ for (child = menu->list; child; child = child->next) {
+ item = last ? last->nextSibling() : parent->firstChild();
+ type = child->prompt ? child->prompt->type : P_UNKNOWN;
+
+ switch (mode) {
+ case menuMode:
+ if (!(child->flags & MENU_ROOT))
+ goto hide;
+ break;
+ case symbolMode:
+ if (child->flags & MENU_ROOT)
+ goto hide;
+ break;
+ default:
+ break;
+ }
+
+ visible = menu_is_visible(child);
+ if (showAll || visible) {
+ if (!child->sym && !child->list && !child->prompt)
+ continue;
+ if (!item || item->menu != child)
+ item = new ConfigItem(parent, last, child, visible);
+ else
+ item->testUpdateMenu(visible);
+
+ if (mode == fullMode || mode == menuMode || type != P_MENU)
+ updateMenuList(item, child);
+ else
+ updateMenuList(item, 0);
+ last = item;
+ continue;
+ }
+ hide:
+ if (item && item->menu == child) {
+ last = parent->firstChild();
+ if (last == item)
+ last = 0;
+ else while (last->nextSibling() != item)
+ last = last->nextSibling();
+ delete item;
+ }
+ }
+}
+
+void ConfigList::keyPressEvent(QKeyEvent* ev)
+{
+ QListViewItem* i = currentItem();
+ ConfigItem* item;
+ struct menu *menu;
+ enum prop_type type;
+
+ if (ev->key() == Key_Escape && mode != fullMode && mode != listMode) {
+ emit parentSelected();
+ ev->accept();
+ return;
+ }
+
+ if (!i) {
+ Parent::keyPressEvent(ev);
+ return;
+ }
+ item = (ConfigItem*)i;
+
+ switch (ev->key()) {
+ case Key_Return:
+ case Key_Enter:
+ if (item->goParent) {
+ emit parentSelected();
+ break;
+ }
+ menu = item->menu;
+ if (!menu)
+ break;
+ type = menu->prompt ? menu->prompt->type : P_UNKNOWN;
+ if (type == P_MENU && rootEntry != menu &&
+ mode != fullMode && mode != menuMode) {
+ emit menuSelected(menu);
+ break;
+ }
+ case Key_Space:
+ changeValue(item);
+ break;
+ case Key_N:
+ setValue(item, no);
+ break;
+ case Key_M:
+ setValue(item, mod);
+ break;
+ case Key_Y:
+ setValue(item, yes);
+ break;
+ default:
+ Parent::keyPressEvent(ev);
+ return;
+ }
+ ev->accept();
+}
+
+void ConfigList::contentsMousePressEvent(QMouseEvent* e)
+{
+ //QPoint p(contentsToViewport(e->pos()));
+ //printf("contentsMousePressEvent: %d,%d\n", p.x(), p.y());
+ Parent::contentsMousePressEvent(e);
+}
+
+void ConfigList::contentsMouseReleaseEvent(QMouseEvent* e)
+{
+ QPoint p(contentsToViewport(e->pos()));
+ ConfigItem* item = (ConfigItem*)itemAt(p);
+ struct menu *menu;
+ enum prop_type ptype;
+ const QPixmap* pm;
+ int idx, x;
+
+ if (!item)
+ goto skip;
+
+ menu = item->menu;
+ x = header()->offset() + p.x();
+ idx = colRevMap[header()->sectionAt(x)];
+ switch (idx) {
+ case promptColIdx:
+ pm = item->pixmap(promptColIdx);
+ if (pm) {
+ int off = header()->sectionPos(0) + itemMargin() +
+ treeStepSize() * (item->depth() + (rootIsDecorated() ? 1 : 0));
+ if (x >= off && x < off + pm->width()) {
+ if (item->goParent) {
+ emit parentSelected();
+ break;
+ } else if (!menu)
+ break;
+ ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN;
+ if (ptype == P_MENU && rootEntry != menu &&
+ mode != fullMode && mode != menuMode)
+ emit menuSelected(menu);
+ else
+ changeValue(item);
+ }
+ }
+ break;
+ case noColIdx:
+ setValue(item, no);
+ break;
+ case modColIdx:
+ setValue(item, mod);
+ break;
+ case yesColIdx:
+ setValue(item, yes);
+ break;
+ case dataColIdx:
+ changeValue(item);
+ break;
+ }
+
+skip:
+ //printf("contentsMouseReleaseEvent: %d,%d\n", p.x(), p.y());
+ Parent::contentsMouseReleaseEvent(e);
+}
+
+void ConfigList::contentsMouseMoveEvent(QMouseEvent* e)
+{
+ //QPoint p(contentsToViewport(e->pos()));
+ //printf("contentsMouseMoveEvent: %d,%d\n", p.x(), p.y());
+ Parent::contentsMouseMoveEvent(e);
+}
+
+void ConfigList::contentsMouseDoubleClickEvent(QMouseEvent* e)
+{
+ QPoint p(contentsToViewport(e->pos()));
+ ConfigItem* item = (ConfigItem*)itemAt(p);
+ struct menu *menu;
+ enum prop_type ptype;
+
+ if (!item)
+ goto skip;
+ if (item->goParent) {
+ emit parentSelected();
+ goto skip;
+ }
+ menu = item->menu;
+ if (!menu)
+ goto skip;
+ ptype = menu->prompt ? menu->prompt->type : P_UNKNOWN;
+ if (ptype == P_MENU && (mode == singleMode || mode == symbolMode))
+ emit menuSelected(menu);
+ else if (menu->sym)
+ changeValue(item);
+
+skip:
+ //printf("contentsMouseDoubleClickEvent: %d,%d\n", p.x(), p.y());
+ Parent::contentsMouseDoubleClickEvent(e);
+}
+
+void ConfigList::focusInEvent(QFocusEvent *e)
+{
+ struct menu *menu = NULL;
+
+ Parent::focusInEvent(e);
+
+ ConfigItem* item = (ConfigItem *)currentItem();
+ if (item) {
+ setSelected(item, TRUE);
+ menu = item->menu;
+ }
+ emit gotFocus(menu);
+}
+
+void ConfigList::contextMenuEvent(QContextMenuEvent *e)
+{
+ if (e->y() <= header()->geometry().bottom()) {
+ if (!headerPopup) {
+ QAction *action;
+
+ headerPopup = new QPopupMenu(this);
+ action = new QAction(NULL, _("Show Name"), 0, this);
+ action->setToggleAction(TRUE);
+ connect(action, SIGNAL(toggled(bool)),
+ parent(), SLOT(setShowName(bool)));
+ connect(parent(), SIGNAL(showNameChanged(bool)),
+ action, SLOT(setOn(bool)));
+ action->setOn(showName);
+ action->addTo(headerPopup);
+ action = new QAction(NULL, _("Show Range"), 0, this);
+ action->setToggleAction(TRUE);
+ connect(action, SIGNAL(toggled(bool)),
+ parent(), SLOT(setShowRange(bool)));
+ connect(parent(), SIGNAL(showRangeChanged(bool)),
+ action, SLOT(setOn(bool)));
+ action->setOn(showRange);
+ action->addTo(headerPopup);
+ action = new QAction(NULL, _("Show Data"), 0, this);
+ action->setToggleAction(TRUE);
+ connect(action, SIGNAL(toggled(bool)),
+ parent(), SLOT(setShowData(bool)));
+ connect(parent(), SIGNAL(showDataChanged(bool)),
+ action, SLOT(setOn(bool)));
+ action->setOn(showData);
+ action->addTo(headerPopup);
+ }
+ headerPopup->exec(e->globalPos());
+ e->accept();
+ } else
+ e->ignore();
+}
+
+ConfigView* ConfigView::viewList;
+
+ConfigView::ConfigView(QWidget* parent, const char *name)
+ : Parent(parent, name)
+{
+ list = new ConfigList(this, name);
+ lineEdit = new ConfigLineEdit(this);
+ lineEdit->hide();
+
+ this->nextView = viewList;
+ viewList = this;
+}
+
+ConfigView::~ConfigView(void)
+{
+ ConfigView** vp;
+
+ for (vp = &viewList; *vp; vp = &(*vp)->nextView) {
+ if (*vp == this) {
+ *vp = nextView;
+ break;
+ }
+ }
+}
+
+void ConfigView::setShowAll(bool b)
+{
+ if (list->showAll != b) {
+ list->showAll = b;
+ list->updateListAll();
+ emit showAllChanged(b);
+ }
+}
+
+void ConfigView::setShowName(bool b)
+{
+ if (list->showName != b) {
+ list->showName = b;
+ list->reinit();
+ emit showNameChanged(b);
+ }
+}
+
+void ConfigView::setShowRange(bool b)
+{
+ if (list->showRange != b) {
+ list->showRange = b;
+ list->reinit();
+ emit showRangeChanged(b);
+ }
+}
+
+void ConfigView::setShowData(bool b)
+{
+ if (list->showData != b) {
+ list->showData = b;
+ list->reinit();
+ emit showDataChanged(b);
+ }
+}
+
+void ConfigList::setAllOpen(bool open)
+{
+ QListViewItemIterator it(this);
+
+ for (; it.current(); it++)
+ it.current()->setOpen(open);
+}
+
+void ConfigView::updateList(ConfigItem* item)
+{
+ ConfigView* v;
+
+ for (v = viewList; v; v = v->nextView)
+ v->list->updateList(item);
+}
+
+void ConfigView::updateListAll(void)
+{
+ ConfigView* v;
+
+ for (v = viewList; v; v = v->nextView)
+ v->list->updateListAll();
+}
+
+ConfigInfoView::ConfigInfoView(QWidget* parent, const char *name)
+ : Parent(parent, name), menu(0), sym(0)
+{
+ if (name) {
+ configSettings->beginGroup(name);
+ _showDebug = configSettings->readBoolEntry("/showDebug", false);
+ configSettings->endGroup();
+ connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings()));
+ }
+}
+
+void ConfigInfoView::saveSettings(void)
+{
+ if (name()) {
+ configSettings->beginGroup(name());
+ configSettings->writeEntry("/showDebug", showDebug());
+ configSettings->endGroup();
+ }
+}
+
+void ConfigInfoView::setShowDebug(bool b)
+{
+ if (_showDebug != b) {
+ _showDebug = b;
+ if (menu)
+ menuInfo();
+ else if (sym)
+ symbolInfo();
+ emit showDebugChanged(b);
+ }
+}
+
+void ConfigInfoView::setInfo(struct menu *m)
+{
+ if (menu == m)
+ return;
+ menu = m;
+ sym = NULL;
+ if (!menu)
+ clear();
+ else
+ menuInfo();
+}
+
+void ConfigInfoView::setSource(const QString& name)
+{
+ const char *p = name.latin1();
+
+ menu = NULL;
+ sym = NULL;
+
+ switch (p[0]) {
+ case 'm':
+ struct menu *m;
+
+ if (sscanf(p, "m%p", &m) == 1 && menu != m) {
+ menu = m;
+ menuInfo();
+ emit menuSelected(menu);
+ }
+ break;
+ case 's':
+ struct symbol *s;
+
+ if (sscanf(p, "s%p", &s) == 1 && sym != s) {
+ sym = s;
+ symbolInfo();
+ }
+ break;
+ }
+}
+
+void ConfigInfoView::symbolInfo(void)
+{
+ QString str;
+
+ str += "<big>Symbol: <b>";
+ str += print_filter(sym->name);
+ str += "</b></big><br><br>value: ";
+ str += print_filter(sym_get_string_value(sym));
+ str += "<br>visibility: ";
+ str += sym->visible == yes ? "y" : sym->visible == mod ? "m" : "n";
+ str += "<br>";
+ str += debug_info(sym);
+
+ setText(str);
+}
+
+void ConfigInfoView::menuInfo(void)
+{
+ struct symbol* sym;
+ QString head, debug, help;
+
+ sym = menu->sym;
+ if (sym) {
+ if (menu->prompt) {
+ head += "<big><b>";
+ head += print_filter(_(menu->prompt->text));
+ head += "</b></big>";
+ if (sym->name) {
+ head += " (";
+ if (showDebug())
+ head += QString().sprintf("<a href=\"s%p\">", sym);
+ head += print_filter(sym->name);
+ if (showDebug())
+ head += "</a>";
+ head += ")";
+ }
+ } else if (sym->name) {
+ head += "<big><b>";
+ if (showDebug())
+ head += QString().sprintf("<a href=\"s%p\">", sym);
+ head += print_filter(sym->name);
+ if (showDebug())
+ head += "</a>";
+ head += "</b></big>";
+ }
+ head += "<br><br>";
+
+ if (showDebug())
+ debug = debug_info(sym);
+
+ help = menu_get_help(menu);
+ /* Gettextize if the help text not empty */
+ if (help.isEmpty())
+ help = print_filter(menu_get_help(menu));
+ else
+ help = print_filter(_(menu_get_help(menu)));
+ } else if (menu->prompt) {
+ head += "<big><b>";
+ head += print_filter(_(menu->prompt->text));
+ head += "</b></big><br><br>";
+ if (showDebug()) {
+ if (menu->prompt->visible.expr) {
+ debug += " dep: ";
+ expr_print(menu->prompt->visible.expr, expr_print_help, &debug, E_NONE);
+ debug += "<br><br>";
+ }
+ }
+ }
+ if (showDebug())
+ debug += QString().sprintf("defined at %s:%d<br><br>", menu->file->name, menu->lineno);
+
+ setText(head + debug + help);
+}
+
+QString ConfigInfoView::debug_info(struct symbol *sym)
+{
+ QString debug;
+
+ debug += "type: ";
+ debug += print_filter(sym_type_name(sym->type));
+ if (sym_is_choice(sym))
+ debug += " (choice)";
+ debug += "<br>";
+ if (sym->rev_dep.expr) {
+ debug += "reverse dep: ";
+ expr_print(sym->rev_dep.expr, expr_print_help, &debug, E_NONE);
+ debug += "<br>";
+ }
+ for (struct property *prop = sym->prop; prop; prop = prop->next) {
+ switch (prop->type) {
+ case P_PROMPT:
+ case P_MENU:
+ debug += QString().sprintf("prompt: <a href=\"m%p\">", prop->menu);
+ debug += print_filter(_(prop->text));
+ debug += "</a><br>";
+ break;
+ case P_DEFAULT:
+ case P_SELECT:
+ case P_RANGE:
+ case P_ENV:
+ debug += prop_get_type_name(prop->type);
+ debug += ": ";
+ expr_print(prop->expr, expr_print_help, &debug, E_NONE);
+ debug += "<br>";
+ break;
+ case P_CHOICE:
+ if (sym_is_choice(sym)) {
+ debug += "choice: ";
+ expr_print(prop->expr, expr_print_help, &debug, E_NONE);
+ debug += "<br>";
+ }
+ break;
+ default:
+ debug += "unknown property: ";
+ debug += prop_get_type_name(prop->type);
+ debug += "<br>";
+ }
+ if (prop->visible.expr) {
+ debug += " dep: ";
+ expr_print(prop->visible.expr, expr_print_help, &debug, E_NONE);
+ debug += "<br>";
+ }
+ }
+ debug += "<br>";
+
+ return debug;
+}
+
+QString ConfigInfoView::print_filter(const QString &str)
+{
+ QRegExp re("[<>&\"\\n]");
+ QString res = str;
+ for (int i = 0; (i = res.find(re, i)) >= 0;) {
+ switch (res[i].latin1()) {
+ case '<':
+ res.replace(i, 1, "<");
+ i += 4;
+ break;
+ case '>':
+ res.replace(i, 1, ">");
+ i += 4;
+ break;
+ case '&':
+ res.replace(i, 1, "&");
+ i += 5;
+ break;
+ case '"':
+ res.replace(i, 1, """);
+ i += 6;
+ break;
+ case '\n':
+ res.replace(i, 1, "<br>");
+ i += 4;
+ break;
+ }
+ }
+ return res;
+}
+
+void ConfigInfoView::expr_print_help(void *data, struct symbol *sym, const char *str)
+{
+ QString* text = reinterpret_cast<QString*>(data);
+ QString str2 = print_filter(str);
+
+ if (sym && sym->name && !(sym->flags & SYMBOL_CONST)) {
+ *text += QString().sprintf("<a href=\"s%p\">", sym);
+ *text += str2;
+ *text += "</a>";
+ } else
+ *text += str2;
+}
+
+QPopupMenu* ConfigInfoView::createPopupMenu(const QPoint& pos)
+{
+ QPopupMenu* popup = Parent::createPopupMenu(pos);
+ QAction* action = new QAction(NULL, _("Show Debug Info"), 0, popup);
+ action->setToggleAction(TRUE);
+ connect(action, SIGNAL(toggled(bool)), SLOT(setShowDebug(bool)));
+ connect(this, SIGNAL(showDebugChanged(bool)), action, SLOT(setOn(bool)));
+ action->setOn(showDebug());
+ popup->insertSeparator();
+ action->addTo(popup);
+ return popup;
+}
+
+void ConfigInfoView::contentsContextMenuEvent(QContextMenuEvent *e)
+{
+ Parent::contentsContextMenuEvent(e);
+}
+
+ConfigSearchWindow::ConfigSearchWindow(ConfigMainWindow* parent, const char *name)
+ : Parent(parent, name), result(NULL)
+{
+ setCaption("Search Config");
+
+ QVBoxLayout* layout1 = new QVBoxLayout(this, 11, 6);
+ QHBoxLayout* layout2 = new QHBoxLayout(0, 0, 6);
+ layout2->addWidget(new QLabel(_("Find:"), this));
+ editField = new QLineEdit(this);
+ connect(editField, SIGNAL(returnPressed()), SLOT(search()));
+ layout2->addWidget(editField);
+ searchButton = new QPushButton(_("Search"), this);
+ searchButton->setAutoDefault(FALSE);
+ connect(searchButton, SIGNAL(clicked()), SLOT(search()));
+ layout2->addWidget(searchButton);
+ layout1->addLayout(layout2);
+
+ split = new QSplitter(this);
+ split->setOrientation(QSplitter::Vertical);
+ list = new ConfigView(split, name);
+ list->list->mode = listMode;
+ info = new ConfigInfoView(split, name);
+ connect(list->list, SIGNAL(menuChanged(struct menu *)),
+ info, SLOT(setInfo(struct menu *)));
+ connect(list->list, SIGNAL(menuChanged(struct menu *)),
+ parent, SLOT(setMenuLink(struct menu *)));
+
+ layout1->addWidget(split);
+
+ if (name) {
+ int x, y, width, height;
+ bool ok;
+
+ configSettings->beginGroup(name);
+ width = configSettings->readNumEntry("/window width", parent->width() / 2);
+ height = configSettings->readNumEntry("/window height", parent->height() / 2);
+ resize(width, height);
+ x = configSettings->readNumEntry("/window x", 0, &ok);
+ if (ok)
+ y = configSettings->readNumEntry("/window y", 0, &ok);
+ if (ok)
+ move(x, y);
+ QValueList<int> sizes = configSettings->readSizes("/split", &ok);
+ if (ok)
+ split->setSizes(sizes);
+ configSettings->endGroup();
+ connect(configApp, SIGNAL(aboutToQuit()), SLOT(saveSettings()));
+ }
+}
+
+void ConfigSearchWindow::saveSettings(void)
+{
+ if (name()) {
+ configSettings->beginGroup(name());
+ configSettings->writeEntry("/window x", pos().x());
+ configSettings->writeEntry("/window y", pos().y());
+ configSettings->writeEntry("/window width", size().width());
+ configSettings->writeEntry("/window height", size().height());
+ configSettings->writeSizes("/split", split->sizes());
+ configSettings->endGroup();
+ }
+}
+
+void ConfigSearchWindow::search(void)
+{
+ struct symbol **p;
+ struct property *prop;
+ ConfigItem *lastItem = NULL;
+
+ free(result);
+ list->list->clear();
+ info->clear();
+
+ result = sym_re_search(editField->text().latin1());
+ if (!result)
+ return;
+ for (p = result; *p; p++) {
+ for_all_prompts((*p), prop)
+ lastItem = new ConfigItem(list->list, lastItem, prop->menu,
+ menu_is_visible(prop->menu));
+ }
+}
+
+/*
+ * Construct the complete config widget
+ */
+ConfigMainWindow::ConfigMainWindow(void)
+ : searchWindow(0)
+{
+ QMenuBar* menu;
+ bool ok;
+ int x, y, width, height;
+ char title[256];
+
+ QWidget *d = configApp->desktop();
+ snprintf(title, sizeof(title), _("uClibc v%s Configuration"),
+ getenv("VERSION"));
+ setCaption(title);
+
+ width = configSettings->readNumEntry("/window width", d->width() - 64);
+ height = configSettings->readNumEntry("/window height", d->height() - 64);
+ resize(width, height);
+ x = configSettings->readNumEntry("/window x", 0, &ok);
+ if (ok)
+ y = configSettings->readNumEntry("/window y", 0, &ok);
+ if (ok)
+ move(x, y);
+
+ split1 = new QSplitter(this);
+ split1->setOrientation(QSplitter::Horizontal);
+ setCentralWidget(split1);
+
+ menuView = new ConfigView(split1, "menu");
+ menuList = menuView->list;
+
+ split2 = new QSplitter(split1);
+ split2->setOrientation(QSplitter::Vertical);
+
+ // create config tree
+ configView = new ConfigView(split2, "config");
+ configList = configView->list;
+
+ helpText = new ConfigInfoView(split2, "help");
+ helpText->setTextFormat(Qt::RichText);
+
+ setTabOrder(configList, helpText);
+ configList->setFocus();
+
+ menu = menuBar();
+ toolBar = new QToolBar("Tools", this);
+
+ backAction = new QAction("Back", QPixmap(xpm_back), _("Back"), 0, this);
+ connect(backAction, SIGNAL(activated()), SLOT(goBack()));
+ backAction->setEnabled(FALSE);
+ QAction *quitAction = new QAction("Quit", _("&Quit"), CTRL+Key_Q, this);
+ connect(quitAction, SIGNAL(activated()), SLOT(close()));
+ QAction *loadAction = new QAction("Load", QPixmap(xpm_load), _("&Load"), CTRL+Key_L, this);
+ connect(loadAction, SIGNAL(activated()), SLOT(loadConfig()));
+ saveAction = new QAction("Save", QPixmap(xpm_save), _("&Save"), CTRL+Key_S, this);
+ connect(saveAction, SIGNAL(activated()), SLOT(saveConfig()));
+ conf_set_changed_callback(conf_changed);
+ // Set saveAction's initial state
+ conf_changed();
+ QAction *saveAsAction = new QAction("Save As...", _("Save &As..."), 0, this);
+ connect(saveAsAction, SIGNAL(activated()), SLOT(saveConfigAs()));
+ QAction *searchAction = new QAction("Find", _("&Find"), CTRL+Key_F, this);
+ connect(searchAction, SIGNAL(activated()), SLOT(searchConfig()));
+ QAction *singleViewAction = new QAction("Single View", QPixmap(xpm_single_view), _("Single View"), 0, this);
+ connect(singleViewAction, SIGNAL(activated()), SLOT(showSingleView()));
+ QAction *splitViewAction = new QAction("Split View", QPixmap(xpm_split_view), _("Split View"), 0, this);
+ connect(splitViewAction, SIGNAL(activated()), SLOT(showSplitView()));
+ QAction *fullViewAction = new QAction("Full View", QPixmap(xpm_tree_view), _("Full View"), 0, this);
+ connect(fullViewAction, SIGNAL(activated()), SLOT(showFullView()));
+
+ QAction *showNameAction = new QAction(NULL, _("Show Name"), 0, this);
+ showNameAction->setToggleAction(TRUE);
+ connect(showNameAction, SIGNAL(toggled(bool)), configView, SLOT(setShowName(bool)));
+ connect(configView, SIGNAL(showNameChanged(bool)), showNameAction, SLOT(setOn(bool)));
+ showNameAction->setOn(configView->showName());
+ QAction *showRangeAction = new QAction(NULL, _("Show Range"), 0, this);
+ showRangeAction->setToggleAction(TRUE);
+ connect(showRangeAction, SIGNAL(toggled(bool)), configView, SLOT(setShowRange(bool)));
+ connect(configView, SIGNAL(showRangeChanged(bool)), showRangeAction, SLOT(setOn(bool)));
+ showRangeAction->setOn(configList->showRange);
+ QAction *showDataAction = new QAction(NULL, _("Show Data"), 0, this);
+ showDataAction->setToggleAction(TRUE);
+ connect(showDataAction, SIGNAL(toggled(bool)), configView, SLOT(setShowData(bool)));
+ connect(configView, SIGNAL(showDataChanged(bool)), showDataAction, SLOT(setOn(bool)));
+ showDataAction->setOn(configList->showData);
+ QAction *showAllAction = new QAction(NULL, _("Show All Options"), 0, this);
+ showAllAction->setToggleAction(TRUE);
+ connect(showAllAction, SIGNAL(toggled(bool)), configView, SLOT(setShowAll(bool)));
+ connect(showAllAction, SIGNAL(toggled(bool)), menuView, SLOT(setShowAll(bool)));
+ showAllAction->setOn(configList->showAll);
+ QAction *showDebugAction = new QAction(NULL, _("Show Debug Info"), 0, this);
+ showDebugAction->setToggleAction(TRUE);
+ connect(showDebugAction, SIGNAL(toggled(bool)), helpText, SLOT(setShowDebug(bool)));
+ connect(helpText, SIGNAL(showDebugChanged(bool)), showDebugAction, SLOT(setOn(bool)));
+ showDebugAction->setOn(helpText->showDebug());
+
+ QAction *showIntroAction = new QAction(NULL, _("Introduction"), 0, this);
+ connect(showIntroAction, SIGNAL(activated()), SLOT(showIntro()));
+ QAction *showAboutAction = new QAction(NULL, _("About"), 0, this);
+ connect(showAboutAction, SIGNAL(activated()), SLOT(showAbout()));
+
+ // init tool bar
+ backAction->addTo(toolBar);
+ toolBar->addSeparator();
+ loadAction->addTo(toolBar);
+ saveAction->addTo(toolBar);
+ toolBar->addSeparator();
+ singleViewAction->addTo(toolBar);
+ splitViewAction->addTo(toolBar);
+ fullViewAction->addTo(toolBar);
+
+ // create config menu
+ QPopupMenu* config = new QPopupMenu(this);
+ menu->insertItem(_("&File"), config);
+ loadAction->addTo(config);
+ saveAction->addTo(config);
+ saveAsAction->addTo(config);
+ config->insertSeparator();
+ quitAction->addTo(config);
+
+ // create edit menu
+ QPopupMenu* editMenu = new QPopupMenu(this);
+ menu->insertItem(_("&Edit"), editMenu);
+ searchAction->addTo(editMenu);
+
+ // create options menu
+ QPopupMenu* optionMenu = new QPopupMenu(this);
+ menu->insertItem(_("&Option"), optionMenu);
+ showNameAction->addTo(optionMenu);
+ showRangeAction->addTo(optionMenu);
+ showDataAction->addTo(optionMenu);
+ optionMenu->insertSeparator();
+ showAllAction->addTo(optionMenu);
+ showDebugAction->addTo(optionMenu);
+
+ // create help menu
+ QPopupMenu* helpMenu = new QPopupMenu(this);
+ menu->insertSeparator();
+ menu->insertItem(_("&Help"), helpMenu);
+ showIntroAction->addTo(helpMenu);
+ showAboutAction->addTo(helpMenu);
+
+ connect(configList, SIGNAL(menuChanged(struct menu *)),
+ helpText, SLOT(setInfo(struct menu *)));
+ connect(configList, SIGNAL(menuSelected(struct menu *)),
+ SLOT(changeMenu(struct menu *)));
+ connect(configList, SIGNAL(parentSelected()),
+ SLOT(goBack()));
+ connect(menuList, SIGNAL(menuChanged(struct menu *)),
+ helpText, SLOT(setInfo(struct menu *)));
+ connect(menuList, SIGNAL(menuSelected(struct menu *)),
+ SLOT(changeMenu(struct menu *)));
+
+ connect(configList, SIGNAL(gotFocus(struct menu *)),
+ helpText, SLOT(setInfo(struct menu *)));
+ connect(menuList, SIGNAL(gotFocus(struct menu *)),
+ helpText, SLOT(setInfo(struct menu *)));
+ connect(menuList, SIGNAL(gotFocus(struct menu *)),
+ SLOT(listFocusChanged(void)));
+ connect(helpText, SIGNAL(menuSelected(struct menu *)),
+ SLOT(setMenuLink(struct menu *)));
+
+ QString listMode = configSettings->readEntry("/listMode", "symbol");
+ if (listMode == "single")
+ showSingleView();
+ else if (listMode == "full")
+ showFullView();
+ else /*if (listMode == "split")*/
+ showSplitView();
+
+ // UI setup done, restore splitter positions
+ QValueList<int> sizes = configSettings->readSizes("/split1", &ok);
+ if (ok)
+ split1->setSizes(sizes);
+
+ sizes = configSettings->readSizes("/split2", &ok);
+ if (ok)
+ split2->setSizes(sizes);
+}
+
+void ConfigMainWindow::loadConfig(void)
+{
+ QString s = QFileDialog::getOpenFileName(".config", NULL, this);
+ if (s.isNull())
+ return;
+ if (conf_read(QFile::encodeName(s)))
+ QMessageBox::information(this, "qconf", _("Unable to load configuration!"));
+ ConfigView::updateListAll();
+}
+
+void ConfigMainWindow::saveConfig(void)
+{
+ if (conf_write(NULL))
+ QMessageBox::information(this, "qconf", _("Unable to save configuration!"));
+}
+
+void ConfigMainWindow::saveConfigAs(void)
+{
+ QString s = QFileDialog::getSaveFileName(".config", NULL, this);
+ if (s.isNull())
+ return;
+ if (conf_write(QFile::encodeName(s)))
+ QMessageBox::information(this, "qconf", _("Unable to save configuration!"));
+}
+
+void ConfigMainWindow::searchConfig(void)
+{
+ if (!searchWindow)
+ searchWindow = new ConfigSearchWindow(this, "search");
+ searchWindow->show();
+}
+
+void ConfigMainWindow::changeMenu(struct menu *menu)
+{
+ configList->setRootMenu(menu);
+ if (configList->rootEntry->parent == &rootmenu)
+ backAction->setEnabled(FALSE);
+ else
+ backAction->setEnabled(TRUE);
+}
+
+void ConfigMainWindow::setMenuLink(struct menu *menu)
+{
+ struct menu *parent;
+ ConfigList* list = NULL;
+ ConfigItem* item;
+
+ if (!menu_is_visible(menu) && !configView->showAll())
+ return;
+
+ switch (configList->mode) {
+ case singleMode:
+ list = configList;
+ parent = menu_get_parent_menu(menu);
+ if (!parent)
+ return;
+ list->setRootMenu(parent);
+ break;
+ case symbolMode:
+ if (menu->flags & MENU_ROOT) {
+ configList->setRootMenu(menu);
+ configList->clearSelection();
+ list = menuList;
+ } else {
+ list = configList;
+ parent = menu_get_parent_menu(menu->parent);
+ if (!parent)
+ return;
+ item = menuList->findConfigItem(parent);
+ if (item) {
+ menuList->setSelected(item, TRUE);
+ menuList->ensureItemVisible(item);
+ }
+ list->setRootMenu(parent);
+ }
+ break;
+ case fullMode:
+ list = configList;
+ break;
+ }
+
+ if (list) {
+ item = list->findConfigItem(menu);
+ if (item) {
+ list->setSelected(item, TRUE);
+ list->ensureItemVisible(item);
+ list->setFocus();
+ }
+ }
+}
+
+void ConfigMainWindow::listFocusChanged(void)
+{
+ if (menuList->mode == menuMode)
+ configList->clearSelection();
+}
+
+void ConfigMainWindow::goBack(void)
+{
+ ConfigItem* item;
+
+ configList->setParentMenu();
+ if (configList->rootEntry == &rootmenu)
+ backAction->setEnabled(FALSE);
+ item = (ConfigItem*)menuList->selectedItem();
+ while (item) {
+ if (item->menu == configList->rootEntry) {
+ menuList->setSelected(item, TRUE);
+ break;
+ }
+ item = (ConfigItem*)item->parent();
+ }
+}
+
+void ConfigMainWindow::showSingleView(void)
+{
+ menuView->hide();
+ menuList->setRootMenu(0);
+ configList->mode = singleMode;
+ if (configList->rootEntry == &rootmenu)
+ configList->updateListAll();
+ else
+ configList->setRootMenu(&rootmenu);
+ configList->setAllOpen(TRUE);
+ configList->setFocus();
+}
+
+void ConfigMainWindow::showSplitView(void)
+{
+ configList->mode = symbolMode;
+ if (configList->rootEntry == &rootmenu)
+ configList->updateListAll();
+ else
+ configList->setRootMenu(&rootmenu);
+ configList->setAllOpen(TRUE);
+ configApp->processEvents();
+ menuList->mode = menuMode;
+ menuList->setRootMenu(&rootmenu);
+ menuList->setAllOpen(TRUE);
+ menuView->show();
+ menuList->setFocus();
+}
+
+void ConfigMainWindow::showFullView(void)
+{
+ menuView->hide();
+ menuList->setRootMenu(0);
+ configList->mode = fullMode;
+ if (configList->rootEntry == &rootmenu)
+ configList->updateListAll();
+ else
+ configList->setRootMenu(&rootmenu);
+ configList->setAllOpen(FALSE);
+ configList->setFocus();
+}
+
+/*
+ * ask for saving configuration before quitting
+ * TODO ask only when something changed
+ */
+void ConfigMainWindow::closeEvent(QCloseEvent* e)
+{
+ if (!conf_get_changed()) {
+ e->accept();
+ return;
+ }
+ QMessageBox mb("qconf", _("Save configuration?"), QMessageBox::Warning,
+ QMessageBox::Yes | QMessageBox::Default, QMessageBox::No, QMessageBox::Cancel | QMessageBox::Escape);
+ mb.setButtonText(QMessageBox::Yes, _("&Save Changes"));
+ mb.setButtonText(QMessageBox::No, _("&Discard Changes"));
+ mb.setButtonText(QMessageBox::Cancel, _("Cancel Exit"));
+ switch (mb.exec()) {
+ case QMessageBox::Yes:
+ conf_write(NULL);
+ case QMessageBox::No:
+ e->accept();
+ break;
+ case QMessageBox::Cancel:
+ e->ignore();
+ break;
+ }
+}
+
+void ConfigMainWindow::showIntro(void)
+{
+ static const QString str = _("Welcome to the qconf graphical configuration tool for uClibc.\n\n"
+ "For each option, a blank box indicates the feature is disabled, a check\n"
+ "indicates it is enabled, and a dot indicates that it is to be compiled\n"
+ "as a module. Clicking on the box will cycle through the three states.\n\n"
+ "If you do not see an option (e.g., a device driver) that you believe\n"
+ "should be present, try turning on Show All Options under the Options menu.\n"
+ "Although there is no cross reference yet to help you figure out what other\n"
+ "options must be enabled to support the option you are interested in, you can\n"
+ "still view the help of a grayed-out option.\n\n"
+ "Toggling Show Debug Info under the Options menu will show the dependencies,\n"
+ "which you can then match by examining other options.\n\n");
+
+ QMessageBox::information(this, "qconf", str);
+}
+
+void ConfigMainWindow::showAbout(void)
+{
+ static const QString str = _("qconf is Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>.\n\n"
+ "Bug reports and feature request can also be entered at https://bugs.uClibc.org/\n");
+
+ QMessageBox::information(this, "qconf", str);
+}
+
+void ConfigMainWindow::saveSettings(void)
+{
+ configSettings->writeEntry("/window x", pos().x());
+ configSettings->writeEntry("/window y", pos().y());
+ configSettings->writeEntry("/window width", size().width());
+ configSettings->writeEntry("/window height", size().height());
+
+ QString entry;
+ switch(configList->mode) {
+ case singleMode :
+ entry = "single";
+ break;
+
+ case symbolMode :
+ entry = "split";
+ break;
+
+ case fullMode :
+ entry = "full";
+ break;
+ }
+ configSettings->writeEntry("/listMode", entry);
+
+ configSettings->writeSizes("/split1", split1->sizes());
+ configSettings->writeSizes("/split2", split2->sizes());
+}
+
+void ConfigMainWindow::conf_changed(void)
+{
+ if (saveAction)
+ saveAction->setEnabled(conf_get_changed());
+}
+
+void fixup_rootmenu(struct menu *menu)
+{
+ struct menu *child;
+ static int menu_cnt = 0;
+
+ menu->flags |= MENU_ROOT;
+ for (child = menu->list; child; child = child->next) {
+ if (child->prompt && child->prompt->type == P_MENU) {
+ menu_cnt++;
+ fixup_rootmenu(child);
+ menu_cnt--;
+ } else if (!menu_cnt)
+ fixup_rootmenu(child);
+ }
+}
+
+static const char *progname;
+
+static void usage(void)
+{
+ printf(_("%s <config>\n"), progname);
+ exit(0);
+}
+
+int main(int ac, char** av)
+{
+ ConfigMainWindow* v;
+ const char *name;
+
+ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+
+#ifndef LKC_DIRECT_LINK
+ kconfig_load();
+#endif
+
+ progname = av[0];
+ configApp = new QApplication(ac, av);
+ if (ac > 1 && av[1][0] == '-') {
+ switch (av[1][1]) {
+ case 'h':
+ case '?':
+ usage();
+ }
+ name = av[2];
+ } else
+ name = av[1];
+ if (!name)
+ usage();
+
+ conf_parse(name);
+ fixup_rootmenu(&rootmenu);
+ conf_read(NULL);
+ //zconfdump(stdout);
+
+ configSettings = new ConfigSettings();
+ configSettings->beginGroup("/kconfig/qconf");
+ v = new ConfigMainWindow();
+
+ //zconfdump(stdout);
+ configApp->setMainWidget(v);
+ configApp->connect(configApp, SIGNAL(lastWindowClosed()), SLOT(quit()));
+ configApp->connect(configApp, SIGNAL(aboutToQuit()), v, SLOT(saveSettings()));
+ v->show();
+ configApp->exec();
+
+ configSettings->endGroup();
+ delete configSettings;
+
+ return 0;
+}
diff --git a/ap/build/uClibc/extra/config/qconf.h b/ap/build/uClibc/extra/config/qconf.h
new file mode 100644
index 0000000..b3b5657
--- /dev/null
+++ b/ap/build/uClibc/extra/config/qconf.h
@@ -0,0 +1,334 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <qlistview.h>
+#if QT_VERSION >= 300
+#include <qsettings.h>
+#else
+class QSettings {
+public:
+ void beginGroup(const QString& group) { }
+ void endGroup(void) { }
+ bool readBoolEntry(const QString& key, bool def = FALSE, bool* ok = 0) const
+ { if (ok) *ok = FALSE; return def; }
+ int readNumEntry(const QString& key, int def = 0, bool* ok = 0) const
+ { if (ok) *ok = FALSE; return def; }
+ QString readEntry(const QString& key, const QString& def = QString::null, bool* ok = 0) const
+ { if (ok) *ok = FALSE; return def; }
+ QStringList readListEntry(const QString& key, bool* ok = 0) const
+ { if (ok) *ok = FALSE; return QStringList(); }
+ template <class t>
+ bool writeEntry(const QString& key, t value)
+ { return TRUE; }
+};
+#endif
+
+class ConfigView;
+class ConfigList;
+class ConfigItem;
+class ConfigLineEdit;
+class ConfigMainWindow;
+
+
+class ConfigSettings : public QSettings {
+public:
+ QValueList<int> readSizes(const QString& key, bool *ok);
+ bool writeSizes(const QString& key, const QValueList<int>& value);
+};
+
+enum colIdx {
+ promptColIdx, nameColIdx, noColIdx, modColIdx, yesColIdx, dataColIdx, colNr
+};
+enum listMode {
+ singleMode, menuMode, symbolMode, fullMode, listMode
+};
+
+class ConfigList : public QListView {
+ Q_OBJECT
+ typedef class QListView Parent;
+public:
+ ConfigList(ConfigView* p, const char *name = 0);
+ void reinit(void);
+ ConfigView* parent(void) const
+ {
+ return (ConfigView*)Parent::parent();
+ }
+ ConfigItem* findConfigItem(struct menu *);
+
+protected:
+ void keyPressEvent(QKeyEvent *e);
+ void contentsMousePressEvent(QMouseEvent *e);
+ void contentsMouseReleaseEvent(QMouseEvent *e);
+ void contentsMouseMoveEvent(QMouseEvent *e);
+ void contentsMouseDoubleClickEvent(QMouseEvent *e);
+ void focusInEvent(QFocusEvent *e);
+ void contextMenuEvent(QContextMenuEvent *e);
+
+public slots:
+ void setRootMenu(struct menu *menu);
+
+ void updateList(ConfigItem *item);
+ void setValue(ConfigItem* item, tristate val);
+ void changeValue(ConfigItem* item);
+ void updateSelection(void);
+ void saveSettings(void);
+signals:
+ void menuChanged(struct menu *menu);
+ void menuSelected(struct menu *menu);
+ void parentSelected(void);
+ void gotFocus(struct menu *);
+
+public:
+ void updateListAll(void)
+ {
+ updateAll = true;
+ updateList(NULL);
+ updateAll = false;
+ }
+ ConfigList* listView()
+ {
+ return this;
+ }
+ ConfigItem* firstChild() const
+ {
+ return (ConfigItem *)Parent::firstChild();
+ }
+ int mapIdx(colIdx idx)
+ {
+ return colMap[idx];
+ }
+ void addColumn(colIdx idx, const QString& label)
+ {
+ colMap[idx] = Parent::addColumn(label);
+ colRevMap[colMap[idx]] = idx;
+ }
+ void removeColumn(colIdx idx)
+ {
+ int col = colMap[idx];
+ if (col >= 0) {
+ Parent::removeColumn(col);
+ colRevMap[col] = colMap[idx] = -1;
+ }
+ }
+ void setAllOpen(bool open);
+ void setParentMenu(void);
+
+ template <class P>
+ void updateMenuList(P*, struct menu*);
+
+ bool updateAll;
+
+ QPixmap symbolYesPix, symbolModPix, symbolNoPix;
+ QPixmap choiceYesPix, choiceNoPix;
+ QPixmap menuPix, menuInvPix, menuBackPix, voidPix;
+
+ bool showAll, showName, showRange, showData;
+ enum listMode mode;
+ struct menu *rootEntry;
+ QColorGroup disabledColorGroup;
+ QColorGroup inactivedColorGroup;
+ QPopupMenu* headerPopup;
+
+private:
+ int colMap[colNr];
+ int colRevMap[colNr];
+};
+
+class ConfigItem : public QListViewItem {
+ typedef class QListViewItem Parent;
+public:
+ ConfigItem(QListView *parent, ConfigItem *after, struct menu *m, bool v)
+ : Parent(parent, after), menu(m), visible(v), goParent(false)
+ {
+ init();
+ }
+ ConfigItem(ConfigItem *parent, ConfigItem *after, struct menu *m, bool v)
+ : Parent(parent, after), menu(m), visible(v), goParent(false)
+ {
+ init();
+ }
+ ConfigItem(QListView *parent, ConfigItem *after, bool v)
+ : Parent(parent, after), menu(0), visible(v), goParent(true)
+ {
+ init();
+ }
+ ~ConfigItem(void);
+ void init(void);
+#if QT_VERSION >= 300
+ void okRename(int col);
+#endif
+ void updateMenu(void);
+ void testUpdateMenu(bool v);
+ ConfigList* listView() const
+ {
+ return (ConfigList*)Parent::listView();
+ }
+ ConfigItem* firstChild() const
+ {
+ return (ConfigItem *)Parent::firstChild();
+ }
+ ConfigItem* nextSibling() const
+ {
+ return (ConfigItem *)Parent::nextSibling();
+ }
+ void setText(colIdx idx, const QString& text)
+ {
+ Parent::setText(listView()->mapIdx(idx), text);
+ }
+ QString text(colIdx idx) const
+ {
+ return Parent::text(listView()->mapIdx(idx));
+ }
+ void setPixmap(colIdx idx, const QPixmap& pm)
+ {
+ Parent::setPixmap(listView()->mapIdx(idx), pm);
+ }
+ const QPixmap* pixmap(colIdx idx) const
+ {
+ return Parent::pixmap(listView()->mapIdx(idx));
+ }
+ void paintCell(QPainter* p, const QColorGroup& cg, int column, int width, int align);
+
+ ConfigItem* nextItem;
+ struct menu *menu;
+ bool visible;
+ bool goParent;
+};
+
+class ConfigLineEdit : public QLineEdit {
+ Q_OBJECT
+ typedef class QLineEdit Parent;
+public:
+ ConfigLineEdit(ConfigView* parent);
+ ConfigView* parent(void) const
+ {
+ return (ConfigView*)Parent::parent();
+ }
+ void show(ConfigItem *i);
+ void keyPressEvent(QKeyEvent *e);
+
+public:
+ ConfigItem *item;
+};
+
+class ConfigView : public QVBox {
+ Q_OBJECT
+ typedef class QVBox Parent;
+public:
+ ConfigView(QWidget* parent, const char *name = 0);
+ ~ConfigView(void);
+ static void updateList(ConfigItem* item);
+ static void updateListAll(void);
+
+ bool showAll(void) const { return list->showAll; }
+ bool showName(void) const { return list->showName; }
+ bool showRange(void) const { return list->showRange; }
+ bool showData(void) const { return list->showData; }
+public slots:
+ void setShowAll(bool);
+ void setShowName(bool);
+ void setShowRange(bool);
+ void setShowData(bool);
+signals:
+ void showAllChanged(bool);
+ void showNameChanged(bool);
+ void showRangeChanged(bool);
+ void showDataChanged(bool);
+public:
+ ConfigList* list;
+ ConfigLineEdit* lineEdit;
+
+ static ConfigView* viewList;
+ ConfigView* nextView;
+};
+
+class ConfigInfoView : public QTextBrowser {
+ Q_OBJECT
+ typedef class QTextBrowser Parent;
+public:
+ ConfigInfoView(QWidget* parent, const char *name = 0);
+ bool showDebug(void) const { return _showDebug; }
+
+public slots:
+ void setInfo(struct menu *menu);
+ void saveSettings(void);
+ void setSource(const QString& name);
+ void setShowDebug(bool);
+
+signals:
+ void showDebugChanged(bool);
+ void menuSelected(struct menu *);
+
+protected:
+ void symbolInfo(void);
+ void menuInfo(void);
+ QString debug_info(struct symbol *sym);
+ static QString print_filter(const QString &str);
+ static void expr_print_help(void *data, struct symbol *sym, const char *str);
+ QPopupMenu* createPopupMenu(const QPoint& pos);
+ void contentsContextMenuEvent(QContextMenuEvent *e);
+
+ struct symbol *sym;
+ struct menu *menu;
+ bool _showDebug;
+};
+
+class ConfigSearchWindow : public QDialog {
+ Q_OBJECT
+ typedef class QDialog Parent;
+public:
+ ConfigSearchWindow(ConfigMainWindow* parent, const char *name = 0);
+
+public slots:
+ void saveSettings(void);
+ void search(void);
+
+protected:
+ QLineEdit* editField;
+ QPushButton* searchButton;
+ QSplitter* split;
+ ConfigView* list;
+ ConfigInfoView* info;
+
+ struct symbol **result;
+};
+
+class ConfigMainWindow : public QMainWindow {
+ Q_OBJECT
+
+ static QAction *saveAction;
+ static void conf_changed(void);
+public:
+ ConfigMainWindow(void);
+public slots:
+ void changeMenu(struct menu *);
+ void setMenuLink(struct menu *);
+ void listFocusChanged(void);
+ void goBack(void);
+ void loadConfig(void);
+ void saveConfig(void);
+ void saveConfigAs(void);
+ void searchConfig(void);
+ void showSingleView(void);
+ void showSplitView(void);
+ void showFullView(void);
+ void showIntro(void);
+ void showAbout(void);
+ void saveSettings(void);
+
+protected:
+ void closeEvent(QCloseEvent *e);
+
+ ConfigSearchWindow *searchWindow;
+ ConfigView *menuView;
+ ConfigList *menuList;
+ ConfigView *configView;
+ ConfigList *configList;
+ ConfigInfoView *helpText;
+ QToolBar *toolBar;
+ QAction *backAction;
+ QSplitter* split1;
+ QSplitter* split2;
+};
diff --git a/ap/build/uClibc/extra/config/symbol.c b/ap/build/uClibc/extra/config/symbol.c
new file mode 100644
index 0000000..b27047c
--- /dev/null
+++ b/ap/build/uClibc/extra/config/symbol.c
@@ -0,0 +1,973 @@
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+#include <regex.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+struct symbol symbol_yes = {
+ .name = "y",
+ .curr = { "y", yes },
+ .flags = SYMBOL_CONST|SYMBOL_VALID,
+}, symbol_mod = {
+ .name = "m",
+ .curr = { "m", mod },
+ .flags = SYMBOL_CONST|SYMBOL_VALID,
+}, symbol_no = {
+ .name = "n",
+ .curr = { "n", no },
+ .flags = SYMBOL_CONST|SYMBOL_VALID,
+}, symbol_empty = {
+ .name = "",
+ .curr = { "", no },
+ .flags = SYMBOL_VALID,
+};
+
+struct symbol *sym_defconfig_list;
+struct symbol *modules_sym;
+tristate modules_val;
+
+struct expr *sym_env_list;
+
+void sym_add_default(struct symbol *sym, const char *def)
+{
+ struct property *prop = prop_alloc(P_DEFAULT, sym);
+
+ prop->expr = expr_alloc_symbol(sym_lookup(def, SYMBOL_CONST));
+}
+
+void sym_init(void)
+{
+ struct symbol *sym;
+ char *p;
+ static bool inited = false;
+
+ if (inited)
+ return;
+ inited = true;
+
+ p = getenv("VERSION");
+ if (p) {
+ sym = sym_lookup("VERSION", 0);
+ sym->type = S_STRING;
+ sym->flags |= SYMBOL_AUTO;
+ sym_add_default(sym, p);
+ }
+}
+
+enum symbol_type sym_get_type(struct symbol *sym)
+{
+ enum symbol_type type = sym->type;
+
+ if (type == S_TRISTATE) {
+ if (sym_is_choice_value(sym) && sym->visible == yes)
+ type = S_BOOLEAN;
+ else if (modules_val == no)
+ type = S_BOOLEAN;
+ }
+ return type;
+}
+
+const char *sym_type_name(enum symbol_type type)
+{
+ switch (type) {
+ case S_BOOLEAN:
+ return "boolean";
+ case S_TRISTATE:
+ return "tristate";
+ case S_INT:
+ return "integer";
+ case S_HEX:
+ return "hex";
+ case S_STRING:
+ return "string";
+ case S_UNKNOWN:
+ return "unknown";
+ case S_OTHER:
+ break;
+ }
+ return "???";
+}
+
+struct property *sym_get_choice_prop(struct symbol *sym)
+{
+ struct property *prop;
+
+ for_all_choices(sym, prop)
+ return prop;
+ return NULL;
+}
+
+struct property *sym_get_env_prop(struct symbol *sym)
+{
+ struct property *prop;
+
+ for_all_properties(sym, prop, P_ENV)
+ return prop;
+ return NULL;
+}
+
+struct property *sym_get_default_prop(struct symbol *sym)
+{
+ struct property *prop;
+
+ for_all_defaults(sym, prop) {
+ prop->visible.tri = expr_calc_value(prop->visible.expr);
+ if (prop->visible.tri != no)
+ return prop;
+ }
+ return NULL;
+}
+
+struct property *sym_get_range_prop(struct symbol *sym)
+{
+ struct property *prop;
+
+ for_all_properties(sym, prop, P_RANGE) {
+ prop->visible.tri = expr_calc_value(prop->visible.expr);
+ if (prop->visible.tri != no)
+ return prop;
+ }
+ return NULL;
+}
+
+static int sym_get_range_val(struct symbol *sym, int base)
+{
+ sym_calc_value(sym);
+ switch (sym->type) {
+ case S_INT:
+ base = 10;
+ break;
+ case S_HEX:
+ base = 16;
+ break;
+ default:
+ break;
+ }
+ return strtol(sym->curr.val, NULL, base);
+}
+
+static void sym_validate_range(struct symbol *sym)
+{
+ struct property *prop;
+ int base, val, val2;
+ char str[64];
+
+ switch (sym->type) {
+ case S_INT:
+ base = 10;
+ break;
+ case S_HEX:
+ base = 16;
+ break;
+ default:
+ return;
+ }
+ prop = sym_get_range_prop(sym);
+ if (!prop)
+ return;
+ val = strtol(sym->curr.val, NULL, base);
+ val2 = sym_get_range_val(prop->expr->left.sym, base);
+ if (val >= val2) {
+ val2 = sym_get_range_val(prop->expr->right.sym, base);
+ if (val <= val2)
+ return;
+ }
+ if (sym->type == S_INT)
+ sprintf(str, "%d", val2);
+ else
+ sprintf(str, "0x%x", val2);
+ sym->curr.val = strdup(str);
+}
+
+static void sym_calc_visibility(struct symbol *sym)
+{
+ struct property *prop;
+ tristate tri;
+
+ /* any prompt visible? */
+ tri = no;
+ for_all_prompts(sym, prop) {
+ prop->visible.tri = expr_calc_value(prop->visible.expr);
+ tri = EXPR_OR(tri, prop->visible.tri);
+ }
+ if (tri == mod && (sym->type != S_TRISTATE || modules_val == no))
+ tri = yes;
+ if (sym->visible != tri) {
+ sym->visible = tri;
+ sym_set_changed(sym);
+ }
+ if (sym_is_choice_value(sym))
+ return;
+ tri = no;
+ if (sym->rev_dep.expr)
+ tri = expr_calc_value(sym->rev_dep.expr);
+ if (tri == mod && sym_get_type(sym) == S_BOOLEAN)
+ tri = yes;
+ if (sym->rev_dep.tri != tri) {
+ sym->rev_dep.tri = tri;
+ sym_set_changed(sym);
+ }
+}
+
+static struct symbol *sym_calc_choice(struct symbol *sym)
+{
+ struct symbol *def_sym;
+ struct property *prop;
+ struct expr *e;
+
+ /* is the user choice visible? */
+ def_sym = sym->def[S_DEF_USER].val;
+ if (def_sym) {
+ sym_calc_visibility(def_sym);
+ if (def_sym->visible != no)
+ return def_sym;
+ }
+
+ /* any of the defaults visible? */
+ for_all_defaults(sym, prop) {
+ prop->visible.tri = expr_calc_value(prop->visible.expr);
+ if (prop->visible.tri == no)
+ continue;
+ def_sym = prop_get_symbol(prop);
+ sym_calc_visibility(def_sym);
+ if (def_sym->visible != no)
+ return def_sym;
+ }
+
+ /* just get the first visible value */
+ prop = sym_get_choice_prop(sym);
+ expr_list_for_each_sym(prop->expr, e, def_sym) {
+ sym_calc_visibility(def_sym);
+ if (def_sym->visible != no)
+ return def_sym;
+ }
+
+ /* no choice? reset tristate value */
+ sym->curr.tri = no;
+ return NULL;
+}
+
+void sym_calc_value(struct symbol *sym)
+{
+ struct symbol_value newval, oldval;
+ struct property *prop;
+ struct expr *e;
+
+ if (!sym)
+ return;
+
+ if (sym->flags & SYMBOL_VALID)
+ return;
+ sym->flags |= SYMBOL_VALID;
+
+ oldval = sym->curr;
+
+ switch (sym->type) {
+ case S_INT:
+ case S_HEX:
+ case S_STRING:
+ newval = symbol_empty.curr;
+ break;
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ newval = symbol_no.curr;
+ break;
+ default:
+ sym->curr.val = sym->name;
+ sym->curr.tri = no;
+ return;
+ }
+ if (!sym_is_choice_value(sym))
+ sym->flags &= ~SYMBOL_WRITE;
+
+ sym_calc_visibility(sym);
+
+ /* set default if recursively called */
+ sym->curr = newval;
+
+ switch (sym_get_type(sym)) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ if (sym_is_choice_value(sym) && sym->visible == yes) {
+ prop = sym_get_choice_prop(sym);
+ newval.tri = (prop_get_symbol(prop)->curr.val == sym) ? yes : no;
+ } else {
+ if (sym->visible != no) {
+ /* if the symbol is visible use the user value
+ * if available, otherwise try the default value
+ */
+ sym->flags |= SYMBOL_WRITE;
+ if (sym_has_value(sym)) {
+ newval.tri = EXPR_AND(sym->def[S_DEF_USER].tri,
+ sym->visible);
+ goto calc_newval;
+ }
+ }
+ if (sym->rev_dep.tri != no)
+ sym->flags |= SYMBOL_WRITE;
+ if (!sym_is_choice(sym)) {
+ prop = sym_get_default_prop(sym);
+ if (prop) {
+ sym->flags |= SYMBOL_WRITE;
+ newval.tri = EXPR_AND(expr_calc_value(prop->expr),
+ prop->visible.tri);
+ }
+ }
+ calc_newval:
+ newval.tri = EXPR_OR(newval.tri, sym->rev_dep.tri);
+ }
+ if (newval.tri == mod && sym_get_type(sym) == S_BOOLEAN)
+ newval.tri = yes;
+ break;
+ case S_STRING:
+ case S_HEX:
+ case S_INT:
+ if (sym->visible != no) {
+ sym->flags |= SYMBOL_WRITE;
+ if (sym_has_value(sym)) {
+ newval.val = sym->def[S_DEF_USER].val;
+ break;
+ }
+ }
+ prop = sym_get_default_prop(sym);
+ if (prop) {
+ struct symbol *ds = prop_get_symbol(prop);
+ if (ds) {
+ sym->flags |= SYMBOL_WRITE;
+ sym_calc_value(ds);
+ newval.val = ds->curr.val;
+ }
+ }
+ break;
+ default:
+ ;
+ }
+
+ sym->curr = newval;
+ if (sym_is_choice(sym) && newval.tri == yes)
+ sym->curr.val = sym_calc_choice(sym);
+ sym_validate_range(sym);
+
+ if (memcmp(&oldval, &sym->curr, sizeof(oldval))) {
+ sym_set_changed(sym);
+ if (modules_sym == sym) {
+ sym_set_all_changed();
+ modules_val = modules_sym->curr.tri;
+ }
+ }
+
+ if (sym_is_choice(sym)) {
+ struct symbol *choice_sym;
+ int flags = sym->flags & (SYMBOL_CHANGED | SYMBOL_WRITE);
+
+ prop = sym_get_choice_prop(sym);
+ expr_list_for_each_sym(prop->expr, e, choice_sym) {
+ choice_sym->flags |= flags;
+ if (flags & SYMBOL_CHANGED)
+ sym_set_changed(choice_sym);
+ }
+ }
+
+ if (sym->flags & SYMBOL_AUTO)
+ sym->flags &= ~SYMBOL_WRITE;
+}
+
+void sym_clear_all_valid(void)
+{
+ struct symbol *sym;
+ int i;
+
+ for_all_symbols(i, sym)
+ sym->flags &= ~SYMBOL_VALID;
+ sym_add_change_count(1);
+ if (modules_sym)
+ sym_calc_value(modules_sym);
+}
+
+void sym_set_changed(struct symbol *sym)
+{
+ struct property *prop;
+
+ sym->flags |= SYMBOL_CHANGED;
+ for (prop = sym->prop; prop; prop = prop->next) {
+ if (prop->menu)
+ prop->menu->flags |= MENU_CHANGED;
+ }
+}
+
+void sym_set_all_changed(void)
+{
+ struct symbol *sym;
+ int i;
+
+ for_all_symbols(i, sym)
+ sym_set_changed(sym);
+}
+
+bool sym_tristate_within_range(struct symbol *sym, tristate val)
+{
+ int type = sym_get_type(sym);
+
+ if (sym->visible == no)
+ return false;
+
+ if (type != S_BOOLEAN && type != S_TRISTATE)
+ return false;
+
+ if (type == S_BOOLEAN && val == mod)
+ return false;
+ if (sym->visible <= sym->rev_dep.tri)
+ return false;
+ if (sym_is_choice_value(sym) && sym->visible == yes)
+ return val == yes;
+ return val >= sym->rev_dep.tri && val <= sym->visible;
+}
+
+bool sym_set_tristate_value(struct symbol *sym, tristate val)
+{
+ tristate oldval = sym_get_tristate_value(sym);
+
+ if (oldval != val && !sym_tristate_within_range(sym, val))
+ return false;
+
+ if (!(sym->flags & SYMBOL_DEF_USER)) {
+ sym->flags |= SYMBOL_DEF_USER;
+ sym_set_changed(sym);
+ }
+ /*
+ * setting a choice value also resets the new flag of the choice
+ * symbol and all other choice values.
+ */
+ if (sym_is_choice_value(sym) && val == yes) {
+ struct symbol *cs = prop_get_symbol(sym_get_choice_prop(sym));
+ struct property *prop;
+ struct expr *e;
+
+ cs->def[S_DEF_USER].val = sym;
+ cs->flags |= SYMBOL_DEF_USER;
+ prop = sym_get_choice_prop(cs);
+ for (e = prop->expr; e; e = e->left.expr) {
+ if (e->right.sym->visible != no)
+ e->right.sym->flags |= SYMBOL_DEF_USER;
+ }
+ }
+
+ sym->def[S_DEF_USER].tri = val;
+ if (oldval != val)
+ sym_clear_all_valid();
+
+ return true;
+}
+
+tristate sym_toggle_tristate_value(struct symbol *sym)
+{
+ tristate oldval, newval;
+
+ oldval = newval = sym_get_tristate_value(sym);
+ do {
+ switch (newval) {
+ case no:
+ newval = mod;
+ break;
+ case mod:
+ newval = yes;
+ break;
+ case yes:
+ newval = no;
+ break;
+ }
+ if (sym_set_tristate_value(sym, newval))
+ break;
+ } while (oldval != newval);
+ return newval;
+}
+
+bool sym_string_valid(struct symbol *sym, const char *str)
+{
+ signed char ch;
+
+ switch (sym->type) {
+ case S_STRING:
+ return true;
+ case S_INT:
+ ch = *str++;
+ if (ch == '-')
+ ch = *str++;
+ if (!isdigit(ch))
+ return false;
+ if (ch == '0' && *str != 0)
+ return false;
+ while ((ch = *str++)) {
+ if (!isdigit(ch))
+ return false;
+ }
+ return true;
+ case S_HEX:
+ if (str[0] == '0' && (str[1] == 'x' || str[1] == 'X'))
+ str += 2;
+ ch = *str++;
+ do {
+ if (!isxdigit(ch))
+ return false;
+ } while ((ch = *str++));
+ return true;
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ switch (str[0]) {
+ case 'y': case 'Y':
+ case 'm': case 'M':
+ case 'n': case 'N':
+ return true;
+ }
+ return false;
+ default:
+ return false;
+ }
+}
+
+bool sym_string_within_range(struct symbol *sym, const char *str)
+{
+ struct property *prop;
+ int val;
+
+ switch (sym->type) {
+ case S_STRING:
+ return sym_string_valid(sym, str);
+ case S_INT:
+ if (!sym_string_valid(sym, str))
+ return false;
+ prop = sym_get_range_prop(sym);
+ if (!prop)
+ return true;
+ val = strtol(str, NULL, 10);
+ return val >= sym_get_range_val(prop->expr->left.sym, 10) &&
+ val <= sym_get_range_val(prop->expr->right.sym, 10);
+ case S_HEX:
+ if (!sym_string_valid(sym, str))
+ return false;
+ prop = sym_get_range_prop(sym);
+ if (!prop)
+ return true;
+ val = strtol(str, NULL, 16);
+ return val >= sym_get_range_val(prop->expr->left.sym, 16) &&
+ val <= sym_get_range_val(prop->expr->right.sym, 16);
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ switch (str[0]) {
+ case 'y': case 'Y':
+ return sym_tristate_within_range(sym, yes);
+ case 'm': case 'M':
+ return sym_tristate_within_range(sym, mod);
+ case 'n': case 'N':
+ return sym_tristate_within_range(sym, no);
+ }
+ return false;
+ default:
+ return false;
+ }
+}
+
+bool sym_set_string_value(struct symbol *sym, const char *newval)
+{
+ const char *oldval;
+ char *val;
+ int size;
+
+ switch (sym->type) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ switch (newval[0]) {
+ case 'y': case 'Y':
+ return sym_set_tristate_value(sym, yes);
+ case 'm': case 'M':
+ return sym_set_tristate_value(sym, mod);
+ case 'n': case 'N':
+ return sym_set_tristate_value(sym, no);
+ }
+ return false;
+ default:
+ ;
+ }
+
+ if (!sym_string_within_range(sym, newval))
+ return false;
+
+ if (!(sym->flags & SYMBOL_DEF_USER)) {
+ sym->flags |= SYMBOL_DEF_USER;
+ sym_set_changed(sym);
+ }
+
+ oldval = sym->def[S_DEF_USER].val;
+ size = strlen(newval) + 1;
+ if (sym->type == S_HEX && (newval[0] != '0' || (newval[1] != 'x' && newval[1] != 'X'))) {
+ size += 2;
+ sym->def[S_DEF_USER].val = val = malloc(size);
+ *val++ = '0';
+ *val++ = 'x';
+ } else if (!oldval || strcmp(oldval, newval))
+ sym->def[S_DEF_USER].val = val = malloc(size);
+ else
+ return true;
+
+ strcpy(val, newval);
+ free((void *)oldval);
+ sym_clear_all_valid();
+
+ return true;
+}
+
+const char *sym_get_string_value(struct symbol *sym)
+{
+ tristate val;
+
+ switch (sym->type) {
+ case S_BOOLEAN:
+ case S_TRISTATE:
+ val = sym_get_tristate_value(sym);
+ switch (val) {
+ case no:
+ return "n";
+ case mod:
+ return "m";
+ case yes:
+ return "y";
+ }
+ break;
+ default:
+ ;
+ }
+ return (const char *)sym->curr.val;
+}
+
+bool sym_is_changable(struct symbol *sym)
+{
+ return sym->visible > sym->rev_dep.tri;
+}
+
+struct symbol *sym_lookup(const char *name, int flags)
+{
+ struct symbol *symbol;
+ const char *ptr;
+ char *new_name;
+ int hash = 0;
+
+ if (name) {
+ if (name[0] && !name[1]) {
+ switch (name[0]) {
+ case 'y': return &symbol_yes;
+ case 'm': return &symbol_mod;
+ case 'n': return &symbol_no;
+ }
+ }
+ for (ptr = name; *ptr; ptr++)
+ hash += *ptr;
+ hash &= 0xff;
+
+ for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) {
+ if (!strcmp(symbol->name, name) &&
+ (flags ? symbol->flags & flags
+ : !(symbol->flags & (SYMBOL_CONST|SYMBOL_CHOICE))))
+ return symbol;
+ }
+ new_name = strdup(name);
+ } else {
+ new_name = NULL;
+ hash = 256;
+ }
+
+ symbol = malloc(sizeof(*symbol));
+ memset(symbol, 0, sizeof(*symbol));
+ symbol->name = new_name;
+ symbol->type = S_UNKNOWN;
+ symbol->flags |= flags;
+
+ symbol->next = symbol_hash[hash];
+ symbol_hash[hash] = symbol;
+
+ return symbol;
+}
+
+struct symbol *sym_find(const char *name)
+{
+ struct symbol *symbol = NULL;
+ const char *ptr;
+ int hash = 0;
+
+ if (!name)
+ return NULL;
+
+ if (name[0] && !name[1]) {
+ switch (name[0]) {
+ case 'y': return &symbol_yes;
+ case 'm': return &symbol_mod;
+ case 'n': return &symbol_no;
+ }
+ }
+ for (ptr = name; *ptr; ptr++)
+ hash += *ptr;
+ hash &= 0xff;
+
+ for (symbol = symbol_hash[hash]; symbol; symbol = symbol->next) {
+ if (!strcmp(symbol->name, name) &&
+ !(symbol->flags & SYMBOL_CONST))
+ break;
+ }
+
+ return symbol;
+}
+
+struct symbol **sym_re_search(const char *pattern)
+{
+ struct symbol *sym, **sym_arr = NULL;
+ int i, cnt, size;
+ regex_t re;
+
+ cnt = size = 0;
+ /* Skip if empty */
+ if (strlen(pattern) == 0)
+ return NULL;
+ if (regcomp(&re, pattern, REG_EXTENDED|REG_NOSUB|REG_ICASE))
+ return NULL;
+
+ for_all_symbols(i, sym) {
+ if (sym->flags & SYMBOL_CONST || !sym->name)
+ continue;
+ if (regexec(&re, sym->name, 0, NULL, 0))
+ continue;
+ if (cnt + 1 >= size) {
+ void *tmp = sym_arr;
+ size += 16;
+ sym_arr = realloc(sym_arr, size * sizeof(struct symbol *));
+ if (!sym_arr) {
+ free(tmp);
+ return NULL;
+ }
+ }
+ sym_arr[cnt++] = sym;
+ }
+ if (sym_arr)
+ sym_arr[cnt] = NULL;
+ regfree(&re);
+
+ return sym_arr;
+}
+
+
+static struct symbol *sym_check_expr_deps(struct expr *e)
+{
+ struct symbol *sym;
+
+ if (!e)
+ return NULL;
+ switch (e->type) {
+ case E_OR:
+ case E_AND:
+ sym = sym_check_expr_deps(e->left.expr);
+ if (sym)
+ return sym;
+ return sym_check_expr_deps(e->right.expr);
+ case E_NOT:
+ return sym_check_expr_deps(e->left.expr);
+ case E_EQUAL:
+ case E_UNEQUAL:
+ sym = sym_check_deps(e->left.sym);
+ if (sym)
+ return sym;
+ return sym_check_deps(e->right.sym);
+ case E_SYMBOL:
+ return sym_check_deps(e->left.sym);
+ default:
+ break;
+ }
+ printf("Oops! How to check %d?\n", e->type);
+ return NULL;
+}
+
+/* return NULL when dependencies are OK */
+static struct symbol *sym_check_sym_deps(struct symbol *sym)
+{
+ struct symbol *sym2;
+ struct property *prop;
+
+ sym2 = sym_check_expr_deps(sym->rev_dep.expr);
+ if (sym2)
+ return sym2;
+
+ for (prop = sym->prop; prop; prop = prop->next) {
+ if (prop->type == P_CHOICE || prop->type == P_SELECT)
+ continue;
+ sym2 = sym_check_expr_deps(prop->visible.expr);
+ if (sym2)
+ break;
+ if (prop->type != P_DEFAULT || sym_is_choice(sym))
+ continue;
+ sym2 = sym_check_expr_deps(prop->expr);
+ if (sym2)
+ break;
+ }
+
+ return sym2;
+}
+
+static struct symbol *sym_check_choice_deps(struct symbol *choice)
+{
+ struct symbol *sym, *sym2;
+ struct property *prop;
+ struct expr *e;
+
+ prop = sym_get_choice_prop(choice);
+ expr_list_for_each_sym(prop->expr, e, sym)
+ sym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED);
+
+ choice->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED);
+ sym2 = sym_check_sym_deps(choice);
+ choice->flags &= ~SYMBOL_CHECK;
+ if (sym2)
+ goto out;
+
+ expr_list_for_each_sym(prop->expr, e, sym) {
+ sym2 = sym_check_sym_deps(sym);
+ if (sym2) {
+ fprintf(stderr, " -> %s", sym->name);
+ break;
+ }
+ }
+out:
+ expr_list_for_each_sym(prop->expr, e, sym)
+ sym->flags &= ~SYMBOL_CHECK;
+
+ if (sym2 && sym_is_choice_value(sym2) &&
+ prop_get_symbol(sym_get_choice_prop(sym2)) == choice)
+ sym2 = choice;
+
+ return sym2;
+}
+
+struct symbol *sym_check_deps(struct symbol *sym)
+{
+ struct symbol *sym2;
+ struct property *prop;
+
+ if (sym->flags & SYMBOL_CHECK) {
+ fprintf(stderr, "%s:%d:error: found recursive dependency: %s",
+ sym->prop->file->name, sym->prop->lineno,
+ sym->name ? sym->name : "<choice>");
+ return sym;
+ }
+ if (sym->flags & SYMBOL_CHECKED)
+ return NULL;
+
+ if (sym_is_choice_value(sym)) {
+ /* for choice groups start the check with main choice symbol */
+ prop = sym_get_choice_prop(sym);
+ sym2 = sym_check_deps(prop_get_symbol(prop));
+ } else if (sym_is_choice(sym)) {
+ sym2 = sym_check_choice_deps(sym);
+ } else {
+ sym->flags |= (SYMBOL_CHECK | SYMBOL_CHECKED);
+ sym2 = sym_check_sym_deps(sym);
+ sym->flags &= ~SYMBOL_CHECK;
+ }
+
+ if (sym2) {
+ fprintf(stderr, " -> %s", sym->name ? sym->name : "<choice>");
+ if (sym2 == sym) {
+ fprintf(stderr, "\n");
+ zconfnerrs++;
+ sym2 = NULL;
+ }
+ }
+
+ return sym2;
+}
+
+struct property *prop_alloc(enum prop_type type, struct symbol *sym)
+{
+ struct property *prop;
+ struct property **propp;
+
+ prop = malloc(sizeof(*prop));
+ memset(prop, 0, sizeof(*prop));
+ prop->type = type;
+ prop->sym = sym;
+ prop->file = current_file;
+ prop->lineno = zconf_lineno();
+
+ /* append property to the prop list of symbol */
+ if (sym) {
+ for (propp = &sym->prop; *propp; propp = &(*propp)->next)
+ ;
+ *propp = prop;
+ }
+
+ return prop;
+}
+
+struct symbol *prop_get_symbol(struct property *prop)
+{
+ if (prop->expr && (prop->expr->type == E_SYMBOL ||
+ prop->expr->type == E_LIST))
+ return prop->expr->left.sym;
+ return NULL;
+}
+
+const char *prop_get_type_name(enum prop_type type)
+{
+ switch (type) {
+ case P_PROMPT:
+ return "prompt";
+ case P_ENV:
+ return "env";
+ case P_COMMENT:
+ return "comment";
+ case P_MENU:
+ return "menu";
+ case P_DEFAULT:
+ return "default";
+ case P_CHOICE:
+ return "choice";
+ case P_SELECT:
+ return "select";
+ case P_RANGE:
+ return "range";
+ case P_UNKNOWN:
+ break;
+ }
+ return "unknown";
+}
+
+void prop_add_env(const char *env)
+{
+ struct symbol *sym, *sym2;
+ struct property *prop;
+ char *p;
+
+ sym = current_entry->sym;
+ sym->flags |= SYMBOL_AUTO;
+ for_all_properties(sym, prop, P_ENV) {
+ sym2 = prop_get_symbol(prop);
+ if (strcmp(sym2->name, env))
+ menu_warn(current_entry, "redefining environment symbol from %s",
+ sym2->name);
+ return;
+ }
+
+ prop = prop_alloc(P_ENV, sym);
+ prop->expr = expr_alloc_symbol(sym_lookup(env, SYMBOL_CONST));
+
+ sym_env_list = expr_alloc_one(E_LIST, sym_env_list);
+ sym_env_list->right.sym = sym;
+
+ p = getenv(env);
+ if (p)
+ sym_add_default(sym, p);
+ else
+ menu_warn(current_entry, "environment variable %s undefined", env);
+}
diff --git a/ap/build/uClibc/extra/config/util.c b/ap/build/uClibc/extra/config/util.c
new file mode 100644
index 0000000..3cc9f93
--- /dev/null
+++ b/ap/build/uClibc/extra/config/util.c
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2002-2005 Roman Zippel <zippel@linux-m68k.org>
+ * Copyright (C) 2002-2005 Sam Ravnborg <sam@ravnborg.org>
+ *
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <string.h>
+#include "lkc.h"
+
+/* file already present in list? If not add it */
+struct file *file_lookup(const char *name)
+{
+ struct file *file;
+
+ for (file = file_list; file; file = file->next) {
+ if (!strcmp(name, file->name))
+ return file;
+ }
+
+ file = malloc(sizeof(*file));
+ memset(file, 0, sizeof(*file));
+ file->name = strdup(name);
+ file->next = file_list;
+ file_list = file;
+ return file;
+}
+
+/* write a dependency file as used by kbuild to track dependencies */
+int file_write_dep(const char *name)
+{
+ struct symbol *sym, *env_sym;
+ struct expr *e;
+ struct file *file;
+ FILE *out;
+
+ if (!name)
+ name = ".kconfig.d";
+ out = fopen("..config.tmp", "w");
+ if (!out)
+ return 1;
+ fprintf(out, "deps_config := \\\n");
+ for (file = file_list; file; file = file->next) {
+ if (file->next)
+ fprintf(out, "\t%s \\\n", file->name);
+ else
+ fprintf(out, "\t%s\n", file->name);
+ }
+ fprintf(out, "\ninclude/config/auto.conf: \\\n"
+ "\t$(deps_config)\n\n");
+
+ expr_list_for_each_sym(sym_env_list, e, sym) {
+ struct property *prop;
+ const char *value;
+
+ prop = sym_get_env_prop(sym);
+ env_sym = prop_get_symbol(prop);
+ if (!env_sym)
+ continue;
+ value = getenv(env_sym->name);
+ if (!value)
+ value = "";
+ fprintf(out, "ifneq \"$(%s)\" \"%s\"\n", env_sym->name, value);
+ fprintf(out, "include/config/auto.conf: FORCE\n");
+ fprintf(out, "endif\n");
+ }
+
+ fprintf(out, "\n$(deps_config): ;\n");
+ fclose(out);
+ rename("..config.tmp", name);
+ return 0;
+}
+
+
+/* Allocate initial growable sting */
+struct gstr str_new(void)
+{
+ struct gstr gs;
+ gs.s = malloc(sizeof(char) * 64);
+ gs.len = 64;
+ strcpy(gs.s, "\0");
+ return gs;
+}
+
+/* Allocate and assign growable string */
+struct gstr str_assign(const char *s)
+{
+ struct gstr gs;
+ gs.s = strdup(s);
+ gs.len = strlen(s) + 1;
+ return gs;
+}
+
+/* Free storage for growable string */
+void str_free(struct gstr *gs)
+{
+ if (gs->s)
+ free(gs->s);
+ gs->s = NULL;
+ gs->len = 0;
+}
+
+/* Append to growable string */
+void str_append(struct gstr *gs, const char *s)
+{
+ size_t l;
+ if (s) {
+ l = strlen(gs->s) + strlen(s) + 1;
+ if (l > gs->len) {
+ gs->s = realloc(gs->s, l);
+ gs->len = l;
+ }
+ strcat(gs->s, s);
+ }
+}
+
+/* Append printf formatted string to growable string */
+void str_printf(struct gstr *gs, const char *fmt, ...)
+{
+ va_list ap;
+ char s[10000]; /* big enough... */
+ va_start(ap, fmt);
+ vsnprintf(s, sizeof(s), fmt, ap);
+ str_append(gs, s);
+ va_end(ap);
+}
+
+/* Retrieve value of growable string */
+const char *str_get(struct gstr *gs)
+{
+ return gs->s;
+}
+
diff --git a/ap/build/uClibc/extra/config/zconf.gperf b/ap/build/uClibc/extra/config/zconf.gperf
new file mode 100644
index 0000000..25ef5d0
--- /dev/null
+++ b/ap/build/uClibc/extra/config/zconf.gperf
@@ -0,0 +1,44 @@
+%language=ANSI-C
+%define hash-function-name kconf_id_hash
+%define lookup-function-name kconf_id_lookup
+%define string-pool-name kconf_id_strings
+%compare-strncmp
+%enum
+%pic
+%struct-type
+
+struct kconf_id;
+
+%%
+mainmenu, T_MAINMENU, TF_COMMAND
+menu, T_MENU, TF_COMMAND
+endmenu, T_ENDMENU, TF_COMMAND
+source, T_SOURCE, TF_COMMAND
+choice, T_CHOICE, TF_COMMAND
+endchoice, T_ENDCHOICE, TF_COMMAND
+comment, T_COMMENT, TF_COMMAND
+config, T_CONFIG, TF_COMMAND
+menuconfig, T_MENUCONFIG, TF_COMMAND
+help, T_HELP, TF_COMMAND
+if, T_IF, TF_COMMAND|TF_PARAM
+endif, T_ENDIF, TF_COMMAND
+depends, T_DEPENDS, TF_COMMAND
+optional, T_OPTIONAL, TF_COMMAND
+default, T_DEFAULT, TF_COMMAND, S_UNKNOWN
+prompt, T_PROMPT, TF_COMMAND
+tristate, T_TYPE, TF_COMMAND, S_TRISTATE
+def_tristate, T_DEFAULT, TF_COMMAND, S_TRISTATE
+bool, T_TYPE, TF_COMMAND, S_BOOLEAN
+boolean, T_TYPE, TF_COMMAND, S_BOOLEAN
+def_bool, T_DEFAULT, TF_COMMAND, S_BOOLEAN
+int, T_TYPE, TF_COMMAND, S_INT
+hex, T_TYPE, TF_COMMAND, S_HEX
+string, T_TYPE, TF_COMMAND, S_STRING
+select, T_SELECT, TF_COMMAND
+range, T_RANGE, TF_COMMAND
+option, T_OPTION, TF_COMMAND
+on, T_ON, TF_PARAM
+modules, T_OPT_MODULES, TF_OPTION
+defconfig_list, T_OPT_DEFCONFIG_LIST,TF_OPTION
+env, T_OPT_ENV, TF_OPTION
+%%
diff --git a/ap/build/uClibc/extra/config/zconf.hash.c b/ap/build/uClibc/extra/config/zconf.hash.c
new file mode 100644
index 0000000..5c73d51
--- /dev/null
+++ b/ap/build/uClibc/extra/config/zconf.hash.c
@@ -0,0 +1,237 @@
+/* ANSI-C code produced by gperf version 3.0.3 */
+/* Command-line: gperf */
+/* Computed positions: -k'1,3' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646. */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
+#endif
+
+struct kconf_id;
+/* maximum key range = 47, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static unsigned int
+kconf_id_hash (register const char *str, register unsigned int len)
+{
+ static unsigned char asso_values[] =
+ {
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 11, 5,
+ 0, 0, 5, 49, 5, 20, 49, 49, 5, 20,
+ 5, 0, 30, 49, 0, 15, 0, 10, 0, 49,
+ 25, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49
+ };
+ register int hval = len;
+
+ switch (hval)
+ {
+ default:
+ hval += asso_values[(unsigned char)str[2]];
+ /*FALLTHROUGH*/
+ case 2:
+ case 1:
+ hval += asso_values[(unsigned char)str[0]];
+ break;
+ }
+ return hval;
+}
+
+struct kconf_id_strings_t
+ {
+ char kconf_id_strings_str2[sizeof("on")];
+ char kconf_id_strings_str3[sizeof("env")];
+ char kconf_id_strings_str5[sizeof("endif")];
+ char kconf_id_strings_str6[sizeof("option")];
+ char kconf_id_strings_str7[sizeof("endmenu")];
+ char kconf_id_strings_str8[sizeof("optional")];
+ char kconf_id_strings_str9[sizeof("endchoice")];
+ char kconf_id_strings_str10[sizeof("range")];
+ char kconf_id_strings_str11[sizeof("choice")];
+ char kconf_id_strings_str12[sizeof("default")];
+ char kconf_id_strings_str13[sizeof("def_bool")];
+ char kconf_id_strings_str14[sizeof("help")];
+ char kconf_id_strings_str15[sizeof("bool")];
+ char kconf_id_strings_str16[sizeof("config")];
+ char kconf_id_strings_str17[sizeof("def_tristate")];
+ char kconf_id_strings_str18[sizeof("boolean")];
+ char kconf_id_strings_str19[sizeof("defconfig_list")];
+ char kconf_id_strings_str21[sizeof("string")];
+ char kconf_id_strings_str22[sizeof("if")];
+ char kconf_id_strings_str23[sizeof("int")];
+ char kconf_id_strings_str26[sizeof("select")];
+ char kconf_id_strings_str27[sizeof("modules")];
+ char kconf_id_strings_str28[sizeof("tristate")];
+ char kconf_id_strings_str29[sizeof("menu")];
+ char kconf_id_strings_str31[sizeof("source")];
+ char kconf_id_strings_str32[sizeof("comment")];
+ char kconf_id_strings_str33[sizeof("hex")];
+ char kconf_id_strings_str35[sizeof("menuconfig")];
+ char kconf_id_strings_str36[sizeof("prompt")];
+ char kconf_id_strings_str37[sizeof("depends")];
+ char kconf_id_strings_str48[sizeof("mainmenu")];
+ };
+static struct kconf_id_strings_t kconf_id_strings_contents =
+ {
+ "on",
+ "env",
+ "endif",
+ "option",
+ "endmenu",
+ "optional",
+ "endchoice",
+ "range",
+ "choice",
+ "default",
+ "def_bool",
+ "help",
+ "bool",
+ "config",
+ "def_tristate",
+ "boolean",
+ "defconfig_list",
+ "string",
+ "if",
+ "int",
+ "select",
+ "modules",
+ "tristate",
+ "menu",
+ "source",
+ "comment",
+ "hex",
+ "menuconfig",
+ "prompt",
+ "depends",
+ "mainmenu"
+ };
+#define kconf_id_strings ((const char *) &kconf_id_strings_contents)
+#ifdef __GNUC__
+__inline
+#ifdef __GNUC_STDC_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
+struct kconf_id *
+kconf_id_lookup (register const char *str, register unsigned int len)
+{
+ enum
+ {
+ TOTAL_KEYWORDS = 31,
+ MIN_WORD_LENGTH = 2,
+ MAX_WORD_LENGTH = 14,
+ MIN_HASH_VALUE = 2,
+ MAX_HASH_VALUE = 48
+ };
+
+ static struct kconf_id wordlist[] =
+ {
+ {-1}, {-1},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str2, T_ON, TF_PARAM},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str3, T_OPT_ENV, TF_OPTION},
+ {-1},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str5, T_ENDIF, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str6, T_OPTION, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str7, T_ENDMENU, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str8, T_OPTIONAL, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str9, T_ENDCHOICE, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str10, T_RANGE, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str11, T_CHOICE, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str12, T_DEFAULT, TF_COMMAND, S_UNKNOWN},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str13, T_DEFAULT, TF_COMMAND, S_BOOLEAN},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str14, T_HELP, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str15, T_TYPE, TF_COMMAND, S_BOOLEAN},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str16, T_CONFIG, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str17, T_DEFAULT, TF_COMMAND, S_TRISTATE},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str18, T_TYPE, TF_COMMAND, S_BOOLEAN},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str19, T_OPT_DEFCONFIG_LIST,TF_OPTION},
+ {-1},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str21, T_TYPE, TF_COMMAND, S_STRING},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22, T_IF, TF_COMMAND|TF_PARAM},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23, T_TYPE, TF_COMMAND, S_INT},
+ {-1}, {-1},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str26, T_SELECT, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27, T_OPT_MODULES, TF_OPTION},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28, T_TYPE, TF_COMMAND, S_TRISTATE},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str29, T_MENU, TF_COMMAND},
+ {-1},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str31, T_SOURCE, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str32, T_COMMENT, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str33, T_TYPE, TF_COMMAND, S_HEX},
+ {-1},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str35, T_MENUCONFIG, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str36, T_PROMPT, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str37, T_DEPENDS, TF_COMMAND},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str48, T_MAINMENU, TF_COMMAND}
+ };
+
+ if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+ {
+ register int key = kconf_id_hash (str, len);
+
+ if (key <= MAX_HASH_VALUE && key >= 0)
+ {
+ register int o = wordlist[key].name;
+ if (o >= 0)
+ {
+ register const char *s = o + kconf_id_strings;
+
+ if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
+ return &wordlist[key];
+ }
+ }
+ }
+ return 0;
+}
+
diff --git a/ap/build/uClibc/extra/config/zconf.hash.c_shipped b/ap/build/uClibc/extra/config/zconf.hash.c_shipped
new file mode 100644
index 0000000..5c73d51
--- /dev/null
+++ b/ap/build/uClibc/extra/config/zconf.hash.c_shipped
@@ -0,0 +1,237 @@
+/* ANSI-C code produced by gperf version 3.0.3 */
+/* Command-line: gperf */
+/* Computed positions: -k'1,3' */
+
+#if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \
+ && ('%' == 37) && ('&' == 38) && ('\'' == 39) && ('(' == 40) \
+ && (')' == 41) && ('*' == 42) && ('+' == 43) && (',' == 44) \
+ && ('-' == 45) && ('.' == 46) && ('/' == 47) && ('0' == 48) \
+ && ('1' == 49) && ('2' == 50) && ('3' == 51) && ('4' == 52) \
+ && ('5' == 53) && ('6' == 54) && ('7' == 55) && ('8' == 56) \
+ && ('9' == 57) && (':' == 58) && (';' == 59) && ('<' == 60) \
+ && ('=' == 61) && ('>' == 62) && ('?' == 63) && ('A' == 65) \
+ && ('B' == 66) && ('C' == 67) && ('D' == 68) && ('E' == 69) \
+ && ('F' == 70) && ('G' == 71) && ('H' == 72) && ('I' == 73) \
+ && ('J' == 74) && ('K' == 75) && ('L' == 76) && ('M' == 77) \
+ && ('N' == 78) && ('O' == 79) && ('P' == 80) && ('Q' == 81) \
+ && ('R' == 82) && ('S' == 83) && ('T' == 84) && ('U' == 85) \
+ && ('V' == 86) && ('W' == 87) && ('X' == 88) && ('Y' == 89) \
+ && ('Z' == 90) && ('[' == 91) && ('\\' == 92) && (']' == 93) \
+ && ('^' == 94) && ('_' == 95) && ('a' == 97) && ('b' == 98) \
+ && ('c' == 99) && ('d' == 100) && ('e' == 101) && ('f' == 102) \
+ && ('g' == 103) && ('h' == 104) && ('i' == 105) && ('j' == 106) \
+ && ('k' == 107) && ('l' == 108) && ('m' == 109) && ('n' == 110) \
+ && ('o' == 111) && ('p' == 112) && ('q' == 113) && ('r' == 114) \
+ && ('s' == 115) && ('t' == 116) && ('u' == 117) && ('v' == 118) \
+ && ('w' == 119) && ('x' == 120) && ('y' == 121) && ('z' == 122) \
+ && ('{' == 123) && ('|' == 124) && ('}' == 125) && ('~' == 126))
+/* The character set is not based on ISO-646. */
+#error "gperf generated tables don't work with this execution character set. Please report a bug to <bug-gnu-gperf@gnu.org>."
+#endif
+
+struct kconf_id;
+/* maximum key range = 47, duplicates = 0 */
+
+#ifdef __GNUC__
+__inline
+#else
+#ifdef __cplusplus
+inline
+#endif
+#endif
+static unsigned int
+kconf_id_hash (register const char *str, register unsigned int len)
+{
+ static unsigned char asso_values[] =
+ {
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 11, 5,
+ 0, 0, 5, 49, 5, 20, 49, 49, 5, 20,
+ 5, 0, 30, 49, 0, 15, 0, 10, 0, 49,
+ 25, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
+ 49, 49, 49, 49, 49, 49
+ };
+ register int hval = len;
+
+ switch (hval)
+ {
+ default:
+ hval += asso_values[(unsigned char)str[2]];
+ /*FALLTHROUGH*/
+ case 2:
+ case 1:
+ hval += asso_values[(unsigned char)str[0]];
+ break;
+ }
+ return hval;
+}
+
+struct kconf_id_strings_t
+ {
+ char kconf_id_strings_str2[sizeof("on")];
+ char kconf_id_strings_str3[sizeof("env")];
+ char kconf_id_strings_str5[sizeof("endif")];
+ char kconf_id_strings_str6[sizeof("option")];
+ char kconf_id_strings_str7[sizeof("endmenu")];
+ char kconf_id_strings_str8[sizeof("optional")];
+ char kconf_id_strings_str9[sizeof("endchoice")];
+ char kconf_id_strings_str10[sizeof("range")];
+ char kconf_id_strings_str11[sizeof("choice")];
+ char kconf_id_strings_str12[sizeof("default")];
+ char kconf_id_strings_str13[sizeof("def_bool")];
+ char kconf_id_strings_str14[sizeof("help")];
+ char kconf_id_strings_str15[sizeof("bool")];
+ char kconf_id_strings_str16[sizeof("config")];
+ char kconf_id_strings_str17[sizeof("def_tristate")];
+ char kconf_id_strings_str18[sizeof("boolean")];
+ char kconf_id_strings_str19[sizeof("defconfig_list")];
+ char kconf_id_strings_str21[sizeof("string")];
+ char kconf_id_strings_str22[sizeof("if")];
+ char kconf_id_strings_str23[sizeof("int")];
+ char kconf_id_strings_str26[sizeof("select")];
+ char kconf_id_strings_str27[sizeof("modules")];
+ char kconf_id_strings_str28[sizeof("tristate")];
+ char kconf_id_strings_str29[sizeof("menu")];
+ char kconf_id_strings_str31[sizeof("source")];
+ char kconf_id_strings_str32[sizeof("comment")];
+ char kconf_id_strings_str33[sizeof("hex")];
+ char kconf_id_strings_str35[sizeof("menuconfig")];
+ char kconf_id_strings_str36[sizeof("prompt")];
+ char kconf_id_strings_str37[sizeof("depends")];
+ char kconf_id_strings_str48[sizeof("mainmenu")];
+ };
+static struct kconf_id_strings_t kconf_id_strings_contents =
+ {
+ "on",
+ "env",
+ "endif",
+ "option",
+ "endmenu",
+ "optional",
+ "endchoice",
+ "range",
+ "choice",
+ "default",
+ "def_bool",
+ "help",
+ "bool",
+ "config",
+ "def_tristate",
+ "boolean",
+ "defconfig_list",
+ "string",
+ "if",
+ "int",
+ "select",
+ "modules",
+ "tristate",
+ "menu",
+ "source",
+ "comment",
+ "hex",
+ "menuconfig",
+ "prompt",
+ "depends",
+ "mainmenu"
+ };
+#define kconf_id_strings ((const char *) &kconf_id_strings_contents)
+#ifdef __GNUC__
+__inline
+#ifdef __GNUC_STDC_INLINE__
+__attribute__ ((__gnu_inline__))
+#endif
+#endif
+struct kconf_id *
+kconf_id_lookup (register const char *str, register unsigned int len)
+{
+ enum
+ {
+ TOTAL_KEYWORDS = 31,
+ MIN_WORD_LENGTH = 2,
+ MAX_WORD_LENGTH = 14,
+ MIN_HASH_VALUE = 2,
+ MAX_HASH_VALUE = 48
+ };
+
+ static struct kconf_id wordlist[] =
+ {
+ {-1}, {-1},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str2, T_ON, TF_PARAM},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str3, T_OPT_ENV, TF_OPTION},
+ {-1},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str5, T_ENDIF, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str6, T_OPTION, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str7, T_ENDMENU, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str8, T_OPTIONAL, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str9, T_ENDCHOICE, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str10, T_RANGE, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str11, T_CHOICE, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str12, T_DEFAULT, TF_COMMAND, S_UNKNOWN},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str13, T_DEFAULT, TF_COMMAND, S_BOOLEAN},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str14, T_HELP, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str15, T_TYPE, TF_COMMAND, S_BOOLEAN},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str16, T_CONFIG, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str17, T_DEFAULT, TF_COMMAND, S_TRISTATE},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str18, T_TYPE, TF_COMMAND, S_BOOLEAN},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str19, T_OPT_DEFCONFIG_LIST,TF_OPTION},
+ {-1},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str21, T_TYPE, TF_COMMAND, S_STRING},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str22, T_IF, TF_COMMAND|TF_PARAM},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str23, T_TYPE, TF_COMMAND, S_INT},
+ {-1}, {-1},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str26, T_SELECT, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str27, T_OPT_MODULES, TF_OPTION},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str28, T_TYPE, TF_COMMAND, S_TRISTATE},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str29, T_MENU, TF_COMMAND},
+ {-1},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str31, T_SOURCE, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str32, T_COMMENT, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str33, T_TYPE, TF_COMMAND, S_HEX},
+ {-1},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str35, T_MENUCONFIG, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str36, T_PROMPT, TF_COMMAND},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str37, T_DEPENDS, TF_COMMAND},
+ {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1}, {-1},
+ {-1},
+ {(int)(long)&((struct kconf_id_strings_t *)0)->kconf_id_strings_str48, T_MAINMENU, TF_COMMAND}
+ };
+
+ if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
+ {
+ register int key = kconf_id_hash (str, len);
+
+ if (key <= MAX_HASH_VALUE && key >= 0)
+ {
+ register int o = wordlist[key].name;
+ if (o >= 0)
+ {
+ register const char *s = o + kconf_id_strings;
+
+ if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
+ return &wordlist[key];
+ }
+ }
+ }
+ return 0;
+}
+
diff --git a/ap/build/uClibc/extra/config/zconf.l b/ap/build/uClibc/extra/config/zconf.l
new file mode 100644
index 0000000..21ff69c
--- /dev/null
+++ b/ap/build/uClibc/extra/config/zconf.l
@@ -0,0 +1,359 @@
+%option backup nostdinit noyywrap never-interactive full ecs
+%option 8bit backup nodefault perf-report perf-report
+%option noinput
+%x COMMAND HELP STRING PARAM
+%{
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+#define START_STRSIZE 16
+
+static struct {
+ struct file *file;
+ int lineno;
+} current_pos;
+
+static char *text;
+static int text_size, text_asize;
+
+struct buffer {
+ struct buffer *parent;
+ YY_BUFFER_STATE state;
+};
+
+struct buffer *current_buf;
+
+static int last_ts, first_ts;
+
+static void zconf_endhelp(void);
+static void zconf_endfile(void);
+
+void new_string(void)
+{
+ text = malloc(START_STRSIZE);
+ text_asize = START_STRSIZE;
+ text_size = 0;
+ *text = 0;
+}
+
+void append_string(const char *str, int size)
+{
+ int new_size = text_size + size + 1;
+ if (new_size > text_asize) {
+ new_size += START_STRSIZE - 1;
+ new_size &= -START_STRSIZE;
+ text = realloc(text, new_size);
+ text_asize = new_size;
+ }
+ memcpy(text + text_size, str, size);
+ text_size += size;
+ text[text_size] = 0;
+}
+
+void alloc_string(const char *str, int size)
+{
+ text = malloc(size + 1);
+ memcpy(text, str, size);
+ text[size] = 0;
+}
+%}
+
+ws [ \n\t]
+n [A-Za-z0-9_]
+
+%%
+ int str = 0;
+ int ts, i;
+
+[ \t]*#.*\n |
+[ \t]*\n {
+ current_file->lineno++;
+ return T_EOL;
+}
+[ \t]*#.*
+
+
+[ \t]+ {
+ BEGIN(COMMAND);
+}
+
+. {
+ unput(yytext[0]);
+ BEGIN(COMMAND);
+}
+
+
+<COMMAND>{
+ {n}+ {
+ struct kconf_id *id = kconf_id_lookup(yytext, yyleng);
+ BEGIN(PARAM);
+ current_pos.file = current_file;
+ current_pos.lineno = current_file->lineno;
+ if (id && id->flags & TF_COMMAND) {
+ zconflval.id = id;
+ return id->token;
+ }
+ alloc_string(yytext, yyleng);
+ zconflval.string = text;
+ return T_WORD;
+ }
+ .
+ \n {
+ BEGIN(INITIAL);
+ current_file->lineno++;
+ return T_EOL;
+ }
+}
+
+<PARAM>{
+ "&&" return T_AND;
+ "||" return T_OR;
+ "(" return T_OPEN_PAREN;
+ ")" return T_CLOSE_PAREN;
+ "!" return T_NOT;
+ "=" return T_EQUAL;
+ "!=" return T_UNEQUAL;
+ \"|\' {
+ str = yytext[0];
+ new_string();
+ BEGIN(STRING);
+ }
+ \n BEGIN(INITIAL); current_file->lineno++; return T_EOL;
+ --- /* ignore */
+ ({n}|[-/.])+ {
+ struct kconf_id *id = kconf_id_lookup(yytext, yyleng);
+ if (id && id->flags & TF_PARAM) {
+ zconflval.id = id;
+ return id->token;
+ }
+ alloc_string(yytext, yyleng);
+ zconflval.string = text;
+ return T_WORD;
+ }
+ #.* /* comment */
+ \\\n current_file->lineno++;
+ .
+ <<EOF>> {
+ BEGIN(INITIAL);
+ }
+}
+
+<STRING>{
+ [^'"\\\n]+/\n {
+ append_string(yytext, yyleng);
+ zconflval.string = text;
+ return T_WORD_QUOTE;
+ }
+ [^'"\\\n]+ {
+ append_string(yytext, yyleng);
+ }
+ \\.?/\n {
+ append_string(yytext + 1, yyleng - 1);
+ zconflval.string = text;
+ return T_WORD_QUOTE;
+ }
+ \\.? {
+ append_string(yytext + 1, yyleng - 1);
+ }
+ \'|\" {
+ if (str == yytext[0]) {
+ BEGIN(PARAM);
+ zconflval.string = text;
+ return T_WORD_QUOTE;
+ } else
+ append_string(yytext, 1);
+ }
+ \n {
+ printf("%s:%d:warning: multi-line strings not supported\n", zconf_curname(), zconf_lineno());
+ current_file->lineno++;
+ BEGIN(INITIAL);
+ return T_EOL;
+ }
+ <<EOF>> {
+ BEGIN(INITIAL);
+ }
+}
+
+<HELP>{
+ [ \t]+ {
+ ts = 0;
+ for (i = 0; i < yyleng; i++) {
+ if (yytext[i] == '\t')
+ ts = (ts & ~7) + 8;
+ else
+ ts++;
+ }
+ last_ts = ts;
+ if (first_ts) {
+ if (ts < first_ts) {
+ zconf_endhelp();
+ return T_HELPTEXT;
+ }
+ ts -= first_ts;
+ while (ts > 8) {
+ append_string(" ", 8);
+ ts -= 8;
+ }
+ append_string(" ", ts);
+ }
+ }
+ [ \t]*\n/[^ \t\n] {
+ current_file->lineno++;
+ zconf_endhelp();
+ return T_HELPTEXT;
+ }
+ [ \t]*\n {
+ current_file->lineno++;
+ append_string("\n", 1);
+ }
+ [^ \t\n].* {
+ while (yyleng) {
+ if ((yytext[yyleng-1] != ' ') && (yytext[yyleng-1] != '\t'))
+ break;
+ yyleng--;
+ }
+ append_string(yytext, yyleng);
+ if (!first_ts)
+ first_ts = last_ts;
+ }
+ <<EOF>> {
+ zconf_endhelp();
+ return T_HELPTEXT;
+ }
+}
+
+<<EOF>> {
+ if (current_file) {
+ zconf_endfile();
+ return T_EOL;
+ }
+ fclose(yyin);
+ yyterminate();
+}
+
+%%
+void zconf_starthelp(void)
+{
+ new_string();
+ last_ts = first_ts = 0;
+ BEGIN(HELP);
+}
+
+static void zconf_endhelp(void)
+{
+ zconflval.string = text;
+ BEGIN(INITIAL);
+}
+
+
+/*
+ * Try to open specified file with following names:
+ * ./name
+ * $(srctree)/name
+ * The latter is used when srctree is separate from objtree
+ * when compiling the kernel.
+ * Return NULL if file is not found.
+ */
+FILE *zconf_fopen(const char *name)
+{
+ char *env, fullname[PATH_MAX+1];
+ FILE *f;
+
+ f = fopen(name, "r");
+ if (!f && name != NULL && name[0] != '/') {
+ env = getenv(SRCTREE);
+ if (env) {
+ sprintf(fullname, "%s/%s", env, name);
+ f = fopen(fullname, "r");
+ }
+ }
+ return f;
+}
+
+void zconf_initscan(const char *name)
+{
+ yyin = zconf_fopen(name);
+ if (!yyin) {
+ printf("can't find file %s\n", name);
+ exit(1);
+ }
+
+ current_buf = malloc(sizeof(*current_buf));
+ memset(current_buf, 0, sizeof(*current_buf));
+
+ current_file = file_lookup(name);
+ current_file->lineno = 1;
+ current_file->flags = FILE_BUSY;
+}
+
+void zconf_nextfile(const char *name)
+{
+ struct file *file = file_lookup(name);
+ struct buffer *buf = malloc(sizeof(*buf));
+ memset(buf, 0, sizeof(*buf));
+
+ current_buf->state = YY_CURRENT_BUFFER;
+ yyin = zconf_fopen(name);
+ if (!yyin) {
+ printf("%s:%d: can't open file \"%s\"\n", zconf_curname(), zconf_lineno(), name);
+ exit(1);
+ }
+ yy_switch_to_buffer(yy_create_buffer(yyin, YY_BUF_SIZE));
+ buf->parent = current_buf;
+ current_buf = buf;
+
+ if (file->flags & FILE_BUSY) {
+ printf("%s:%d: do not source '%s' from itself\n",
+ zconf_curname(), zconf_lineno(), name);
+ exit(1);
+ }
+ if (file->flags & FILE_SCANNED) {
+ printf("%s:%d: file '%s' is already sourced from '%s'\n",
+ zconf_curname(), zconf_lineno(), name,
+ file->parent->name);
+ exit(1);
+ }
+ file->flags |= FILE_BUSY;
+ file->lineno = 1;
+ file->parent = current_file;
+ current_file = file;
+}
+
+static void zconf_endfile(void)
+{
+ struct buffer *parent;
+
+ current_file->flags |= FILE_SCANNED;
+ current_file->flags &= ~FILE_BUSY;
+ current_file = current_file->parent;
+
+ parent = current_buf->parent;
+ if (parent) {
+ fclose(yyin);
+ yy_delete_buffer(YY_CURRENT_BUFFER);
+ yy_switch_to_buffer(parent->state);
+ }
+ free(current_buf);
+ current_buf = parent;
+}
+
+int zconf_lineno(void)
+{
+ return current_pos.lineno;
+}
+
+char *zconf_curname(void)
+{
+ return current_pos.file ? current_pos.file->name : "<none>";
+}
diff --git a/ap/build/uClibc/extra/config/zconf.tab.c b/ap/build/uClibc/extra/config/zconf.tab.c
new file mode 100644
index 0000000..aa9cc28
--- /dev/null
+++ b/ap/build/uClibc/extra/config/zconf.tab.c
@@ -0,0 +1,2490 @@
+/* A Bison parser, made by GNU Bison 2.3. */
+
+/* Skeleton implementation for Bison's Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
+
+/* As a special exception, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+/* C LALR(1) parser skeleton written by Richard Stallman, by
+ simplifying the original so-called "semantic" parser. */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+ infringing on user name space. This should be done even for local
+ variables, as they might otherwise be expanded by user macros.
+ There are some unavoidable exceptions within include files to
+ define necessary library symbols; they are noted "INFRINGES ON
+ USER NAME SPACE" below. */
+
+/* Identify Bison output. */
+#define YYBISON 1
+
+/* Bison version. */
+#define YYBISON_VERSION "2.3"
+
+/* Skeleton name. */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers. */
+#define YYPURE 0
+
+/* Using locations. */
+#define YYLSP_NEEDED 0
+
+/* Substitute the variable and function names. */
+#define yyparse zconfparse
+#define yylex zconflex
+#define yyerror zconferror
+#define yylval zconflval
+#define yychar zconfchar
+#define yydebug zconfdebug
+#define yynerrs zconfnerrs
+
+
+/* Tokens. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
+ know about them. */
+ enum yytokentype {
+ T_MAINMENU = 258,
+ T_MENU = 259,
+ T_ENDMENU = 260,
+ T_SOURCE = 261,
+ T_CHOICE = 262,
+ T_ENDCHOICE = 263,
+ T_COMMENT = 264,
+ T_CONFIG = 265,
+ T_MENUCONFIG = 266,
+ T_HELP = 267,
+ T_HELPTEXT = 268,
+ T_IF = 269,
+ T_ENDIF = 270,
+ T_DEPENDS = 271,
+ T_OPTIONAL = 272,
+ T_PROMPT = 273,
+ T_TYPE = 274,
+ T_DEFAULT = 275,
+ T_SELECT = 276,
+ T_RANGE = 277,
+ T_OPTION = 278,
+ T_ON = 279,
+ T_WORD = 280,
+ T_WORD_QUOTE = 281,
+ T_UNEQUAL = 282,
+ T_CLOSE_PAREN = 283,
+ T_OPEN_PAREN = 284,
+ T_EOL = 285,
+ T_OR = 286,
+ T_AND = 287,
+ T_EQUAL = 288,
+ T_NOT = 289
+ };
+#endif
+/* Tokens. */
+#define T_MAINMENU 258
+#define T_MENU 259
+#define T_ENDMENU 260
+#define T_SOURCE 261
+#define T_CHOICE 262
+#define T_ENDCHOICE 263
+#define T_COMMENT 264
+#define T_CONFIG 265
+#define T_MENUCONFIG 266
+#define T_HELP 267
+#define T_HELPTEXT 268
+#define T_IF 269
+#define T_ENDIF 270
+#define T_DEPENDS 271
+#define T_OPTIONAL 272
+#define T_PROMPT 273
+#define T_TYPE 274
+#define T_DEFAULT 275
+#define T_SELECT 276
+#define T_RANGE 277
+#define T_OPTION 278
+#define T_ON 279
+#define T_WORD 280
+#define T_WORD_QUOTE 281
+#define T_UNEQUAL 282
+#define T_CLOSE_PAREN 283
+#define T_OPEN_PAREN 284
+#define T_EOL 285
+#define T_OR 286
+#define T_AND 287
+#define T_EQUAL 288
+#define T_NOT 289
+
+
+
+
+/* Copy the first part of user declarations. */
+
+
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <ctype.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdbool.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+#include "zconf.hash.c"
+
+#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt)
+
+#define PRINTD 0x0001
+#define DEBUG_PARSE 0x0002
+
+int cdebug = PRINTD;
+
+extern int zconflex(void);
+static void zconfprint(const char *err, ...);
+static void zconf_error(const char *err, ...);
+static void zconferror(const char *err);
+static bool zconf_endtoken(struct kconf_id *id, int starttoken, int endtoken);
+
+struct symbol *symbol_hash[257];
+
+static struct menu *current_menu, *current_entry;
+
+#define YYDEBUG 0
+#if YYDEBUG
+#define YYERROR_VERBOSE
+#endif
+
+
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages. */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table. */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
+
+{
+ char *string;
+ struct file *file;
+ struct symbol *symbol;
+ struct expr *expr;
+ struct menu *menu;
+ struct kconf_id *id;
+}
+/* Line 187 of yacc.c. */
+
+ YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+/* Copy the second part of user declarations. */
+
+
+/* Line 216 of yacc.c. */
+
+
+#ifdef short
+# undef short
+#endif
+
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
+#else
+typedef unsigned char yytype_uint8;
+#endif
+
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+typedef signed char yytype_int8;
+#else
+typedef short int yytype_int8;
+#endif
+
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#endif
+
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+# define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+# define YYSIZE_T size_t
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# else
+# define YYSIZE_T unsigned int
+# endif
+#endif
+
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+#ifndef YY_
+# if YYENABLE_NLS
+# if ENABLE_NLS
+# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+# define YY_(msgid) dgettext ("bison-runtime", msgid)
+# endif
+# endif
+# ifndef YY_
+# define YY_(msgid) msgid
+# endif
+#endif
+
+/* Suppress unused-variable warnings by "using" E. */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(e) ((void) (e))
+#else
+# define YYUSE(e) /* empty */
+#endif
+
+/* Identity function, used to suppress warnings about constant conditions. */
+#ifndef lint
+# define YYID(n) (n)
+#else
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int i)
+#else
+static int
+YYID (i)
+ int i;
+#endif
+{
+ return i;
+}
+#endif
+
+#if ! defined yyoverflow || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols. */
+
+# ifdef YYSTACK_USE_ALLOCA
+# if YYSTACK_USE_ALLOCA
+# ifdef __GNUC__
+# define YYSTACK_ALLOC __builtin_alloca
+# elif defined __BUILTIN_VA_ARG_INCR
+# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+# elif defined _AIX
+# define YYSTACK_ALLOC __alloca
+# elif defined _MSC_VER
+# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+# define alloca _alloca
+# else
+# define YYSTACK_ALLOC alloca
+# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
+# endif
+# endif
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's `empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+# ifndef YYSTACK_ALLOC_MAXIMUM
+ /* The OS might guarantee only one guard page at the bottom of the stack,
+ and a page size can be as small as 4096 bytes. So we cannot safely
+ invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
+ to allow for a few compiler-allocated temporary stack slots. */
+# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+# endif
+# else
+# define YYSTACK_ALLOC YYMALLOC
+# define YYSTACK_FREE YYFREE
+# ifndef YYSTACK_ALLOC_MAXIMUM
+# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+# endif
+# if (defined __cplusplus && ! defined _STDLIB_H \
+ && ! ((defined YYMALLOC || defined malloc) \
+ && (defined YYFREE || defined free)))
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
+# endif
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# ifndef YYFREE
+# define YYFREE free
+# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# endif
+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+
+
+#if (! defined yyoverflow \
+ && (! defined __cplusplus \
+ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member. */
+union yyalloc
+{
+ yytype_int16 yyss;
+ YYSTYPE yyvs;
+ };
+
+/* The size of the maximum gap between one aligned stack and the next. */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+ N elements. */
+# define YYSTACK_BYTES(N) \
+ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO. The source and destination do
+ not overlap. */
+# ifndef YYCOPY
+# if defined __GNUC__ && 1 < __GNUC__
+# define YYCOPY(To, From, Count) \
+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+# else
+# define YYCOPY(To, From, Count) \
+ do \
+ { \
+ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (To)[yyi] = (From)[yyi]; \
+ } \
+ while (YYID (0))
+# endif
+# endif
+
+/* Relocate STACK from its old location to the new one. The
+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
+ elements in the stack, and YYPTR gives the new location of the
+ stack. Advance YYPTR to a properly aligned location for the next
+ stack. */
+# define YYSTACK_RELOCATE(Stack) \
+ do \
+ { \
+ YYSIZE_T yynewbytes; \
+ YYCOPY (&yyptr->Stack, Stack, yysize); \
+ Stack = &yyptr->Stack; \
+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ yyptr += yynewbytes / sizeof (*yyptr); \
+ } \
+ while (YYID (0))
+
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL 3
+/* YYLAST -- Last index in YYTABLE. */
+#define YYLAST 259
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS 35
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS 46
+/* YYNRULES -- Number of rules. */
+#define YYNRULES 110
+/* YYNRULES -- Number of states. */
+#define YYNSTATES 180
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
+#define YYUNDEFTOK 2
+#define YYMAXUTOK 289
+
+#define YYTRANSLATE(YYX) \
+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
+static const yytype_uint8 yytranslate[] =
+{
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+ YYRHS. */
+static const yytype_uint16 yyprhs[] =
+{
+ 0, 0, 3, 5, 6, 9, 12, 15, 20, 23,
+ 28, 33, 37, 39, 41, 43, 45, 47, 49, 51,
+ 53, 55, 57, 59, 61, 63, 67, 70, 74, 77,
+ 81, 84, 85, 88, 91, 94, 97, 100, 103, 107,
+ 112, 117, 122, 128, 132, 133, 137, 138, 141, 145,
+ 148, 150, 154, 155, 158, 161, 164, 167, 170, 175,
+ 179, 182, 187, 188, 191, 195, 197, 201, 202, 205,
+ 208, 211, 215, 218, 220, 224, 225, 228, 231, 234,
+ 238, 242, 245, 248, 251, 252, 255, 258, 261, 266,
+ 267, 270, 272, 274, 277, 280, 283, 285, 288, 289,
+ 292, 294, 298, 302, 306, 309, 313, 317, 319, 321,
+ 322
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const yytype_int8 yyrhs[] =
+{
+ 36, 0, -1, 37, -1, -1, 37, 39, -1, 37,
+ 53, -1, 37, 64, -1, 37, 3, 74, 76, -1,
+ 37, 75, -1, 37, 25, 1, 30, -1, 37, 38,
+ 1, 30, -1, 37, 1, 30, -1, 16, -1, 18,
+ -1, 19, -1, 21, -1, 17, -1, 22, -1, 20,
+ -1, 30, -1, 59, -1, 68, -1, 42, -1, 44,
+ -1, 66, -1, 25, 1, 30, -1, 1, 30, -1,
+ 10, 25, 30, -1, 41, 45, -1, 11, 25, 30,
+ -1, 43, 45, -1, -1, 45, 46, -1, 45, 47,
+ -1, 45, 72, -1, 45, 70, -1, 45, 40, -1,
+ 45, 30, -1, 19, 73, 30, -1, 18, 74, 77,
+ 30, -1, 20, 78, 77, 30, -1, 21, 25, 77,
+ 30, -1, 22, 79, 79, 77, 30, -1, 23, 48,
+ 30, -1, -1, 48, 25, 49, -1, -1, 33, 74,
+ -1, 7, 80, 30, -1, 50, 54, -1, 75, -1,
+ 51, 56, 52, -1, -1, 54, 55, -1, 54, 72,
+ -1, 54, 70, -1, 54, 30, -1, 54, 40, -1,
+ 18, 74, 77, 30, -1, 19, 73, 30, -1, 17,
+ 30, -1, 20, 25, 77, 30, -1, -1, 56, 39,
+ -1, 14, 78, 76, -1, 75, -1, 57, 60, 58,
+ -1, -1, 60, 39, -1, 60, 64, -1, 60, 53,
+ -1, 4, 74, 30, -1, 61, 71, -1, 75, -1,
+ 62, 65, 63, -1, -1, 65, 39, -1, 65, 64,
+ -1, 65, 53, -1, 6, 74, 30, -1, 9, 74,
+ 30, -1, 67, 71, -1, 12, 30, -1, 69, 13,
+ -1, -1, 71, 72, -1, 71, 30, -1, 71, 40,
+ -1, 16, 24, 78, 30, -1, -1, 74, 77, -1,
+ 25, -1, 26, -1, 5, 30, -1, 8, 30, -1,
+ 15, 30, -1, 30, -1, 76, 30, -1, -1, 14,
+ 78, -1, 79, -1, 79, 33, 79, -1, 79, 27,
+ 79, -1, 29, 78, 28, -1, 34, 78, -1, 78,
+ 31, 78, -1, 78, 32, 78, -1, 25, -1, 26,
+ -1, -1, 25, -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const yytype_uint16 yyrline[] =
+{
+ 0, 104, 104, 106, 108, 109, 110, 111, 112, 113,
+ 114, 118, 122, 122, 122, 122, 122, 122, 122, 126,
+ 127, 128, 129, 130, 131, 135, 136, 142, 150, 156,
+ 164, 174, 176, 177, 178, 179, 180, 181, 184, 192,
+ 198, 208, 214, 220, 223, 225, 236, 237, 242, 251,
+ 256, 264, 267, 269, 270, 271, 272, 273, 276, 282,
+ 293, 299, 309, 311, 316, 324, 332, 335, 337, 338,
+ 339, 344, 351, 356, 364, 367, 369, 370, 371, 374,
+ 382, 389, 396, 402, 409, 411, 412, 413, 416, 424,
+ 426, 431, 432, 435, 436, 437, 441, 442, 445, 446,
+ 449, 450, 451, 452, 453, 454, 455, 458, 459, 462,
+ 463
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+ "$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU",
+ "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG",
+ "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS",
+ "T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT", "T_SELECT", "T_RANGE",
+ "T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL",
+ "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND", "T_EQUAL",
+ "T_NOT", "$accept", "input", "stmt_list", "option_name", "common_stmt",
+ "option_error", "config_entry_start", "config_stmt",
+ "menuconfig_entry_start", "menuconfig_stmt", "config_option_list",
+ "config_option", "symbol_option", "symbol_option_list",
+ "symbol_option_arg", "choice", "choice_entry", "choice_end",
+ "choice_stmt", "choice_option_list", "choice_option", "choice_block",
+ "if_entry", "if_end", "if_stmt", "if_block", "menu", "menu_entry",
+ "menu_end", "menu_stmt", "menu_block", "source_stmt", "comment",
+ "comment_stmt", "help_start", "help", "depends_list", "depends",
+ "prompt_stmt_opt", "prompt", "end", "nl", "if_expr", "expr", "symbol",
+ "word_opt", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+ token YYLEX-NUM. */
+static const yytype_uint16 yytoknum[] =
+{
+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const yytype_uint8 yyr1[] =
+{
+ 0, 35, 36, 37, 37, 37, 37, 37, 37, 37,
+ 37, 37, 38, 38, 38, 38, 38, 38, 38, 39,
+ 39, 39, 39, 39, 39, 40, 40, 41, 42, 43,
+ 44, 45, 45, 45, 45, 45, 45, 45, 46, 46,
+ 46, 46, 46, 47, 48, 48, 49, 49, 50, 51,
+ 52, 53, 54, 54, 54, 54, 54, 54, 55, 55,
+ 55, 55, 56, 56, 57, 58, 59, 60, 60, 60,
+ 60, 61, 62, 63, 64, 65, 65, 65, 65, 66,
+ 67, 68, 69, 70, 71, 71, 71, 71, 72, 73,
+ 73, 74, 74, 75, 75, 75, 76, 76, 77, 77,
+ 78, 78, 78, 78, 78, 78, 78, 79, 79, 80,
+ 80
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const yytype_uint8 yyr2[] =
+{
+ 0, 2, 1, 0, 2, 2, 2, 4, 2, 4,
+ 4, 3, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 3, 2, 3, 2, 3,
+ 2, 0, 2, 2, 2, 2, 2, 2, 3, 4,
+ 4, 4, 5, 3, 0, 3, 0, 2, 3, 2,
+ 1, 3, 0, 2, 2, 2, 2, 2, 4, 3,
+ 2, 4, 0, 2, 3, 1, 3, 0, 2, 2,
+ 2, 3, 2, 1, 3, 0, 2, 2, 2, 3,
+ 3, 2, 2, 2, 0, 2, 2, 2, 4, 0,
+ 2, 1, 1, 2, 2, 2, 1, 2, 0, 2,
+ 1, 3, 3, 3, 2, 3, 3, 1, 1, 0,
+ 1
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+ STATE-NUM when YYTABLE doesn't specify something else to do. Zero
+ means the default is an error. */
+static const yytype_uint8 yydefact[] =
+{
+ 3, 0, 0, 1, 0, 0, 0, 0, 0, 109,
+ 0, 0, 0, 0, 0, 0, 12, 16, 13, 14,
+ 18, 15, 17, 0, 19, 0, 4, 31, 22, 31,
+ 23, 52, 62, 5, 67, 20, 84, 75, 6, 24,
+ 84, 21, 8, 11, 91, 92, 0, 0, 93, 0,
+ 110, 0, 94, 0, 0, 0, 107, 108, 0, 0,
+ 0, 100, 95, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 96, 7, 71, 79, 48, 80, 27,
+ 29, 0, 104, 0, 0, 64, 0, 0, 9, 10,
+ 0, 0, 0, 0, 89, 0, 0, 0, 44, 0,
+ 37, 36, 32, 33, 0, 35, 34, 0, 0, 89,
+ 0, 56, 57, 53, 55, 54, 63, 51, 50, 68,
+ 70, 66, 69, 65, 86, 87, 85, 76, 78, 74,
+ 77, 73, 97, 103, 105, 106, 102, 101, 26, 82,
+ 0, 98, 0, 98, 98, 98, 0, 0, 0, 83,
+ 60, 98, 0, 98, 0, 0, 0, 38, 90, 0,
+ 0, 98, 46, 43, 25, 0, 59, 0, 88, 99,
+ 39, 40, 41, 0, 0, 45, 58, 61, 42, 47
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const yytype_int16 yydefgoto[] =
+{
+ -1, 1, 2, 25, 26, 101, 27, 28, 29, 30,
+ 65, 102, 103, 147, 175, 31, 32, 117, 33, 67,
+ 113, 68, 34, 121, 35, 69, 36, 37, 129, 38,
+ 71, 39, 40, 41, 104, 105, 70, 106, 142, 143,
+ 42, 74, 156, 60, 61, 51
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+#define YYPACT_NINF -80
+static const yytype_int16 yypact[] =
+{
+ -80, 2, 132, -80, -13, -1, -1, -2, -1, 9,
+ 33, -1, 27, 40, -3, 38, -80, -80, -80, -80,
+ -80, -80, -80, 71, -80, 77, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, 57, 61, -80, 63,
+ -80, 76, -80, 87, 101, 133, -80, -80, -3, -3,
+ 195, -6, -80, 136, 149, 39, 104, 65, 150, 5,
+ 194, 5, 167, -80, 176, -80, -80, -80, -80, -80,
+ -80, 68, -80, -3, -3, 176, 72, 72, -80, -80,
+ 177, 187, 78, -1, -1, -3, 196, 72, -80, 222,
+ -80, -80, -80, -80, 221, -80, -80, 205, -1, -1,
+ 211, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, 206, -80, -80, -80, -80, -80,
+ -3, 223, 209, 223, 197, 223, 72, 7, 210, -80,
+ -80, 223, 212, 223, 201, -3, 213, -80, -80, 214,
+ 215, 223, 208, -80, -80, 216, -80, 217, -80, 113,
+ -80, -80, -80, 218, -1, -80, -80, -80, -80, -80
+};
+
+/* YYPGOTO[NTERM-NUM]. */
+static const yytype_int16 yypgoto[] =
+{
+ -80, -80, -80, -80, 122, -34, -80, -80, -80, -80,
+ 220, -80, -80, -80, -80, -80, -80, -80, 59, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, 125,
+ -80, -80, -80, -80, -80, 183, 219, 22, 142, -5,
+ 147, 192, 69, -54, -79, -80
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule which
+ number is the opposite. If zero, do what YYDEFACT says.
+ If YYTABLE_NINF, syntax error. */
+#define YYTABLE_NINF -82
+static const yytype_int16 yytable[] =
+{
+ 46, 47, 3, 49, 81, 82, 53, 136, 137, 6,
+ 7, 8, 9, 10, 11, 12, 13, 43, 146, 14,
+ 15, 86, 56, 57, 44, 45, 58, 87, 48, 134,
+ 135, 59, 162, 112, 50, 24, 125, 163, 125, -28,
+ 90, 144, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, 91, 54, -28, -28, 92, -28, 93, 94, 95,
+ 96, 97, 98, 52, 99, 55, 90, 161, 62, 100,
+ -49, -49, 63, -49, -49, -49, -49, 91, 64, -49,
+ -49, 92, 107, 108, 109, 110, 154, 73, 141, 115,
+ 99, 75, 126, 76, 126, 111, 133, 56, 57, 83,
+ 84, 169, 140, 151, -30, 90, 77, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, 91, 78, -30, -30,
+ 92, -30, 93, 94, 95, 96, 97, 98, 120, 99,
+ 128, 79, -2, 4, 100, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 83, 84, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 7, 8, 23, 10, 11,
+ 12, 13, 24, 80, 14, 15, 88, -81, 90, 179,
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, 89,
+ 24, -81, -81, 92, -81, -81, -81, -81, -81, -81,
+ 116, 119, 99, 127, 122, 90, 130, 124, -72, -72,
+ -72, -72, -72, -72, -72, -72, 132, 138, -72, -72,
+ 92, 155, 158, 159, 160, 118, 123, 139, 131, 99,
+ 165, 145, 167, 148, 124, 73, 83, 84, 83, 84,
+ 173, 168, 83, 84, 149, 150, 153, 155, 84, 157,
+ 164, 174, 166, 170, 171, 172, 176, 177, 178, 66,
+ 114, 152, 85, 0, 0, 0, 0, 0, 0, 72
+};
+
+static const yytype_int16 yycheck[] =
+{
+ 5, 6, 0, 8, 58, 59, 11, 86, 87, 4,
+ 5, 6, 7, 8, 9, 10, 11, 30, 97, 14,
+ 15, 27, 25, 26, 25, 26, 29, 33, 30, 83,
+ 84, 34, 25, 67, 25, 30, 70, 30, 72, 0,
+ 1, 95, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 25, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 30, 25, 25, 1, 146, 30, 30,
+ 5, 6, 1, 8, 9, 10, 11, 12, 1, 14,
+ 15, 16, 17, 18, 19, 20, 140, 30, 93, 67,
+ 25, 30, 70, 30, 72, 30, 28, 25, 26, 31,
+ 32, 155, 24, 108, 0, 1, 30, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 30, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 69, 25,
+ 71, 30, 0, 1, 30, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 31, 32, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 5, 6, 25, 8, 9,
+ 10, 11, 30, 30, 14, 15, 30, 0, 1, 174,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 30,
+ 30, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 68, 69, 25, 71, 69, 1, 71, 30, 4, 5,
+ 6, 7, 8, 9, 10, 11, 30, 30, 14, 15,
+ 16, 14, 143, 144, 145, 68, 69, 30, 71, 25,
+ 151, 25, 153, 1, 30, 30, 31, 32, 31, 32,
+ 161, 30, 31, 32, 13, 30, 25, 14, 32, 30,
+ 30, 33, 30, 30, 30, 30, 30, 30, 30, 29,
+ 67, 109, 60, -1, -1, -1, -1, -1, -1, 40
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
+static const yytype_uint8 yystos[] =
+{
+ 0, 36, 37, 0, 1, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 25, 30, 38, 39, 41, 42, 43,
+ 44, 50, 51, 53, 57, 59, 61, 62, 64, 66,
+ 67, 68, 75, 30, 25, 26, 74, 74, 30, 74,
+ 25, 80, 30, 74, 25, 25, 25, 26, 29, 34,
+ 78, 79, 30, 1, 1, 45, 45, 54, 56, 60,
+ 71, 65, 71, 30, 76, 30, 30, 30, 30, 30,
+ 30, 78, 78, 31, 32, 76, 27, 33, 30, 30,
+ 1, 12, 16, 18, 19, 20, 21, 22, 23, 25,
+ 30, 40, 46, 47, 69, 70, 72, 17, 18, 19,
+ 20, 30, 40, 55, 70, 72, 39, 52, 75, 39,
+ 53, 58, 64, 75, 30, 40, 72, 39, 53, 63,
+ 64, 75, 30, 28, 78, 78, 79, 79, 30, 30,
+ 24, 74, 73, 74, 78, 25, 79, 48, 1, 13,
+ 30, 74, 73, 25, 78, 14, 77, 30, 77, 77,
+ 77, 79, 25, 30, 30, 77, 30, 77, 30, 78,
+ 30, 30, 30, 77, 33, 49, 30, 30, 30, 74
+};
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY (-2)
+#define YYEOF 0
+
+#define YYACCEPT goto yyacceptlab
+#define YYABORT goto yyabortlab
+#define YYERROR goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror. This remains here temporarily
+ to ease the transition to the new meaning of YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. */
+
+#define YYFAIL goto yyerrlab
+
+#define YYRECOVERING() (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value) \
+do \
+ if (yychar == YYEMPTY && yylen == 1) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ yytoken = YYTRANSLATE (yychar); \
+ YYPOPSTACK (1); \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror (YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+while (YYID (0))
+
+
+#define YYTERROR 1
+#define YYERRCODE 256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+ If N is 0, then set CURRENT to the empty location which ends
+ the previous symbol: RHS[0] (always defined). */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ do \
+ if (YYID (N)) \
+ { \
+ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
+ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
+ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
+ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
+ } \
+ else \
+ { \
+ (Current).first_line = (Current).last_line = \
+ YYRHSLOC (Rhs, 0).last_line; \
+ (Current).first_column = (Current).last_column = \
+ YYRHSLOC (Rhs, 0).last_column; \
+ } \
+ while (YYID (0))
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+ This macro was not mandated originally: define only if we know
+ we won't break user code: when these are the locations we know. */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+# define YY_LOCATION_PRINT(File, Loc) \
+ fprintf (File, "%d.%d-%d.%d", \
+ (Loc).first_line, (Loc).first_column, \
+ (Loc).last_line, (Loc).last_column)
+# else
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments. */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
+
+/* Enable debugging if requested. */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+# define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (YYID (0))
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yy_symbol_print (stderr, \
+ Type, Value); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (YYID (0))
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+#endif
+{
+ if (!yyvaluep)
+ return;
+# ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+ YYUSE (yyoutput);
+# endif
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+#endif
+{
+ if (yytype < YYNTOKENS)
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+ else
+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep);
+ YYFPRINTF (yyoutput, ")");
+}
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included). |
+`------------------------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+#else
+static void
+yy_stack_print (bottom, top)
+ yytype_int16 *bottom;
+ yytype_int16 *top;
+#endif
+{
+ YYFPRINTF (stderr, "Stack now");
+ for (; bottom <= top; ++bottom)
+ YYFPRINTF (stderr, " %d", *bottom);
+ YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top) \
+do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+} while (YYID (0))
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+#else
+static void
+yy_reduce_print (yyvsp, yyrule)
+ YYSTYPE *yyvsp;
+ int yyrule;
+#endif
+{
+ int yynrhs = yyr2[yyrule];
+ int yyi;
+ unsigned long int yylno = yyrline[yyrule];
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+ yyrule - 1, yylno);
+ /* The symbols being reduced. */
+ for (yyi = 0; yyi < yynrhs; yyi++)
+ {
+ fprintf (stderr, " $%d = ", yyi + 1);
+ yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ );
+ fprintf (stderr, "\n");
+ }
+}
+
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (yyvsp, Rule); \
+} while (YYID (0))
+
+/* Nonzero means print parse trace. It is left uninitialized so that
+ multiple parsers can coexist. */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks. */
+#ifndef YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+ if the built-in stack extension method is used).
+
+ Do not make this value too large; the results are undefined if
+ YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+ evaluated with infinite-precision integer arithmetic. */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+# if defined __GLIBC__ && defined _STRING_H
+# define yystrlen strlen
+# else
+/* Return the length of YYSTR. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static YYSIZE_T
+yystrlen (const char *yystr)
+#else
+static YYSIZE_T
+yystrlen (yystr)
+ const char *yystr;
+#endif
+{
+ YYSIZE_T yylen;
+ for (yylen = 0; yystr[yylen]; yylen++)
+ continue;
+ return yylen;
+}
+# endif
+# endif
+
+# ifndef yystpcpy
+# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+# define yystpcpy stpcpy
+# else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+ YYDEST. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+yystpcpy (yydest, yysrc)
+ char *yydest;
+ const char *yysrc;
+#endif
+{
+ char *yyd = yydest;
+ const char *yys = yysrc;
+
+ while ((*yyd++ = *yys++) != '\0')
+ continue;
+
+ return yyd - 1;
+}
+# endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+ quotes and backslashes, so that it's suitable for yyerror. The
+ heuristic is that double-quoting is unnecessary unless the string
+ contains an apostrophe, a comma, or backslash (other than
+ backslash-backslash). YYSTR is taken from yytname. If YYRES is
+ null, do not copy; instead, return the length of what the result
+ would have been. */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+ if (*yystr == '"')
+ {
+ YYSIZE_T yyn = 0;
+ char const *yyp = yystr;
+
+ for (;;)
+ switch (*++yyp)
+ {
+ case '\'':
+ case ',':
+ goto do_not_strip_quotes;
+
+ case '\\':
+ if (*++yyp != '\\')
+ goto do_not_strip_quotes;
+ /* Fall through. */
+ default:
+ if (yyres)
+ yyres[yyn] = *yyp;
+ yyn++;
+ break;
+
+ case '"':
+ if (yyres)
+ yyres[yyn] = '\0';
+ return yyn;
+ }
+ do_not_strip_quotes: ;
+ }
+
+ if (! yyres)
+ return yystrlen (yystr);
+
+ return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+/* Copy into YYRESULT an error message about the unexpected token
+ YYCHAR while in state YYSTATE. Return the number of bytes copied,
+ including the terminating null byte. If YYRESULT is null, do not
+ copy anything; just return the number of bytes that would be
+ copied. As a special case, return 0 if an ordinary "syntax error"
+ message will do. Return YYSIZE_MAXIMUM if overflow occurs during
+ size calculation. */
+static YYSIZE_T
+yysyntax_error (char *yyresult, int yystate, int yychar)
+{
+ int yyn = yypact[yystate];
+
+ if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
+ return 0;
+ else
+ {
+ int yytype = YYTRANSLATE (yychar);
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ int yysize_overflow = 0;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ int yyx;
+
+# if 0
+ /* This is so xgettext sees the translatable formats that are
+ constructed on the fly. */
+ YY_("syntax error, unexpected %s");
+ YY_("syntax error, unexpected %s, expecting %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+# endif
+ char *yyfmt;
+ char const *yyf;
+ static char const yyunexpected[] = "syntax error, unexpected %s";
+ static char const yyexpecting[] = ", expecting %s";
+ static char const yyor[] = " or %s";
+ char yyformat[sizeof yyunexpected
+ + sizeof yyexpecting - 1
+ + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+ * (sizeof yyor - 1))];
+ char const *yyprefix = yyexpecting;
+
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn + 1;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yycount = 1;
+
+ yyarg[0] = yytname[yytype];
+ yyfmt = yystpcpy (yyformat, yyunexpected);
+
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ yyformat[sizeof yyunexpected - 1] = '\0';
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+ yysize_overflow |= (yysize1 < yysize);
+ yysize = yysize1;
+ yyfmt = yystpcpy (yyfmt, yyprefix);
+ yyprefix = yyor;
+ }
+
+ yyf = YY_(yyformat);
+ yysize1 = yysize + yystrlen (yyf);
+ yysize_overflow |= (yysize1 < yysize);
+ yysize = yysize1;
+
+ if (yysize_overflow)
+ return YYSIZE_MAXIMUM;
+
+ if (yyresult)
+ {
+ /* Avoid sprintf, as that infringes on the user's name space.
+ Don't have undefined behavior even if the translation
+ produced a string with the wrong number of "%s"s. */
+ char *yyp = yyresult;
+ int yyi = 0;
+ while ((*yyp = *yyf) != '\0')
+ {
+ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyf += 2;
+ }
+ else
+ {
+ yyp++;
+ yyf++;
+ }
+ }
+ }
+ return yysize;
+ }
+}
+#endif /* YYERROR_VERBOSE */
+
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+ const char *yymsg;
+ int yytype;
+ YYSTYPE *yyvaluep;
+#endif
+{
+ YYUSE (yyvaluep);
+
+ if (!yymsg)
+ yymsg = "Deleting";
+ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+ switch (yytype)
+ {
+ case 51: /* "choice_entry" */
+
+ {
+ fprintf(stderr, "%s:%d: missing end statement for this entry\n",
+ (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno);
+ if (current_menu == (yyvaluep->menu))
+ menu_end_menu();
+};
+
+ break;
+ case 57: /* "if_entry" */
+
+ {
+ fprintf(stderr, "%s:%d: missing end statement for this entry\n",
+ (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno);
+ if (current_menu == (yyvaluep->menu))
+ menu_end_menu();
+};
+
+ break;
+ case 62: /* "menu_entry" */
+
+ {
+ fprintf(stderr, "%s:%d: missing end statement for this entry\n",
+ (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno);
+ if (current_menu == (yyvaluep->menu))
+ menu_end_menu();
+};
+
+ break;
+
+ default:
+ break;
+ }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes. */
+
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+/* The look-ahead symbol. */
+int yychar;
+
+/* The semantic value of the look-ahead symbol. */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far. */
+int yynerrs;
+
+
+
+/*----------.
+| yyparse. |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+ void *YYPARSE_PARAM;
+#endif
+#else /* ! YYPARSE_PARAM */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+
+#endif
+#endif
+{
+
+ int yystate;
+ int yyn;
+ int yyresult;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
+ /* Look-ahead token as an internal (translated) token number. */
+ int yytoken = 0;
+#if YYERROR_VERBOSE
+ /* Buffer for error messages, and its allocated size. */
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+ /* Three stacks and their tools:
+ `yyss': related to states,
+ `yyvs': related to semantic values,
+ `yyls': related to locations.
+
+ Refer to the stacks thru separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+
+ /* The state stack. */
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss = yyssa;
+ yytype_int16 *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs = yyvsa;
+ YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
+
+ YYSIZE_T yystacksize = YYINITDEPTH;
+
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+
+
+ /* The number of symbols on the RHS of the reduced rule.
+ Keep to zero when no symbol should be popped. */
+ int yylen = 0;
+
+ YYDPRINTF ((stderr, "Starting parse\n"));
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+
+ yyssp = yyss;
+ yyvsp = yyvs;
+
+ goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate. |
+`------------------------------------------------------------*/
+ yynewstate:
+ /* In all cases, when you get here, the value and location stacks
+ have just been pushed. So pushing a state here evens the stacks. */
+ yyssp++;
+
+ yysetstate:
+ *yyssp = yystate;
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ {
+ /* Get the current used size of the three stacks, in elements. */
+ YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ {
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ yytype_int16 *yyss1 = yyss;
+
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. This used to be a
+ conditional around just the two extra args, but that might
+ be undefined if yyoverflow is a macro. */
+ yyoverflow (YY_("memory exhausted"),
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+
+ &yystacksize);
+
+ yyss = yyss1;
+ yyvs = yyvs1;
+ }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+ goto yyexhaustedlab;
+# else
+ /* Extend the stack our own way. */
+ if (YYMAXDEPTH <= yystacksize)
+ goto yyexhaustedlab;
+ yystacksize *= 2;
+ if (YYMAXDEPTH < yystacksize)
+ yystacksize = YYMAXDEPTH;
+
+ {
+ yytype_int16 *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ if (! yyptr)
+ goto yyexhaustedlab;
+ YYSTACK_RELOCATE (yyss);
+ YYSTACK_RELOCATE (yyvs);
+
+# undef YYSTACK_RELOCATE
+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
+ }
+# endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + yysize - 1;
+ yyvsp = yyvs + yysize - 1;
+
+
+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+ (unsigned long int) yystacksize));
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ YYABORT;
+ }
+
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+ goto yybackup;
+
+/*-----------.
+| yybackup. |
+`-----------*/
+yybackup:
+
+ /* Do appropriate processing given the current state. Read a
+ look-ahead token if we need one and don't already have one. */
+
+ /* First try to decide what to do without reference to look-ahead token. */
+ yyn = yypact[yystate];
+ if (yyn == YYPACT_NINF)
+ goto yydefault;
+
+ /* Not known => get a look-ahead token if don't already have one. */
+
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
+ if (yychar == YYEMPTY)
+ {
+ YYDPRINTF ((stderr, "Reading a token: "));
+ yychar = YYLEX;
+ }
+
+ if (yychar <= YYEOF)
+ {
+ yychar = yytoken = YYEOF;
+ YYDPRINTF ((stderr, "Now at end of input.\n"));
+ }
+ else
+ {
+ yytoken = YYTRANSLATE (yychar);
+ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+ }
+
+ /* If the proper action on seeing token YYTOKEN is to reduce or to
+ detect an error, take that action. */
+ yyn += yytoken;
+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+ goto yydefault;
+ yyn = yytable[yyn];
+ if (yyn <= 0)
+ {
+ if (yyn == 0 || yyn == YYTABLE_NINF)
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ /* Shift the look-ahead token. */
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+ /* Discard the shifted token unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
+ yystate = yyn;
+ *++yyvsp = yylval;
+
+ goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state. |
+`-----------------------------------------------------------*/
+yydefault:
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+ goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction. |
+`-----------------------------*/
+yyreduce:
+ /* yyn is the number of a rule to reduce with. */
+ yylen = yyr2[yyn];
+
+ /* If YYLEN is nonzero, implement the default value of the action:
+ `$$ = $1'.
+
+ Otherwise, the following line sets YYVAL to garbage.
+ This behavior is undocumented and Bison
+ users should not rely upon it. Assigning to YYVAL
+ unconditionally makes the parser a bit smaller, and it avoids a
+ GCC warning that YYVAL may be used uninitialized. */
+ yyval = yyvsp[1-yylen];
+
+
+ YY_REDUCE_PRINT (yyn);
+ switch (yyn)
+ {
+ case 8:
+
+ { zconf_error("unexpected end statement"); ;}
+ break;
+
+ case 9:
+
+ { zconf_error("unknown statement \"%s\"", (yyvsp[(2) - (4)].string)); ;}
+ break;
+
+ case 10:
+
+ {
+ zconf_error("unexpected option \"%s\"", kconf_id_strings + (yyvsp[(2) - (4)].id)->name);
+;}
+ break;
+
+ case 11:
+
+ { zconf_error("invalid statement"); ;}
+ break;
+
+ case 25:
+
+ { zconf_error("unknown option \"%s\"", (yyvsp[(1) - (3)].string)); ;}
+ break;
+
+ case 26:
+
+ { zconf_error("invalid option"); ;}
+ break;
+
+ case 27:
+
+ {
+ struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0);
+ sym->flags |= SYMBOL_OPTIONAL;
+ menu_add_entry(sym);
+ printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string));
+;}
+ break;
+
+ case 28:
+
+ {
+ menu_end_entry();
+ printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 29:
+
+ {
+ struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0);
+ sym->flags |= SYMBOL_OPTIONAL;
+ menu_add_entry(sym);
+ printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string));
+;}
+ break;
+
+ case 30:
+
+ {
+ if (current_entry->prompt)
+ current_entry->prompt->type = P_MENU;
+ else
+ zconfprint("warning: menuconfig statement without prompt");
+ menu_end_entry();
+ printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 38:
+
+ {
+ menu_set_type((yyvsp[(1) - (3)].id)->stype);
+ printd(DEBUG_PARSE, "%s:%d:type(%u)\n",
+ zconf_curname(), zconf_lineno(),
+ (yyvsp[(1) - (3)].id)->stype);
+;}
+ break;
+
+ case 39:
+
+ {
+ menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr));
+ printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 40:
+
+ {
+ menu_add_expr(P_DEFAULT, (yyvsp[(2) - (4)].expr), (yyvsp[(3) - (4)].expr));
+ if ((yyvsp[(1) - (4)].id)->stype != S_UNKNOWN)
+ menu_set_type((yyvsp[(1) - (4)].id)->stype);
+ printd(DEBUG_PARSE, "%s:%d:default(%u)\n",
+ zconf_curname(), zconf_lineno(),
+ (yyvsp[(1) - (4)].id)->stype);
+;}
+ break;
+
+ case 41:
+
+ {
+ menu_add_symbol(P_SELECT, sym_lookup((yyvsp[(2) - (4)].string), 0), (yyvsp[(3) - (4)].expr));
+ printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 42:
+
+ {
+ menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[(2) - (5)].symbol), (yyvsp[(3) - (5)].symbol)), (yyvsp[(4) - (5)].expr));
+ printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 45:
+
+ {
+ struct kconf_id *id = kconf_id_lookup((yyvsp[(2) - (3)].string), strlen((yyvsp[(2) - (3)].string)));
+ if (id && id->flags & TF_OPTION)
+ menu_add_option(id->token, (yyvsp[(3) - (3)].string));
+ else
+ zconfprint("warning: ignoring unknown option %s", (yyvsp[(2) - (3)].string));
+ free((yyvsp[(2) - (3)].string));
+;}
+ break;
+
+ case 46:
+
+ { (yyval.string) = NULL; ;}
+ break;
+
+ case 47:
+
+ { (yyval.string) = (yyvsp[(2) - (2)].string); ;}
+ break;
+
+ case 48:
+
+ {
+ struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), SYMBOL_CHOICE);
+ sym->flags |= SYMBOL_AUTO;
+ menu_add_entry(sym);
+ menu_add_expr(P_CHOICE, NULL, NULL);
+ printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 49:
+
+ {
+ (yyval.menu) = menu_add_menu();
+;}
+ break;
+
+ case 50:
+
+ {
+ if (zconf_endtoken((yyvsp[(1) - (1)].id), T_CHOICE, T_ENDCHOICE)) {
+ menu_end_menu();
+ printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno());
+ }
+;}
+ break;
+
+ case 58:
+
+ {
+ menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr));
+ printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 59:
+
+ {
+ if ((yyvsp[(1) - (3)].id)->stype == S_BOOLEAN || (yyvsp[(1) - (3)].id)->stype == S_TRISTATE) {
+ menu_set_type((yyvsp[(1) - (3)].id)->stype);
+ printd(DEBUG_PARSE, "%s:%d:type(%u)\n",
+ zconf_curname(), zconf_lineno(),
+ (yyvsp[(1) - (3)].id)->stype);
+ } else
+ YYERROR;
+;}
+ break;
+
+ case 60:
+
+ {
+ current_entry->sym->flags |= SYMBOL_OPTIONAL;
+ printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 61:
+
+ {
+ if ((yyvsp[(1) - (4)].id)->stype == S_UNKNOWN) {
+ menu_add_symbol(P_DEFAULT, sym_lookup((yyvsp[(2) - (4)].string), 0), (yyvsp[(3) - (4)].expr));
+ printd(DEBUG_PARSE, "%s:%d:default\n",
+ zconf_curname(), zconf_lineno());
+ } else
+ YYERROR;
+;}
+ break;
+
+ case 64:
+
+ {
+ printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());
+ menu_add_entry(NULL);
+ menu_add_dep((yyvsp[(2) - (3)].expr));
+ (yyval.menu) = menu_add_menu();
+;}
+ break;
+
+ case 65:
+
+ {
+ if (zconf_endtoken((yyvsp[(1) - (1)].id), T_IF, T_ENDIF)) {
+ menu_end_menu();
+ printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno());
+ }
+;}
+ break;
+
+ case 71:
+
+ {
+ menu_add_entry(NULL);
+ menu_add_prompt(P_MENU, (yyvsp[(2) - (3)].string), NULL);
+ printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 72:
+
+ {
+ (yyval.menu) = menu_add_menu();
+;}
+ break;
+
+ case 73:
+
+ {
+ if (zconf_endtoken((yyvsp[(1) - (1)].id), T_MENU, T_ENDMENU)) {
+ menu_end_menu();
+ printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno());
+ }
+;}
+ break;
+
+ case 79:
+
+ {
+ printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string));
+ zconf_nextfile((yyvsp[(2) - (3)].string));
+;}
+ break;
+
+ case 80:
+
+ {
+ menu_add_entry(NULL);
+ menu_add_prompt(P_COMMENT, (yyvsp[(2) - (3)].string), NULL);
+ printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 81:
+
+ {
+ menu_end_entry();
+;}
+ break;
+
+ case 82:
+
+ {
+ printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno());
+ zconf_starthelp();
+;}
+ break;
+
+ case 83:
+
+ {
+ current_entry->help = (yyvsp[(2) - (2)].string);
+;}
+ break;
+
+ case 88:
+
+ {
+ menu_add_dep((yyvsp[(3) - (4)].expr));
+ printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 90:
+
+ {
+ menu_add_prompt(P_PROMPT, (yyvsp[(1) - (2)].string), (yyvsp[(2) - (2)].expr));
+;}
+ break;
+
+ case 93:
+
+ { (yyval.id) = (yyvsp[(1) - (2)].id); ;}
+ break;
+
+ case 94:
+
+ { (yyval.id) = (yyvsp[(1) - (2)].id); ;}
+ break;
+
+ case 95:
+
+ { (yyval.id) = (yyvsp[(1) - (2)].id); ;}
+ break;
+
+ case 98:
+
+ { (yyval.expr) = NULL; ;}
+ break;
+
+ case 99:
+
+ { (yyval.expr) = (yyvsp[(2) - (2)].expr); ;}
+ break;
+
+ case 100:
+
+ { (yyval.expr) = expr_alloc_symbol((yyvsp[(1) - (1)].symbol)); ;}
+ break;
+
+ case 101:
+
+ { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); ;}
+ break;
+
+ case 102:
+
+ { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); ;}
+ break;
+
+ case 103:
+
+ { (yyval.expr) = (yyvsp[(2) - (3)].expr); ;}
+ break;
+
+ case 104:
+
+ { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[(2) - (2)].expr)); ;}
+ break;
+
+ case 105:
+
+ { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+ break;
+
+ case 106:
+
+ { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+ break;
+
+ case 107:
+
+ { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), 0); free((yyvsp[(1) - (1)].string)); ;}
+ break;
+
+ case 108:
+
+ { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), SYMBOL_CONST); free((yyvsp[(1) - (1)].string)); ;}
+ break;
+
+ case 109:
+
+ { (yyval.string) = NULL; ;}
+ break;
+
+
+/* Line 1267 of yacc.c. */
+
+ default: break;
+ }
+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+
+ *++yyvsp = yyval;
+
+
+ /* Now `shift' the result of the reduction. Determine what state
+ that goes to, based on the state we popped back to and the rule
+ number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+ if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTOKENS];
+
+ goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+ /* If not already recovering from an error, report this error. */
+ if (!yyerrstatus)
+ {
+ ++yynerrs;
+#if ! YYERROR_VERBOSE
+ yyerror (YY_("syntax error"));
+#else
+ {
+ YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+ if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
+ {
+ YYSIZE_T yyalloc = 2 * yysize;
+ if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
+ yyalloc = YYSTACK_ALLOC_MAXIMUM;
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yyalloc);
+ if (yymsg)
+ yymsg_alloc = yyalloc;
+ else
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ }
+ }
+
+ if (0 < yysize && yysize <= yymsg_alloc)
+ {
+ (void) yysyntax_error (yymsg, yystate, yychar);
+ yyerror (yymsg);
+ }
+ else
+ {
+ yyerror (YY_("syntax error"));
+ if (yysize != 0)
+ goto yyexhaustedlab;
+ }
+ }
+#endif
+ }
+
+
+
+ if (yyerrstatus == 3)
+ {
+ /* If just tried and failed to reuse look-ahead token after an
+ error, discard it. */
+
+ if (yychar <= YYEOF)
+ {
+ /* Return failure if at end of input. */
+ if (yychar == YYEOF)
+ YYABORT;
+ }
+ else
+ {
+ yydestruct ("Error: discarding",
+ yytoken, &yylval);
+ yychar = YYEMPTY;
+ }
+ }
+
+ /* Else will try to reuse look-ahead token after shifting the error
+ token. */
+ goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR. |
+`---------------------------------------------------*/
+yyerrorlab:
+
+ /* Pacify compilers like GCC when the user code never invokes
+ YYERROR and the label yyerrorlab therefore never appears in user
+ code. */
+ if (/*CONSTCOND*/ 0)
+ goto yyerrorlab;
+
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYERROR. */
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+ yystate = *yyssp;
+ goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR. |
+`-------------------------------------------------------------*/
+yyerrlab1:
+ yyerrstatus = 3; /* Each real token shifted decrements this. */
+
+ for (;;)
+ {
+ yyn = yypact[yystate];
+ if (yyn != YYPACT_NINF)
+ {
+ yyn += YYTERROR;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+ {
+ yyn = yytable[yyn];
+ if (0 < yyn)
+ break;
+ }
+ }
+
+ /* Pop the current state because it cannot handle the error token. */
+ if (yyssp == yyss)
+ YYABORT;
+
+
+ yydestruct ("Error: popping",
+ yystos[yystate], yyvsp);
+ YYPOPSTACK (1);
+ yystate = *yyssp;
+ YY_STACK_PRINT (yyss, yyssp);
+ }
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ *++yyvsp = yylval;
+
+
+ /* Shift the error token. */
+ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here. |
+`-------------------------------------*/
+yyacceptlab:
+ yyresult = 0;
+ goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here. |
+`-----------------------------------*/
+yyabortlab:
+ yyresult = 1;
+ goto yyreturn;
+
+#ifndef yyoverflow
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here. |
+`-------------------------------------------------*/
+yyexhaustedlab:
+ yyerror (YY_("memory exhausted"));
+ yyresult = 2;
+ /* Fall through. */
+#endif
+
+yyreturn:
+ if (yychar != YYEOF && yychar != YYEMPTY)
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval);
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYABORT or YYACCEPT. */
+ YYPOPSTACK (yylen);
+ YY_STACK_PRINT (yyss, yyssp);
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+ yystos[*yyssp], yyvsp);
+ YYPOPSTACK (1);
+ }
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+#if YYERROR_VERBOSE
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+#endif
+ /* Make sure YYID is used. */
+ return YYID (yyresult);
+}
+
+
+
+
+
+void conf_parse(const char *name)
+{
+ struct symbol *sym;
+ int i;
+
+ zconf_initscan(name);
+
+ sym_init();
+ menu_init();
+ modules_sym = sym_lookup(NULL, 0);
+ modules_sym->type = S_BOOLEAN;
+ modules_sym->flags |= SYMBOL_AUTO;
+ rootmenu.prompt = menu_add_prompt(P_MENU, "uClibc Configuration", NULL);
+
+#if YYDEBUG
+ if (getenv("ZCONF_DEBUG"))
+ zconfdebug = 1;
+#endif
+ zconfparse();
+ if (zconfnerrs)
+ exit(1);
+ if (!modules_sym->prop) {
+ struct property *prop;
+
+ prop = prop_alloc(P_DEFAULT, modules_sym);
+ prop->expr = expr_alloc_symbol(sym_lookup("MODULES", 0));
+ }
+ menu_finalize(&rootmenu);
+ for_all_symbols(i, sym) {
+ if (sym_check_deps(sym))
+ zconfnerrs++;
+ }
+ if (zconfnerrs)
+ exit(1);
+ sym_set_change_count(1);
+}
+
+const char *zconf_tokenname(int token)
+{
+ switch (token) {
+ case T_MENU: return "menu";
+ case T_ENDMENU: return "endmenu";
+ case T_CHOICE: return "choice";
+ case T_ENDCHOICE: return "endchoice";
+ case T_IF: return "if";
+ case T_ENDIF: return "endif";
+ case T_DEPENDS: return "depends";
+ }
+ return "<token>";
+}
+
+static bool zconf_endtoken(struct kconf_id *id, int starttoken, int endtoken)
+{
+ if (id->token != endtoken) {
+ zconf_error("unexpected '%s' within %s block",
+ kconf_id_strings + id->name, zconf_tokenname(starttoken));
+ zconfnerrs++;
+ return false;
+ }
+ if (current_menu->file != current_file) {
+ zconf_error("'%s' in different file than '%s'",
+ kconf_id_strings + id->name, zconf_tokenname(starttoken));
+ fprintf(stderr, "%s:%d: location of the '%s'\n",
+ current_menu->file->name, current_menu->lineno,
+ zconf_tokenname(starttoken));
+ zconfnerrs++;
+ return false;
+ }
+ return true;
+}
+
+static void zconfprint(const char *err, ...)
+{
+ va_list ap;
+
+ fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
+ va_start(ap, err);
+ vfprintf(stderr, err, ap);
+ va_end(ap);
+ fprintf(stderr, "\n");
+}
+
+static void zconf_error(const char *err, ...)
+{
+ va_list ap;
+
+ zconfnerrs++;
+ fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
+ va_start(ap, err);
+ vfprintf(stderr, err, ap);
+ va_end(ap);
+ fprintf(stderr, "\n");
+}
+
+static void zconferror(const char *err)
+{
+#if YYDEBUG
+ fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);
+#endif
+}
+
+void print_quoted_string(FILE *out, const char *str)
+{
+ const char *p;
+ int len;
+
+ putc('"', out);
+ while ((p = strchr(str, '"'))) {
+ len = p - str;
+ if (len)
+ fprintf(out, "%.*s", len, str);
+ fputs("\\\"", out);
+ str = p + 1;
+ }
+ fputs(str, out);
+ putc('"', out);
+}
+
+void print_symbol(FILE *out, struct menu *menu)
+{
+ struct symbol *sym = menu->sym;
+ struct property *prop;
+
+ if (sym_is_choice(sym))
+ fprintf(out, "choice\n");
+ else
+ fprintf(out, "config %s\n", sym->name);
+ switch (sym->type) {
+ case S_BOOLEAN:
+ fputs(" boolean\n", out);
+ break;
+ case S_TRISTATE:
+ fputs(" tristate\n", out);
+ break;
+ case S_STRING:
+ fputs(" string\n", out);
+ break;
+ case S_INT:
+ fputs(" integer\n", out);
+ break;
+ case S_HEX:
+ fputs(" hex\n", out);
+ break;
+ default:
+ fputs(" ???\n", out);
+ break;
+ }
+ for (prop = sym->prop; prop; prop = prop->next) {
+ if (prop->menu != menu)
+ continue;
+ switch (prop->type) {
+ case P_PROMPT:
+ fputs(" prompt ", out);
+ print_quoted_string(out, prop->text);
+ if (!expr_is_yes(prop->visible.expr)) {
+ fputs(" if ", out);
+ expr_fprint(prop->visible.expr, out);
+ }
+ fputc('\n', out);
+ break;
+ case P_DEFAULT:
+ fputs( " default ", out);
+ expr_fprint(prop->expr, out);
+ if (!expr_is_yes(prop->visible.expr)) {
+ fputs(" if ", out);
+ expr_fprint(prop->visible.expr, out);
+ }
+ fputc('\n', out);
+ break;
+ case P_CHOICE:
+ fputs(" #choice value\n", out);
+ break;
+ default:
+ fprintf(out, " unknown prop %d!\n", prop->type);
+ break;
+ }
+ }
+ if (menu->help) {
+ int len = strlen(menu->help);
+ while (menu->help[--len] == '\n')
+ menu->help[len] = 0;
+ fprintf(out, " help\n%s\n", menu->help);
+ }
+ fputc('\n', out);
+}
+
+void zconfdump(FILE *out)
+{
+ struct property *prop;
+ struct symbol *sym;
+ struct menu *menu;
+
+ menu = rootmenu.list;
+ while (menu) {
+ if ((sym = menu->sym))
+ print_symbol(out, menu);
+ else if ((prop = menu->prompt)) {
+ switch (prop->type) {
+ case P_COMMENT:
+ fputs("\ncomment ", out);
+ print_quoted_string(out, prop->text);
+ fputs("\n", out);
+ break;
+ case P_MENU:
+ fputs("\nmenu ", out);
+ print_quoted_string(out, prop->text);
+ fputs("\n", out);
+ break;
+ default:
+ ;
+ }
+ if (!expr_is_yes(prop->visible.expr)) {
+ fputs(" depends ", out);
+ expr_fprint(prop->visible.expr, out);
+ fputc('\n', out);
+ }
+ fputs("\n", out);
+ }
+
+ if (menu->list)
+ menu = menu->list;
+ else if (menu->next)
+ menu = menu->next;
+ else while ((menu = menu->parent)) {
+ if (menu->prompt && menu->prompt->type == P_MENU)
+ fputs("\nendmenu\n", out);
+ if (menu->next) {
+ menu = menu->next;
+ break;
+ }
+ }
+ }
+}
+
+#include "lex.zconf.c"
+#include "util.c"
+#include "confdata.c"
+#include "expr.c"
+#include "symbol.c"
+#include "menu.c"
+
diff --git a/ap/build/uClibc/extra/config/zconf.tab.c_shipped b/ap/build/uClibc/extra/config/zconf.tab.c_shipped
new file mode 100644
index 0000000..aa9cc28
--- /dev/null
+++ b/ap/build/uClibc/extra/config/zconf.tab.c_shipped
@@ -0,0 +1,2490 @@
+/* A Bison parser, made by GNU Bison 2.3. */
+
+/* Skeleton implementation for Bison's Yacc-like parsers in C
+
+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+ Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA. */
+
+/* As a special exception, you may create a larger work that contains
+ part or all of the Bison parser skeleton and distribute that work
+ under terms of your choice, so long as that work isn't itself a
+ parser generator using the skeleton or a modified version thereof
+ as a parser skeleton. Alternatively, if you modify or redistribute
+ the parser skeleton itself, you may (at your option) remove this
+ special exception, which will cause the skeleton and the resulting
+ Bison output files to be licensed under the GNU General Public
+ License without this special exception.
+
+ This special exception was added by the Free Software Foundation in
+ version 2.2 of Bison. */
+
+/* C LALR(1) parser skeleton written by Richard Stallman, by
+ simplifying the original so-called "semantic" parser. */
+
+/* All symbols defined below should begin with yy or YY, to avoid
+ infringing on user name space. This should be done even for local
+ variables, as they might otherwise be expanded by user macros.
+ There are some unavoidable exceptions within include files to
+ define necessary library symbols; they are noted "INFRINGES ON
+ USER NAME SPACE" below. */
+
+/* Identify Bison output. */
+#define YYBISON 1
+
+/* Bison version. */
+#define YYBISON_VERSION "2.3"
+
+/* Skeleton name. */
+#define YYSKELETON_NAME "yacc.c"
+
+/* Pure parsers. */
+#define YYPURE 0
+
+/* Using locations. */
+#define YYLSP_NEEDED 0
+
+/* Substitute the variable and function names. */
+#define yyparse zconfparse
+#define yylex zconflex
+#define yyerror zconferror
+#define yylval zconflval
+#define yychar zconfchar
+#define yydebug zconfdebug
+#define yynerrs zconfnerrs
+
+
+/* Tokens. */
+#ifndef YYTOKENTYPE
+# define YYTOKENTYPE
+ /* Put the tokens into the symbol table, so that GDB and other debuggers
+ know about them. */
+ enum yytokentype {
+ T_MAINMENU = 258,
+ T_MENU = 259,
+ T_ENDMENU = 260,
+ T_SOURCE = 261,
+ T_CHOICE = 262,
+ T_ENDCHOICE = 263,
+ T_COMMENT = 264,
+ T_CONFIG = 265,
+ T_MENUCONFIG = 266,
+ T_HELP = 267,
+ T_HELPTEXT = 268,
+ T_IF = 269,
+ T_ENDIF = 270,
+ T_DEPENDS = 271,
+ T_OPTIONAL = 272,
+ T_PROMPT = 273,
+ T_TYPE = 274,
+ T_DEFAULT = 275,
+ T_SELECT = 276,
+ T_RANGE = 277,
+ T_OPTION = 278,
+ T_ON = 279,
+ T_WORD = 280,
+ T_WORD_QUOTE = 281,
+ T_UNEQUAL = 282,
+ T_CLOSE_PAREN = 283,
+ T_OPEN_PAREN = 284,
+ T_EOL = 285,
+ T_OR = 286,
+ T_AND = 287,
+ T_EQUAL = 288,
+ T_NOT = 289
+ };
+#endif
+/* Tokens. */
+#define T_MAINMENU 258
+#define T_MENU 259
+#define T_ENDMENU 260
+#define T_SOURCE 261
+#define T_CHOICE 262
+#define T_ENDCHOICE 263
+#define T_COMMENT 264
+#define T_CONFIG 265
+#define T_MENUCONFIG 266
+#define T_HELP 267
+#define T_HELPTEXT 268
+#define T_IF 269
+#define T_ENDIF 270
+#define T_DEPENDS 271
+#define T_OPTIONAL 272
+#define T_PROMPT 273
+#define T_TYPE 274
+#define T_DEFAULT 275
+#define T_SELECT 276
+#define T_RANGE 277
+#define T_OPTION 278
+#define T_ON 279
+#define T_WORD 280
+#define T_WORD_QUOTE 281
+#define T_UNEQUAL 282
+#define T_CLOSE_PAREN 283
+#define T_OPEN_PAREN 284
+#define T_EOL 285
+#define T_OR 286
+#define T_AND 287
+#define T_EQUAL 288
+#define T_NOT 289
+
+
+
+
+/* Copy the first part of user declarations. */
+
+
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <ctype.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdbool.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+#include "zconf.hash.c"
+
+#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt)
+
+#define PRINTD 0x0001
+#define DEBUG_PARSE 0x0002
+
+int cdebug = PRINTD;
+
+extern int zconflex(void);
+static void zconfprint(const char *err, ...);
+static void zconf_error(const char *err, ...);
+static void zconferror(const char *err);
+static bool zconf_endtoken(struct kconf_id *id, int starttoken, int endtoken);
+
+struct symbol *symbol_hash[257];
+
+static struct menu *current_menu, *current_entry;
+
+#define YYDEBUG 0
+#if YYDEBUG
+#define YYERROR_VERBOSE
+#endif
+
+
+/* Enabling traces. */
+#ifndef YYDEBUG
+# define YYDEBUG 0
+#endif
+
+/* Enabling verbose error messages. */
+#ifdef YYERROR_VERBOSE
+# undef YYERROR_VERBOSE
+# define YYERROR_VERBOSE 1
+#else
+# define YYERROR_VERBOSE 0
+#endif
+
+/* Enabling the token table. */
+#ifndef YYTOKEN_TABLE
+# define YYTOKEN_TABLE 0
+#endif
+
+#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
+typedef union YYSTYPE
+
+{
+ char *string;
+ struct file *file;
+ struct symbol *symbol;
+ struct expr *expr;
+ struct menu *menu;
+ struct kconf_id *id;
+}
+/* Line 187 of yacc.c. */
+
+ YYSTYPE;
+# define yystype YYSTYPE /* obsolescent; will be withdrawn */
+# define YYSTYPE_IS_DECLARED 1
+# define YYSTYPE_IS_TRIVIAL 1
+#endif
+
+
+
+/* Copy the second part of user declarations. */
+
+
+/* Line 216 of yacc.c. */
+
+
+#ifdef short
+# undef short
+#endif
+
+#ifdef YYTYPE_UINT8
+typedef YYTYPE_UINT8 yytype_uint8;
+#else
+typedef unsigned char yytype_uint8;
+#endif
+
+#ifdef YYTYPE_INT8
+typedef YYTYPE_INT8 yytype_int8;
+#elif (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+typedef signed char yytype_int8;
+#else
+typedef short int yytype_int8;
+#endif
+
+#ifdef YYTYPE_UINT16
+typedef YYTYPE_UINT16 yytype_uint16;
+#else
+typedef unsigned short int yytype_uint16;
+#endif
+
+#ifdef YYTYPE_INT16
+typedef YYTYPE_INT16 yytype_int16;
+#else
+typedef short int yytype_int16;
+#endif
+
+#ifndef YYSIZE_T
+# ifdef __SIZE_TYPE__
+# define YYSIZE_T __SIZE_TYPE__
+# elif defined size_t
+# define YYSIZE_T size_t
+# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# define YYSIZE_T size_t
+# else
+# define YYSIZE_T unsigned int
+# endif
+#endif
+
+#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+
+#ifndef YY_
+# if YYENABLE_NLS
+# if ENABLE_NLS
+# include <libintl.h> /* INFRINGES ON USER NAME SPACE */
+# define YY_(msgid) dgettext ("bison-runtime", msgid)
+# endif
+# endif
+# ifndef YY_
+# define YY_(msgid) msgid
+# endif
+#endif
+
+/* Suppress unused-variable warnings by "using" E. */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(e) ((void) (e))
+#else
+# define YYUSE(e) /* empty */
+#endif
+
+/* Identity function, used to suppress warnings about constant conditions. */
+#ifndef lint
+# define YYID(n) (n)
+#else
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static int
+YYID (int i)
+#else
+static int
+YYID (i)
+ int i;
+#endif
+{
+ return i;
+}
+#endif
+
+#if ! defined yyoverflow || YYERROR_VERBOSE
+
+/* The parser invokes alloca or malloc; define the necessary symbols. */
+
+# ifdef YYSTACK_USE_ALLOCA
+# if YYSTACK_USE_ALLOCA
+# ifdef __GNUC__
+# define YYSTACK_ALLOC __builtin_alloca
+# elif defined __BUILTIN_VA_ARG_INCR
+# include <alloca.h> /* INFRINGES ON USER NAME SPACE */
+# elif defined _AIX
+# define YYSTACK_ALLOC __alloca
+# elif defined _MSC_VER
+# include <malloc.h> /* INFRINGES ON USER NAME SPACE */
+# define alloca _alloca
+# else
+# define YYSTACK_ALLOC alloca
+# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
+# endif
+# endif
+# endif
+# endif
+# endif
+
+# ifdef YYSTACK_ALLOC
+ /* Pacify GCC's `empty if-body' warning. */
+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+# ifndef YYSTACK_ALLOC_MAXIMUM
+ /* The OS might guarantee only one guard page at the bottom of the stack,
+ and a page size can be as small as 4096 bytes. So we cannot safely
+ invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
+ to allow for a few compiler-allocated temporary stack slots. */
+# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
+# endif
+# else
+# define YYSTACK_ALLOC YYMALLOC
+# define YYSTACK_FREE YYFREE
+# ifndef YYSTACK_ALLOC_MAXIMUM
+# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
+# endif
+# if (defined __cplusplus && ! defined _STDLIB_H \
+ && ! ((defined YYMALLOC || defined malloc) \
+ && (defined YYFREE || defined free)))
+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
+# ifndef _STDLIB_H
+# define _STDLIB_H 1
+# endif
+# endif
+# ifndef YYMALLOC
+# define YYMALLOC malloc
+# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# ifndef YYFREE
+# define YYFREE free
+# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+void free (void *); /* INFRINGES ON USER NAME SPACE */
+# endif
+# endif
+# endif
+#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
+
+
+#if (! defined yyoverflow \
+ && (! defined __cplusplus \
+ || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+
+/* A type that is properly aligned for any stack member. */
+union yyalloc
+{
+ yytype_int16 yyss;
+ YYSTYPE yyvs;
+ };
+
+/* The size of the maximum gap between one aligned stack and the next. */
+# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
+
+/* The size of an array large to enough to hold all stacks, each with
+ N elements. */
+# define YYSTACK_BYTES(N) \
+ ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ + YYSTACK_GAP_MAXIMUM)
+
+/* Copy COUNT objects from FROM to TO. The source and destination do
+ not overlap. */
+# ifndef YYCOPY
+# if defined __GNUC__ && 1 < __GNUC__
+# define YYCOPY(To, From, Count) \
+ __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
+# else
+# define YYCOPY(To, From, Count) \
+ do \
+ { \
+ YYSIZE_T yyi; \
+ for (yyi = 0; yyi < (Count); yyi++) \
+ (To)[yyi] = (From)[yyi]; \
+ } \
+ while (YYID (0))
+# endif
+# endif
+
+/* Relocate STACK from its old location to the new one. The
+ local variables YYSIZE and YYSTACKSIZE give the old and new number of
+ elements in the stack, and YYPTR gives the new location of the
+ stack. Advance YYPTR to a properly aligned location for the next
+ stack. */
+# define YYSTACK_RELOCATE(Stack) \
+ do \
+ { \
+ YYSIZE_T yynewbytes; \
+ YYCOPY (&yyptr->Stack, Stack, yysize); \
+ Stack = &yyptr->Stack; \
+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ yyptr += yynewbytes / sizeof (*yyptr); \
+ } \
+ while (YYID (0))
+
+#endif
+
+/* YYFINAL -- State number of the termination state. */
+#define YYFINAL 3
+/* YYLAST -- Last index in YYTABLE. */
+#define YYLAST 259
+
+/* YYNTOKENS -- Number of terminals. */
+#define YYNTOKENS 35
+/* YYNNTS -- Number of nonterminals. */
+#define YYNNTS 46
+/* YYNRULES -- Number of rules. */
+#define YYNRULES 110
+/* YYNRULES -- Number of states. */
+#define YYNSTATES 180
+
+/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
+#define YYUNDEFTOK 2
+#define YYMAXUTOK 289
+
+#define YYTRANSLATE(YYX) \
+ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
+static const yytype_uint8 yytranslate[] =
+{
+ 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
+ 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
+ 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
+ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
+ 25, 26, 27, 28, 29, 30, 31, 32, 33, 34
+};
+
+#if YYDEBUG
+/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
+ YYRHS. */
+static const yytype_uint16 yyprhs[] =
+{
+ 0, 0, 3, 5, 6, 9, 12, 15, 20, 23,
+ 28, 33, 37, 39, 41, 43, 45, 47, 49, 51,
+ 53, 55, 57, 59, 61, 63, 67, 70, 74, 77,
+ 81, 84, 85, 88, 91, 94, 97, 100, 103, 107,
+ 112, 117, 122, 128, 132, 133, 137, 138, 141, 145,
+ 148, 150, 154, 155, 158, 161, 164, 167, 170, 175,
+ 179, 182, 187, 188, 191, 195, 197, 201, 202, 205,
+ 208, 211, 215, 218, 220, 224, 225, 228, 231, 234,
+ 238, 242, 245, 248, 251, 252, 255, 258, 261, 266,
+ 267, 270, 272, 274, 277, 280, 283, 285, 288, 289,
+ 292, 294, 298, 302, 306, 309, 313, 317, 319, 321,
+ 322
+};
+
+/* YYRHS -- A `-1'-separated list of the rules' RHS. */
+static const yytype_int8 yyrhs[] =
+{
+ 36, 0, -1, 37, -1, -1, 37, 39, -1, 37,
+ 53, -1, 37, 64, -1, 37, 3, 74, 76, -1,
+ 37, 75, -1, 37, 25, 1, 30, -1, 37, 38,
+ 1, 30, -1, 37, 1, 30, -1, 16, -1, 18,
+ -1, 19, -1, 21, -1, 17, -1, 22, -1, 20,
+ -1, 30, -1, 59, -1, 68, -1, 42, -1, 44,
+ -1, 66, -1, 25, 1, 30, -1, 1, 30, -1,
+ 10, 25, 30, -1, 41, 45, -1, 11, 25, 30,
+ -1, 43, 45, -1, -1, 45, 46, -1, 45, 47,
+ -1, 45, 72, -1, 45, 70, -1, 45, 40, -1,
+ 45, 30, -1, 19, 73, 30, -1, 18, 74, 77,
+ 30, -1, 20, 78, 77, 30, -1, 21, 25, 77,
+ 30, -1, 22, 79, 79, 77, 30, -1, 23, 48,
+ 30, -1, -1, 48, 25, 49, -1, -1, 33, 74,
+ -1, 7, 80, 30, -1, 50, 54, -1, 75, -1,
+ 51, 56, 52, -1, -1, 54, 55, -1, 54, 72,
+ -1, 54, 70, -1, 54, 30, -1, 54, 40, -1,
+ 18, 74, 77, 30, -1, 19, 73, 30, -1, 17,
+ 30, -1, 20, 25, 77, 30, -1, -1, 56, 39,
+ -1, 14, 78, 76, -1, 75, -1, 57, 60, 58,
+ -1, -1, 60, 39, -1, 60, 64, -1, 60, 53,
+ -1, 4, 74, 30, -1, 61, 71, -1, 75, -1,
+ 62, 65, 63, -1, -1, 65, 39, -1, 65, 64,
+ -1, 65, 53, -1, 6, 74, 30, -1, 9, 74,
+ 30, -1, 67, 71, -1, 12, 30, -1, 69, 13,
+ -1, -1, 71, 72, -1, 71, 30, -1, 71, 40,
+ -1, 16, 24, 78, 30, -1, -1, 74, 77, -1,
+ 25, -1, 26, -1, 5, 30, -1, 8, 30, -1,
+ 15, 30, -1, 30, -1, 76, 30, -1, -1, 14,
+ 78, -1, 79, -1, 79, 33, 79, -1, 79, 27,
+ 79, -1, 29, 78, 28, -1, 34, 78, -1, 78,
+ 31, 78, -1, 78, 32, 78, -1, 25, -1, 26,
+ -1, -1, 25, -1
+};
+
+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */
+static const yytype_uint16 yyrline[] =
+{
+ 0, 104, 104, 106, 108, 109, 110, 111, 112, 113,
+ 114, 118, 122, 122, 122, 122, 122, 122, 122, 126,
+ 127, 128, 129, 130, 131, 135, 136, 142, 150, 156,
+ 164, 174, 176, 177, 178, 179, 180, 181, 184, 192,
+ 198, 208, 214, 220, 223, 225, 236, 237, 242, 251,
+ 256, 264, 267, 269, 270, 271, 272, 273, 276, 282,
+ 293, 299, 309, 311, 316, 324, 332, 335, 337, 338,
+ 339, 344, 351, 356, 364, 367, 369, 370, 371, 374,
+ 382, 389, 396, 402, 409, 411, 412, 413, 416, 424,
+ 426, 431, 432, 435, 436, 437, 441, 442, 445, 446,
+ 449, 450, 451, 452, 453, 454, 455, 458, 459, 462,
+ 463
+};
+#endif
+
+#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
+/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
+ First, the terminals, then, starting at YYNTOKENS, nonterminals. */
+static const char *const yytname[] =
+{
+ "$end", "error", "$undefined", "T_MAINMENU", "T_MENU", "T_ENDMENU",
+ "T_SOURCE", "T_CHOICE", "T_ENDCHOICE", "T_COMMENT", "T_CONFIG",
+ "T_MENUCONFIG", "T_HELP", "T_HELPTEXT", "T_IF", "T_ENDIF", "T_DEPENDS",
+ "T_OPTIONAL", "T_PROMPT", "T_TYPE", "T_DEFAULT", "T_SELECT", "T_RANGE",
+ "T_OPTION", "T_ON", "T_WORD", "T_WORD_QUOTE", "T_UNEQUAL",
+ "T_CLOSE_PAREN", "T_OPEN_PAREN", "T_EOL", "T_OR", "T_AND", "T_EQUAL",
+ "T_NOT", "$accept", "input", "stmt_list", "option_name", "common_stmt",
+ "option_error", "config_entry_start", "config_stmt",
+ "menuconfig_entry_start", "menuconfig_stmt", "config_option_list",
+ "config_option", "symbol_option", "symbol_option_list",
+ "symbol_option_arg", "choice", "choice_entry", "choice_end",
+ "choice_stmt", "choice_option_list", "choice_option", "choice_block",
+ "if_entry", "if_end", "if_stmt", "if_block", "menu", "menu_entry",
+ "menu_end", "menu_stmt", "menu_block", "source_stmt", "comment",
+ "comment_stmt", "help_start", "help", "depends_list", "depends",
+ "prompt_stmt_opt", "prompt", "end", "nl", "if_expr", "expr", "symbol",
+ "word_opt", 0
+};
+#endif
+
+# ifdef YYPRINT
+/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
+ token YYLEX-NUM. */
+static const yytype_uint16 yytoknum[] =
+{
+ 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 286, 287, 288, 289
+};
+# endif
+
+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
+static const yytype_uint8 yyr1[] =
+{
+ 0, 35, 36, 37, 37, 37, 37, 37, 37, 37,
+ 37, 37, 38, 38, 38, 38, 38, 38, 38, 39,
+ 39, 39, 39, 39, 39, 40, 40, 41, 42, 43,
+ 44, 45, 45, 45, 45, 45, 45, 45, 46, 46,
+ 46, 46, 46, 47, 48, 48, 49, 49, 50, 51,
+ 52, 53, 54, 54, 54, 54, 54, 54, 55, 55,
+ 55, 55, 56, 56, 57, 58, 59, 60, 60, 60,
+ 60, 61, 62, 63, 64, 65, 65, 65, 65, 66,
+ 67, 68, 69, 70, 71, 71, 71, 71, 72, 73,
+ 73, 74, 74, 75, 75, 75, 76, 76, 77, 77,
+ 78, 78, 78, 78, 78, 78, 78, 79, 79, 80,
+ 80
+};
+
+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
+static const yytype_uint8 yyr2[] =
+{
+ 0, 2, 1, 0, 2, 2, 2, 4, 2, 4,
+ 4, 3, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 3, 2, 3, 2, 3,
+ 2, 0, 2, 2, 2, 2, 2, 2, 3, 4,
+ 4, 4, 5, 3, 0, 3, 0, 2, 3, 2,
+ 1, 3, 0, 2, 2, 2, 2, 2, 4, 3,
+ 2, 4, 0, 2, 3, 1, 3, 0, 2, 2,
+ 2, 3, 2, 1, 3, 0, 2, 2, 2, 3,
+ 3, 2, 2, 2, 0, 2, 2, 2, 4, 0,
+ 2, 1, 1, 2, 2, 2, 1, 2, 0, 2,
+ 1, 3, 3, 3, 2, 3, 3, 1, 1, 0,
+ 1
+};
+
+/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
+ STATE-NUM when YYTABLE doesn't specify something else to do. Zero
+ means the default is an error. */
+static const yytype_uint8 yydefact[] =
+{
+ 3, 0, 0, 1, 0, 0, 0, 0, 0, 109,
+ 0, 0, 0, 0, 0, 0, 12, 16, 13, 14,
+ 18, 15, 17, 0, 19, 0, 4, 31, 22, 31,
+ 23, 52, 62, 5, 67, 20, 84, 75, 6, 24,
+ 84, 21, 8, 11, 91, 92, 0, 0, 93, 0,
+ 110, 0, 94, 0, 0, 0, 107, 108, 0, 0,
+ 0, 100, 95, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 96, 7, 71, 79, 48, 80, 27,
+ 29, 0, 104, 0, 0, 64, 0, 0, 9, 10,
+ 0, 0, 0, 0, 89, 0, 0, 0, 44, 0,
+ 37, 36, 32, 33, 0, 35, 34, 0, 0, 89,
+ 0, 56, 57, 53, 55, 54, 63, 51, 50, 68,
+ 70, 66, 69, 65, 86, 87, 85, 76, 78, 74,
+ 77, 73, 97, 103, 105, 106, 102, 101, 26, 82,
+ 0, 98, 0, 98, 98, 98, 0, 0, 0, 83,
+ 60, 98, 0, 98, 0, 0, 0, 38, 90, 0,
+ 0, 98, 46, 43, 25, 0, 59, 0, 88, 99,
+ 39, 40, 41, 0, 0, 45, 58, 61, 42, 47
+};
+
+/* YYDEFGOTO[NTERM-NUM]. */
+static const yytype_int16 yydefgoto[] =
+{
+ -1, 1, 2, 25, 26, 101, 27, 28, 29, 30,
+ 65, 102, 103, 147, 175, 31, 32, 117, 33, 67,
+ 113, 68, 34, 121, 35, 69, 36, 37, 129, 38,
+ 71, 39, 40, 41, 104, 105, 70, 106, 142, 143,
+ 42, 74, 156, 60, 61, 51
+};
+
+/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+ STATE-NUM. */
+#define YYPACT_NINF -80
+static const yytype_int16 yypact[] =
+{
+ -80, 2, 132, -80, -13, -1, -1, -2, -1, 9,
+ 33, -1, 27, 40, -3, 38, -80, -80, -80, -80,
+ -80, -80, -80, 71, -80, 77, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, 57, 61, -80, 63,
+ -80, 76, -80, 87, 101, 133, -80, -80, -3, -3,
+ 195, -6, -80, 136, 149, 39, 104, 65, 150, 5,
+ 194, 5, 167, -80, 176, -80, -80, -80, -80, -80,
+ -80, 68, -80, -3, -3, 176, 72, 72, -80, -80,
+ 177, 187, 78, -1, -1, -3, 196, 72, -80, 222,
+ -80, -80, -80, -80, 221, -80, -80, 205, -1, -1,
+ 211, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, -80,
+ -80, -80, -80, -80, 206, -80, -80, -80, -80, -80,
+ -3, 223, 209, 223, 197, 223, 72, 7, 210, -80,
+ -80, 223, 212, 223, 201, -3, 213, -80, -80, 214,
+ 215, 223, 208, -80, -80, 216, -80, 217, -80, 113,
+ -80, -80, -80, 218, -1, -80, -80, -80, -80, -80
+};
+
+/* YYPGOTO[NTERM-NUM]. */
+static const yytype_int16 yypgoto[] =
+{
+ -80, -80, -80, -80, 122, -34, -80, -80, -80, -80,
+ 220, -80, -80, -80, -80, -80, -80, -80, 59, -80,
+ -80, -80, -80, -80, -80, -80, -80, -80, -80, 125,
+ -80, -80, -80, -80, -80, 183, 219, 22, 142, -5,
+ 147, 192, 69, -54, -79, -80
+};
+
+/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
+ positive, shift that token. If negative, reduce the rule which
+ number is the opposite. If zero, do what YYDEFACT says.
+ If YYTABLE_NINF, syntax error. */
+#define YYTABLE_NINF -82
+static const yytype_int16 yytable[] =
+{
+ 46, 47, 3, 49, 81, 82, 53, 136, 137, 6,
+ 7, 8, 9, 10, 11, 12, 13, 43, 146, 14,
+ 15, 86, 56, 57, 44, 45, 58, 87, 48, 134,
+ 135, 59, 162, 112, 50, 24, 125, 163, 125, -28,
+ 90, 144, -28, -28, -28, -28, -28, -28, -28, -28,
+ -28, 91, 54, -28, -28, 92, -28, 93, 94, 95,
+ 96, 97, 98, 52, 99, 55, 90, 161, 62, 100,
+ -49, -49, 63, -49, -49, -49, -49, 91, 64, -49,
+ -49, 92, 107, 108, 109, 110, 154, 73, 141, 115,
+ 99, 75, 126, 76, 126, 111, 133, 56, 57, 83,
+ 84, 169, 140, 151, -30, 90, 77, -30, -30, -30,
+ -30, -30, -30, -30, -30, -30, 91, 78, -30, -30,
+ 92, -30, 93, 94, 95, 96, 97, 98, 120, 99,
+ 128, 79, -2, 4, 100, 5, 6, 7, 8, 9,
+ 10, 11, 12, 13, 83, 84, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 7, 8, 23, 10, 11,
+ 12, 13, 24, 80, 14, 15, 88, -81, 90, 179,
+ -81, -81, -81, -81, -81, -81, -81, -81, -81, 89,
+ 24, -81, -81, 92, -81, -81, -81, -81, -81, -81,
+ 116, 119, 99, 127, 122, 90, 130, 124, -72, -72,
+ -72, -72, -72, -72, -72, -72, 132, 138, -72, -72,
+ 92, 155, 158, 159, 160, 118, 123, 139, 131, 99,
+ 165, 145, 167, 148, 124, 73, 83, 84, 83, 84,
+ 173, 168, 83, 84, 149, 150, 153, 155, 84, 157,
+ 164, 174, 166, 170, 171, 172, 176, 177, 178, 66,
+ 114, 152, 85, 0, 0, 0, 0, 0, 0, 72
+};
+
+static const yytype_int16 yycheck[] =
+{
+ 5, 6, 0, 8, 58, 59, 11, 86, 87, 4,
+ 5, 6, 7, 8, 9, 10, 11, 30, 97, 14,
+ 15, 27, 25, 26, 25, 26, 29, 33, 30, 83,
+ 84, 34, 25, 67, 25, 30, 70, 30, 72, 0,
+ 1, 95, 3, 4, 5, 6, 7, 8, 9, 10,
+ 11, 12, 25, 14, 15, 16, 17, 18, 19, 20,
+ 21, 22, 23, 30, 25, 25, 1, 146, 30, 30,
+ 5, 6, 1, 8, 9, 10, 11, 12, 1, 14,
+ 15, 16, 17, 18, 19, 20, 140, 30, 93, 67,
+ 25, 30, 70, 30, 72, 30, 28, 25, 26, 31,
+ 32, 155, 24, 108, 0, 1, 30, 3, 4, 5,
+ 6, 7, 8, 9, 10, 11, 12, 30, 14, 15,
+ 16, 17, 18, 19, 20, 21, 22, 23, 69, 25,
+ 71, 30, 0, 1, 30, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 31, 32, 14, 15, 16, 17,
+ 18, 19, 20, 21, 22, 5, 6, 25, 8, 9,
+ 10, 11, 30, 30, 14, 15, 30, 0, 1, 174,
+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 30,
+ 30, 14, 15, 16, 17, 18, 19, 20, 21, 22,
+ 68, 69, 25, 71, 69, 1, 71, 30, 4, 5,
+ 6, 7, 8, 9, 10, 11, 30, 30, 14, 15,
+ 16, 14, 143, 144, 145, 68, 69, 30, 71, 25,
+ 151, 25, 153, 1, 30, 30, 31, 32, 31, 32,
+ 161, 30, 31, 32, 13, 30, 25, 14, 32, 30,
+ 30, 33, 30, 30, 30, 30, 30, 30, 30, 29,
+ 67, 109, 60, -1, -1, -1, -1, -1, -1, 40
+};
+
+/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+ symbol of state STATE-NUM. */
+static const yytype_uint8 yystos[] =
+{
+ 0, 36, 37, 0, 1, 3, 4, 5, 6, 7,
+ 8, 9, 10, 11, 14, 15, 16, 17, 18, 19,
+ 20, 21, 22, 25, 30, 38, 39, 41, 42, 43,
+ 44, 50, 51, 53, 57, 59, 61, 62, 64, 66,
+ 67, 68, 75, 30, 25, 26, 74, 74, 30, 74,
+ 25, 80, 30, 74, 25, 25, 25, 26, 29, 34,
+ 78, 79, 30, 1, 1, 45, 45, 54, 56, 60,
+ 71, 65, 71, 30, 76, 30, 30, 30, 30, 30,
+ 30, 78, 78, 31, 32, 76, 27, 33, 30, 30,
+ 1, 12, 16, 18, 19, 20, 21, 22, 23, 25,
+ 30, 40, 46, 47, 69, 70, 72, 17, 18, 19,
+ 20, 30, 40, 55, 70, 72, 39, 52, 75, 39,
+ 53, 58, 64, 75, 30, 40, 72, 39, 53, 63,
+ 64, 75, 30, 28, 78, 78, 79, 79, 30, 30,
+ 24, 74, 73, 74, 78, 25, 79, 48, 1, 13,
+ 30, 74, 73, 25, 78, 14, 77, 30, 77, 77,
+ 77, 79, 25, 30, 30, 77, 30, 77, 30, 78,
+ 30, 30, 30, 77, 33, 49, 30, 30, 30, 74
+};
+
+#define yyerrok (yyerrstatus = 0)
+#define yyclearin (yychar = YYEMPTY)
+#define YYEMPTY (-2)
+#define YYEOF 0
+
+#define YYACCEPT goto yyacceptlab
+#define YYABORT goto yyabortlab
+#define YYERROR goto yyerrorlab
+
+
+/* Like YYERROR except do call yyerror. This remains here temporarily
+ to ease the transition to the new meaning of YYERROR, for GCC.
+ Once GCC version 2 has supplanted version 1, this can go. */
+
+#define YYFAIL goto yyerrlab
+
+#define YYRECOVERING() (!!yyerrstatus)
+
+#define YYBACKUP(Token, Value) \
+do \
+ if (yychar == YYEMPTY && yylen == 1) \
+ { \
+ yychar = (Token); \
+ yylval = (Value); \
+ yytoken = YYTRANSLATE (yychar); \
+ YYPOPSTACK (1); \
+ goto yybackup; \
+ } \
+ else \
+ { \
+ yyerror (YY_("syntax error: cannot back up")); \
+ YYERROR; \
+ } \
+while (YYID (0))
+
+
+#define YYTERROR 1
+#define YYERRCODE 256
+
+
+/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
+ If N is 0, then set CURRENT to the empty location which ends
+ the previous symbol: RHS[0] (always defined). */
+
+#define YYRHSLOC(Rhs, K) ((Rhs)[K])
+#ifndef YYLLOC_DEFAULT
+# define YYLLOC_DEFAULT(Current, Rhs, N) \
+ do \
+ if (YYID (N)) \
+ { \
+ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \
+ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \
+ (Current).last_line = YYRHSLOC (Rhs, N).last_line; \
+ (Current).last_column = YYRHSLOC (Rhs, N).last_column; \
+ } \
+ else \
+ { \
+ (Current).first_line = (Current).last_line = \
+ YYRHSLOC (Rhs, 0).last_line; \
+ (Current).first_column = (Current).last_column = \
+ YYRHSLOC (Rhs, 0).last_column; \
+ } \
+ while (YYID (0))
+#endif
+
+
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+ This macro was not mandated originally: define only if we know
+ we won't break user code: when these are the locations we know. */
+
+#ifndef YY_LOCATION_PRINT
+# if YYLTYPE_IS_TRIVIAL
+# define YY_LOCATION_PRINT(File, Loc) \
+ fprintf (File, "%d.%d-%d.%d", \
+ (Loc).first_line, (Loc).first_column, \
+ (Loc).last_line, (Loc).last_column)
+# else
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif
+
+
+/* YYLEX -- calling `yylex' with the right arguments. */
+
+#ifdef YYLEX_PARAM
+# define YYLEX yylex (YYLEX_PARAM)
+#else
+# define YYLEX yylex ()
+#endif
+
+/* Enable debugging if requested. */
+#if YYDEBUG
+
+# ifndef YYFPRINTF
+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */
+# define YYFPRINTF fprintf
+# endif
+
+# define YYDPRINTF(Args) \
+do { \
+ if (yydebug) \
+ YYFPRINTF Args; \
+} while (YYID (0))
+
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+do { \
+ if (yydebug) \
+ { \
+ YYFPRINTF (stderr, "%s ", Title); \
+ yy_symbol_print (stderr, \
+ Type, Value); \
+ YYFPRINTF (stderr, "\n"); \
+ } \
+} while (YYID (0))
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_value_print (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+#endif
+{
+ if (!yyvaluep)
+ return;
+# ifdef YYPRINT
+ if (yytype < YYNTOKENS)
+ YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+# else
+ YYUSE (yyoutput);
+# endif
+ switch (yytype)
+ {
+ default:
+ break;
+ }
+}
+
+
+/*--------------------------------.
+| Print this symbol on YYOUTPUT. |
+`--------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+#else
+static void
+yy_symbol_print (yyoutput, yytype, yyvaluep)
+ FILE *yyoutput;
+ int yytype;
+ YYSTYPE const * const yyvaluep;
+#endif
+{
+ if (yytype < YYNTOKENS)
+ YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
+ else
+ YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+
+ yy_symbol_value_print (yyoutput, yytype, yyvaluep);
+ YYFPRINTF (yyoutput, ")");
+}
+
+/*------------------------------------------------------------------.
+| yy_stack_print -- Print the state stack from its BOTTOM up to its |
+| TOP (included). |
+`------------------------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)
+#else
+static void
+yy_stack_print (bottom, top)
+ yytype_int16 *bottom;
+ yytype_int16 *top;
+#endif
+{
+ YYFPRINTF (stderr, "Stack now");
+ for (; bottom <= top; ++bottom)
+ YYFPRINTF (stderr, " %d", *bottom);
+ YYFPRINTF (stderr, "\n");
+}
+
+# define YY_STACK_PRINT(Bottom, Top) \
+do { \
+ if (yydebug) \
+ yy_stack_print ((Bottom), (Top)); \
+} while (YYID (0))
+
+
+/*------------------------------------------------.
+| Report that the YYRULE is going to be reduced. |
+`------------------------------------------------*/
+
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
+#else
+static void
+yy_reduce_print (yyvsp, yyrule)
+ YYSTYPE *yyvsp;
+ int yyrule;
+#endif
+{
+ int yynrhs = yyr2[yyrule];
+ int yyi;
+ unsigned long int yylno = yyrline[yyrule];
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+ yyrule - 1, yylno);
+ /* The symbols being reduced. */
+ for (yyi = 0; yyi < yynrhs; yyi++)
+ {
+ fprintf (stderr, " $%d = ", yyi + 1);
+ yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
+ &(yyvsp[(yyi + 1) - (yynrhs)])
+ );
+ fprintf (stderr, "\n");
+ }
+}
+
+# define YY_REDUCE_PRINT(Rule) \
+do { \
+ if (yydebug) \
+ yy_reduce_print (yyvsp, Rule); \
+} while (YYID (0))
+
+/* Nonzero means print parse trace. It is left uninitialized so that
+ multiple parsers can coexist. */
+int yydebug;
+#else /* !YYDEBUG */
+# define YYDPRINTF(Args)
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YY_STACK_PRINT(Bottom, Top)
+# define YY_REDUCE_PRINT(Rule)
+#endif /* !YYDEBUG */
+
+
+/* YYINITDEPTH -- initial size of the parser's stacks. */
+#ifndef YYINITDEPTH
+# define YYINITDEPTH 200
+#endif
+
+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
+ if the built-in stack extension method is used).
+
+ Do not make this value too large; the results are undefined if
+ YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
+ evaluated with infinite-precision integer arithmetic. */
+
+#ifndef YYMAXDEPTH
+# define YYMAXDEPTH 10000
+#endif
+
+
+
+#if YYERROR_VERBOSE
+
+# ifndef yystrlen
+# if defined __GLIBC__ && defined _STRING_H
+# define yystrlen strlen
+# else
+/* Return the length of YYSTR. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static YYSIZE_T
+yystrlen (const char *yystr)
+#else
+static YYSIZE_T
+yystrlen (yystr)
+ const char *yystr;
+#endif
+{
+ YYSIZE_T yylen;
+ for (yylen = 0; yystr[yylen]; yylen++)
+ continue;
+ return yylen;
+}
+# endif
+# endif
+
+# ifndef yystpcpy
+# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
+# define yystpcpy stpcpy
+# else
+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
+ YYDEST. */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static char *
+yystpcpy (char *yydest, const char *yysrc)
+#else
+static char *
+yystpcpy (yydest, yysrc)
+ char *yydest;
+ const char *yysrc;
+#endif
+{
+ char *yyd = yydest;
+ const char *yys = yysrc;
+
+ while ((*yyd++ = *yys++) != '\0')
+ continue;
+
+ return yyd - 1;
+}
+# endif
+# endif
+
+# ifndef yytnamerr
+/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
+ quotes and backslashes, so that it's suitable for yyerror. The
+ heuristic is that double-quoting is unnecessary unless the string
+ contains an apostrophe, a comma, or backslash (other than
+ backslash-backslash). YYSTR is taken from yytname. If YYRES is
+ null, do not copy; instead, return the length of what the result
+ would have been. */
+static YYSIZE_T
+yytnamerr (char *yyres, const char *yystr)
+{
+ if (*yystr == '"')
+ {
+ YYSIZE_T yyn = 0;
+ char const *yyp = yystr;
+
+ for (;;)
+ switch (*++yyp)
+ {
+ case '\'':
+ case ',':
+ goto do_not_strip_quotes;
+
+ case '\\':
+ if (*++yyp != '\\')
+ goto do_not_strip_quotes;
+ /* Fall through. */
+ default:
+ if (yyres)
+ yyres[yyn] = *yyp;
+ yyn++;
+ break;
+
+ case '"':
+ if (yyres)
+ yyres[yyn] = '\0';
+ return yyn;
+ }
+ do_not_strip_quotes: ;
+ }
+
+ if (! yyres)
+ return yystrlen (yystr);
+
+ return yystpcpy (yyres, yystr) - yyres;
+}
+# endif
+
+/* Copy into YYRESULT an error message about the unexpected token
+ YYCHAR while in state YYSTATE. Return the number of bytes copied,
+ including the terminating null byte. If YYRESULT is null, do not
+ copy anything; just return the number of bytes that would be
+ copied. As a special case, return 0 if an ordinary "syntax error"
+ message will do. Return YYSIZE_MAXIMUM if overflow occurs during
+ size calculation. */
+static YYSIZE_T
+yysyntax_error (char *yyresult, int yystate, int yychar)
+{
+ int yyn = yypact[yystate];
+
+ if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
+ return 0;
+ else
+ {
+ int yytype = YYTRANSLATE (yychar);
+ YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
+ YYSIZE_T yysize = yysize0;
+ YYSIZE_T yysize1;
+ int yysize_overflow = 0;
+ enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
+ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
+ int yyx;
+
+# if 0
+ /* This is so xgettext sees the translatable formats that are
+ constructed on the fly. */
+ YY_("syntax error, unexpected %s");
+ YY_("syntax error, unexpected %s, expecting %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s or %s");
+ YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
+# endif
+ char *yyfmt;
+ char const *yyf;
+ static char const yyunexpected[] = "syntax error, unexpected %s";
+ static char const yyexpecting[] = ", expecting %s";
+ static char const yyor[] = " or %s";
+ char yyformat[sizeof yyunexpected
+ + sizeof yyexpecting - 1
+ + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
+ * (sizeof yyor - 1))];
+ char const *yyprefix = yyexpecting;
+
+ /* Start YYX at -YYN if negative to avoid negative indexes in
+ YYCHECK. */
+ int yyxbegin = yyn < 0 ? -yyn : 0;
+
+ /* Stay within bounds of both yycheck and yytname. */
+ int yychecklim = YYLAST - yyn + 1;
+ int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
+ int yycount = 1;
+
+ yyarg[0] = yytname[yytype];
+ yyfmt = yystpcpy (yyformat, yyunexpected);
+
+ for (yyx = yyxbegin; yyx < yyxend; ++yyx)
+ if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
+ {
+ if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
+ {
+ yycount = 1;
+ yysize = yysize0;
+ yyformat[sizeof yyunexpected - 1] = '\0';
+ break;
+ }
+ yyarg[yycount++] = yytname[yyx];
+ yysize1 = yysize + yytnamerr (0, yytname[yyx]);
+ yysize_overflow |= (yysize1 < yysize);
+ yysize = yysize1;
+ yyfmt = yystpcpy (yyfmt, yyprefix);
+ yyprefix = yyor;
+ }
+
+ yyf = YY_(yyformat);
+ yysize1 = yysize + yystrlen (yyf);
+ yysize_overflow |= (yysize1 < yysize);
+ yysize = yysize1;
+
+ if (yysize_overflow)
+ return YYSIZE_MAXIMUM;
+
+ if (yyresult)
+ {
+ /* Avoid sprintf, as that infringes on the user's name space.
+ Don't have undefined behavior even if the translation
+ produced a string with the wrong number of "%s"s. */
+ char *yyp = yyresult;
+ int yyi = 0;
+ while ((*yyp = *yyf) != '\0')
+ {
+ if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
+ {
+ yyp += yytnamerr (yyp, yyarg[yyi++]);
+ yyf += 2;
+ }
+ else
+ {
+ yyp++;
+ yyf++;
+ }
+ }
+ }
+ return yysize;
+ }
+}
+#endif /* YYERROR_VERBOSE */
+
+
+/*-----------------------------------------------.
+| Release the memory associated to this symbol. |
+`-----------------------------------------------*/
+
+/*ARGSUSED*/
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+static void
+yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+#else
+static void
+yydestruct (yymsg, yytype, yyvaluep)
+ const char *yymsg;
+ int yytype;
+ YYSTYPE *yyvaluep;
+#endif
+{
+ YYUSE (yyvaluep);
+
+ if (!yymsg)
+ yymsg = "Deleting";
+ YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+
+ switch (yytype)
+ {
+ case 51: /* "choice_entry" */
+
+ {
+ fprintf(stderr, "%s:%d: missing end statement for this entry\n",
+ (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno);
+ if (current_menu == (yyvaluep->menu))
+ menu_end_menu();
+};
+
+ break;
+ case 57: /* "if_entry" */
+
+ {
+ fprintf(stderr, "%s:%d: missing end statement for this entry\n",
+ (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno);
+ if (current_menu == (yyvaluep->menu))
+ menu_end_menu();
+};
+
+ break;
+ case 62: /* "menu_entry" */
+
+ {
+ fprintf(stderr, "%s:%d: missing end statement for this entry\n",
+ (yyvaluep->menu)->file->name, (yyvaluep->menu)->lineno);
+ if (current_menu == (yyvaluep->menu))
+ menu_end_menu();
+};
+
+ break;
+
+ default:
+ break;
+ }
+}
+
+
+/* Prevent warnings from -Wmissing-prototypes. */
+
+#ifdef YYPARSE_PARAM
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void *YYPARSE_PARAM);
+#else
+int yyparse ();
+#endif
+#else /* ! YYPARSE_PARAM */
+#if defined __STDC__ || defined __cplusplus
+int yyparse (void);
+#else
+int yyparse ();
+#endif
+#endif /* ! YYPARSE_PARAM */
+
+
+
+/* The look-ahead symbol. */
+int yychar;
+
+/* The semantic value of the look-ahead symbol. */
+YYSTYPE yylval;
+
+/* Number of syntax errors so far. */
+int yynerrs;
+
+
+
+/*----------.
+| yyparse. |
+`----------*/
+
+#ifdef YYPARSE_PARAM
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void *YYPARSE_PARAM)
+#else
+int
+yyparse (YYPARSE_PARAM)
+ void *YYPARSE_PARAM;
+#endif
+#else /* ! YYPARSE_PARAM */
+#if (defined __STDC__ || defined __C99__FUNC__ \
+ || defined __cplusplus || defined _MSC_VER)
+int
+yyparse (void)
+#else
+int
+yyparse ()
+
+#endif
+#endif
+{
+
+ int yystate;
+ int yyn;
+ int yyresult;
+ /* Number of tokens to shift before error messages enabled. */
+ int yyerrstatus;
+ /* Look-ahead token as an internal (translated) token number. */
+ int yytoken = 0;
+#if YYERROR_VERBOSE
+ /* Buffer for error messages, and its allocated size. */
+ char yymsgbuf[128];
+ char *yymsg = yymsgbuf;
+ YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
+#endif
+
+ /* Three stacks and their tools:
+ `yyss': related to states,
+ `yyvs': related to semantic values,
+ `yyls': related to locations.
+
+ Refer to the stacks thru separate pointers, to allow yyoverflow
+ to reallocate them elsewhere. */
+
+ /* The state stack. */
+ yytype_int16 yyssa[YYINITDEPTH];
+ yytype_int16 *yyss = yyssa;
+ yytype_int16 *yyssp;
+
+ /* The semantic value stack. */
+ YYSTYPE yyvsa[YYINITDEPTH];
+ YYSTYPE *yyvs = yyvsa;
+ YYSTYPE *yyvsp;
+
+
+
+#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
+
+ YYSIZE_T yystacksize = YYINITDEPTH;
+
+ /* The variables used to return semantic value and location from the
+ action routines. */
+ YYSTYPE yyval;
+
+
+ /* The number of symbols on the RHS of the reduced rule.
+ Keep to zero when no symbol should be popped. */
+ int yylen = 0;
+
+ YYDPRINTF ((stderr, "Starting parse\n"));
+
+ yystate = 0;
+ yyerrstatus = 0;
+ yynerrs = 0;
+ yychar = YYEMPTY; /* Cause a token to be read. */
+
+ /* Initialize stack pointers.
+ Waste one element of value and location stack
+ so that they stay on the same level as the state stack.
+ The wasted elements are never initialized. */
+
+ yyssp = yyss;
+ yyvsp = yyvs;
+
+ goto yysetstate;
+
+/*------------------------------------------------------------.
+| yynewstate -- Push a new state, which is found in yystate. |
+`------------------------------------------------------------*/
+ yynewstate:
+ /* In all cases, when you get here, the value and location stacks
+ have just been pushed. So pushing a state here evens the stacks. */
+ yyssp++;
+
+ yysetstate:
+ *yyssp = yystate;
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ {
+ /* Get the current used size of the three stacks, in elements. */
+ YYSIZE_T yysize = yyssp - yyss + 1;
+
+#ifdef yyoverflow
+ {
+ /* Give user a chance to reallocate the stack. Use copies of
+ these so that the &'s don't force the real ones into
+ memory. */
+ YYSTYPE *yyvs1 = yyvs;
+ yytype_int16 *yyss1 = yyss;
+
+
+ /* Each stack pointer address is followed by the size of the
+ data in use in that stack, in bytes. This used to be a
+ conditional around just the two extra args, but that might
+ be undefined if yyoverflow is a macro. */
+ yyoverflow (YY_("memory exhausted"),
+ &yyss1, yysize * sizeof (*yyssp),
+ &yyvs1, yysize * sizeof (*yyvsp),
+
+ &yystacksize);
+
+ yyss = yyss1;
+ yyvs = yyvs1;
+ }
+#else /* no yyoverflow */
+# ifndef YYSTACK_RELOCATE
+ goto yyexhaustedlab;
+# else
+ /* Extend the stack our own way. */
+ if (YYMAXDEPTH <= yystacksize)
+ goto yyexhaustedlab;
+ yystacksize *= 2;
+ if (YYMAXDEPTH < yystacksize)
+ yystacksize = YYMAXDEPTH;
+
+ {
+ yytype_int16 *yyss1 = yyss;
+ union yyalloc *yyptr =
+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ if (! yyptr)
+ goto yyexhaustedlab;
+ YYSTACK_RELOCATE (yyss);
+ YYSTACK_RELOCATE (yyvs);
+
+# undef YYSTACK_RELOCATE
+ if (yyss1 != yyssa)
+ YYSTACK_FREE (yyss1);
+ }
+# endif
+#endif /* no yyoverflow */
+
+ yyssp = yyss + yysize - 1;
+ yyvsp = yyvs + yysize - 1;
+
+
+ YYDPRINTF ((stderr, "Stack size increased to %lu\n",
+ (unsigned long int) yystacksize));
+
+ if (yyss + yystacksize - 1 <= yyssp)
+ YYABORT;
+ }
+
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+
+ goto yybackup;
+
+/*-----------.
+| yybackup. |
+`-----------*/
+yybackup:
+
+ /* Do appropriate processing given the current state. Read a
+ look-ahead token if we need one and don't already have one. */
+
+ /* First try to decide what to do without reference to look-ahead token. */
+ yyn = yypact[yystate];
+ if (yyn == YYPACT_NINF)
+ goto yydefault;
+
+ /* Not known => get a look-ahead token if don't already have one. */
+
+ /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */
+ if (yychar == YYEMPTY)
+ {
+ YYDPRINTF ((stderr, "Reading a token: "));
+ yychar = YYLEX;
+ }
+
+ if (yychar <= YYEOF)
+ {
+ yychar = yytoken = YYEOF;
+ YYDPRINTF ((stderr, "Now at end of input.\n"));
+ }
+ else
+ {
+ yytoken = YYTRANSLATE (yychar);
+ YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
+ }
+
+ /* If the proper action on seeing token YYTOKEN is to reduce or to
+ detect an error, take that action. */
+ yyn += yytoken;
+ if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
+ goto yydefault;
+ yyn = yytable[yyn];
+ if (yyn <= 0)
+ {
+ if (yyn == 0 || yyn == YYTABLE_NINF)
+ goto yyerrlab;
+ yyn = -yyn;
+ goto yyreduce;
+ }
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ /* Count tokens shifted since error; after three, turn off error
+ status. */
+ if (yyerrstatus)
+ yyerrstatus--;
+
+ /* Shift the look-ahead token. */
+ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
+
+ /* Discard the shifted token unless it is eof. */
+ if (yychar != YYEOF)
+ yychar = YYEMPTY;
+
+ yystate = yyn;
+ *++yyvsp = yylval;
+
+ goto yynewstate;
+
+
+/*-----------------------------------------------------------.
+| yydefault -- do the default action for the current state. |
+`-----------------------------------------------------------*/
+yydefault:
+ yyn = yydefact[yystate];
+ if (yyn == 0)
+ goto yyerrlab;
+ goto yyreduce;
+
+
+/*-----------------------------.
+| yyreduce -- Do a reduction. |
+`-----------------------------*/
+yyreduce:
+ /* yyn is the number of a rule to reduce with. */
+ yylen = yyr2[yyn];
+
+ /* If YYLEN is nonzero, implement the default value of the action:
+ `$$ = $1'.
+
+ Otherwise, the following line sets YYVAL to garbage.
+ This behavior is undocumented and Bison
+ users should not rely upon it. Assigning to YYVAL
+ unconditionally makes the parser a bit smaller, and it avoids a
+ GCC warning that YYVAL may be used uninitialized. */
+ yyval = yyvsp[1-yylen];
+
+
+ YY_REDUCE_PRINT (yyn);
+ switch (yyn)
+ {
+ case 8:
+
+ { zconf_error("unexpected end statement"); ;}
+ break;
+
+ case 9:
+
+ { zconf_error("unknown statement \"%s\"", (yyvsp[(2) - (4)].string)); ;}
+ break;
+
+ case 10:
+
+ {
+ zconf_error("unexpected option \"%s\"", kconf_id_strings + (yyvsp[(2) - (4)].id)->name);
+;}
+ break;
+
+ case 11:
+
+ { zconf_error("invalid statement"); ;}
+ break;
+
+ case 25:
+
+ { zconf_error("unknown option \"%s\"", (yyvsp[(1) - (3)].string)); ;}
+ break;
+
+ case 26:
+
+ { zconf_error("invalid option"); ;}
+ break;
+
+ case 27:
+
+ {
+ struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0);
+ sym->flags |= SYMBOL_OPTIONAL;
+ menu_add_entry(sym);
+ printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string));
+;}
+ break;
+
+ case 28:
+
+ {
+ menu_end_entry();
+ printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 29:
+
+ {
+ struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), 0);
+ sym->flags |= SYMBOL_OPTIONAL;
+ menu_add_entry(sym);
+ printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string));
+;}
+ break;
+
+ case 30:
+
+ {
+ if (current_entry->prompt)
+ current_entry->prompt->type = P_MENU;
+ else
+ zconfprint("warning: menuconfig statement without prompt");
+ menu_end_entry();
+ printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 38:
+
+ {
+ menu_set_type((yyvsp[(1) - (3)].id)->stype);
+ printd(DEBUG_PARSE, "%s:%d:type(%u)\n",
+ zconf_curname(), zconf_lineno(),
+ (yyvsp[(1) - (3)].id)->stype);
+;}
+ break;
+
+ case 39:
+
+ {
+ menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr));
+ printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 40:
+
+ {
+ menu_add_expr(P_DEFAULT, (yyvsp[(2) - (4)].expr), (yyvsp[(3) - (4)].expr));
+ if ((yyvsp[(1) - (4)].id)->stype != S_UNKNOWN)
+ menu_set_type((yyvsp[(1) - (4)].id)->stype);
+ printd(DEBUG_PARSE, "%s:%d:default(%u)\n",
+ zconf_curname(), zconf_lineno(),
+ (yyvsp[(1) - (4)].id)->stype);
+;}
+ break;
+
+ case 41:
+
+ {
+ menu_add_symbol(P_SELECT, sym_lookup((yyvsp[(2) - (4)].string), 0), (yyvsp[(3) - (4)].expr));
+ printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 42:
+
+ {
+ menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,(yyvsp[(2) - (5)].symbol), (yyvsp[(3) - (5)].symbol)), (yyvsp[(4) - (5)].expr));
+ printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 45:
+
+ {
+ struct kconf_id *id = kconf_id_lookup((yyvsp[(2) - (3)].string), strlen((yyvsp[(2) - (3)].string)));
+ if (id && id->flags & TF_OPTION)
+ menu_add_option(id->token, (yyvsp[(3) - (3)].string));
+ else
+ zconfprint("warning: ignoring unknown option %s", (yyvsp[(2) - (3)].string));
+ free((yyvsp[(2) - (3)].string));
+;}
+ break;
+
+ case 46:
+
+ { (yyval.string) = NULL; ;}
+ break;
+
+ case 47:
+
+ { (yyval.string) = (yyvsp[(2) - (2)].string); ;}
+ break;
+
+ case 48:
+
+ {
+ struct symbol *sym = sym_lookup((yyvsp[(2) - (3)].string), SYMBOL_CHOICE);
+ sym->flags |= SYMBOL_AUTO;
+ menu_add_entry(sym);
+ menu_add_expr(P_CHOICE, NULL, NULL);
+ printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 49:
+
+ {
+ (yyval.menu) = menu_add_menu();
+;}
+ break;
+
+ case 50:
+
+ {
+ if (zconf_endtoken((yyvsp[(1) - (1)].id), T_CHOICE, T_ENDCHOICE)) {
+ menu_end_menu();
+ printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno());
+ }
+;}
+ break;
+
+ case 58:
+
+ {
+ menu_add_prompt(P_PROMPT, (yyvsp[(2) - (4)].string), (yyvsp[(3) - (4)].expr));
+ printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 59:
+
+ {
+ if ((yyvsp[(1) - (3)].id)->stype == S_BOOLEAN || (yyvsp[(1) - (3)].id)->stype == S_TRISTATE) {
+ menu_set_type((yyvsp[(1) - (3)].id)->stype);
+ printd(DEBUG_PARSE, "%s:%d:type(%u)\n",
+ zconf_curname(), zconf_lineno(),
+ (yyvsp[(1) - (3)].id)->stype);
+ } else
+ YYERROR;
+;}
+ break;
+
+ case 60:
+
+ {
+ current_entry->sym->flags |= SYMBOL_OPTIONAL;
+ printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 61:
+
+ {
+ if ((yyvsp[(1) - (4)].id)->stype == S_UNKNOWN) {
+ menu_add_symbol(P_DEFAULT, sym_lookup((yyvsp[(2) - (4)].string), 0), (yyvsp[(3) - (4)].expr));
+ printd(DEBUG_PARSE, "%s:%d:default\n",
+ zconf_curname(), zconf_lineno());
+ } else
+ YYERROR;
+;}
+ break;
+
+ case 64:
+
+ {
+ printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());
+ menu_add_entry(NULL);
+ menu_add_dep((yyvsp[(2) - (3)].expr));
+ (yyval.menu) = menu_add_menu();
+;}
+ break;
+
+ case 65:
+
+ {
+ if (zconf_endtoken((yyvsp[(1) - (1)].id), T_IF, T_ENDIF)) {
+ menu_end_menu();
+ printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno());
+ }
+;}
+ break;
+
+ case 71:
+
+ {
+ menu_add_entry(NULL);
+ menu_add_prompt(P_MENU, (yyvsp[(2) - (3)].string), NULL);
+ printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 72:
+
+ {
+ (yyval.menu) = menu_add_menu();
+;}
+ break;
+
+ case 73:
+
+ {
+ if (zconf_endtoken((yyvsp[(1) - (1)].id), T_MENU, T_ENDMENU)) {
+ menu_end_menu();
+ printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno());
+ }
+;}
+ break;
+
+ case 79:
+
+ {
+ printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), (yyvsp[(2) - (3)].string));
+ zconf_nextfile((yyvsp[(2) - (3)].string));
+;}
+ break;
+
+ case 80:
+
+ {
+ menu_add_entry(NULL);
+ menu_add_prompt(P_COMMENT, (yyvsp[(2) - (3)].string), NULL);
+ printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 81:
+
+ {
+ menu_end_entry();
+;}
+ break;
+
+ case 82:
+
+ {
+ printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno());
+ zconf_starthelp();
+;}
+ break;
+
+ case 83:
+
+ {
+ current_entry->help = (yyvsp[(2) - (2)].string);
+;}
+ break;
+
+ case 88:
+
+ {
+ menu_add_dep((yyvsp[(3) - (4)].expr));
+ printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
+;}
+ break;
+
+ case 90:
+
+ {
+ menu_add_prompt(P_PROMPT, (yyvsp[(1) - (2)].string), (yyvsp[(2) - (2)].expr));
+;}
+ break;
+
+ case 93:
+
+ { (yyval.id) = (yyvsp[(1) - (2)].id); ;}
+ break;
+
+ case 94:
+
+ { (yyval.id) = (yyvsp[(1) - (2)].id); ;}
+ break;
+
+ case 95:
+
+ { (yyval.id) = (yyvsp[(1) - (2)].id); ;}
+ break;
+
+ case 98:
+
+ { (yyval.expr) = NULL; ;}
+ break;
+
+ case 99:
+
+ { (yyval.expr) = (yyvsp[(2) - (2)].expr); ;}
+ break;
+
+ case 100:
+
+ { (yyval.expr) = expr_alloc_symbol((yyvsp[(1) - (1)].symbol)); ;}
+ break;
+
+ case 101:
+
+ { (yyval.expr) = expr_alloc_comp(E_EQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); ;}
+ break;
+
+ case 102:
+
+ { (yyval.expr) = expr_alloc_comp(E_UNEQUAL, (yyvsp[(1) - (3)].symbol), (yyvsp[(3) - (3)].symbol)); ;}
+ break;
+
+ case 103:
+
+ { (yyval.expr) = (yyvsp[(2) - (3)].expr); ;}
+ break;
+
+ case 104:
+
+ { (yyval.expr) = expr_alloc_one(E_NOT, (yyvsp[(2) - (2)].expr)); ;}
+ break;
+
+ case 105:
+
+ { (yyval.expr) = expr_alloc_two(E_OR, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+ break;
+
+ case 106:
+
+ { (yyval.expr) = expr_alloc_two(E_AND, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); ;}
+ break;
+
+ case 107:
+
+ { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), 0); free((yyvsp[(1) - (1)].string)); ;}
+ break;
+
+ case 108:
+
+ { (yyval.symbol) = sym_lookup((yyvsp[(1) - (1)].string), SYMBOL_CONST); free((yyvsp[(1) - (1)].string)); ;}
+ break;
+
+ case 109:
+
+ { (yyval.string) = NULL; ;}
+ break;
+
+
+/* Line 1267 of yacc.c. */
+
+ default: break;
+ }
+ YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
+
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+
+ *++yyvsp = yyval;
+
+
+ /* Now `shift' the result of the reduction. Determine what state
+ that goes to, based on the state we popped back to and the rule
+ number reduced by. */
+
+ yyn = yyr1[yyn];
+
+ yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
+ if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
+ yystate = yytable[yystate];
+ else
+ yystate = yydefgoto[yyn - YYNTOKENS];
+
+ goto yynewstate;
+
+
+/*------------------------------------.
+| yyerrlab -- here on detecting error |
+`------------------------------------*/
+yyerrlab:
+ /* If not already recovering from an error, report this error. */
+ if (!yyerrstatus)
+ {
+ ++yynerrs;
+#if ! YYERROR_VERBOSE
+ yyerror (YY_("syntax error"));
+#else
+ {
+ YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
+ if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
+ {
+ YYSIZE_T yyalloc = 2 * yysize;
+ if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
+ yyalloc = YYSTACK_ALLOC_MAXIMUM;
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+ yymsg = (char *) YYSTACK_ALLOC (yyalloc);
+ if (yymsg)
+ yymsg_alloc = yyalloc;
+ else
+ {
+ yymsg = yymsgbuf;
+ yymsg_alloc = sizeof yymsgbuf;
+ }
+ }
+
+ if (0 < yysize && yysize <= yymsg_alloc)
+ {
+ (void) yysyntax_error (yymsg, yystate, yychar);
+ yyerror (yymsg);
+ }
+ else
+ {
+ yyerror (YY_("syntax error"));
+ if (yysize != 0)
+ goto yyexhaustedlab;
+ }
+ }
+#endif
+ }
+
+
+
+ if (yyerrstatus == 3)
+ {
+ /* If just tried and failed to reuse look-ahead token after an
+ error, discard it. */
+
+ if (yychar <= YYEOF)
+ {
+ /* Return failure if at end of input. */
+ if (yychar == YYEOF)
+ YYABORT;
+ }
+ else
+ {
+ yydestruct ("Error: discarding",
+ yytoken, &yylval);
+ yychar = YYEMPTY;
+ }
+ }
+
+ /* Else will try to reuse look-ahead token after shifting the error
+ token. */
+ goto yyerrlab1;
+
+
+/*---------------------------------------------------.
+| yyerrorlab -- error raised explicitly by YYERROR. |
+`---------------------------------------------------*/
+yyerrorlab:
+
+ /* Pacify compilers like GCC when the user code never invokes
+ YYERROR and the label yyerrorlab therefore never appears in user
+ code. */
+ if (/*CONSTCOND*/ 0)
+ goto yyerrorlab;
+
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYERROR. */
+ YYPOPSTACK (yylen);
+ yylen = 0;
+ YY_STACK_PRINT (yyss, yyssp);
+ yystate = *yyssp;
+ goto yyerrlab1;
+
+
+/*-------------------------------------------------------------.
+| yyerrlab1 -- common code for both syntax error and YYERROR. |
+`-------------------------------------------------------------*/
+yyerrlab1:
+ yyerrstatus = 3; /* Each real token shifted decrements this. */
+
+ for (;;)
+ {
+ yyn = yypact[yystate];
+ if (yyn != YYPACT_NINF)
+ {
+ yyn += YYTERROR;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+ {
+ yyn = yytable[yyn];
+ if (0 < yyn)
+ break;
+ }
+ }
+
+ /* Pop the current state because it cannot handle the error token. */
+ if (yyssp == yyss)
+ YYABORT;
+
+
+ yydestruct ("Error: popping",
+ yystos[yystate], yyvsp);
+ YYPOPSTACK (1);
+ yystate = *yyssp;
+ YY_STACK_PRINT (yyss, yyssp);
+ }
+
+ if (yyn == YYFINAL)
+ YYACCEPT;
+
+ *++yyvsp = yylval;
+
+
+ /* Shift the error token. */
+ YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+
+ yystate = yyn;
+ goto yynewstate;
+
+
+/*-------------------------------------.
+| yyacceptlab -- YYACCEPT comes here. |
+`-------------------------------------*/
+yyacceptlab:
+ yyresult = 0;
+ goto yyreturn;
+
+/*-----------------------------------.
+| yyabortlab -- YYABORT comes here. |
+`-----------------------------------*/
+yyabortlab:
+ yyresult = 1;
+ goto yyreturn;
+
+#ifndef yyoverflow
+/*-------------------------------------------------.
+| yyexhaustedlab -- memory exhaustion comes here. |
+`-------------------------------------------------*/
+yyexhaustedlab:
+ yyerror (YY_("memory exhausted"));
+ yyresult = 2;
+ /* Fall through. */
+#endif
+
+yyreturn:
+ if (yychar != YYEOF && yychar != YYEMPTY)
+ yydestruct ("Cleanup: discarding lookahead",
+ yytoken, &yylval);
+ /* Do not reclaim the symbols of the rule which action triggered
+ this YYABORT or YYACCEPT. */
+ YYPOPSTACK (yylen);
+ YY_STACK_PRINT (yyss, yyssp);
+ while (yyssp != yyss)
+ {
+ yydestruct ("Cleanup: popping",
+ yystos[*yyssp], yyvsp);
+ YYPOPSTACK (1);
+ }
+#ifndef yyoverflow
+ if (yyss != yyssa)
+ YYSTACK_FREE (yyss);
+#endif
+#if YYERROR_VERBOSE
+ if (yymsg != yymsgbuf)
+ YYSTACK_FREE (yymsg);
+#endif
+ /* Make sure YYID is used. */
+ return YYID (yyresult);
+}
+
+
+
+
+
+void conf_parse(const char *name)
+{
+ struct symbol *sym;
+ int i;
+
+ zconf_initscan(name);
+
+ sym_init();
+ menu_init();
+ modules_sym = sym_lookup(NULL, 0);
+ modules_sym->type = S_BOOLEAN;
+ modules_sym->flags |= SYMBOL_AUTO;
+ rootmenu.prompt = menu_add_prompt(P_MENU, "uClibc Configuration", NULL);
+
+#if YYDEBUG
+ if (getenv("ZCONF_DEBUG"))
+ zconfdebug = 1;
+#endif
+ zconfparse();
+ if (zconfnerrs)
+ exit(1);
+ if (!modules_sym->prop) {
+ struct property *prop;
+
+ prop = prop_alloc(P_DEFAULT, modules_sym);
+ prop->expr = expr_alloc_symbol(sym_lookup("MODULES", 0));
+ }
+ menu_finalize(&rootmenu);
+ for_all_symbols(i, sym) {
+ if (sym_check_deps(sym))
+ zconfnerrs++;
+ }
+ if (zconfnerrs)
+ exit(1);
+ sym_set_change_count(1);
+}
+
+const char *zconf_tokenname(int token)
+{
+ switch (token) {
+ case T_MENU: return "menu";
+ case T_ENDMENU: return "endmenu";
+ case T_CHOICE: return "choice";
+ case T_ENDCHOICE: return "endchoice";
+ case T_IF: return "if";
+ case T_ENDIF: return "endif";
+ case T_DEPENDS: return "depends";
+ }
+ return "<token>";
+}
+
+static bool zconf_endtoken(struct kconf_id *id, int starttoken, int endtoken)
+{
+ if (id->token != endtoken) {
+ zconf_error("unexpected '%s' within %s block",
+ kconf_id_strings + id->name, zconf_tokenname(starttoken));
+ zconfnerrs++;
+ return false;
+ }
+ if (current_menu->file != current_file) {
+ zconf_error("'%s' in different file than '%s'",
+ kconf_id_strings + id->name, zconf_tokenname(starttoken));
+ fprintf(stderr, "%s:%d: location of the '%s'\n",
+ current_menu->file->name, current_menu->lineno,
+ zconf_tokenname(starttoken));
+ zconfnerrs++;
+ return false;
+ }
+ return true;
+}
+
+static void zconfprint(const char *err, ...)
+{
+ va_list ap;
+
+ fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
+ va_start(ap, err);
+ vfprintf(stderr, err, ap);
+ va_end(ap);
+ fprintf(stderr, "\n");
+}
+
+static void zconf_error(const char *err, ...)
+{
+ va_list ap;
+
+ zconfnerrs++;
+ fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
+ va_start(ap, err);
+ vfprintf(stderr, err, ap);
+ va_end(ap);
+ fprintf(stderr, "\n");
+}
+
+static void zconferror(const char *err)
+{
+#if YYDEBUG
+ fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);
+#endif
+}
+
+void print_quoted_string(FILE *out, const char *str)
+{
+ const char *p;
+ int len;
+
+ putc('"', out);
+ while ((p = strchr(str, '"'))) {
+ len = p - str;
+ if (len)
+ fprintf(out, "%.*s", len, str);
+ fputs("\\\"", out);
+ str = p + 1;
+ }
+ fputs(str, out);
+ putc('"', out);
+}
+
+void print_symbol(FILE *out, struct menu *menu)
+{
+ struct symbol *sym = menu->sym;
+ struct property *prop;
+
+ if (sym_is_choice(sym))
+ fprintf(out, "choice\n");
+ else
+ fprintf(out, "config %s\n", sym->name);
+ switch (sym->type) {
+ case S_BOOLEAN:
+ fputs(" boolean\n", out);
+ break;
+ case S_TRISTATE:
+ fputs(" tristate\n", out);
+ break;
+ case S_STRING:
+ fputs(" string\n", out);
+ break;
+ case S_INT:
+ fputs(" integer\n", out);
+ break;
+ case S_HEX:
+ fputs(" hex\n", out);
+ break;
+ default:
+ fputs(" ???\n", out);
+ break;
+ }
+ for (prop = sym->prop; prop; prop = prop->next) {
+ if (prop->menu != menu)
+ continue;
+ switch (prop->type) {
+ case P_PROMPT:
+ fputs(" prompt ", out);
+ print_quoted_string(out, prop->text);
+ if (!expr_is_yes(prop->visible.expr)) {
+ fputs(" if ", out);
+ expr_fprint(prop->visible.expr, out);
+ }
+ fputc('\n', out);
+ break;
+ case P_DEFAULT:
+ fputs( " default ", out);
+ expr_fprint(prop->expr, out);
+ if (!expr_is_yes(prop->visible.expr)) {
+ fputs(" if ", out);
+ expr_fprint(prop->visible.expr, out);
+ }
+ fputc('\n', out);
+ break;
+ case P_CHOICE:
+ fputs(" #choice value\n", out);
+ break;
+ default:
+ fprintf(out, " unknown prop %d!\n", prop->type);
+ break;
+ }
+ }
+ if (menu->help) {
+ int len = strlen(menu->help);
+ while (menu->help[--len] == '\n')
+ menu->help[len] = 0;
+ fprintf(out, " help\n%s\n", menu->help);
+ }
+ fputc('\n', out);
+}
+
+void zconfdump(FILE *out)
+{
+ struct property *prop;
+ struct symbol *sym;
+ struct menu *menu;
+
+ menu = rootmenu.list;
+ while (menu) {
+ if ((sym = menu->sym))
+ print_symbol(out, menu);
+ else if ((prop = menu->prompt)) {
+ switch (prop->type) {
+ case P_COMMENT:
+ fputs("\ncomment ", out);
+ print_quoted_string(out, prop->text);
+ fputs("\n", out);
+ break;
+ case P_MENU:
+ fputs("\nmenu ", out);
+ print_quoted_string(out, prop->text);
+ fputs("\n", out);
+ break;
+ default:
+ ;
+ }
+ if (!expr_is_yes(prop->visible.expr)) {
+ fputs(" depends ", out);
+ expr_fprint(prop->visible.expr, out);
+ fputc('\n', out);
+ }
+ fputs("\n", out);
+ }
+
+ if (menu->list)
+ menu = menu->list;
+ else if (menu->next)
+ menu = menu->next;
+ else while ((menu = menu->parent)) {
+ if (menu->prompt && menu->prompt->type == P_MENU)
+ fputs("\nendmenu\n", out);
+ if (menu->next) {
+ menu = menu->next;
+ break;
+ }
+ }
+ }
+}
+
+#include "lex.zconf.c"
+#include "util.c"
+#include "confdata.c"
+#include "expr.c"
+#include "symbol.c"
+#include "menu.c"
+
diff --git a/ap/build/uClibc/extra/config/zconf.y b/ap/build/uClibc/extra/config/zconf.y
new file mode 100644
index 0000000..029c9b6
--- /dev/null
+++ b/ap/build/uClibc/extra/config/zconf.y
@@ -0,0 +1,706 @@
+%{
+/*
+ * Copyright (C) 2002 Roman Zippel <zippel@linux-m68k.org>
+ * Released under the terms of the GNU GPL v2.0.
+ */
+
+#include <ctype.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdbool.h>
+
+#define LKC_DIRECT_LINK
+#include "lkc.h"
+
+#include "zconf.hash.c"
+
+#define printd(mask, fmt...) if (cdebug & (mask)) printf(fmt)
+
+#define PRINTD 0x0001
+#define DEBUG_PARSE 0x0002
+
+int cdebug = PRINTD;
+
+extern int zconflex(void);
+static void zconfprint(const char *err, ...);
+static void zconf_error(const char *err, ...);
+static void zconferror(const char *err);
+static bool zconf_endtoken(struct kconf_id *id, int starttoken, int endtoken);
+
+struct symbol *symbol_hash[257];
+
+static struct menu *current_menu, *current_entry;
+
+#define YYDEBUG 0
+#if YYDEBUG
+#define YYERROR_VERBOSE
+#endif
+%}
+%expect 26
+
+%union
+{
+ char *string;
+ struct file *file;
+ struct symbol *symbol;
+ struct expr *expr;
+ struct menu *menu;
+ struct kconf_id *id;
+}
+
+%token <id>T_MAINMENU
+%token <id>T_MENU
+%token <id>T_ENDMENU
+%token <id>T_SOURCE
+%token <id>T_CHOICE
+%token <id>T_ENDCHOICE
+%token <id>T_COMMENT
+%token <id>T_CONFIG
+%token <id>T_MENUCONFIG
+%token <id>T_HELP
+%token <string> T_HELPTEXT
+%token <id>T_IF
+%token <id>T_ENDIF
+%token <id>T_DEPENDS
+%token <id>T_OPTIONAL
+%token <id>T_PROMPT
+%token <id>T_TYPE
+%token <id>T_DEFAULT
+%token <id>T_SELECT
+%token <id>T_RANGE
+%token <id>T_OPTION
+%token <id>T_ON
+%token <string> T_WORD
+%token <string> T_WORD_QUOTE
+%token T_UNEQUAL
+%token T_CLOSE_PAREN
+%token T_OPEN_PAREN
+%token T_EOL
+
+%left T_OR
+%left T_AND
+%left T_EQUAL T_UNEQUAL
+%nonassoc T_NOT
+
+%type <string> prompt
+%type <symbol> symbol
+%type <expr> expr
+%type <expr> if_expr
+%type <id> end
+%type <id> option_name
+%type <menu> if_entry menu_entry choice_entry
+%type <string> symbol_option_arg word_opt
+
+%destructor {
+ fprintf(stderr, "%s:%d: missing end statement for this entry\n",
+ $$->file->name, $$->lineno);
+ if (current_menu == $$)
+ menu_end_menu();
+} if_entry menu_entry choice_entry
+
+%%
+input: stmt_list;
+
+stmt_list:
+ /* empty */
+ | stmt_list common_stmt
+ | stmt_list choice_stmt
+ | stmt_list menu_stmt
+ | stmt_list T_MAINMENU prompt nl
+ | stmt_list end { zconf_error("unexpected end statement"); }
+ | stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); }
+ | stmt_list option_name error T_EOL
+{
+ zconf_error("unexpected option \"%s\"", kconf_id_strings + $2->name);
+}
+ | stmt_list error T_EOL { zconf_error("invalid statement"); }
+;
+
+option_name:
+ T_DEPENDS | T_PROMPT | T_TYPE | T_SELECT | T_OPTIONAL | T_RANGE | T_DEFAULT
+;
+
+common_stmt:
+ T_EOL
+ | if_stmt
+ | comment_stmt
+ | config_stmt
+ | menuconfig_stmt
+ | source_stmt
+;
+
+option_error:
+ T_WORD error T_EOL { zconf_error("unknown option \"%s\"", $1); }
+ | error T_EOL { zconf_error("invalid option"); }
+;
+
+
+/* config/menuconfig entry */
+
+config_entry_start: T_CONFIG T_WORD T_EOL
+{
+ struct symbol *sym = sym_lookup($2, 0);
+ sym->flags |= SYMBOL_OPTIONAL;
+ menu_add_entry(sym);
+ printd(DEBUG_PARSE, "%s:%d:config %s\n", zconf_curname(), zconf_lineno(), $2);
+};
+
+config_stmt: config_entry_start config_option_list
+{
+ menu_end_entry();
+ printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
+};
+
+menuconfig_entry_start: T_MENUCONFIG T_WORD T_EOL
+{
+ struct symbol *sym = sym_lookup($2, 0);
+ sym->flags |= SYMBOL_OPTIONAL;
+ menu_add_entry(sym);
+ printd(DEBUG_PARSE, "%s:%d:menuconfig %s\n", zconf_curname(), zconf_lineno(), $2);
+};
+
+menuconfig_stmt: menuconfig_entry_start config_option_list
+{
+ if (current_entry->prompt)
+ current_entry->prompt->type = P_MENU;
+ else
+ zconfprint("warning: menuconfig statement without prompt");
+ menu_end_entry();
+ printd(DEBUG_PARSE, "%s:%d:endconfig\n", zconf_curname(), zconf_lineno());
+};
+
+config_option_list:
+ /* empty */
+ | config_option_list config_option
+ | config_option_list symbol_option
+ | config_option_list depends
+ | config_option_list help
+ | config_option_list option_error
+ | config_option_list T_EOL
+;
+
+config_option: T_TYPE prompt_stmt_opt T_EOL
+{
+ menu_set_type($1->stype);
+ printd(DEBUG_PARSE, "%s:%d:type(%u)\n",
+ zconf_curname(), zconf_lineno(),
+ $1->stype);
+};
+
+config_option: T_PROMPT prompt if_expr T_EOL
+{
+ menu_add_prompt(P_PROMPT, $2, $3);
+ printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
+};
+
+config_option: T_DEFAULT expr if_expr T_EOL
+{
+ menu_add_expr(P_DEFAULT, $2, $3);
+ if ($1->stype != S_UNKNOWN)
+ menu_set_type($1->stype);
+ printd(DEBUG_PARSE, "%s:%d:default(%u)\n",
+ zconf_curname(), zconf_lineno(),
+ $1->stype);
+};
+
+config_option: T_SELECT T_WORD if_expr T_EOL
+{
+ menu_add_symbol(P_SELECT, sym_lookup($2, 0), $3);
+ printd(DEBUG_PARSE, "%s:%d:select\n", zconf_curname(), zconf_lineno());
+};
+
+config_option: T_RANGE symbol symbol if_expr T_EOL
+{
+ menu_add_expr(P_RANGE, expr_alloc_comp(E_RANGE,$2, $3), $4);
+ printd(DEBUG_PARSE, "%s:%d:range\n", zconf_curname(), zconf_lineno());
+};
+
+symbol_option: T_OPTION symbol_option_list T_EOL
+;
+
+symbol_option_list:
+ /* empty */
+ | symbol_option_list T_WORD symbol_option_arg
+{
+ struct kconf_id *id = kconf_id_lookup($2, strlen($2));
+ if (id && id->flags & TF_OPTION)
+ menu_add_option(id->token, $3);
+ else
+ zconfprint("warning: ignoring unknown option %s", $2);
+ free($2);
+};
+
+symbol_option_arg:
+ /* empty */ { $$ = NULL; }
+ | T_EQUAL prompt { $$ = $2; }
+;
+
+/* choice entry */
+
+choice: T_CHOICE word_opt T_EOL
+{
+ struct symbol *sym = sym_lookup($2, SYMBOL_CHOICE);
+ sym->flags |= SYMBOL_AUTO;
+ menu_add_entry(sym);
+ menu_add_expr(P_CHOICE, NULL, NULL);
+ printd(DEBUG_PARSE, "%s:%d:choice\n", zconf_curname(), zconf_lineno());
+};
+
+choice_entry: choice choice_option_list
+{
+ $$ = menu_add_menu();
+};
+
+choice_end: end
+{
+ if (zconf_endtoken($1, T_CHOICE, T_ENDCHOICE)) {
+ menu_end_menu();
+ printd(DEBUG_PARSE, "%s:%d:endchoice\n", zconf_curname(), zconf_lineno());
+ }
+};
+
+choice_stmt: choice_entry choice_block choice_end
+;
+
+choice_option_list:
+ /* empty */
+ | choice_option_list choice_option
+ | choice_option_list depends
+ | choice_option_list help
+ | choice_option_list T_EOL
+ | choice_option_list option_error
+;
+
+choice_option: T_PROMPT prompt if_expr T_EOL
+{
+ menu_add_prompt(P_PROMPT, $2, $3);
+ printd(DEBUG_PARSE, "%s:%d:prompt\n", zconf_curname(), zconf_lineno());
+};
+
+choice_option: T_TYPE prompt_stmt_opt T_EOL
+{
+ if ($1->stype == S_BOOLEAN || $1->stype == S_TRISTATE) {
+ menu_set_type($1->stype);
+ printd(DEBUG_PARSE, "%s:%d:type(%u)\n",
+ zconf_curname(), zconf_lineno(),
+ $1->stype);
+ } else
+ YYERROR;
+};
+
+choice_option: T_OPTIONAL T_EOL
+{
+ current_entry->sym->flags |= SYMBOL_OPTIONAL;
+ printd(DEBUG_PARSE, "%s:%d:optional\n", zconf_curname(), zconf_lineno());
+};
+
+choice_option: T_DEFAULT T_WORD if_expr T_EOL
+{
+ if ($1->stype == S_UNKNOWN) {
+ menu_add_symbol(P_DEFAULT, sym_lookup($2, 0), $3);
+ printd(DEBUG_PARSE, "%s:%d:default\n",
+ zconf_curname(), zconf_lineno());
+ } else
+ YYERROR;
+};
+
+choice_block:
+ /* empty */
+ | choice_block common_stmt
+;
+
+/* if entry */
+
+if_entry: T_IF expr nl
+{
+ printd(DEBUG_PARSE, "%s:%d:if\n", zconf_curname(), zconf_lineno());
+ menu_add_entry(NULL);
+ menu_add_dep($2);
+ $$ = menu_add_menu();
+};
+
+if_end: end
+{
+ if (zconf_endtoken($1, T_IF, T_ENDIF)) {
+ menu_end_menu();
+ printd(DEBUG_PARSE, "%s:%d:endif\n", zconf_curname(), zconf_lineno());
+ }
+};
+
+if_stmt: if_entry if_block if_end
+;
+
+if_block:
+ /* empty */
+ | if_block common_stmt
+ | if_block menu_stmt
+ | if_block choice_stmt
+;
+
+/* menu entry */
+
+menu: T_MENU prompt T_EOL
+{
+ menu_add_entry(NULL);
+ menu_add_prompt(P_MENU, $2, NULL);
+ printd(DEBUG_PARSE, "%s:%d:menu\n", zconf_curname(), zconf_lineno());
+};
+
+menu_entry: menu depends_list
+{
+ $$ = menu_add_menu();
+};
+
+menu_end: end
+{
+ if (zconf_endtoken($1, T_MENU, T_ENDMENU)) {
+ menu_end_menu();
+ printd(DEBUG_PARSE, "%s:%d:endmenu\n", zconf_curname(), zconf_lineno());
+ }
+};
+
+menu_stmt: menu_entry menu_block menu_end
+;
+
+menu_block:
+ /* empty */
+ | menu_block common_stmt
+ | menu_block menu_stmt
+ | menu_block choice_stmt
+;
+
+source_stmt: T_SOURCE prompt T_EOL
+{
+ printd(DEBUG_PARSE, "%s:%d:source %s\n", zconf_curname(), zconf_lineno(), $2);
+ zconf_nextfile($2);
+};
+
+/* comment entry */
+
+comment: T_COMMENT prompt T_EOL
+{
+ menu_add_entry(NULL);
+ menu_add_prompt(P_COMMENT, $2, NULL);
+ printd(DEBUG_PARSE, "%s:%d:comment\n", zconf_curname(), zconf_lineno());
+};
+
+comment_stmt: comment depends_list
+{
+ menu_end_entry();
+};
+
+/* help option */
+
+help_start: T_HELP T_EOL
+{
+ printd(DEBUG_PARSE, "%s:%d:help\n", zconf_curname(), zconf_lineno());
+ zconf_starthelp();
+};
+
+help: help_start T_HELPTEXT
+{
+ current_entry->help = $2;
+};
+
+/* depends option */
+
+depends_list:
+ /* empty */
+ | depends_list depends
+ | depends_list T_EOL
+ | depends_list option_error
+;
+
+depends: T_DEPENDS T_ON expr T_EOL
+{
+ menu_add_dep($3);
+ printd(DEBUG_PARSE, "%s:%d:depends on\n", zconf_curname(), zconf_lineno());
+};
+
+/* prompt statement */
+
+prompt_stmt_opt:
+ /* empty */
+ | prompt if_expr
+{
+ menu_add_prompt(P_PROMPT, $1, $2);
+};
+
+prompt: T_WORD
+ | T_WORD_QUOTE
+;
+
+end: T_ENDMENU T_EOL { $$ = $1; }
+ | T_ENDCHOICE T_EOL { $$ = $1; }
+ | T_ENDIF T_EOL { $$ = $1; }
+;
+
+nl:
+ T_EOL
+ | nl T_EOL
+;
+
+if_expr: /* empty */ { $$ = NULL; }
+ | T_IF expr { $$ = $2; }
+;
+
+expr: symbol { $$ = expr_alloc_symbol($1); }
+ | symbol T_EQUAL symbol { $$ = expr_alloc_comp(E_EQUAL, $1, $3); }
+ | symbol T_UNEQUAL symbol { $$ = expr_alloc_comp(E_UNEQUAL, $1, $3); }
+ | T_OPEN_PAREN expr T_CLOSE_PAREN { $$ = $2; }
+ | T_NOT expr { $$ = expr_alloc_one(E_NOT, $2); }
+ | expr T_OR expr { $$ = expr_alloc_two(E_OR, $1, $3); }
+ | expr T_AND expr { $$ = expr_alloc_two(E_AND, $1, $3); }
+;
+
+symbol: T_WORD { $$ = sym_lookup($1, 0); free($1); }
+ | T_WORD_QUOTE { $$ = sym_lookup($1, SYMBOL_CONST); free($1); }
+;
+
+word_opt: /* empty */ { $$ = NULL; }
+ | T_WORD
+
+%%
+
+void conf_parse(const char *name)
+{
+ struct symbol *sym;
+ int i;
+
+ zconf_initscan(name);
+
+ sym_init();
+ menu_init();
+ modules_sym = sym_lookup(NULL, 0);
+ modules_sym->type = S_BOOLEAN;
+ modules_sym->flags |= SYMBOL_AUTO;
+ rootmenu.prompt = menu_add_prompt(P_MENU, "uClibc Configuration", NULL);
+
+#if YYDEBUG
+ if (getenv("ZCONF_DEBUG"))
+ zconfdebug = 1;
+#endif
+ zconfparse();
+ if (zconfnerrs)
+ exit(1);
+ if (!modules_sym->prop) {
+ struct property *prop;
+
+ prop = prop_alloc(P_DEFAULT, modules_sym);
+ prop->expr = expr_alloc_symbol(sym_lookup("MODULES", 0));
+ }
+ menu_finalize(&rootmenu);
+ for_all_symbols(i, sym) {
+ if (sym_check_deps(sym))
+ zconfnerrs++;
+ }
+ if (zconfnerrs)
+ exit(1);
+ sym_set_change_count(1);
+}
+
+const char *zconf_tokenname(int token)
+{
+ switch (token) {
+ case T_MENU: return "menu";
+ case T_ENDMENU: return "endmenu";
+ case T_CHOICE: return "choice";
+ case T_ENDCHOICE: return "endchoice";
+ case T_IF: return "if";
+ case T_ENDIF: return "endif";
+ case T_DEPENDS: return "depends";
+ }
+ return "<token>";
+}
+
+static bool zconf_endtoken(struct kconf_id *id, int starttoken, int endtoken)
+{
+ if (id->token != endtoken) {
+ zconf_error("unexpected '%s' within %s block",
+ kconf_id_strings + id->name, zconf_tokenname(starttoken));
+ zconfnerrs++;
+ return false;
+ }
+ if (current_menu->file != current_file) {
+ zconf_error("'%s' in different file than '%s'",
+ kconf_id_strings + id->name, zconf_tokenname(starttoken));
+ fprintf(stderr, "%s:%d: location of the '%s'\n",
+ current_menu->file->name, current_menu->lineno,
+ zconf_tokenname(starttoken));
+ zconfnerrs++;
+ return false;
+ }
+ return true;
+}
+
+static void zconfprint(const char *err, ...)
+{
+ va_list ap;
+
+ fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
+ va_start(ap, err);
+ vfprintf(stderr, err, ap);
+ va_end(ap);
+ fprintf(stderr, "\n");
+}
+
+static void zconf_error(const char *err, ...)
+{
+ va_list ap;
+
+ zconfnerrs++;
+ fprintf(stderr, "%s:%d: ", zconf_curname(), zconf_lineno());
+ va_start(ap, err);
+ vfprintf(stderr, err, ap);
+ va_end(ap);
+ fprintf(stderr, "\n");
+}
+
+static void zconferror(const char *err)
+{
+#if YYDEBUG
+ fprintf(stderr, "%s:%d: %s\n", zconf_curname(), zconf_lineno() + 1, err);
+#endif
+}
+
+void print_quoted_string(FILE *out, const char *str)
+{
+ const char *p;
+ int len;
+
+ putc('"', out);
+ while ((p = strchr(str, '"'))) {
+ len = p - str;
+ if (len)
+ fprintf(out, "%.*s", len, str);
+ fputs("\\\"", out);
+ str = p + 1;
+ }
+ fputs(str, out);
+ putc('"', out);
+}
+
+void print_symbol(FILE *out, struct menu *menu)
+{
+ struct symbol *sym = menu->sym;
+ struct property *prop;
+
+ if (sym_is_choice(sym))
+ fprintf(out, "choice\n");
+ else
+ fprintf(out, "config %s\n", sym->name);
+ switch (sym->type) {
+ case S_BOOLEAN:
+ fputs(" boolean\n", out);
+ break;
+ case S_TRISTATE:
+ fputs(" tristate\n", out);
+ break;
+ case S_STRING:
+ fputs(" string\n", out);
+ break;
+ case S_INT:
+ fputs(" integer\n", out);
+ break;
+ case S_HEX:
+ fputs(" hex\n", out);
+ break;
+ default:
+ fputs(" ???\n", out);
+ break;
+ }
+ for (prop = sym->prop; prop; prop = prop->next) {
+ if (prop->menu != menu)
+ continue;
+ switch (prop->type) {
+ case P_PROMPT:
+ fputs(" prompt ", out);
+ print_quoted_string(out, prop->text);
+ if (!expr_is_yes(prop->visible.expr)) {
+ fputs(" if ", out);
+ expr_fprint(prop->visible.expr, out);
+ }
+ fputc('\n', out);
+ break;
+ case P_DEFAULT:
+ fputs( " default ", out);
+ expr_fprint(prop->expr, out);
+ if (!expr_is_yes(prop->visible.expr)) {
+ fputs(" if ", out);
+ expr_fprint(prop->visible.expr, out);
+ }
+ fputc('\n', out);
+ break;
+ case P_CHOICE:
+ fputs(" #choice value\n", out);
+ break;
+ default:
+ fprintf(out, " unknown prop %d!\n", prop->type);
+ break;
+ }
+ }
+ if (menu->help) {
+ int len = strlen(menu->help);
+ while (menu->help[--len] == '\n')
+ menu->help[len] = 0;
+ fprintf(out, " help\n%s\n", menu->help);
+ }
+ fputc('\n', out);
+}
+
+void zconfdump(FILE *out)
+{
+ struct property *prop;
+ struct symbol *sym;
+ struct menu *menu;
+
+ menu = rootmenu.list;
+ while (menu) {
+ if ((sym = menu->sym))
+ print_symbol(out, menu);
+ else if ((prop = menu->prompt)) {
+ switch (prop->type) {
+ case P_COMMENT:
+ fputs("\ncomment ", out);
+ print_quoted_string(out, prop->text);
+ fputs("\n", out);
+ break;
+ case P_MENU:
+ fputs("\nmenu ", out);
+ print_quoted_string(out, prop->text);
+ fputs("\n", out);
+ break;
+ default:
+ ;
+ }
+ if (!expr_is_yes(prop->visible.expr)) {
+ fputs(" depends ", out);
+ expr_fprint(prop->visible.expr, out);
+ fputc('\n', out);
+ }
+ fputs("\n", out);
+ }
+
+ if (menu->list)
+ menu = menu->list;
+ else if (menu->next)
+ menu = menu->next;
+ else while ((menu = menu->parent)) {
+ if (menu->prompt && menu->prompt->type == P_MENU)
+ fputs("\nendmenu\n", out);
+ if (menu->next) {
+ menu = menu->next;
+ break;
+ }
+ }
+ }
+}
+
+#include "lex.zconf.c"
+#include "util.c"
+#include "confdata.c"
+#include "expr.c"
+#include "symbol.c"
+#include "menu.c"
diff --git a/ap/build/uClibc/extra/libstrip/libstrip b/ap/build/uClibc/extra/libstrip/libstrip
new file mode 100755
index 0000000..69a1043
--- /dev/null
+++ b/ap/build/uClibc/extra/libstrip/libstrip
@@ -0,0 +1,72 @@
+#!/usr/bin/perl -w
+# vi: set ts=4:
+
+# Libstrip - A utility to optimize libraries for specific executables
+# Copyright (C) 2001 David A. Schleef <ds@schleef.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of version 2 of the GNU General Public License as
+# published by the Free Software Foundation.
+#
+# This is a surprisingly simple script that gets a list of
+# unresolved symbols in a list of executables specified on the
+# command line, and then relinks the uClibc shared object file
+# with only the those symbols and their dependencies. This
+# results in a shared object that is optimized for the executables
+# listed, and thus may not work with other executables.
+#
+# Example: optimizing uClibc for BusyBox
+# Compile uClibc and BusyBox as normal. Then, in this
+# directory, run:
+# libstrip path/to/busybox
+# After the script completes, there should be a new
+# libuClibc-0.9.5.so in the current directory, which
+# is optimized for busybox.
+#
+# How it works:
+# The uClibc Makefiles create libuClibc.so by first creating
+# the ar archive libc.a with all the object files, then links
+# the final libuClibc.so by using 'ld --shared --whole-archive'.
+# We take advantage of the linker command line option --undefined,
+# which pulls in a symbol and all its dependencies, and so relink
+# the library using --undefined for each symbol in place of
+# --whole-archive. The linker script is used only to avoid
+# having very long command lines.
+
+$topdir="../..";
+
+# This is the name of the default ldscript for shared libs. The
+# file name will be different for other architectures.
+$ldscript="/usr/lib/ldscripts/elf_i386.xs";
+
+my @syms;
+my @allsyms;
+my $s;
+
+while($exec = shift @ARGV){
+ #print "$exec\n";
+ @syms=`nm --dynamic $exec`;
+ for $s (@syms){
+ chomp $s;
+ if($s =~ m/^.{8} [BUV] (.+)/){
+ my $x = $1;
+ if(!grep { m/^$x$/; } @allsyms){
+ unshift @allsyms, $x;
+ }
+ }
+ }
+}
+
+open(LDSCRIPT, ">ldscript");
+print LDSCRIPT "INCLUDE $ldscript\n";
+for $s (@allsyms) {
+ print LDSCRIPT "EXTERN($s)\n";
+}
+
+
+`gcc -s -nostdlib -Wl,-warn-common -shared \\
+ -o libuClibc-0.9.5.so \\
+ -Wl,-soname,libc.so.0 -Wl,--script=ldscript \\
+ $topdir/libc/libc.a \\
+ $topdir/libc/tmp/libgcc-need.a`
+
diff --git a/ap/build/uClibc/extra/locale/LOCALES b/ap/build/uClibc/extra/locale/LOCALES
new file mode 100644
index 0000000..0a30cc1
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/LOCALES
@@ -0,0 +1,346 @@
+# First some @modifier mappings. Internally, the modifier is signaled by
+# replacing '_' in the locale name with a unique identifying character.
+# For example, internally we map "ca_ES@euro" to "caeES". This allows for
+# smaller code and easier processing of locale names.
+
+@euro e
+@cyrillic c
+
+#---------------------------------------------------------------------------
+# Next, set to {y}es to enable and {n}o to disable the UTF-8 and the 8-bit
+# codeset locales. Of course, you must have built the c8tables.h and
+# the wctables.h files appropriately.
+
+
+UTF-8 yes
+8-BIT yes
+
+#---------------------------------------------------------------------------
+# Now the locales
+
+af_ZA ISO-8859-1
+af_ZA.UTF-8 UTF-8
+am_ET UTF-8
+ar_AE ISO-8859-6
+ar_AE.UTF-8 UTF-8
+ar_BH ISO-8859-6
+ar_BH.UTF-8 UTF-8
+ar_DZ ISO-8859-6
+ar_DZ.UTF-8 UTF-8
+ar_EG ISO-8859-6
+ar_EG.UTF-8 UTF-8
+ar_IN UTF-8
+ar_IQ ISO-8859-6
+ar_IQ.UTF-8 UTF-8
+ar_JO ISO-8859-6
+ar_JO.UTF-8 UTF-8
+ar_KW ISO-8859-6
+ar_KW.UTF-8 UTF-8
+ar_LB ISO-8859-6
+ar_LB.UTF-8 UTF-8
+ar_LY ISO-8859-6
+ar_LY.UTF-8 UTF-8
+ar_MA ISO-8859-6
+ar_MA.UTF-8 UTF-8
+ar_OM ISO-8859-6
+ar_OM.UTF-8 UTF-8
+ar_QA ISO-8859-6
+ar_QA.UTF-8 UTF-8
+ar_SA ISO-8859-6
+ar_SA.UTF-8 UTF-8
+ar_SD ISO-8859-6
+ar_SD.UTF-8 UTF-8
+ar_SY ISO-8859-6
+ar_SY.UTF-8 UTF-8
+ar_TN ISO-8859-6
+ar_TN.UTF-8 UTF-8
+ar_YE ISO-8859-6
+ar_YE.UTF-8 UTF-8
+# az_AZ ISO-8859-9E
+az_AZ ISO-8859-9
+az_AZ.UTF-8 UTF-8
+be_BY CP1251
+be_BY.UTF-8 UTF-8
+bg_BG CP1251
+bg_BG.UTF-8 UTF-8
+bn_BD UTF-8
+bn_IN UTF-8
+br_FR ISO-8859-1
+br_FR.UTF-8 UTF-8
+bs_BA ISO-8859-2
+bs_BA.UTF-8 UTF-8
+ca_ES ISO-8859-1
+ca_ES.UTF-8 UTF-8
+ca_ES.UTF-8@euro UTF-8
+ca_ES@euro ISO-8859-15
+cs_CZ ISO-8859-2
+cs_CZ.UTF-8 UTF-8
+cy_GB ISO-8859-14
+cy_GB.UTF-8 UTF-8
+da_DK ISO-8859-1
+da_DK.UTF-8 UTF-8
+de_AT ISO-8859-1
+de_AT.UTF-8 UTF-8
+de_AT.UTF-8@euro UTF-8
+de_AT@euro ISO-8859-15
+de_BE ISO-8859-1
+de_BE.UTF-8 UTF-8
+de_BE.UTF-8@euro UTF-8
+de_BE@euro ISO-8859-15
+de_CH ISO-8859-1
+de_CH.UTF-8 UTF-8
+de_DE ISO-8859-1
+de_DE.UTF-8 UTF-8
+de_DE.UTF-8@euro UTF-8
+de_DE@euro ISO-8859-15
+de_LU ISO-8859-1
+de_LU.UTF-8 UTF-8
+de_LU.UTF-8@euro UTF-8
+de_LU@euro ISO-8859-15
+el_GR ISO-8859-7
+el_GR.UTF-8 UTF-8
+en_AU ISO-8859-1
+en_AU.UTF-8 UTF-8
+en_BW ISO-8859-1
+en_BW.UTF-8 UTF-8
+en_CA ISO-8859-1
+en_CA.UTF-8 UTF-8
+en_DK ISO-8859-1
+en_DK.UTF-8 UTF-8
+en_GB ISO-8859-1
+en_GB.UTF-8 UTF-8
+en_HK ISO-8859-1
+en_HK.UTF-8 UTF-8
+en_IE ISO-8859-1
+en_IE.UTF-8 UTF-8
+en_IE.UTF-8@euro UTF-8
+en_IE@euro ISO-8859-15
+en_IN UTF-8
+en_NZ ISO-8859-1
+en_NZ.UTF-8 UTF-8
+en_PH ISO-8859-1
+en_PH.UTF-8 UTF-8
+en_SG ISO-8859-1
+en_SG.UTF-8 UTF-8
+en_US ISO-8859-1
+en_US.UTF-8 UTF-8
+en_ZA ISO-8859-1
+en_ZA.UTF-8 UTF-8
+en_ZW ISO-8859-1
+en_ZW.UTF-8 UTF-8
+eo_EO.UTF-8 UTF-8
+es_AR ISO-8859-1
+es_AR.UTF-8 UTF-8
+es_BO ISO-8859-1
+es_BO.UTF-8 UTF-8
+es_CL ISO-8859-1
+es_CL.UTF-8 UTF-8
+es_CO ISO-8859-1
+es_CO.UTF-8 UTF-8
+es_CR ISO-8859-1
+es_CR.UTF-8 UTF-8
+es_DO ISO-8859-1
+es_DO.UTF-8 UTF-8
+es_EC ISO-8859-1
+es_EC.UTF-8 UTF-8
+es_ES ISO-8859-1
+es_ES.UTF-8 UTF-8
+es_ES.UTF-8@euro UTF-8
+es_ES@euro ISO-8859-15
+es_GT ISO-8859-1
+es_GT.UTF-8 UTF-8
+es_HN ISO-8859-1
+es_HN.UTF-8 UTF-8
+es_MX ISO-8859-1
+es_MX.UTF-8 UTF-8
+es_NI ISO-8859-1
+es_NI.UTF-8 UTF-8
+es_PA ISO-8859-1
+es_PA.UTF-8 UTF-8
+es_PE ISO-8859-1
+es_PE.UTF-8 UTF-8
+es_PR ISO-8859-1
+es_PR.UTF-8 UTF-8
+es_PY ISO-8859-1
+es_PY.UTF-8 UTF-8
+es_SV ISO-8859-1
+es_SV.UTF-8 UTF-8
+es_US ISO-8859-1
+es_US.UTF-8 UTF-8
+es_UY ISO-8859-1
+es_UY.UTF-8 UTF-8
+es_VE ISO-8859-1
+es_VE.UTF-8 UTF-8
+et_EE ISO-8859-1
+et_EE.UTF-8 UTF-8
+eu_ES ISO-8859-1
+eu_ES.UTF-8 UTF-8
+eu_ES.UTF-8@euro UTF-8
+eu_ES@euro ISO-8859-15
+fa_IR UTF-8
+fa_IR.UTF-8 UTF-8
+fi_FI ISO-8859-1
+fi_FI.UTF-8 UTF-8
+fi_FI.UTF-8@euro UTF-8
+fi_FI@euro ISO-8859-15
+fo_FO ISO-8859-1
+fo_FO.UTF-8 UTF-8
+fr_BE ISO-8859-1
+fr_BE.UTF-8 UTF-8
+fr_BE.UTF-8@euro UTF-8
+fr_BE@euro ISO-8859-15
+fr_CA ISO-8859-1
+fr_CA.UTF-8 UTF-8
+fr_CH ISO-8859-1
+fr_CH.UTF-8 UTF-8
+fr_FR ISO-8859-1
+fr_FR.UTF-8 UTF-8
+fr_FR.UTF-8@euro UTF-8
+fr_FR@euro ISO-8859-15
+fr_LU ISO-8859-1
+fr_LU.UTF-8 UTF-8
+fr_LU.UTF-8@euro UTF-8
+fr_LU@euro ISO-8859-15
+ga_IE ISO-8859-1
+ga_IE.UTF-8 UTF-8
+ga_IE.UTF-8@euro UTF-8
+ga_IE@euro ISO-8859-15
+gd_GB ISO-8859-15
+gd_GB.UTF-8 UTF-8
+gl_ES ISO-8859-1
+gl_ES.UTF-8 UTF-8
+gl_ES.UTF-8@euro UTF-8
+gl_ES@euro ISO-8859-15
+gv_GB ISO-8859-1
+gv_GB.UTF-8 UTF-8
+he_IL ISO-8859-8
+he_IL.UTF-8 UTF-8
+hi_IN UTF-8
+hi_IN.UTF-8 UTF-8
+hr_HR ISO-8859-2
+hr_HR.UTF-8 UTF-8
+hu_HU ISO-8859-2
+hu_HU.UTF-8 UTF-8
+hy_AM ARMSCII-8
+hy_AM.UTF-8 UTF-8
+id_ID ISO-8859-1
+id_ID.UTF-8 UTF-8
+is_IS ISO-8859-1
+is_IS.UTF-8 UTF-8
+it_CH ISO-8859-1
+it_CH.UTF-8 UTF-8
+it_IT ISO-8859-1
+it_IT.UTF-8 UTF-8
+it_IT.UTF-8@euro UTF-8
+it_IT@euro ISO-8859-15
+iw_IL ISO-8859-8
+iw_IL.UTF-8 UTF-8
+ja_JP.UTF-8 UTF-8
+ka_GE GEORGIAN-PS
+ka_GE.UTF-8 UTF-8
+kl_GL ISO-8859-1
+kl_GL.UTF-8 UTF-8
+ko_KR.UTF-8 UTF-8
+kw_GB ISO-8859-1
+kw_GB.UTF-8 UTF-8
+lt_LT ISO-8859-13
+lt_LT.UTF-8 UTF-8
+lv_LV ISO-8859-13
+lv_LV.UTF-8 UTF-8
+mi_NZ ISO-8859-13
+mi_NZ.UTF-8 UTF-8
+mk_MK ISO-8859-5
+mk_MK.UTF-8 UTF-8
+mr_IN UTF-8
+mr_IN.UTF-8 UTF-8
+ms_MY ISO-8859-1
+ms_MY.UTF-8 UTF-8
+mt_MT ISO-8859-3
+mt_MT.UTF-8 UTF-8
+nl_BE ISO-8859-1
+nl_BE.UTF-8 UTF-8
+nl_BE.UTF-8@euro UTF-8
+nl_BE@euro ISO-8859-15
+nl_NL ISO-8859-1
+nl_NL.UTF-8 UTF-8
+nl_NL.UTF-8@euro UTF-8
+nl_NL@euro ISO-8859-15
+nn_NO ISO-8859-1
+nn_NO.UTF-8 UTF-8
+no_NO ISO-8859-1
+no_NO.UTF-8 UTF-8
+oc_FR ISO-8859-1
+oc_FR.UTF-8 UTF-8
+pl_PL ISO-8859-2
+pl_PL.UTF-8 UTF-8
+pt_BR ISO-8859-1
+pt_BR.UTF-8 UTF-8
+pt_PT ISO-8859-1
+pt_PT.UTF-8 UTF-8
+pt_PT.UTF-8@euro UTF-8
+pt_PT@euro ISO-8859-15
+ro_RO ISO-8859-2
+ro_RO.UTF-8 UTF-8
+ru_RU ISO-8859-5
+ru_RU.KOI8-R KOI8-R
+ru_RU.UTF-8 UTF-8
+ru_UA KOI8-U
+ru_UA.UTF-8 UTF-8
+se_NO UTF-8
+sk_SK ISO-8859-2
+sk_SK.UTF-8 UTF-8
+sl_SI ISO-8859-2
+sl_SI.UTF-8 UTF-8
+sq_AL ISO-8859-1
+sq_AL.UTF-8 UTF-8
+sr_YU ISO-8859-2
+sr_YU.UTF-8 UTF-8
+sr_YU.UTF-8@cyrillic UTF-8
+sr_YU@cyrillic ISO-8859-5
+sv_FI ISO-8859-1
+sv_FI.UTF-8 UTF-8
+sv_FI.UTF-8@euro UTF-8
+sv_FI@euro ISO-8859-15
+sv_SE ISO-8859-1
+sv_SE.UTF-8 UTF-8
+ta_IN UTF-8
+te_IN UTF-8
+tg_TJ KOI8-T
+tg_TJ.UTF-8 UTF-8
+th_TH TIS-620
+th_TH.UTF-8 UTF-8
+ti_ER UTF-8
+ti_ET UTF-8
+tl_PH ISO-8859-1
+tl_PH.UTF-8 UTF-8
+tr_TR ISO-8859-9
+tr_TR.UTF-8 UTF-8
+# tt_RU TATAR-CYR
+tt_RU.UTF-8 UTF-8
+uk_UA KOI8-U
+uk_UA.UTF-8 UTF-8
+ur_PK UTF-8
+uz_UZ ISO-8859-1
+uz_UZ.UTF-8 UTF-8
+vi_VN UTF-8
+vi_VN.UTF-8 UTF-8
+wa_BE ISO-8859-1
+wa_BE.UTF-8 UTF-8
+wa_BE@euro ISO-8859-15
+yi_US CP1255
+yi_US.UTF-8 UTF-8
+zh_CN.UTF-8 UTF-8
+zh_HK.UTF-8 UTF-8
+zh_SG UTF-8
+zh_TW.UTF-8 UTF-8
+
+# The following are standard locales, but we currently don't support
+# the necessary multibyte encodings.
+# ja_JP.EUC-JP EUC-JP
+# ko_KR.EUC-KR EUC-KR
+# zh_CN GB2312
+# zh_CN.GB18030 GB18030
+# zh_CN.GBK GBK
+# zh_TW.EUC-TW EUC-TW
+# zh_HK BIG5-HKSCS
+# zh_TW BIG5
diff --git a/ap/build/uClibc/extra/locale/Makefile b/ap/build/uClibc/extra/locale/Makefile
new file mode 100644
index 0000000..ff229e2
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/Makefile
@@ -0,0 +1,13 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+top_srcdir=../../
+top_builddir=$(if $(O),$(O),../../)/
+
+all: objs
+include $(top_srcdir)Rules.mak
+include Makefile.in
+include $(top_srcdir)Makerules
diff --git a/ap/build/uClibc/extra/locale/Makefile.in b/ap/build/uClibc/extra/locale/Makefile.in
new file mode 100644
index 0000000..221a515
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/Makefile.in
@@ -0,0 +1,242 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2008 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+locale_DIR := $(top_srcdir)extra/locale
+locale_OUT := $(top_builddir)extra/locale
+
+# command used to download source code
+WGET := wget --passive-ftp
+
+LOCALE_DATA_FILENAME := uClibc-locale-20081111-$(ARCH_NATIVE_BIT)-$(if $(ARCH_LITTLE_ENDIAN),el,eb).tgz
+
+BUILD_CFLAGS-locale-common := \
+ -D__UCLIBC_GEN_LOCALE \
+ -I$(top_builddir)
+
+BUILD_CFLAGS-gen_wc8bit := $(BUILD_CFLAGS-locale-common) -DCTYPE_PACKED=1
+BUILD_CFLAGS-gen_wctype := $(BUILD_CFLAGS-locale-common)
+BUILD_CFLAGS-gen_ldc := -I$(locale_OUT)
+ifeq ($(UCLIBC_HAS_WCHAR),y)
+BUILD_CFLAGS-gen_wc8bit += -DDO_WIDE_CHAR=1
+BUILD_CFLAGS-gen_ldc += -D__WCHAR_ENABLED=1
+endif
+BUILD_CFLAGS-gen_locale := -D_GNU_SOURCE -I$(locale_OUT)
+BUILD_CFLAGS-gen_collate := -D_GNU_SOURCE
+
+locale_headers-$(UCLIBC_HAS_LOCALE) := $(top_builddir)include/bits/uClibc_locale_data.h
+
+#DEPH-locale := $(top_builddir)include/bits/sysnum.h
+DEPH-locale := $(top_builddir)include/bits/uClibc_config.h
+DEPH-gen_collate := $(DEPH-locale)
+DEPH-gen_ldc := $(addprefix $(locale_OUT)/,c8tables.h wctables.h locale_tables.h locale_collate.h) $(DEPH-locale)
+DEPH-gen_locale := $(addprefix $(locale_OUT)/,c8tables.h) $(DEPH-locale)
+DEPH-gen_wc8bit := $(top_builddir)include/bits/uClibc_ctype.h $(DEPH-locale)
+DEPH-gen_wctype := $(top_builddir)include/bits/uClibc_ctype.h $(DEPH-locale)
+
+locale_HOBJ := gen_collate gen_ldc gen_locale gen_wc8bit gen_wctype
+locale_HOBJ := $(addprefix $(locale_OUT)/,$(locale_HOBJ))
+$(locale_HOBJ): | $(locale_OUT)
+
+locale_SRC := $(locale_OUT)/locale_data.c
+locale_OBJ := $(locale_OUT)/locale_data.o
+
+CFLAGS-locale_data.c := -D__WCHAR_ENABLED -I$(locale_OUT) -I$(locale_DIR)
+
+#headers-$(UCLIBC_HAS_LOCALE) += $(locale_headers-y)
+headers: $(locale_headers-y)
+
+libc-$(UCLIBC_HAS_LOCALE) += $(locale_OBJ)
+libc-nomulti-$(UCLIBC_HAS_LOCALE) += $(locale_OBJ)
+
+$(locale_OUT)%.o: $(locale_OUT)%.c FORCE ; $(compile.c)
+$(locale_OUT)%.os: $(locale_OUT)%.c FORCE ; $(compile.c)
+$(locale_OUT)%.oS: $(locale_OUT)%.c FORCE ; $(compile.c)
+$(locale_OUT)%.o: $(locale_OUT)%.S FORCE ; $(compile.S)
+$(locale_OUT)%.os: $(locale_OUT)%.S FORCE ; $(compile.S)
+$(locale_OUT)%.oS: $(locale_OUT)%.S FORCE ; $(compile.S)
+$(locale_OUT)%.o: $(locale_OUT)%.s FORCE ; $(compile.S)
+$(locale_OUT)%.os: $(locale_OUT)%.s FORCE ; $(compile.S)
+$(locale_OUT)%.oS: $(locale_OUT)%.s FORCE ; $(compile.S)
+$(locale_OUT)%.i: $(locale_OUT)%.c FORCE ; $(compile.i)
+$(locale_OUT)%.i: $(locale_OUT)%.S FORCE ; $(compile.i)
+$(locale_OUT)%.s: $(locale_OUT)%.c FORCE ; $(compile.s)
+$(locale_OUT)%.s: $(locale_OUT)%.S FORCE ; $(compile.s)
+$(locale_OUT)%.dep:
+
+
+locale_headers: headers $(top_builddir)include/bits/uClibc_locale_data.h
+
+# make sure that the host system has locales (this check is ok for uClibc/glibc)
+# we do not know though which locales were really enabled for libc at build time
+ifeq ($(wildcard /usr/include/iconv.h),)
+
+$(locale_OUT)/codesets.txt:
+ @if [ ! -f $@ ] ; then \
+ set -e; \
+ echo " "; \
+ echo "You do not have a codesets.txt file. Please create this "; \
+ echo "file in the $(locale_OUT) directory by running something like: "; \
+ echo " find $(CURDIR)/$(locale_DIR)/charmaps -name \"*.pairs\" > \\"; \
+ echo " $@"; \
+ echo "and then edit that file to disable/enable the codesets you wish to support. "; \
+ echo " "; \
+ false; \
+ fi
+
+$(locale_OUT)/locales.txt:
+ @if [ ! -f $@ ] ; then \
+ set -e; \
+ echo " "; \
+ echo "You do not have a locales.txt file in the $(locale_OUT) "; \
+ echo "directory, Please copy the LOCALES file to locales.txt by "; \
+ echo "running something like: "; \
+ echo " cp $(locale_DIR)/LOCALES \\ "; \
+ echo " $@ "; \
+ echo "then edit locales.txt to disable/enable the locales you wish "; \
+ echo "to support. "; \
+ echo " "; \
+ false; \
+ fi
+
+else
+
+$(locale_OUT)/codesets.txt:
+ @$(disp_gen)
+ifeq ($(UCLIBC_BUILD_MINIMAL_LOCALE),y)
+ $(Q)echo "$(CURDIR)/$(locale_DIR)/charmaps/ASCII.pairs" > $@
+ $(Q)echo "$(CURDIR)/$(locale_DIR)/charmaps/ISO-8859-1.pairs" >> $@
+else
+ $(Q)set -e; \
+ tmp=`mktemp $@.XXXXXX 2>/dev/null || true`; \
+ [ -z "$$tmp" ] && tmp='$@.new'; \
+ find $(CURDIR)/$(locale_DIR)/charmaps/ -name '*.pairs' | \
+ sort > $$tmp; \
+ [ -s $$tmp ]; \
+ if cmp $@ $$tmp >/dev/null 2>&1; then \
+ $(RM) $$tmp; \
+ else \
+ mv -f $$tmp $@; \
+ fi
+endif
+
+# the lines beginning w/ '#-' are mandatory
+# at least one conversion is needed (euro/cyrillic)
+$(locale_OUT)/locales.txt: $(locale_DIR)/LOCALES
+ @$(disp_gen)
+ifeq ($(UCLIBC_BUILD_MINIMAL_LOCALE),y)
+ $(Q)echo "@euro e" > $@
+ $(Q)echo "#-" >> $@
+ $(Q)echo "UTF-8 yes" >> $@
+ $(Q)echo "8-BIT yes" >> $@
+ $(Q)echo "#-" >> $@
+ $(Q)for locale in $(call qstrip,$(UCLIBC_BUILD_MINIMAL_LOCALES)); do \
+ echo "$$locale.UTF-8 UTF-8"; \
+ echo "$$locale ISO-8859-1"; \
+ done >> $@
+else
+ $(Q)cat $< > $@
+endif
+
+endif
+
+$(locale_DIR)/gen_collate.c: $(DEPH-gen_collate)
+$(locale_OUT)/gen_collate : $(locale_DIR)/gen_collate.c
+ $(hcompile.u)
+$(locale_DIR)/gen_ldc.c: $(DEPH-gen_ldc)
+$(locale_OUT)/gen_ldc : $(locale_DIR)/gen_ldc.c
+ $(hcompile.u)
+$(locale_DIR)/gen_locale.c: $(DEPH-gen_locale)
+$(locale_OUT)/gen_locale : $(locale_DIR)/gen_locale.c
+ $(hcompile.u)
+$(locale_DIR)/gen_wc8bit.c: $(DEPH-gen_wc8bit)
+$(locale_OUT)/gen_wc8bit : $(locale_DIR)/gen_wc8bit.c
+ $(hcompile.u)
+$(locale_DIR)/gen_wctype.c: $(DEPH-gen_wctype)
+$(locale_OUT)/gen_wctype : $(locale_DIR)/gen_wctype.c
+ $(hcompile.u)
+
+ifneq ($(V),)
+ifeq ($(V),1)
+FLAG-locale-verbose := -v
+endif
+ifeq ($(V),2)
+FLAG-locale-verbose := -v -v
+endif
+endif
+
+# code needs to be modified to support top_builddir in almost all apps that write directly to a file
+# grep fopen *.c
+$(locale_OUT)/c8tables.h: $(locale_OUT)/gen_wc8bit $(locale_OUT)/codesets.txt
+ @$(disp_gen)
+ $(Q)$< `cat $(word 2,$^)` > $@
+
+# Warning! Beware tr_TR toupper/tolower exceptions!
+$(locale_OUT)/wctables.h: $(locale_OUT)/gen_wctype
+ @$(disp_gen)
+ $(Q)for locale in $(call qstrip,$(UCLIBC_BUILD_MINIMAL_LOCALES)) en_US en_GB; do \
+ $< $(FLAG-locale-verbose) $$locale > $@ || \
+ $< $(FLAG-locale-verbose) $$locale.UTF-8 > $@ || \
+ $< $(FLAG-locale-verbose) $$locale.iso8859-1 > $@ && break; \
+ done
+
+$(locale_OUT)/locale_tables.h: $(locale_OUT)/gen_locale $(locale_OUT)/locales.txt
+ @$(disp_gen)
+ $(Q)$< $(FLAG-locale-verbose) -o $@ $(word 2,$^)
+
+$(locale_OUT)/lt_defines.h: $(locale_OUT)/locale_tables.h $(locale_OUT)/locale_collate.h
+ @$(disp_gen)
+ $(Q)grep "^#define" $< > $@
+ $(Q)grep "^#define __lc" $(word 2,$^) >> $@
+
+$(locale_OUT)/locale_collate.h: $(locale_OUT)/gen_collate $(locale_OUT)/locale_tables.h
+ @$(disp_gen)
+ $(Q)grep COL_IDX_ $(word 2,$^) | \
+ $(SED) -e "s/^.*COL_IDX_\([^, ]*\).*$$/\1/" | sort | uniq | \
+ xargs $< $(locale_DIR)/collation $(FLAG-locale-verbose) -o $@
+
+$(locale_OUT)/$(LOCALE_DATA_FILENAME):
+ifeq ($(UCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA),y)
+ ( cd $(@D); $(WGET) http://www.uclibc.org/downloads/$(@F) )
+endif
+
+ifeq ($(UCLIBC_PREGENERATED_LOCALE_DATA),y)
+
+$(locale_SRC): $(locale_OUT)/$(LOCALE_DATA_FILENAME)
+ zcat $< | $(TAR) -xv -C $(@D) -f -
+ touch $@
+ # we use the one in locale_DIR
+ #$(RM) $(locale_OUT)/locale_mmap.h
+
+# for arch specific versions we have to at least overwrite
+# lt_defines.h/locale_data.c/uClibc_locale_data.h
+
+$(locale_OUT)/uClibc_locale_data.h: $(locale_SRC)
+
+else
+
+$(locale_SRC): $(locale_OUT)/gen_ldc $(locale_OUT)/lt_defines.h
+ @$(disp_gen)
+ $(Q)$< $@
+
+$(locale_OUT)/uClibc_locale_data.h: $(locale_OUT)/lt_defines.h $(locale_OUT)/c8tables.h $(locale_OUT)/wctables.h $(locale_DIR)/locale_mmap.h | $(locale_SRC)
+ @$(disp_gen)
+ $(Q)grep -v "define __LC" $< > $@
+ $(Q)cat $(wordlist 2,4,$^) >> $@
+
+endif
+
+$(top_builddir)include/bits/uClibc_locale_data.h: $(locale_OUT)/uClibc_locale_data.h | $(top_builddir)include/bits/uClibc_config.h
+ @$(disp_gen)
+ $(Q)$(AWK) 'BEGIN{i=1}{if (/WANT_/) i=/endif/;else if (i) print $0}' \
+ $< > $@
+
+objclean-y += CLEAN_extra/locale
+
+# lmmtolso.c/gen_mmap.c/tst-*.c not used
+CLEAN_extra/locale:
+ $(do_rm) $(locale_HOBJ) $(locale_SRC) $(addprefix $(locale_OUT)/*., o os txt) \
+ $(addprefix $(locale_OUT)/,$(addsuffix .h,uClibc_locale_data lt_defines c8tables wctables locale_tables locale_collate) lmmtolso gen_mmap locale.mmap)
diff --git a/ap/build/uClibc/extra/locale/README b/ap/build/uClibc/extra/locale/README
new file mode 100644
index 0000000..244b925
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/README
@@ -0,0 +1,71 @@
+Warning!!! Warning!!! Warning!!! Warning!!! Warning!!! Warning!!!
+Warning!!! Warning!!! Warning!!! Warning!!! Warning!!! Warning!!!
+
+The programs in this directory are strictly cut-and-paste hack jobs to
+extract the data I needed from glibc's locale database. I'm ashamed to
+even let them into the light of day, and I consider them complete garbage.
+
+However, they are currently necessary to build the data needed for the
+locale support I've implemented, so I'm forced to include them here.
+
+NOTE: While its possible to use this stuff for native != target arch,
+you'll have to either write a converter to account for endianess and
+struct padding issues, or run the mmap file generator on your target
+arch. But all these programs will be rewritten at some point.
+
+All that being said, LC_CTYPE support has been added and supports the
+ctype.h and wctype.h function. Also, LC_TIME, LC_MONETARY, LC_NUMERIC,
+and LC_MESSAGES are supported wrt SUSv3. localeconv() works in both
+real and stub locale modes. nl_langinfo() currently only works with
+real locales enabled. That will be fixed though. wc->mb unsupported
+char replacement and basic translit support is on the way as well.
+Finally, some basic 8-bit codeset LC_COLLATE support should be in place
+in the next week or two (similar to what was in the previous locale
+implementation).
+
+Also, as one can probably guess, I'm working towards having the locale
+data accessed via a shared mmap. That will allow non-mmu platforms
+to use this without the current bloat.
+
+Currently, the output of size for my locale_data.o file is
+ text data bss dec hex filename
+ 59072 4 0 59076 e6c4 extra/locale/locale_data.o
+which is for the C locale (automatic of course) + all codesets in
+charmaps/ and all 268 locales in LOCALES. I estimate that the
+translit support for those 8-bit codesets will add another 7-10k.
+
+One difference of note is that the special case upper/lower mappings
+in the turkish locale are currently not implemented. That will be
+fixed.
+
+Manuel
+
+Warning!!! Warning!!! Warning!!! Warning!!! Warning!!! Warning!!!
+Warning!!! Warning!!! Warning!!! Warning!!! Warning!!! Warning!!!
+
+
+1) In the toplevel dir, 'make headers'.
+
+2) Create a codesets.txt file in this dir listing the codesets you want
+ to support. The easiest way to do this is to edit the output of
+ 'find ./charmaps -name "*.pairs" > codesets.txt'.
+ NOTE: UTF-8 support is always included if you build with wide chars enabled.
+ NOTE: The files in charmaps/ were created from glibc's charmap files
+ with the awk script at the end of this file. You can add others
+ but only single byte codesets are supported.
+
+3) Create a locales.txt file to select the locales you want to support.
+ You can copy and edit the LOCALES file for example. Other locales could
+ added provided you've included the appropriate codesets in step 2.
+ NOTE: You have to have the approprite locales available for glibc!
+
+4) Run make here.
+
+5) Continue building uClibc from the toplevel dir.
+
+
+
+
+Script used to generate the charmaps/*.pairs files:
+
+cat $1 | awk 'BEGIN { i = 0 } ; { if ($1 == "CHARMAP") i=1 ; else if ($1 == "END") i=0 ; else if (i==1) { sub("/","0",$2) ; sub("<U","0x",$1) ; sub(">","",$1) ; print "{", $2, ",", $1, "}," } }'
diff --git a/ap/build/uClibc/extra/locale/charmaps/ARMSCII-8.pairs b/ap/build/uClibc/extra/locale/charmaps/ARMSCII-8.pairs
new file mode 100644
index 0000000..6a0f441
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/charmaps/ARMSCII-8.pairs
@@ -0,0 +1,254 @@
+{ 0x00 , 0x0000 },
+{ 0x01 , 0x0001 },
+{ 0x02 , 0x0002 },
+{ 0x03 , 0x0003 },
+{ 0x04 , 0x0004 },
+{ 0x05 , 0x0005 },
+{ 0x06 , 0x0006 },
+{ 0x07 , 0x0007 },
+{ 0x08 , 0x0008 },
+{ 0x09 , 0x0009 },
+{ 0x0a , 0x000A },
+{ 0x0b , 0x000B },
+{ 0x0c , 0x000C },
+{ 0x0d , 0x000D },
+{ 0x0e , 0x000E },
+{ 0x0f , 0x000F },
+{ 0x10 , 0x0010 },
+{ 0x11 , 0x0011 },
+{ 0x12 , 0x0012 },
+{ 0x13 , 0x0013 },
+{ 0x14 , 0x0014 },
+{ 0x15 , 0x0015 },
+{ 0x16 , 0x0016 },
+{ 0x17 , 0x0017 },
+{ 0x18 , 0x0018 },
+{ 0x19 , 0x0019 },
+{ 0x1a , 0x001A },
+{ 0x1b , 0x001B },
+{ 0x1c , 0x001C },
+{ 0x1d , 0x001D },
+{ 0x1e , 0x001E },
+{ 0x1f , 0x001F },
+{ 0x20 , 0x0020 },
+{ 0x21 , 0x0021 },
+{ 0x22 , 0x0022 },
+{ 0x23 , 0x0023 },
+{ 0x24 , 0x0024 },
+{ 0x25 , 0x0025 },
+{ 0x26 , 0x0026 },
+{ 0x27 , 0x0027 },
+{ 0x28 , 0x0028 },
+{ 0x29 , 0x0029 },
+{ 0x2a , 0x002A },
+{ 0x2b , 0x002B },
+{ 0x2c , 0x002C },
+{ 0x2d , 0x002D },
+{ 0x2e , 0x002E },
+{ 0x2f , 0x002F },
+{ 0x30 , 0x0030 },
+{ 0x31 , 0x0031 },
+{ 0x32 , 0x0032 },
+{ 0x33 , 0x0033 },
+{ 0x34 , 0x0034 },
+{ 0x35 , 0x0035 },
+{ 0x36 , 0x0036 },
+{ 0x37 , 0x0037 },
+{ 0x38 , 0x0038 },
+{ 0x39 , 0x0039 },
+{ 0x3a , 0x003A },
+{ 0x3b , 0x003B },
+{ 0x3c , 0x003C },
+{ 0x3d , 0x003D },
+{ 0x3e , 0x003E },
+{ 0x3f , 0x003F },
+{ 0x40 , 0x0040 },
+{ 0x41 , 0x0041 },
+{ 0x42 , 0x0042 },
+{ 0x43 , 0x0043 },
+{ 0x44 , 0x0044 },
+{ 0x45 , 0x0045 },
+{ 0x46 , 0x0046 },
+{ 0x47 , 0x0047 },
+{ 0x48 , 0x0048 },
+{ 0x49 , 0x0049 },
+{ 0x4a , 0x004A },
+{ 0x4b , 0x004B },
+{ 0x4c , 0x004C },
+{ 0x4d , 0x004D },
+{ 0x4e , 0x004E },
+{ 0x4f , 0x004F },
+{ 0x50 , 0x0050 },
+{ 0x51 , 0x0051 },
+{ 0x52 , 0x0052 },
+{ 0x53 , 0x0053 },
+{ 0x54 , 0x0054 },
+{ 0x55 , 0x0055 },
+{ 0x56 , 0x0056 },
+{ 0x57 , 0x0057 },
+{ 0x58 , 0x0058 },
+{ 0x59 , 0x0059 },
+{ 0x5a , 0x005A },
+{ 0x5b , 0x005B },
+{ 0x5c , 0x005C },
+{ 0x5d , 0x005D },
+{ 0x5e , 0x005E },
+{ 0x5f , 0x005F },
+{ 0x60 , 0x0060 },
+{ 0x61 , 0x0061 },
+{ 0x62 , 0x0062 },
+{ 0x63 , 0x0063 },
+{ 0x64 , 0x0064 },
+{ 0x65 , 0x0065 },
+{ 0x66 , 0x0066 },
+{ 0x67 , 0x0067 },
+{ 0x68 , 0x0068 },
+{ 0x69 , 0x0069 },
+{ 0x6a , 0x006A },
+{ 0x6b , 0x006B },
+{ 0x6c , 0x006C },
+{ 0x6d , 0x006D },
+{ 0x6e , 0x006E },
+{ 0x6f , 0x006F },
+{ 0x70 , 0x0070 },
+{ 0x71 , 0x0071 },
+{ 0x72 , 0x0072 },
+{ 0x73 , 0x0073 },
+{ 0x74 , 0x0074 },
+{ 0x75 , 0x0075 },
+{ 0x76 , 0x0076 },
+{ 0x77 , 0x0077 },
+{ 0x78 , 0x0078 },
+{ 0x79 , 0x0079 },
+{ 0x7a , 0x007A },
+{ 0x7b , 0x007B },
+{ 0x7c , 0x007C },
+{ 0x7d , 0x007D },
+{ 0x7e , 0x007E },
+{ 0x7f , 0x007F },
+{ 0x80 , 0x0080 },
+{ 0x81 , 0x0081 },
+{ 0x82 , 0x0082 },
+{ 0x83 , 0x0083 },
+{ 0x84 , 0x0084 },
+{ 0x85 , 0x0085 },
+{ 0x86 , 0x0086 },
+{ 0x87 , 0x0087 },
+{ 0x88 , 0x0088 },
+{ 0x89 , 0x0089 },
+{ 0x8a , 0x008A },
+{ 0x8b , 0x008B },
+{ 0x8c , 0x008C },
+{ 0x8d , 0x008D },
+{ 0x8e , 0x008E },
+{ 0x8f , 0x008F },
+{ 0x90 , 0x0090 },
+{ 0x91 , 0x0091 },
+{ 0x92 , 0x0092 },
+{ 0x93 , 0x0093 },
+{ 0x94 , 0x0094 },
+{ 0x95 , 0x0095 },
+{ 0x96 , 0x0096 },
+{ 0x97 , 0x0097 },
+{ 0x98 , 0x0098 },
+{ 0x99 , 0x0099 },
+{ 0x9a , 0x009A },
+{ 0x9b , 0x009B },
+{ 0x9c , 0x009C },
+{ 0x9d , 0x009D },
+{ 0x9e , 0x009E },
+{ 0x9f , 0x009F },
+{ 0xa0 , 0x00A0 },
+{ 0xa2 , 0x0587 },
+{ 0xa3 , 0x0589 },
+{ 0xa4 , 0x0029 },
+{ 0xa5 , 0x0028 },
+{ 0xa6 , 0x00BB },
+{ 0xa7 , 0x00AB },
+{ 0xa8 , 0x2014 },
+{ 0xa9 , 0x002E },
+{ 0xaa , 0x055D },
+{ 0xab , 0x002C },
+{ 0xac , 0x002D },
+{ 0xad , 0x058A },
+{ 0xae , 0x2026 },
+{ 0xaf , 0x055C },
+{ 0xb0 , 0x055B },
+{ 0xb1 , 0x055E },
+{ 0xb2 , 0x0531 },
+{ 0xb3 , 0x0561 },
+{ 0xb4 , 0x0532 },
+{ 0xb5 , 0x0562 },
+{ 0xb6 , 0x0533 },
+{ 0xb7 , 0x0563 },
+{ 0xb8 , 0x0534 },
+{ 0xb9 , 0x0564 },
+{ 0xba , 0x0535 },
+{ 0xbb , 0x0565 },
+{ 0xbc , 0x0536 },
+{ 0xbd , 0x0566 },
+{ 0xbe , 0x0537 },
+{ 0xbf , 0x0567 },
+{ 0xc0 , 0x0538 },
+{ 0xc1 , 0x0568 },
+{ 0xc2 , 0x0539 },
+{ 0xc3 , 0x0569 },
+{ 0xc4 , 0x053A },
+{ 0xc5 , 0x056A },
+{ 0xc6 , 0x053B },
+{ 0xc7 , 0x056B },
+{ 0xc8 , 0x053C },
+{ 0xc9 , 0x056C },
+{ 0xca , 0x053D },
+{ 0xcb , 0x056D },
+{ 0xcc , 0x053E },
+{ 0xcd , 0x056E },
+{ 0xce , 0x053F },
+{ 0xcf , 0x056F },
+{ 0xd0 , 0x0540 },
+{ 0xd1 , 0x0570 },
+{ 0xd2 , 0x0541 },
+{ 0xd3 , 0x0571 },
+{ 0xd4 , 0x0542 },
+{ 0xd5 , 0x0572 },
+{ 0xd6 , 0x0543 },
+{ 0xd7 , 0x0573 },
+{ 0xd8 , 0x0544 },
+{ 0xd9 , 0x0574 },
+{ 0xda , 0x0545 },
+{ 0xdb , 0x0575 },
+{ 0xdc , 0x0546 },
+{ 0xdd , 0x0576 },
+{ 0xde , 0x0547 },
+{ 0xdf , 0x0577 },
+{ 0xe0 , 0x0548 },
+{ 0xe1 , 0x0578 },
+{ 0xe2 , 0x0549 },
+{ 0xe3 , 0x0579 },
+{ 0xe4 , 0x054A },
+{ 0xe5 , 0x057A },
+{ 0xe6 , 0x054B },
+{ 0xe7 , 0x057B },
+{ 0xe8 , 0x054C },
+{ 0xe9 , 0x057C },
+{ 0xea , 0x054D },
+{ 0xeb , 0x057D },
+{ 0xec , 0x054E },
+{ 0xed , 0x057E },
+{ 0xee , 0x054F },
+{ 0xef , 0x057F },
+{ 0xf0 , 0x0550 },
+{ 0xf1 , 0x0580 },
+{ 0xf2 , 0x0551 },
+{ 0xf3 , 0x0581 },
+{ 0xf4 , 0x0552 },
+{ 0xf5 , 0x0582 },
+{ 0xf6 , 0x0553 },
+{ 0xf7 , 0x0583 },
+{ 0xf8 , 0x0554 },
+{ 0xf9 , 0x0584 },
+{ 0xfa , 0x0555 },
+{ 0xfb , 0x0585 },
+{ 0xfc , 0x0556 },
+{ 0xfd , 0x0586 },
+{ 0xfe , 0x055A },
diff --git a/ap/build/uClibc/extra/locale/charmaps/ASCII.pairs b/ap/build/uClibc/extra/locale/charmaps/ASCII.pairs
new file mode 100644
index 0000000..038314d
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/charmaps/ASCII.pairs
@@ -0,0 +1,128 @@
+{ 0x00 , 0x0000 },
+{ 0x01 , 0x0001 },
+{ 0x02 , 0x0002 },
+{ 0x03 , 0x0003 },
+{ 0x04 , 0x0004 },
+{ 0x05 , 0x0005 },
+{ 0x06 , 0x0006 },
+{ 0x07 , 0x0007 },
+{ 0x08 , 0x0008 },
+{ 0x09 , 0x0009 },
+{ 0x0a , 0x000A },
+{ 0x0b , 0x000B },
+{ 0x0c , 0x000C },
+{ 0x0d , 0x000D },
+{ 0x0e , 0x000E },
+{ 0x0f , 0x000F },
+{ 0x10 , 0x0010 },
+{ 0x11 , 0x0011 },
+{ 0x12 , 0x0012 },
+{ 0x13 , 0x0013 },
+{ 0x14 , 0x0014 },
+{ 0x15 , 0x0015 },
+{ 0x16 , 0x0016 },
+{ 0x17 , 0x0017 },
+{ 0x18 , 0x0018 },
+{ 0x19 , 0x0019 },
+{ 0x1a , 0x001A },
+{ 0x1b , 0x001B },
+{ 0x1c , 0x001C },
+{ 0x1d , 0x001D },
+{ 0x1e , 0x001E },
+{ 0x1f , 0x001F },
+{ 0x20 , 0x0020 },
+{ 0x21 , 0x0021 },
+{ 0x22 , 0x0022 },
+{ 0x23 , 0x0023 },
+{ 0x24 , 0x0024 },
+{ 0x25 , 0x0025 },
+{ 0x26 , 0x0026 },
+{ 0x27 , 0x0027 },
+{ 0x28 , 0x0028 },
+{ 0x29 , 0x0029 },
+{ 0x2a , 0x002A },
+{ 0x2b , 0x002B },
+{ 0x2c , 0x002C },
+{ 0x2d , 0x002D },
+{ 0x2e , 0x002E },
+{ 0x2f , 0x002F },
+{ 0x30 , 0x0030 },
+{ 0x31 , 0x0031 },
+{ 0x32 , 0x0032 },
+{ 0x33 , 0x0033 },
+{ 0x34 , 0x0034 },
+{ 0x35 , 0x0035 },
+{ 0x36 , 0x0036 },
+{ 0x37 , 0x0037 },
+{ 0x38 , 0x0038 },
+{ 0x39 , 0x0039 },
+{ 0x3a , 0x003A },
+{ 0x3b , 0x003B },
+{ 0x3c , 0x003C },
+{ 0x3d , 0x003D },
+{ 0x3e , 0x003E },
+{ 0x3f , 0x003F },
+{ 0x40 , 0x0040 },
+{ 0x41 , 0x0041 },
+{ 0x42 , 0x0042 },
+{ 0x43 , 0x0043 },
+{ 0x44 , 0x0044 },
+{ 0x45 , 0x0045 },
+{ 0x46 , 0x0046 },
+{ 0x47 , 0x0047 },
+{ 0x48 , 0x0048 },
+{ 0x49 , 0x0049 },
+{ 0x4a , 0x004A },
+{ 0x4b , 0x004B },
+{ 0x4c , 0x004C },
+{ 0x4d , 0x004D },
+{ 0x4e , 0x004E },
+{ 0x4f , 0x004F },
+{ 0x50 , 0x0050 },
+{ 0x51 , 0x0051 },
+{ 0x52 , 0x0052 },
+{ 0x53 , 0x0053 },
+{ 0x54 , 0x0054 },
+{ 0x55 , 0x0055 },
+{ 0x56 , 0x0056 },
+{ 0x57 , 0x0057 },
+{ 0x58 , 0x0058 },
+{ 0x59 , 0x0059 },
+{ 0x5a , 0x005A },
+{ 0x5b , 0x005B },
+{ 0x5c , 0x005C },
+{ 0x5d , 0x005D },
+{ 0x5e , 0x005E },
+{ 0x5f , 0x005F },
+{ 0x60 , 0x0060 },
+{ 0x61 , 0x0061 },
+{ 0x62 , 0x0062 },
+{ 0x63 , 0x0063 },
+{ 0x64 , 0x0064 },
+{ 0x65 , 0x0065 },
+{ 0x66 , 0x0066 },
+{ 0x67 , 0x0067 },
+{ 0x68 , 0x0068 },
+{ 0x69 , 0x0069 },
+{ 0x6a , 0x006A },
+{ 0x6b , 0x006B },
+{ 0x6c , 0x006C },
+{ 0x6d , 0x006D },
+{ 0x6e , 0x006E },
+{ 0x6f , 0x006F },
+{ 0x70 , 0x0070 },
+{ 0x71 , 0x0071 },
+{ 0x72 , 0x0072 },
+{ 0x73 , 0x0073 },
+{ 0x74 , 0x0074 },
+{ 0x75 , 0x0075 },
+{ 0x76 , 0x0076 },
+{ 0x77 , 0x0077 },
+{ 0x78 , 0x0078 },
+{ 0x79 , 0x0079 },
+{ 0x7a , 0x007A },
+{ 0x7b , 0x007B },
+{ 0x7c , 0x007C },
+{ 0x7d , 0x007D },
+{ 0x7e , 0x007E },
+{ 0x7f , 0x007F },
diff --git a/ap/build/uClibc/extra/locale/charmaps/CP1251.pairs b/ap/build/uClibc/extra/locale/charmaps/CP1251.pairs
new file mode 100644
index 0000000..a5a80d6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/charmaps/CP1251.pairs
@@ -0,0 +1,255 @@
+{ 0x00 , 0x0000 },
+{ 0x01 , 0x0001 },
+{ 0x02 , 0x0002 },
+{ 0x03 , 0x0003 },
+{ 0x04 , 0x0004 },
+{ 0x05 , 0x0005 },
+{ 0x06 , 0x0006 },
+{ 0x07 , 0x0007 },
+{ 0x08 , 0x0008 },
+{ 0x09 , 0x0009 },
+{ 0x0a , 0x000A },
+{ 0x0b , 0x000B },
+{ 0x0c , 0x000C },
+{ 0x0d , 0x000D },
+{ 0x0e , 0x000E },
+{ 0x0f , 0x000F },
+{ 0x10 , 0x0010 },
+{ 0x11 , 0x0011 },
+{ 0x12 , 0x0012 },
+{ 0x13 , 0x0013 },
+{ 0x14 , 0x0014 },
+{ 0x15 , 0x0015 },
+{ 0x16 , 0x0016 },
+{ 0x17 , 0x0017 },
+{ 0x18 , 0x0018 },
+{ 0x19 , 0x0019 },
+{ 0x1a , 0x001A },
+{ 0x1b , 0x001B },
+{ 0x1c , 0x001C },
+{ 0x1d , 0x001D },
+{ 0x1e , 0x001E },
+{ 0x1f , 0x001F },
+{ 0x20 , 0x0020 },
+{ 0x21 , 0x0021 },
+{ 0x22 , 0x0022 },
+{ 0x23 , 0x0023 },
+{ 0x24 , 0x0024 },
+{ 0x25 , 0x0025 },
+{ 0x26 , 0x0026 },
+{ 0x27 , 0x0027 },
+{ 0x28 , 0x0028 },
+{ 0x29 , 0x0029 },
+{ 0x2a , 0x002A },
+{ 0x2b , 0x002B },
+{ 0x2c , 0x002C },
+{ 0x2d , 0x002D },
+{ 0x2e , 0x002E },
+{ 0x2f , 0x002F },
+{ 0x30 , 0x0030 },
+{ 0x31 , 0x0031 },
+{ 0x32 , 0x0032 },
+{ 0x33 , 0x0033 },
+{ 0x34 , 0x0034 },
+{ 0x35 , 0x0035 },
+{ 0x36 , 0x0036 },
+{ 0x37 , 0x0037 },
+{ 0x38 , 0x0038 },
+{ 0x39 , 0x0039 },
+{ 0x3a , 0x003A },
+{ 0x3b , 0x003B },
+{ 0x3c , 0x003C },
+{ 0x3d , 0x003D },
+{ 0x3e , 0x003E },
+{ 0x3f , 0x003F },
+{ 0x40 , 0x0040 },
+{ 0x41 , 0x0041 },
+{ 0x42 , 0x0042 },
+{ 0x43 , 0x0043 },
+{ 0x44 , 0x0044 },
+{ 0x45 , 0x0045 },
+{ 0x46 , 0x0046 },
+{ 0x47 , 0x0047 },
+{ 0x48 , 0x0048 },
+{ 0x49 , 0x0049 },
+{ 0x4a , 0x004A },
+{ 0x4b , 0x004B },
+{ 0x4c , 0x004C },
+{ 0x4d , 0x004D },
+{ 0x4e , 0x004E },
+{ 0x4f , 0x004F },
+{ 0x50 , 0x0050 },
+{ 0x51 , 0x0051 },
+{ 0x52 , 0x0052 },
+{ 0x53 , 0x0053 },
+{ 0x54 , 0x0054 },
+{ 0x55 , 0x0055 },
+{ 0x56 , 0x0056 },
+{ 0x57 , 0x0057 },
+{ 0x58 , 0x0058 },
+{ 0x59 , 0x0059 },
+{ 0x5a , 0x005A },
+{ 0x5b , 0x005B },
+{ 0x5c , 0x005C },
+{ 0x5d , 0x005D },
+{ 0x5e , 0x005E },
+{ 0x5f , 0x005F },
+{ 0x60 , 0x0060 },
+{ 0x61 , 0x0061 },
+{ 0x62 , 0x0062 },
+{ 0x63 , 0x0063 },
+{ 0x64 , 0x0064 },
+{ 0x65 , 0x0065 },
+{ 0x66 , 0x0066 },
+{ 0x67 , 0x0067 },
+{ 0x68 , 0x0068 },
+{ 0x69 , 0x0069 },
+{ 0x6a , 0x006A },
+{ 0x6b , 0x006B },
+{ 0x6c , 0x006C },
+{ 0x6d , 0x006D },
+{ 0x6e , 0x006E },
+{ 0x6f , 0x006F },
+{ 0x70 , 0x0070 },
+{ 0x71 , 0x0071 },
+{ 0x72 , 0x0072 },
+{ 0x73 , 0x0073 },
+{ 0x74 , 0x0074 },
+{ 0x75 , 0x0075 },
+{ 0x76 , 0x0076 },
+{ 0x77 , 0x0077 },
+{ 0x78 , 0x0078 },
+{ 0x79 , 0x0079 },
+{ 0x7a , 0x007A },
+{ 0x7b , 0x007B },
+{ 0x7c , 0x007C },
+{ 0x7d , 0x007D },
+{ 0x7e , 0x007E },
+{ 0x7f , 0x007F },
+{ 0x80 , 0x0402 },
+{ 0x81 , 0x0403 },
+{ 0x82 , 0x201A },
+{ 0x83 , 0x0453 },
+{ 0x84 , 0x201E },
+{ 0x85 , 0x2026 },
+{ 0x86 , 0x2020 },
+{ 0x87 , 0x2021 },
+{ 0x88 , 0x20AC },
+{ 0x89 , 0x2030 },
+{ 0x8a , 0x0409 },
+{ 0x8b , 0x2039 },
+{ 0x8c , 0x040A },
+{ 0x8d , 0x040C },
+{ 0x8e , 0x040B },
+{ 0x8f , 0x040F },
+{ 0x90 , 0x0452 },
+{ 0x91 , 0x2018 },
+{ 0x92 , 0x2019 },
+{ 0x93 , 0x201C },
+{ 0x94 , 0x201D },
+{ 0x95 , 0x2022 },
+{ 0x96 , 0x2013 },
+{ 0x97 , 0x2014 },
+{ 0x99 , 0x2122 },
+{ 0x9a , 0x0459 },
+{ 0x9b , 0x203A },
+{ 0x9c , 0x045A },
+{ 0x9d , 0x045C },
+{ 0x9e , 0x045B },
+{ 0x9f , 0x045F },
+{ 0xa0 , 0x00A0 },
+{ 0xa1 , 0x040E },
+{ 0xa2 , 0x045E },
+{ 0xa3 , 0x0408 },
+{ 0xa4 , 0x00A4 },
+{ 0xa5 , 0x0490 },
+{ 0xa6 , 0x00A6 },
+{ 0xa7 , 0x00A7 },
+{ 0xa8 , 0x0401 },
+{ 0xa9 , 0x00A9 },
+{ 0xaa , 0x0404 },
+{ 0xab , 0x00AB },
+{ 0xac , 0x00AC },
+{ 0xad , 0x00AD },
+{ 0xae , 0x00AE },
+{ 0xaf , 0x0407 },
+{ 0xb0 , 0x00B0 },
+{ 0xb1 , 0x00B1 },
+{ 0xb2 , 0x0406 },
+{ 0xb3 , 0x0456 },
+{ 0xb4 , 0x0491 },
+{ 0xb5 , 0x00B5 },
+{ 0xb6 , 0x00B6 },
+{ 0xb7 , 0x00B7 },
+{ 0xb8 , 0x0451 },
+{ 0xb9 , 0x2116 },
+{ 0xba , 0x0454 },
+{ 0xbb , 0x00BB },
+{ 0xbc , 0x0458 },
+{ 0xbd , 0x0405 },
+{ 0xbe , 0x0455 },
+{ 0xbf , 0x0457 },
+{ 0xc0 , 0x0410 },
+{ 0xc1 , 0x0411 },
+{ 0xc2 , 0x0412 },
+{ 0xc3 , 0x0413 },
+{ 0xc4 , 0x0414 },
+{ 0xc5 , 0x0415 },
+{ 0xc6 , 0x0416 },
+{ 0xc7 , 0x0417 },
+{ 0xc8 , 0x0418 },
+{ 0xc9 , 0x0419 },
+{ 0xca , 0x041A },
+{ 0xcb , 0x041B },
+{ 0xcc , 0x041C },
+{ 0xcd , 0x041D },
+{ 0xce , 0x041E },
+{ 0xcf , 0x041F },
+{ 0xd0 , 0x0420 },
+{ 0xd1 , 0x0421 },
+{ 0xd2 , 0x0422 },
+{ 0xd3 , 0x0423 },
+{ 0xd4 , 0x0424 },
+{ 0xd5 , 0x0425 },
+{ 0xd6 , 0x0426 },
+{ 0xd7 , 0x0427 },
+{ 0xd8 , 0x0428 },
+{ 0xd9 , 0x0429 },
+{ 0xda , 0x042A },
+{ 0xdb , 0x042B },
+{ 0xdc , 0x042C },
+{ 0xdd , 0x042D },
+{ 0xde , 0x042E },
+{ 0xdf , 0x042F },
+{ 0xe0 , 0x0430 },
+{ 0xe1 , 0x0431 },
+{ 0xe2 , 0x0432 },
+{ 0xe3 , 0x0433 },
+{ 0xe4 , 0x0434 },
+{ 0xe5 , 0x0435 },
+{ 0xe6 , 0x0436 },
+{ 0xe7 , 0x0437 },
+{ 0xe8 , 0x0438 },
+{ 0xe9 , 0x0439 },
+{ 0xea , 0x043A },
+{ 0xeb , 0x043B },
+{ 0xec , 0x043C },
+{ 0xed , 0x043D },
+{ 0xee , 0x043E },
+{ 0xef , 0x043F },
+{ 0xf0 , 0x0440 },
+{ 0xf1 , 0x0441 },
+{ 0xf2 , 0x0442 },
+{ 0xf3 , 0x0443 },
+{ 0xf4 , 0x0444 },
+{ 0xf5 , 0x0445 },
+{ 0xf6 , 0x0446 },
+{ 0xf7 , 0x0447 },
+{ 0xf8 , 0x0448 },
+{ 0xf9 , 0x0449 },
+{ 0xfa , 0x044A },
+{ 0xfb , 0x044B },
+{ 0xfc , 0x044C },
+{ 0xfd , 0x044D },
+{ 0xfe , 0x044E },
+{ 0xff , 0x044F },
diff --git a/ap/build/uClibc/extra/locale/charmaps/CP1255.pairs b/ap/build/uClibc/extra/locale/charmaps/CP1255.pairs
new file mode 100644
index 0000000..123bb5a
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/charmaps/CP1255.pairs
@@ -0,0 +1,233 @@
+{ 0x00 , 0x0000 },
+{ 0x01 , 0x0001 },
+{ 0x02 , 0x0002 },
+{ 0x03 , 0x0003 },
+{ 0x04 , 0x0004 },
+{ 0x05 , 0x0005 },
+{ 0x06 , 0x0006 },
+{ 0x07 , 0x0007 },
+{ 0x08 , 0x0008 },
+{ 0x09 , 0x0009 },
+{ 0x0a , 0x000A },
+{ 0x0b , 0x000B },
+{ 0x0c , 0x000C },
+{ 0x0d , 0x000D },
+{ 0x0e , 0x000E },
+{ 0x0f , 0x000F },
+{ 0x10 , 0x0010 },
+{ 0x11 , 0x0011 },
+{ 0x12 , 0x0012 },
+{ 0x13 , 0x0013 },
+{ 0x14 , 0x0014 },
+{ 0x15 , 0x0015 },
+{ 0x16 , 0x0016 },
+{ 0x17 , 0x0017 },
+{ 0x18 , 0x0018 },
+{ 0x19 , 0x0019 },
+{ 0x1a , 0x001A },
+{ 0x1b , 0x001B },
+{ 0x1c , 0x001C },
+{ 0x1d , 0x001D },
+{ 0x1e , 0x001E },
+{ 0x1f , 0x001F },
+{ 0x20 , 0x0020 },
+{ 0x21 , 0x0021 },
+{ 0x22 , 0x0022 },
+{ 0x23 , 0x0023 },
+{ 0x24 , 0x0024 },
+{ 0x25 , 0x0025 },
+{ 0x26 , 0x0026 },
+{ 0x27 , 0x0027 },
+{ 0x28 , 0x0028 },
+{ 0x29 , 0x0029 },
+{ 0x2a , 0x002A },
+{ 0x2b , 0x002B },
+{ 0x2c , 0x002C },
+{ 0x2d , 0x002D },
+{ 0x2e , 0x002E },
+{ 0x2f , 0x002F },
+{ 0x30 , 0x0030 },
+{ 0x31 , 0x0031 },
+{ 0x32 , 0x0032 },
+{ 0x33 , 0x0033 },
+{ 0x34 , 0x0034 },
+{ 0x35 , 0x0035 },
+{ 0x36 , 0x0036 },
+{ 0x37 , 0x0037 },
+{ 0x38 , 0x0038 },
+{ 0x39 , 0x0039 },
+{ 0x3a , 0x003A },
+{ 0x3b , 0x003B },
+{ 0x3c , 0x003C },
+{ 0x3d , 0x003D },
+{ 0x3e , 0x003E },
+{ 0x3f , 0x003F },
+{ 0x40 , 0x0040 },
+{ 0x41 , 0x0041 },
+{ 0x42 , 0x0042 },
+{ 0x43 , 0x0043 },
+{ 0x44 , 0x0044 },
+{ 0x45 , 0x0045 },
+{ 0x46 , 0x0046 },
+{ 0x47 , 0x0047 },
+{ 0x48 , 0x0048 },
+{ 0x49 , 0x0049 },
+{ 0x4a , 0x004A },
+{ 0x4b , 0x004B },
+{ 0x4c , 0x004C },
+{ 0x4d , 0x004D },
+{ 0x4e , 0x004E },
+{ 0x4f , 0x004F },
+{ 0x50 , 0x0050 },
+{ 0x51 , 0x0051 },
+{ 0x52 , 0x0052 },
+{ 0x53 , 0x0053 },
+{ 0x54 , 0x0054 },
+{ 0x55 , 0x0055 },
+{ 0x56 , 0x0056 },
+{ 0x57 , 0x0057 },
+{ 0x58 , 0x0058 },
+{ 0x59 , 0x0059 },
+{ 0x5a , 0x005A },
+{ 0x5b , 0x005B },
+{ 0x5c , 0x005C },
+{ 0x5d , 0x005D },
+{ 0x5e , 0x005E },
+{ 0x5f , 0x005F },
+{ 0x60 , 0x0060 },
+{ 0x61 , 0x0061 },
+{ 0x62 , 0x0062 },
+{ 0x63 , 0x0063 },
+{ 0x64 , 0x0064 },
+{ 0x65 , 0x0065 },
+{ 0x66 , 0x0066 },
+{ 0x67 , 0x0067 },
+{ 0x68 , 0x0068 },
+{ 0x69 , 0x0069 },
+{ 0x6a , 0x006A },
+{ 0x6b , 0x006B },
+{ 0x6c , 0x006C },
+{ 0x6d , 0x006D },
+{ 0x6e , 0x006E },
+{ 0x6f , 0x006F },
+{ 0x70 , 0x0070 },
+{ 0x71 , 0x0071 },
+{ 0x72 , 0x0072 },
+{ 0x73 , 0x0073 },
+{ 0x74 , 0x0074 },
+{ 0x75 , 0x0075 },
+{ 0x76 , 0x0076 },
+{ 0x77 , 0x0077 },
+{ 0x78 , 0x0078 },
+{ 0x79 , 0x0079 },
+{ 0x7a , 0x007A },
+{ 0x7b , 0x007B },
+{ 0x7c , 0x007C },
+{ 0x7d , 0x007D },
+{ 0x7e , 0x007E },
+{ 0x7f , 0x007F },
+{ 0x80 , 0x20AC },
+{ 0x82 , 0x201A },
+{ 0x83 , 0x0192 },
+{ 0x84 , 0x201E },
+{ 0x85 , 0x2026 },
+{ 0x86 , 0x2020 },
+{ 0x87 , 0x2021 },
+{ 0x88 , 0x02C6 },
+{ 0x89 , 0x2030 },
+{ 0x8b , 0x2039 },
+{ 0x91 , 0x2018 },
+{ 0x92 , 0x2019 },
+{ 0x93 , 0x201C },
+{ 0x94 , 0x201D },
+{ 0x95 , 0x2022 },
+{ 0x96 , 0x2013 },
+{ 0x97 , 0x2014 },
+{ 0x98 , 0x02DC },
+{ 0x99 , 0x2122 },
+{ 0x9b , 0x203A },
+{ 0xa0 , 0x00A0 },
+{ 0xa1 , 0x00A1 },
+{ 0xa2 , 0x00A2 },
+{ 0xa3 , 0x00A3 },
+{ 0xa4 , 0x20AA },
+{ 0xa5 , 0x00A5 },
+{ 0xa6 , 0x00A6 },
+{ 0xa7 , 0x00A7 },
+{ 0xa8 , 0x00A8 },
+{ 0xa9 , 0x00A9 },
+{ 0xaa , 0x00D7 },
+{ 0xab , 0x00AB },
+{ 0xac , 0x00AC },
+{ 0xad , 0x00AD },
+{ 0xae , 0x00AE },
+{ 0xaf , 0x00AF },
+{ 0xb0 , 0x00B0 },
+{ 0xb1 , 0x00B1 },
+{ 0xb2 , 0x00B2 },
+{ 0xb3 , 0x00B3 },
+{ 0xb4 , 0x00B4 },
+{ 0xb5 , 0x00B5 },
+{ 0xb6 , 0x00B6 },
+{ 0xb7 , 0x00B7 },
+{ 0xb8 , 0x00B8 },
+{ 0xb9 , 0x00B9 },
+{ 0xba , 0x00F7 },
+{ 0xbb , 0x00BB },
+{ 0xbc , 0x00BC },
+{ 0xbd , 0x00BD },
+{ 0xbe , 0x00BE },
+{ 0xbf , 0x00BF },
+{ 0xc0 , 0x05B0 },
+{ 0xc1 , 0x05B1 },
+{ 0xc2 , 0x05B2 },
+{ 0xc3 , 0x05B3 },
+{ 0xc4 , 0x05B4 },
+{ 0xc5 , 0x05B5 },
+{ 0xc6 , 0x05B6 },
+{ 0xc7 , 0x05B7 },
+{ 0xc8 , 0x05B8 },
+{ 0xc9 , 0x05B9 },
+{ 0xcb , 0x05BB },
+{ 0xcc , 0x05BC },
+{ 0xcd , 0x05BD },
+{ 0xce , 0x05BE },
+{ 0xcf , 0x05BF },
+{ 0xd0 , 0x05C0 },
+{ 0xd1 , 0x05C1 },
+{ 0xd2 , 0x05C2 },
+{ 0xd3 , 0x05C3 },
+{ 0xd4 , 0x05F0 },
+{ 0xd5 , 0x05F1 },
+{ 0xd6 , 0x05F2 },
+{ 0xd7 , 0x05F3 },
+{ 0xd8 , 0x05F4 },
+{ 0xe0 , 0x05D0 },
+{ 0xe1 , 0x05D1 },
+{ 0xe2 , 0x05D2 },
+{ 0xe3 , 0x05D3 },
+{ 0xe4 , 0x05D4 },
+{ 0xe5 , 0x05D5 },
+{ 0xe6 , 0x05D6 },
+{ 0xe7 , 0x05D7 },
+{ 0xe8 , 0x05D8 },
+{ 0xe9 , 0x05D9 },
+{ 0xea , 0x05DA },
+{ 0xeb , 0x05DB },
+{ 0xec , 0x05DC },
+{ 0xed , 0x05DD },
+{ 0xee , 0x05DE },
+{ 0xef , 0x05DF },
+{ 0xf0 , 0x05E0 },
+{ 0xf1 , 0x05E1 },
+{ 0xf2 , 0x05E2 },
+{ 0xf3 , 0x05E3 },
+{ 0xf4 , 0x05E4 },
+{ 0xf5 , 0x05E5 },
+{ 0xf6 , 0x05E6 },
+{ 0xf7 , 0x05E7 },
+{ 0xf8 , 0x05E8 },
+{ 0xf9 , 0x05E9 },
+{ 0xfa , 0x05EA },
+{ 0xfd , 0x200E },
+{ 0xfe , 0x200F },
diff --git a/ap/build/uClibc/extra/locale/charmaps/GEORGIAN-PS.pairs b/ap/build/uClibc/extra/locale/charmaps/GEORGIAN-PS.pairs
new file mode 100644
index 0000000..815b2e6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/charmaps/GEORGIAN-PS.pairs
@@ -0,0 +1,256 @@
+{ 0x00 , 0x0000 },
+{ 0x01 , 0x0001 },
+{ 0x02 , 0x0002 },
+{ 0x03 , 0x0003 },
+{ 0x04 , 0x0004 },
+{ 0x05 , 0x0005 },
+{ 0x06 , 0x0006 },
+{ 0x07 , 0x0007 },
+{ 0x08 , 0x0008 },
+{ 0x09 , 0x0009 },
+{ 0x0a , 0x000A },
+{ 0x0b , 0x000B },
+{ 0x0c , 0x000C },
+{ 0x0d , 0x000D },
+{ 0x0e , 0x000E },
+{ 0x0f , 0x000F },
+{ 0x10 , 0x0010 },
+{ 0x11 , 0x0011 },
+{ 0x12 , 0x0012 },
+{ 0x13 , 0x0013 },
+{ 0x14 , 0x0014 },
+{ 0x15 , 0x0015 },
+{ 0x16 , 0x0016 },
+{ 0x17 , 0x0017 },
+{ 0x18 , 0x0018 },
+{ 0x19 , 0x0019 },
+{ 0x1a , 0x001A },
+{ 0x1b , 0x001B },
+{ 0x1c , 0x001C },
+{ 0x1d , 0x001D },
+{ 0x1e , 0x001E },
+{ 0x1f , 0x001F },
+{ 0x20 , 0x0020 },
+{ 0x21 , 0x0021 },
+{ 0x22 , 0x0022 },
+{ 0x23 , 0x0023 },
+{ 0x24 , 0x0024 },
+{ 0x25 , 0x0025 },
+{ 0x26 , 0x0026 },
+{ 0x27 , 0x0027 },
+{ 0x28 , 0x0028 },
+{ 0x29 , 0x0029 },
+{ 0x2a , 0x002A },
+{ 0x2b , 0x002B },
+{ 0x2c , 0x002C },
+{ 0x2d , 0x002D },
+{ 0x2e , 0x002E },
+{ 0x2f , 0x002F },
+{ 0x30 , 0x0030 },
+{ 0x31 , 0x0031 },
+{ 0x32 , 0x0032 },
+{ 0x33 , 0x0033 },
+{ 0x34 , 0x0034 },
+{ 0x35 , 0x0035 },
+{ 0x36 , 0x0036 },
+{ 0x37 , 0x0037 },
+{ 0x38 , 0x0038 },
+{ 0x39 , 0x0039 },
+{ 0x3a , 0x003A },
+{ 0x3b , 0x003B },
+{ 0x3c , 0x003C },
+{ 0x3d , 0x003D },
+{ 0x3e , 0x003E },
+{ 0x3f , 0x003F },
+{ 0x40 , 0x0040 },
+{ 0x41 , 0x0041 },
+{ 0x42 , 0x0042 },
+{ 0x43 , 0x0043 },
+{ 0x44 , 0x0044 },
+{ 0x45 , 0x0045 },
+{ 0x46 , 0x0046 },
+{ 0x47 , 0x0047 },
+{ 0x48 , 0x0048 },
+{ 0x49 , 0x0049 },
+{ 0x4a , 0x004A },
+{ 0x4b , 0x004B },
+{ 0x4c , 0x004C },
+{ 0x4d , 0x004D },
+{ 0x4e , 0x004E },
+{ 0x4f , 0x004F },
+{ 0x50 , 0x0050 },
+{ 0x51 , 0x0051 },
+{ 0x52 , 0x0052 },
+{ 0x53 , 0x0053 },
+{ 0x54 , 0x0054 },
+{ 0x55 , 0x0055 },
+{ 0x56 , 0x0056 },
+{ 0x57 , 0x0057 },
+{ 0x58 , 0x0058 },
+{ 0x59 , 0x0059 },
+{ 0x5a , 0x005A },
+{ 0x5b , 0x005B },
+{ 0x5c , 0x005C },
+{ 0x5d , 0x005D },
+{ 0x5e , 0x005E },
+{ 0x5f , 0x005F },
+{ 0x60 , 0x0060 },
+{ 0x61 , 0x0061 },
+{ 0x62 , 0x0062 },
+{ 0x63 , 0x0063 },
+{ 0x64 , 0x0064 },
+{ 0x65 , 0x0065 },
+{ 0x66 , 0x0066 },
+{ 0x67 , 0x0067 },
+{ 0x68 , 0x0068 },
+{ 0x69 , 0x0069 },
+{ 0x6a , 0x006A },
+{ 0x6b , 0x006B },
+{ 0x6c , 0x006C },
+{ 0x6d , 0x006D },
+{ 0x6e , 0x006E },
+{ 0x6f , 0x006F },
+{ 0x70 , 0x0070 },
+{ 0x71 , 0x0071 },
+{ 0x72 , 0x0072 },
+{ 0x73 , 0x0073 },
+{ 0x74 , 0x0074 },
+{ 0x75 , 0x0075 },
+{ 0x76 , 0x0076 },
+{ 0x77 , 0x0077 },
+{ 0x78 , 0x0078 },
+{ 0x79 , 0x0079 },
+{ 0x7a , 0x007A },
+{ 0x7b , 0x007B },
+{ 0x7c , 0x007C },
+{ 0x7d , 0x007D },
+{ 0x7e , 0x007E },
+{ 0x7f , 0x007F },
+{ 0x80 , 0x0080 },
+{ 0x81 , 0x0081 },
+{ 0x82 , 0x201A },
+{ 0x83 , 0x0192 },
+{ 0x84 , 0x201E },
+{ 0x85 , 0x2026 },
+{ 0x86 , 0x2020 },
+{ 0x87 , 0x2021 },
+{ 0x88 , 0x02C6 },
+{ 0x89 , 0x2030 },
+{ 0x8a , 0x0160 },
+{ 0x8b , 0x2039 },
+{ 0x8c , 0x0152 },
+{ 0x8d , 0x008D },
+{ 0x8e , 0x008E },
+{ 0x8f , 0x008F },
+{ 0x90 , 0x0090 },
+{ 0x91 , 0x2018 },
+{ 0x92 , 0x2019 },
+{ 0x93 , 0x201C },
+{ 0x94 , 0x201D },
+{ 0x95 , 0x2022 },
+{ 0x96 , 0x2013 },
+{ 0x97 , 0x2014 },
+{ 0x98 , 0x02DC },
+{ 0x99 , 0x2122 },
+{ 0x9a , 0x0161 },
+{ 0x9b , 0x203A },
+{ 0x9c , 0x0153 },
+{ 0x9d , 0x009D },
+{ 0x9e , 0x009E },
+{ 0x9f , 0x0178 },
+{ 0xa0 , 0x00A0 },
+{ 0xa1 , 0x00A1 },
+{ 0xa2 , 0x00A2 },
+{ 0xa3 , 0x00A3 },
+{ 0xa4 , 0x00A4 },
+{ 0xa5 , 0x00A5 },
+{ 0xa6 , 0x00A6 },
+{ 0xa7 , 0x00A7 },
+{ 0xa8 , 0x00A8 },
+{ 0xa9 , 0x00A9 },
+{ 0xaa , 0x00AA },
+{ 0xab , 0x00AB },
+{ 0xac , 0x00AC },
+{ 0xad , 0x00AD },
+{ 0xae , 0x00AE },
+{ 0xaf , 0x00AF },
+{ 0xb0 , 0x00B0 },
+{ 0xb1 , 0x00B1 },
+{ 0xb2 , 0x00B2 },
+{ 0xb3 , 0x00B3 },
+{ 0xb4 , 0x00B4 },
+{ 0xb5 , 0x00B5 },
+{ 0xb6 , 0x00B6 },
+{ 0xb7 , 0x00B7 },
+{ 0xb8 , 0x00B8 },
+{ 0xb9 , 0x00B9 },
+{ 0xba , 0x00BA },
+{ 0xbb , 0x00BB },
+{ 0xbc , 0x00BC },
+{ 0xbd , 0x00BD },
+{ 0xbe , 0x00BE },
+{ 0xbf , 0x00BF },
+{ 0xc0 , 0x10D0 },
+{ 0xc1 , 0x10D1 },
+{ 0xc2 , 0x10D2 },
+{ 0xc3 , 0x10D3 },
+{ 0xc4 , 0x10D4 },
+{ 0xc5 , 0x10D5 },
+{ 0xc6 , 0x10D6 },
+{ 0xc7 , 0x10F1 },
+{ 0xc8 , 0x10D7 },
+{ 0xc9 , 0x10D8 },
+{ 0xca , 0x10D9 },
+{ 0xcb , 0x10DA },
+{ 0xcc , 0x10DB },
+{ 0xcd , 0x10DC },
+{ 0xce , 0x10F2 },
+{ 0xcf , 0x10DD },
+{ 0xd0 , 0x10DE },
+{ 0xd1 , 0x10DF },
+{ 0xd2 , 0x10E0 },
+{ 0xd3 , 0x10E1 },
+{ 0xd4 , 0x10E2 },
+{ 0xd5 , 0x10F3 },
+{ 0xd6 , 0x10E3 },
+{ 0xd7 , 0x10E4 },
+{ 0xd8 , 0x10E5 },
+{ 0xd9 , 0x10E6 },
+{ 0xda , 0x10E7 },
+{ 0xdb , 0x10E8 },
+{ 0xdc , 0x10E9 },
+{ 0xdd , 0x10EA },
+{ 0xde , 0x10EB },
+{ 0xdf , 0x10EC },
+{ 0xe0 , 0x10ED },
+{ 0xe1 , 0x10EE },
+{ 0xe2 , 0x10F4 },
+{ 0xe3 , 0x10EF },
+{ 0xe4 , 0x10F0 },
+{ 0xe5 , 0x10F5 },
+{ 0xe6 , 0x00E6 },
+{ 0xe7 , 0x00E7 },
+{ 0xe8 , 0x00E8 },
+{ 0xe9 , 0x00E9 },
+{ 0xea , 0x00EA },
+{ 0xeb , 0x00EB },
+{ 0xec , 0x00EC },
+{ 0xed , 0x00ED },
+{ 0xee , 0x00EE },
+{ 0xef , 0x00EF },
+{ 0xf0 , 0x00F0 },
+{ 0xf1 , 0x00F1 },
+{ 0xf2 , 0x00F2 },
+{ 0xf3 , 0x00F3 },
+{ 0xf4 , 0x00F4 },
+{ 0xf5 , 0x00F5 },
+{ 0xf6 , 0x00F6 },
+{ 0xf7 , 0x00F7 },
+{ 0xf8 , 0x00F8 },
+{ 0xf9 , 0x00F9 },
+{ 0xfa , 0x00FA },
+{ 0xfb , 0x00FB },
+{ 0xfc , 0x00FC },
+{ 0xfd , 0x00FD },
+{ 0xfe , 0x00FE },
+{ 0xff , 0x00FF },
diff --git a/ap/build/uClibc/extra/locale/charmaps/ISO-8859-1.pairs b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-1.pairs
new file mode 100644
index 0000000..97812a0
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-1.pairs
@@ -0,0 +1,256 @@
+{ 0x00 , 0x0000 },
+{ 0x01 , 0x0001 },
+{ 0x02 , 0x0002 },
+{ 0x03 , 0x0003 },
+{ 0x04 , 0x0004 },
+{ 0x05 , 0x0005 },
+{ 0x06 , 0x0006 },
+{ 0x07 , 0x0007 },
+{ 0x08 , 0x0008 },
+{ 0x09 , 0x0009 },
+{ 0x0a , 0x000A },
+{ 0x0b , 0x000B },
+{ 0x0c , 0x000C },
+{ 0x0d , 0x000D },
+{ 0x0e , 0x000E },
+{ 0x0f , 0x000F },
+{ 0x10 , 0x0010 },
+{ 0x11 , 0x0011 },
+{ 0x12 , 0x0012 },
+{ 0x13 , 0x0013 },
+{ 0x14 , 0x0014 },
+{ 0x15 , 0x0015 },
+{ 0x16 , 0x0016 },
+{ 0x17 , 0x0017 },
+{ 0x18 , 0x0018 },
+{ 0x19 , 0x0019 },
+{ 0x1a , 0x001A },
+{ 0x1b , 0x001B },
+{ 0x1c , 0x001C },
+{ 0x1d , 0x001D },
+{ 0x1e , 0x001E },
+{ 0x1f , 0x001F },
+{ 0x20 , 0x0020 },
+{ 0x21 , 0x0021 },
+{ 0x22 , 0x0022 },
+{ 0x23 , 0x0023 },
+{ 0x24 , 0x0024 },
+{ 0x25 , 0x0025 },
+{ 0x26 , 0x0026 },
+{ 0x27 , 0x0027 },
+{ 0x28 , 0x0028 },
+{ 0x29 , 0x0029 },
+{ 0x2a , 0x002A },
+{ 0x2b , 0x002B },
+{ 0x2c , 0x002C },
+{ 0x2d , 0x002D },
+{ 0x2e , 0x002E },
+{ 0x2f , 0x002F },
+{ 0x30 , 0x0030 },
+{ 0x31 , 0x0031 },
+{ 0x32 , 0x0032 },
+{ 0x33 , 0x0033 },
+{ 0x34 , 0x0034 },
+{ 0x35 , 0x0035 },
+{ 0x36 , 0x0036 },
+{ 0x37 , 0x0037 },
+{ 0x38 , 0x0038 },
+{ 0x39 , 0x0039 },
+{ 0x3a , 0x003A },
+{ 0x3b , 0x003B },
+{ 0x3c , 0x003C },
+{ 0x3d , 0x003D },
+{ 0x3e , 0x003E },
+{ 0x3f , 0x003F },
+{ 0x40 , 0x0040 },
+{ 0x41 , 0x0041 },
+{ 0x42 , 0x0042 },
+{ 0x43 , 0x0043 },
+{ 0x44 , 0x0044 },
+{ 0x45 , 0x0045 },
+{ 0x46 , 0x0046 },
+{ 0x47 , 0x0047 },
+{ 0x48 , 0x0048 },
+{ 0x49 , 0x0049 },
+{ 0x4a , 0x004A },
+{ 0x4b , 0x004B },
+{ 0x4c , 0x004C },
+{ 0x4d , 0x004D },
+{ 0x4e , 0x004E },
+{ 0x4f , 0x004F },
+{ 0x50 , 0x0050 },
+{ 0x51 , 0x0051 },
+{ 0x52 , 0x0052 },
+{ 0x53 , 0x0053 },
+{ 0x54 , 0x0054 },
+{ 0x55 , 0x0055 },
+{ 0x56 , 0x0056 },
+{ 0x57 , 0x0057 },
+{ 0x58 , 0x0058 },
+{ 0x59 , 0x0059 },
+{ 0x5a , 0x005A },
+{ 0x5b , 0x005B },
+{ 0x5c , 0x005C },
+{ 0x5d , 0x005D },
+{ 0x5e , 0x005E },
+{ 0x5f , 0x005F },
+{ 0x60 , 0x0060 },
+{ 0x61 , 0x0061 },
+{ 0x62 , 0x0062 },
+{ 0x63 , 0x0063 },
+{ 0x64 , 0x0064 },
+{ 0x65 , 0x0065 },
+{ 0x66 , 0x0066 },
+{ 0x67 , 0x0067 },
+{ 0x68 , 0x0068 },
+{ 0x69 , 0x0069 },
+{ 0x6a , 0x006A },
+{ 0x6b , 0x006B },
+{ 0x6c , 0x006C },
+{ 0x6d , 0x006D },
+{ 0x6e , 0x006E },
+{ 0x6f , 0x006F },
+{ 0x70 , 0x0070 },
+{ 0x71 , 0x0071 },
+{ 0x72 , 0x0072 },
+{ 0x73 , 0x0073 },
+{ 0x74 , 0x0074 },
+{ 0x75 , 0x0075 },
+{ 0x76 , 0x0076 },
+{ 0x77 , 0x0077 },
+{ 0x78 , 0x0078 },
+{ 0x79 , 0x0079 },
+{ 0x7a , 0x007A },
+{ 0x7b , 0x007B },
+{ 0x7c , 0x007C },
+{ 0x7d , 0x007D },
+{ 0x7e , 0x007E },
+{ 0x7f , 0x007F },
+{ 0x80 , 0x0080 },
+{ 0x81 , 0x0081 },
+{ 0x82 , 0x0082 },
+{ 0x83 , 0x0083 },
+{ 0x84 , 0x0084 },
+{ 0x85 , 0x0085 },
+{ 0x86 , 0x0086 },
+{ 0x87 , 0x0087 },
+{ 0x88 , 0x0088 },
+{ 0x89 , 0x0089 },
+{ 0x8a , 0x008A },
+{ 0x8b , 0x008B },
+{ 0x8c , 0x008C },
+{ 0x8d , 0x008D },
+{ 0x8e , 0x008E },
+{ 0x8f , 0x008F },
+{ 0x90 , 0x0090 },
+{ 0x91 , 0x0091 },
+{ 0x92 , 0x0092 },
+{ 0x93 , 0x0093 },
+{ 0x94 , 0x0094 },
+{ 0x95 , 0x0095 },
+{ 0x96 , 0x0096 },
+{ 0x97 , 0x0097 },
+{ 0x98 , 0x0098 },
+{ 0x99 , 0x0099 },
+{ 0x9a , 0x009A },
+{ 0x9b , 0x009B },
+{ 0x9c , 0x009C },
+{ 0x9d , 0x009D },
+{ 0x9e , 0x009E },
+{ 0x9f , 0x009F },
+{ 0xa0 , 0x00A0 },
+{ 0xa1 , 0x00A1 },
+{ 0xa2 , 0x00A2 },
+{ 0xa3 , 0x00A3 },
+{ 0xa4 , 0x00A4 },
+{ 0xa5 , 0x00A5 },
+{ 0xa6 , 0x00A6 },
+{ 0xa7 , 0x00A7 },
+{ 0xa8 , 0x00A8 },
+{ 0xa9 , 0x00A9 },
+{ 0xaa , 0x00AA },
+{ 0xab , 0x00AB },
+{ 0xac , 0x00AC },
+{ 0xad , 0x00AD },
+{ 0xae , 0x00AE },
+{ 0xaf , 0x00AF },
+{ 0xb0 , 0x00B0 },
+{ 0xb1 , 0x00B1 },
+{ 0xb2 , 0x00B2 },
+{ 0xb3 , 0x00B3 },
+{ 0xb4 , 0x00B4 },
+{ 0xb5 , 0x00B5 },
+{ 0xb6 , 0x00B6 },
+{ 0xb7 , 0x00B7 },
+{ 0xb8 , 0x00B8 },
+{ 0xb9 , 0x00B9 },
+{ 0xba , 0x00BA },
+{ 0xbb , 0x00BB },
+{ 0xbc , 0x00BC },
+{ 0xbd , 0x00BD },
+{ 0xbe , 0x00BE },
+{ 0xbf , 0x00BF },
+{ 0xc0 , 0x00C0 },
+{ 0xc1 , 0x00C1 },
+{ 0xc2 , 0x00C2 },
+{ 0xc3 , 0x00C3 },
+{ 0xc4 , 0x00C4 },
+{ 0xc5 , 0x00C5 },
+{ 0xc6 , 0x00C6 },
+{ 0xc7 , 0x00C7 },
+{ 0xc8 , 0x00C8 },
+{ 0xc9 , 0x00C9 },
+{ 0xca , 0x00CA },
+{ 0xcb , 0x00CB },
+{ 0xcc , 0x00CC },
+{ 0xcd , 0x00CD },
+{ 0xce , 0x00CE },
+{ 0xcf , 0x00CF },
+{ 0xd0 , 0x00D0 },
+{ 0xd1 , 0x00D1 },
+{ 0xd2 , 0x00D2 },
+{ 0xd3 , 0x00D3 },
+{ 0xd4 , 0x00D4 },
+{ 0xd5 , 0x00D5 },
+{ 0xd6 , 0x00D6 },
+{ 0xd7 , 0x00D7 },
+{ 0xd8 , 0x00D8 },
+{ 0xd9 , 0x00D9 },
+{ 0xda , 0x00DA },
+{ 0xdb , 0x00DB },
+{ 0xdc , 0x00DC },
+{ 0xdd , 0x00DD },
+{ 0xde , 0x00DE },
+{ 0xdf , 0x00DF },
+{ 0xe0 , 0x00E0 },
+{ 0xe1 , 0x00E1 },
+{ 0xe2 , 0x00E2 },
+{ 0xe3 , 0x00E3 },
+{ 0xe4 , 0x00E4 },
+{ 0xe5 , 0x00E5 },
+{ 0xe6 , 0x00E6 },
+{ 0xe7 , 0x00E7 },
+{ 0xe8 , 0x00E8 },
+{ 0xe9 , 0x00E9 },
+{ 0xea , 0x00EA },
+{ 0xeb , 0x00EB },
+{ 0xec , 0x00EC },
+{ 0xed , 0x00ED },
+{ 0xee , 0x00EE },
+{ 0xef , 0x00EF },
+{ 0xf0 , 0x00F0 },
+{ 0xf1 , 0x00F1 },
+{ 0xf2 , 0x00F2 },
+{ 0xf3 , 0x00F3 },
+{ 0xf4 , 0x00F4 },
+{ 0xf5 , 0x00F5 },
+{ 0xf6 , 0x00F6 },
+{ 0xf7 , 0x00F7 },
+{ 0xf8 , 0x00F8 },
+{ 0xf9 , 0x00F9 },
+{ 0xfa , 0x00FA },
+{ 0xfb , 0x00FB },
+{ 0xfc , 0x00FC },
+{ 0xfd , 0x00FD },
+{ 0xfe , 0x00FE },
+{ 0xff , 0x00FF },
diff --git a/ap/build/uClibc/extra/locale/charmaps/ISO-8859-10.pairs b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-10.pairs
new file mode 100644
index 0000000..a39892f
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-10.pairs
@@ -0,0 +1,256 @@
+{ 0x00 , 0x0000 },
+{ 0x01 , 0x0001 },
+{ 0x02 , 0x0002 },
+{ 0x03 , 0x0003 },
+{ 0x04 , 0x0004 },
+{ 0x05 , 0x0005 },
+{ 0x06 , 0x0006 },
+{ 0x07 , 0x0007 },
+{ 0x08 , 0x0008 },
+{ 0x09 , 0x0009 },
+{ 0x0a , 0x000A },
+{ 0x0b , 0x000B },
+{ 0x0c , 0x000C },
+{ 0x0d , 0x000D },
+{ 0x0e , 0x000E },
+{ 0x0f , 0x000F },
+{ 0x10 , 0x0010 },
+{ 0x11 , 0x0011 },
+{ 0x12 , 0x0012 },
+{ 0x13 , 0x0013 },
+{ 0x14 , 0x0014 },
+{ 0x15 , 0x0015 },
+{ 0x16 , 0x0016 },
+{ 0x17 , 0x0017 },
+{ 0x18 , 0x0018 },
+{ 0x19 , 0x0019 },
+{ 0x1a , 0x001A },
+{ 0x1b , 0x001B },
+{ 0x1c , 0x001C },
+{ 0x1d , 0x001D },
+{ 0x1e , 0x001E },
+{ 0x1f , 0x001F },
+{ 0x20 , 0x0020 },
+{ 0x21 , 0x0021 },
+{ 0x22 , 0x0022 },
+{ 0x23 , 0x0023 },
+{ 0x24 , 0x0024 },
+{ 0x25 , 0x0025 },
+{ 0x26 , 0x0026 },
+{ 0x27 , 0x0027 },
+{ 0x28 , 0x0028 },
+{ 0x29 , 0x0029 },
+{ 0x2a , 0x002A },
+{ 0x2b , 0x002B },
+{ 0x2c , 0x002C },
+{ 0x2d , 0x002D },
+{ 0x2e , 0x002E },
+{ 0x2f , 0x002F },
+{ 0x30 , 0x0030 },
+{ 0x31 , 0x0031 },
+{ 0x32 , 0x0032 },
+{ 0x33 , 0x0033 },
+{ 0x34 , 0x0034 },
+{ 0x35 , 0x0035 },
+{ 0x36 , 0x0036 },
+{ 0x37 , 0x0037 },
+{ 0x38 , 0x0038 },
+{ 0x39 , 0x0039 },
+{ 0x3a , 0x003A },
+{ 0x3b , 0x003B },
+{ 0x3c , 0x003C },
+{ 0x3d , 0x003D },
+{ 0x3e , 0x003E },
+{ 0x3f , 0x003F },
+{ 0x40 , 0x0040 },
+{ 0x41 , 0x0041 },
+{ 0x42 , 0x0042 },
+{ 0x43 , 0x0043 },
+{ 0x44 , 0x0044 },
+{ 0x45 , 0x0045 },
+{ 0x46 , 0x0046 },
+{ 0x47 , 0x0047 },
+{ 0x48 , 0x0048 },
+{ 0x49 , 0x0049 },
+{ 0x4a , 0x004A },
+{ 0x4b , 0x004B },
+{ 0x4c , 0x004C },
+{ 0x4d , 0x004D },
+{ 0x4e , 0x004E },
+{ 0x4f , 0x004F },
+{ 0x50 , 0x0050 },
+{ 0x51 , 0x0051 },
+{ 0x52 , 0x0052 },
+{ 0x53 , 0x0053 },
+{ 0x54 , 0x0054 },
+{ 0x55 , 0x0055 },
+{ 0x56 , 0x0056 },
+{ 0x57 , 0x0057 },
+{ 0x58 , 0x0058 },
+{ 0x59 , 0x0059 },
+{ 0x5a , 0x005A },
+{ 0x5b , 0x005B },
+{ 0x5c , 0x005C },
+{ 0x5d , 0x005D },
+{ 0x5e , 0x005E },
+{ 0x5f , 0x005F },
+{ 0x60 , 0x0060 },
+{ 0x61 , 0x0061 },
+{ 0x62 , 0x0062 },
+{ 0x63 , 0x0063 },
+{ 0x64 , 0x0064 },
+{ 0x65 , 0x0065 },
+{ 0x66 , 0x0066 },
+{ 0x67 , 0x0067 },
+{ 0x68 , 0x0068 },
+{ 0x69 , 0x0069 },
+{ 0x6a , 0x006A },
+{ 0x6b , 0x006B },
+{ 0x6c , 0x006C },
+{ 0x6d , 0x006D },
+{ 0x6e , 0x006E },
+{ 0x6f , 0x006F },
+{ 0x70 , 0x0070 },
+{ 0x71 , 0x0071 },
+{ 0x72 , 0x0072 },
+{ 0x73 , 0x0073 },
+{ 0x74 , 0x0074 },
+{ 0x75 , 0x0075 },
+{ 0x76 , 0x0076 },
+{ 0x77 , 0x0077 },
+{ 0x78 , 0x0078 },
+{ 0x79 , 0x0079 },
+{ 0x7a , 0x007A },
+{ 0x7b , 0x007B },
+{ 0x7c , 0x007C },
+{ 0x7d , 0x007D },
+{ 0x7e , 0x007E },
+{ 0x7f , 0x007F },
+{ 0x80 , 0x0080 },
+{ 0x81 , 0x0081 },
+{ 0x82 , 0x0082 },
+{ 0x83 , 0x0083 },
+{ 0x84 , 0x0084 },
+{ 0x85 , 0x0085 },
+{ 0x86 , 0x0086 },
+{ 0x87 , 0x0087 },
+{ 0x88 , 0x0088 },
+{ 0x89 , 0x0089 },
+{ 0x8a , 0x008A },
+{ 0x8b , 0x008B },
+{ 0x8c , 0x008C },
+{ 0x8d , 0x008D },
+{ 0x8e , 0x008E },
+{ 0x8f , 0x008F },
+{ 0x90 , 0x0090 },
+{ 0x91 , 0x0091 },
+{ 0x92 , 0x0092 },
+{ 0x93 , 0x0093 },
+{ 0x94 , 0x0094 },
+{ 0x95 , 0x0095 },
+{ 0x96 , 0x0096 },
+{ 0x97 , 0x0097 },
+{ 0x98 , 0x0098 },
+{ 0x99 , 0x0099 },
+{ 0x9a , 0x009A },
+{ 0x9b , 0x009B },
+{ 0x9c , 0x009C },
+{ 0x9d , 0x009D },
+{ 0x9e , 0x009E },
+{ 0x9f , 0x009F },
+{ 0xa0 , 0x00A0 },
+{ 0xa1 , 0x0104 },
+{ 0xa2 , 0x0112 },
+{ 0xa3 , 0x0122 },
+{ 0xa4 , 0x012A },
+{ 0xa5 , 0x0128 },
+{ 0xa6 , 0x0136 },
+{ 0xa7 , 0x00A7 },
+{ 0xa8 , 0x013B },
+{ 0xa9 , 0x0110 },
+{ 0xaa , 0x0160 },
+{ 0xab , 0x0166 },
+{ 0xac , 0x017D },
+{ 0xad , 0x00AD },
+{ 0xae , 0x016A },
+{ 0xaf , 0x014A },
+{ 0xb0 , 0x00B0 },
+{ 0xb1 , 0x0105 },
+{ 0xb2 , 0x0113 },
+{ 0xb3 , 0x0123 },
+{ 0xb4 , 0x012B },
+{ 0xb5 , 0x0129 },
+{ 0xb6 , 0x0137 },
+{ 0xb7 , 0x00B7 },
+{ 0xb8 , 0x013C },
+{ 0xb9 , 0x0111 },
+{ 0xba , 0x0161 },
+{ 0xbb , 0x0167 },
+{ 0xbc , 0x017E },
+{ 0xbd , 0x2015 },
+{ 0xbe , 0x016B },
+{ 0xbf , 0x014B },
+{ 0xc0 , 0x0100 },
+{ 0xc1 , 0x00C1 },
+{ 0xc2 , 0x00C2 },
+{ 0xc3 , 0x00C3 },
+{ 0xc4 , 0x00C4 },
+{ 0xc5 , 0x00C5 },
+{ 0xc6 , 0x00C6 },
+{ 0xc7 , 0x012E },
+{ 0xc8 , 0x010C },
+{ 0xc9 , 0x00C9 },
+{ 0xca , 0x0118 },
+{ 0xcb , 0x00CB },
+{ 0xcc , 0x0116 },
+{ 0xcd , 0x00CD },
+{ 0xce , 0x00CE },
+{ 0xcf , 0x00CF },
+{ 0xd0 , 0x00D0 },
+{ 0xd1 , 0x0145 },
+{ 0xd2 , 0x014C },
+{ 0xd3 , 0x00D3 },
+{ 0xd4 , 0x00D4 },
+{ 0xd5 , 0x00D5 },
+{ 0xd6 , 0x00D6 },
+{ 0xd7 , 0x0168 },
+{ 0xd8 , 0x00D8 },
+{ 0xd9 , 0x0172 },
+{ 0xda , 0x00DA },
+{ 0xdb , 0x00DB },
+{ 0xdc , 0x00DC },
+{ 0xdd , 0x00DD },
+{ 0xde , 0x00DE },
+{ 0xdf , 0x00DF },
+{ 0xe0 , 0x0101 },
+{ 0xe1 , 0x00E1 },
+{ 0xe2 , 0x00E2 },
+{ 0xe3 , 0x00E3 },
+{ 0xe4 , 0x00E4 },
+{ 0xe5 , 0x00E5 },
+{ 0xe6 , 0x00E6 },
+{ 0xe7 , 0x012F },
+{ 0xe8 , 0x010D },
+{ 0xe9 , 0x00E9 },
+{ 0xea , 0x0119 },
+{ 0xeb , 0x00EB },
+{ 0xec , 0x0117 },
+{ 0xed , 0x00ED },
+{ 0xee , 0x00EE },
+{ 0xef , 0x00EF },
+{ 0xf0 , 0x00F0 },
+{ 0xf1 , 0x0146 },
+{ 0xf2 , 0x014D },
+{ 0xf3 , 0x00F3 },
+{ 0xf4 , 0x00F4 },
+{ 0xf5 , 0x00F5 },
+{ 0xf6 , 0x00F6 },
+{ 0xf7 , 0x0169 },
+{ 0xf8 , 0x00F8 },
+{ 0xf9 , 0x0173 },
+{ 0xfa , 0x00FA },
+{ 0xfb , 0x00FB },
+{ 0xfc , 0x00FC },
+{ 0xfd , 0x00FD },
+{ 0xfe , 0x00FE },
+{ 0xff , 0x0138 },
diff --git a/ap/build/uClibc/extra/locale/charmaps/ISO-8859-13.pairs b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-13.pairs
new file mode 100644
index 0000000..ff95fb4
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-13.pairs
@@ -0,0 +1,256 @@
+{ 0x00 , 0x0000 },
+{ 0x01 , 0x0001 },
+{ 0x02 , 0x0002 },
+{ 0x03 , 0x0003 },
+{ 0x04 , 0x0004 },
+{ 0x05 , 0x0005 },
+{ 0x06 , 0x0006 },
+{ 0x07 , 0x0007 },
+{ 0x08 , 0x0008 },
+{ 0x09 , 0x0009 },
+{ 0x0a , 0x000A },
+{ 0x0b , 0x000B },
+{ 0x0c , 0x000C },
+{ 0x0d , 0x000D },
+{ 0x0e , 0x000E },
+{ 0x0f , 0x000F },
+{ 0x10 , 0x0010 },
+{ 0x11 , 0x0011 },
+{ 0x12 , 0x0012 },
+{ 0x13 , 0x0013 },
+{ 0x14 , 0x0014 },
+{ 0x15 , 0x0015 },
+{ 0x16 , 0x0016 },
+{ 0x17 , 0x0017 },
+{ 0x18 , 0x0018 },
+{ 0x19 , 0x0019 },
+{ 0x1a , 0x001A },
+{ 0x1b , 0x001B },
+{ 0x1c , 0x001C },
+{ 0x1d , 0x001D },
+{ 0x1e , 0x001E },
+{ 0x1f , 0x001F },
+{ 0x20 , 0x0020 },
+{ 0x21 , 0x0021 },
+{ 0x22 , 0x0022 },
+{ 0x23 , 0x0023 },
+{ 0x24 , 0x0024 },
+{ 0x25 , 0x0025 },
+{ 0x26 , 0x0026 },
+{ 0x27 , 0x0027 },
+{ 0x28 , 0x0028 },
+{ 0x29 , 0x0029 },
+{ 0x2a , 0x002A },
+{ 0x2b , 0x002B },
+{ 0x2c , 0x002C },
+{ 0x2d , 0x002D },
+{ 0x2e , 0x002E },
+{ 0x2f , 0x002F },
+{ 0x30 , 0x0030 },
+{ 0x31 , 0x0031 },
+{ 0x32 , 0x0032 },
+{ 0x33 , 0x0033 },
+{ 0x34 , 0x0034 },
+{ 0x35 , 0x0035 },
+{ 0x36 , 0x0036 },
+{ 0x37 , 0x0037 },
+{ 0x38 , 0x0038 },
+{ 0x39 , 0x0039 },
+{ 0x3a , 0x003A },
+{ 0x3b , 0x003B },
+{ 0x3c , 0x003C },
+{ 0x3d , 0x003D },
+{ 0x3e , 0x003E },
+{ 0x3f , 0x003F },
+{ 0x40 , 0x0040 },
+{ 0x41 , 0x0041 },
+{ 0x42 , 0x0042 },
+{ 0x43 , 0x0043 },
+{ 0x44 , 0x0044 },
+{ 0x45 , 0x0045 },
+{ 0x46 , 0x0046 },
+{ 0x47 , 0x0047 },
+{ 0x48 , 0x0048 },
+{ 0x49 , 0x0049 },
+{ 0x4a , 0x004A },
+{ 0x4b , 0x004B },
+{ 0x4c , 0x004C },
+{ 0x4d , 0x004D },
+{ 0x4e , 0x004E },
+{ 0x4f , 0x004F },
+{ 0x50 , 0x0050 },
+{ 0x51 , 0x0051 },
+{ 0x52 , 0x0052 },
+{ 0x53 , 0x0053 },
+{ 0x54 , 0x0054 },
+{ 0x55 , 0x0055 },
+{ 0x56 , 0x0056 },
+{ 0x57 , 0x0057 },
+{ 0x58 , 0x0058 },
+{ 0x59 , 0x0059 },
+{ 0x5a , 0x005A },
+{ 0x5b , 0x005B },
+{ 0x5c , 0x005C },
+{ 0x5d , 0x005D },
+{ 0x5e , 0x005E },
+{ 0x5f , 0x005F },
+{ 0x60 , 0x0060 },
+{ 0x61 , 0x0061 },
+{ 0x62 , 0x0062 },
+{ 0x63 , 0x0063 },
+{ 0x64 , 0x0064 },
+{ 0x65 , 0x0065 },
+{ 0x66 , 0x0066 },
+{ 0x67 , 0x0067 },
+{ 0x68 , 0x0068 },
+{ 0x69 , 0x0069 },
+{ 0x6a , 0x006A },
+{ 0x6b , 0x006B },
+{ 0x6c , 0x006C },
+{ 0x6d , 0x006D },
+{ 0x6e , 0x006E },
+{ 0x6f , 0x006F },
+{ 0x70 , 0x0070 },
+{ 0x71 , 0x0071 },
+{ 0x72 , 0x0072 },
+{ 0x73 , 0x0073 },
+{ 0x74 , 0x0074 },
+{ 0x75 , 0x0075 },
+{ 0x76 , 0x0076 },
+{ 0x77 , 0x0077 },
+{ 0x78 , 0x0078 },
+{ 0x79 , 0x0079 },
+{ 0x7a , 0x007A },
+{ 0x7b , 0x007B },
+{ 0x7c , 0x007C },
+{ 0x7d , 0x007D },
+{ 0x7e , 0x007E },
+{ 0x7f , 0x007F },
+{ 0x80 , 0x0080 },
+{ 0x81 , 0x0081 },
+{ 0x82 , 0x0082 },
+{ 0x83 , 0x0083 },
+{ 0x84 , 0x0084 },
+{ 0x85 , 0x0085 },
+{ 0x86 , 0x0086 },
+{ 0x87 , 0x0087 },
+{ 0x88 , 0x0088 },
+{ 0x89 , 0x0089 },
+{ 0x8a , 0x008A },
+{ 0x8b , 0x008B },
+{ 0x8c , 0x008C },
+{ 0x8d , 0x008D },
+{ 0x8e , 0x008E },
+{ 0x8f , 0x008F },
+{ 0x90 , 0x0090 },
+{ 0x91 , 0x0091 },
+{ 0x92 , 0x0092 },
+{ 0x93 , 0x0093 },
+{ 0x94 , 0x0094 },
+{ 0x95 , 0x0095 },
+{ 0x96 , 0x0096 },
+{ 0x97 , 0x0097 },
+{ 0x98 , 0x0098 },
+{ 0x99 , 0x0099 },
+{ 0x9a , 0x009A },
+{ 0x9b , 0x009B },
+{ 0x9c , 0x009C },
+{ 0x9d , 0x009D },
+{ 0x9e , 0x009E },
+{ 0x9f , 0x009F },
+{ 0xa0 , 0x00A0 },
+{ 0xa1 , 0x201D },
+{ 0xa2 , 0x00A2 },
+{ 0xa3 , 0x00A3 },
+{ 0xa4 , 0x00A4 },
+{ 0xa5 , 0x201E },
+{ 0xa6 , 0x00A6 },
+{ 0xa7 , 0x00A7 },
+{ 0xa8 , 0x00D8 },
+{ 0xa9 , 0x00A9 },
+{ 0xaa , 0x0156 },
+{ 0xab , 0x00AB },
+{ 0xac , 0x00AC },
+{ 0xad , 0x00AD },
+{ 0xae , 0x00AE },
+{ 0xaf , 0x00C6 },
+{ 0xb0 , 0x00B0 },
+{ 0xb1 , 0x00B1 },
+{ 0xb2 , 0x00B2 },
+{ 0xb3 , 0x00B3 },
+{ 0xb4 , 0x201C },
+{ 0xb5 , 0x00B5 },
+{ 0xb6 , 0x00B6 },
+{ 0xb7 , 0x00B7 },
+{ 0xb8 , 0x00F8 },
+{ 0xb9 , 0x00B9 },
+{ 0xba , 0x0157 },
+{ 0xbb , 0x00BB },
+{ 0xbc , 0x00BC },
+{ 0xbd , 0x00BD },
+{ 0xbe , 0x00BE },
+{ 0xbf , 0x00E6 },
+{ 0xc0 , 0x0104 },
+{ 0xc1 , 0x012E },
+{ 0xc2 , 0x0100 },
+{ 0xc3 , 0x0106 },
+{ 0xc4 , 0x00C4 },
+{ 0xc5 , 0x00C5 },
+{ 0xc6 , 0x0118 },
+{ 0xc7 , 0x0112 },
+{ 0xc8 , 0x010C },
+{ 0xc9 , 0x00C9 },
+{ 0xca , 0x0179 },
+{ 0xcb , 0x0116 },
+{ 0xcc , 0x0122 },
+{ 0xcd , 0x0136 },
+{ 0xce , 0x012A },
+{ 0xcf , 0x013B },
+{ 0xd0 , 0x0160 },
+{ 0xd1 , 0x0143 },
+{ 0xd2 , 0x0145 },
+{ 0xd3 , 0x00D3 },
+{ 0xd4 , 0x014C },
+{ 0xd5 , 0x00D5 },
+{ 0xd6 , 0x00D6 },
+{ 0xd7 , 0x00D7 },
+{ 0xd8 , 0x0172 },
+{ 0xd9 , 0x0141 },
+{ 0xda , 0x015A },
+{ 0xdb , 0x016A },
+{ 0xdc , 0x00DC },
+{ 0xdd , 0x017B },
+{ 0xde , 0x017D },
+{ 0xdf , 0x00DF },
+{ 0xe0 , 0x0105 },
+{ 0xe1 , 0x012F },
+{ 0xe2 , 0x0101 },
+{ 0xe3 , 0x0107 },
+{ 0xe4 , 0x00E4 },
+{ 0xe5 , 0x00E5 },
+{ 0xe6 , 0x0119 },
+{ 0xe7 , 0x0113 },
+{ 0xe8 , 0x010D },
+{ 0xe9 , 0x00E9 },
+{ 0xea , 0x017A },
+{ 0xeb , 0x0117 },
+{ 0xec , 0x0123 },
+{ 0xed , 0x0137 },
+{ 0xee , 0x012B },
+{ 0xef , 0x013C },
+{ 0xf0 , 0x0161 },
+{ 0xf1 , 0x0144 },
+{ 0xf2 , 0x0146 },
+{ 0xf3 , 0x00F3 },
+{ 0xf4 , 0x014D },
+{ 0xf5 , 0x00F5 },
+{ 0xf6 , 0x00F6 },
+{ 0xf7 , 0x00F7 },
+{ 0xf8 , 0x0173 },
+{ 0xf9 , 0x0142 },
+{ 0xfa , 0x015B },
+{ 0xfb , 0x016B },
+{ 0xfc , 0x00FC },
+{ 0xfd , 0x017C },
+{ 0xfe , 0x017E },
+{ 0xff , 0x2019 },
diff --git a/ap/build/uClibc/extra/locale/charmaps/ISO-8859-14.pairs b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-14.pairs
new file mode 100644
index 0000000..8a8f06e
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-14.pairs
@@ -0,0 +1,256 @@
+{ 0x00 , 0x0000 },
+{ 0x01 , 0x0001 },
+{ 0x02 , 0x0002 },
+{ 0x03 , 0x0003 },
+{ 0x04 , 0x0004 },
+{ 0x05 , 0x0005 },
+{ 0x06 , 0x0006 },
+{ 0x07 , 0x0007 },
+{ 0x08 , 0x0008 },
+{ 0x09 , 0x0009 },
+{ 0x0a , 0x000A },
+{ 0x0b , 0x000B },
+{ 0x0c , 0x000C },
+{ 0x0d , 0x000D },
+{ 0x0e , 0x000E },
+{ 0x0f , 0x000F },
+{ 0x10 , 0x0010 },
+{ 0x11 , 0x0011 },
+{ 0x12 , 0x0012 },
+{ 0x13 , 0x0013 },
+{ 0x14 , 0x0014 },
+{ 0x15 , 0x0015 },
+{ 0x16 , 0x0016 },
+{ 0x17 , 0x0017 },
+{ 0x18 , 0x0018 },
+{ 0x19 , 0x0019 },
+{ 0x1a , 0x001A },
+{ 0x1b , 0x001B },
+{ 0x1c , 0x001C },
+{ 0x1d , 0x001D },
+{ 0x1e , 0x001E },
+{ 0x1f , 0x001F },
+{ 0x20 , 0x0020 },
+{ 0x21 , 0x0021 },
+{ 0x22 , 0x0022 },
+{ 0x23 , 0x0023 },
+{ 0x24 , 0x0024 },
+{ 0x25 , 0x0025 },
+{ 0x26 , 0x0026 },
+{ 0x27 , 0x0027 },
+{ 0x28 , 0x0028 },
+{ 0x29 , 0x0029 },
+{ 0x2a , 0x002A },
+{ 0x2b , 0x002B },
+{ 0x2c , 0x002C },
+{ 0x2d , 0x002D },
+{ 0x2e , 0x002E },
+{ 0x2f , 0x002F },
+{ 0x30 , 0x0030 },
+{ 0x31 , 0x0031 },
+{ 0x32 , 0x0032 },
+{ 0x33 , 0x0033 },
+{ 0x34 , 0x0034 },
+{ 0x35 , 0x0035 },
+{ 0x36 , 0x0036 },
+{ 0x37 , 0x0037 },
+{ 0x38 , 0x0038 },
+{ 0x39 , 0x0039 },
+{ 0x3a , 0x003A },
+{ 0x3b , 0x003B },
+{ 0x3c , 0x003C },
+{ 0x3d , 0x003D },
+{ 0x3e , 0x003E },
+{ 0x3f , 0x003F },
+{ 0x40 , 0x0040 },
+{ 0x41 , 0x0041 },
+{ 0x42 , 0x0042 },
+{ 0x43 , 0x0043 },
+{ 0x44 , 0x0044 },
+{ 0x45 , 0x0045 },
+{ 0x46 , 0x0046 },
+{ 0x47 , 0x0047 },
+{ 0x48 , 0x0048 },
+{ 0x49 , 0x0049 },
+{ 0x4a , 0x004A },
+{ 0x4b , 0x004B },
+{ 0x4c , 0x004C },
+{ 0x4d , 0x004D },
+{ 0x4e , 0x004E },
+{ 0x4f , 0x004F },
+{ 0x50 , 0x0050 },
+{ 0x51 , 0x0051 },
+{ 0x52 , 0x0052 },
+{ 0x53 , 0x0053 },
+{ 0x54 , 0x0054 },
+{ 0x55 , 0x0055 },
+{ 0x56 , 0x0056 },
+{ 0x57 , 0x0057 },
+{ 0x58 , 0x0058 },
+{ 0x59 , 0x0059 },
+{ 0x5a , 0x005A },
+{ 0x5b , 0x005B },
+{ 0x5c , 0x005C },
+{ 0x5d , 0x005D },
+{ 0x5e , 0x005E },
+{ 0x5f , 0x005F },
+{ 0x60 , 0x0060 },
+{ 0x61 , 0x0061 },
+{ 0x62 , 0x0062 },
+{ 0x63 , 0x0063 },
+{ 0x64 , 0x0064 },
+{ 0x65 , 0x0065 },
+{ 0x66 , 0x0066 },
+{ 0x67 , 0x0067 },
+{ 0x68 , 0x0068 },
+{ 0x69 , 0x0069 },
+{ 0x6a , 0x006A },
+{ 0x6b , 0x006B },
+{ 0x6c , 0x006C },
+{ 0x6d , 0x006D },
+{ 0x6e , 0x006E },
+{ 0x6f , 0x006F },
+{ 0x70 , 0x0070 },
+{ 0x71 , 0x0071 },
+{ 0x72 , 0x0072 },
+{ 0x73 , 0x0073 },
+{ 0x74 , 0x0074 },
+{ 0x75 , 0x0075 },
+{ 0x76 , 0x0076 },
+{ 0x77 , 0x0077 },
+{ 0x78 , 0x0078 },
+{ 0x79 , 0x0079 },
+{ 0x7a , 0x007A },
+{ 0x7b , 0x007B },
+{ 0x7c , 0x007C },
+{ 0x7d , 0x007D },
+{ 0x7e , 0x007E },
+{ 0x7f , 0x007F },
+{ 0x80 , 0x0080 },
+{ 0x81 , 0x0081 },
+{ 0x82 , 0x0082 },
+{ 0x83 , 0x0083 },
+{ 0x84 , 0x0084 },
+{ 0x85 , 0x0085 },
+{ 0x86 , 0x0086 },
+{ 0x87 , 0x0087 },
+{ 0x88 , 0x0088 },
+{ 0x89 , 0x0089 },
+{ 0x8a , 0x008A },
+{ 0x8b , 0x008B },
+{ 0x8c , 0x008C },
+{ 0x8d , 0x008D },
+{ 0x8e , 0x008E },
+{ 0x8f , 0x008F },
+{ 0x90 , 0x0090 },
+{ 0x91 , 0x0091 },
+{ 0x92 , 0x0092 },
+{ 0x93 , 0x0093 },
+{ 0x94 , 0x0094 },
+{ 0x95 , 0x0095 },
+{ 0x96 , 0x0096 },
+{ 0x97 , 0x0097 },
+{ 0x98 , 0x0098 },
+{ 0x99 , 0x0099 },
+{ 0x9a , 0x009A },
+{ 0x9b , 0x009B },
+{ 0x9c , 0x009C },
+{ 0x9d , 0x009D },
+{ 0x9e , 0x009E },
+{ 0x9f , 0x009F },
+{ 0xa0 , 0x00A0 },
+{ 0xa1 , 0x1E02 },
+{ 0xa2 , 0x1E03 },
+{ 0xa3 , 0x00A3 },
+{ 0xa4 , 0x010A },
+{ 0xa5 , 0x010B },
+{ 0xa6 , 0x1E0A },
+{ 0xa7 , 0x00A7 },
+{ 0xa8 , 0x1E80 },
+{ 0xa9 , 0x00A9 },
+{ 0xaa , 0x1E82 },
+{ 0xab , 0x1E0B },
+{ 0xac , 0x1EF2 },
+{ 0xad , 0x00AD },
+{ 0xae , 0x00AE },
+{ 0xaf , 0x0178 },
+{ 0xb0 , 0x1E1E },
+{ 0xb1 , 0x1E1F },
+{ 0xb2 , 0x0120 },
+{ 0xb3 , 0x0121 },
+{ 0xb4 , 0x1E40 },
+{ 0xb5 , 0x1E41 },
+{ 0xb6 , 0x00B6 },
+{ 0xb7 , 0x1E56 },
+{ 0xb8 , 0x1E81 },
+{ 0xb9 , 0x1E57 },
+{ 0xba , 0x1E83 },
+{ 0xbb , 0x1E60 },
+{ 0xbc , 0x1EF3 },
+{ 0xbd , 0x1E84 },
+{ 0xbe , 0x1E85 },
+{ 0xbf , 0x1E61 },
+{ 0xc0 , 0x00C0 },
+{ 0xc1 , 0x00C1 },
+{ 0xc2 , 0x00C2 },
+{ 0xc3 , 0x00C3 },
+{ 0xc4 , 0x00C4 },
+{ 0xc5 , 0x00C5 },
+{ 0xc6 , 0x00C6 },
+{ 0xc7 , 0x00C7 },
+{ 0xc8 , 0x00C8 },
+{ 0xc9 , 0x00C9 },
+{ 0xca , 0x00CA },
+{ 0xcb , 0x00CB },
+{ 0xcc , 0x00CC },
+{ 0xcd , 0x00CD },
+{ 0xce , 0x00CE },
+{ 0xcf , 0x00CF },
+{ 0xd0 , 0x0174 },
+{ 0xd1 , 0x00D1 },
+{ 0xd2 , 0x00D2 },
+{ 0xd3 , 0x00D3 },
+{ 0xd4 , 0x00D4 },
+{ 0xd5 , 0x00D5 },
+{ 0xd6 , 0x00D6 },
+{ 0xd7 , 0x1E6A },
+{ 0xd8 , 0x00D8 },
+{ 0xd9 , 0x00D9 },
+{ 0xda , 0x00DA },
+{ 0xdb , 0x00DB },
+{ 0xdc , 0x00DC },
+{ 0xdd , 0x00DD },
+{ 0xde , 0x0176 },
+{ 0xdf , 0x00DF },
+{ 0xe0 , 0x00E0 },
+{ 0xe1 , 0x00E1 },
+{ 0xe2 , 0x00E2 },
+{ 0xe3 , 0x00E3 },
+{ 0xe4 , 0x00E4 },
+{ 0xe5 , 0x00E5 },
+{ 0xe6 , 0x00E6 },
+{ 0xe7 , 0x00E7 },
+{ 0xe8 , 0x00E8 },
+{ 0xe9 , 0x00E9 },
+{ 0xea , 0x00EA },
+{ 0xeb , 0x00EB },
+{ 0xec , 0x00EC },
+{ 0xed , 0x00ED },
+{ 0xee , 0x00EE },
+{ 0xef , 0x00EF },
+{ 0xf0 , 0x0175 },
+{ 0xf1 , 0x00F1 },
+{ 0xf2 , 0x00F2 },
+{ 0xf3 , 0x00F3 },
+{ 0xf4 , 0x00F4 },
+{ 0xf5 , 0x00F5 },
+{ 0xf6 , 0x00F6 },
+{ 0xf7 , 0x1E6B },
+{ 0xf8 , 0x00F8 },
+{ 0xf9 , 0x00F9 },
+{ 0xfa , 0x00FA },
+{ 0xfb , 0x00FB },
+{ 0xfc , 0x00FC },
+{ 0xfd , 0x00FD },
+{ 0xfe , 0x0177 },
+{ 0xff , 0x00FF },
diff --git a/ap/build/uClibc/extra/locale/charmaps/ISO-8859-15.pairs b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-15.pairs
new file mode 100644
index 0000000..ca50e22
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-15.pairs
@@ -0,0 +1,256 @@
+{ 0x00 , 0x0000 },
+{ 0x01 , 0x0001 },
+{ 0x02 , 0x0002 },
+{ 0x03 , 0x0003 },
+{ 0x04 , 0x0004 },
+{ 0x05 , 0x0005 },
+{ 0x06 , 0x0006 },
+{ 0x07 , 0x0007 },
+{ 0x08 , 0x0008 },
+{ 0x09 , 0x0009 },
+{ 0x0a , 0x000A },
+{ 0x0b , 0x000B },
+{ 0x0c , 0x000C },
+{ 0x0d , 0x000D },
+{ 0x0e , 0x000E },
+{ 0x0f , 0x000F },
+{ 0x10 , 0x0010 },
+{ 0x11 , 0x0011 },
+{ 0x12 , 0x0012 },
+{ 0x13 , 0x0013 },
+{ 0x14 , 0x0014 },
+{ 0x15 , 0x0015 },
+{ 0x16 , 0x0016 },
+{ 0x17 , 0x0017 },
+{ 0x18 , 0x0018 },
+{ 0x19 , 0x0019 },
+{ 0x1a , 0x001A },
+{ 0x1b , 0x001B },
+{ 0x1c , 0x001C },
+{ 0x1d , 0x001D },
+{ 0x1e , 0x001E },
+{ 0x1f , 0x001F },
+{ 0x20 , 0x0020 },
+{ 0x21 , 0x0021 },
+{ 0x22 , 0x0022 },
+{ 0x23 , 0x0023 },
+{ 0x24 , 0x0024 },
+{ 0x25 , 0x0025 },
+{ 0x26 , 0x0026 },
+{ 0x27 , 0x0027 },
+{ 0x28 , 0x0028 },
+{ 0x29 , 0x0029 },
+{ 0x2a , 0x002A },
+{ 0x2b , 0x002B },
+{ 0x2c , 0x002C },
+{ 0x2d , 0x002D },
+{ 0x2e , 0x002E },
+{ 0x2f , 0x002F },
+{ 0x30 , 0x0030 },
+{ 0x31 , 0x0031 },
+{ 0x32 , 0x0032 },
+{ 0x33 , 0x0033 },
+{ 0x34 , 0x0034 },
+{ 0x35 , 0x0035 },
+{ 0x36 , 0x0036 },
+{ 0x37 , 0x0037 },
+{ 0x38 , 0x0038 },
+{ 0x39 , 0x0039 },
+{ 0x3a , 0x003A },
+{ 0x3b , 0x003B },
+{ 0x3c , 0x003C },
+{ 0x3d , 0x003D },
+{ 0x3e , 0x003E },
+{ 0x3f , 0x003F },
+{ 0x40 , 0x0040 },
+{ 0x41 , 0x0041 },
+{ 0x42 , 0x0042 },
+{ 0x43 , 0x0043 },
+{ 0x44 , 0x0044 },
+{ 0x45 , 0x0045 },
+{ 0x46 , 0x0046 },
+{ 0x47 , 0x0047 },
+{ 0x48 , 0x0048 },
+{ 0x49 , 0x0049 },
+{ 0x4a , 0x004A },
+{ 0x4b , 0x004B },
+{ 0x4c , 0x004C },
+{ 0x4d , 0x004D },
+{ 0x4e , 0x004E },
+{ 0x4f , 0x004F },
+{ 0x50 , 0x0050 },
+{ 0x51 , 0x0051 },
+{ 0x52 , 0x0052 },
+{ 0x53 , 0x0053 },
+{ 0x54 , 0x0054 },
+{ 0x55 , 0x0055 },
+{ 0x56 , 0x0056 },
+{ 0x57 , 0x0057 },
+{ 0x58 , 0x0058 },
+{ 0x59 , 0x0059 },
+{ 0x5a , 0x005A },
+{ 0x5b , 0x005B },
+{ 0x5c , 0x005C },
+{ 0x5d , 0x005D },
+{ 0x5e , 0x005E },
+{ 0x5f , 0x005F },
+{ 0x60 , 0x0060 },
+{ 0x61 , 0x0061 },
+{ 0x62 , 0x0062 },
+{ 0x63 , 0x0063 },
+{ 0x64 , 0x0064 },
+{ 0x65 , 0x0065 },
+{ 0x66 , 0x0066 },
+{ 0x67 , 0x0067 },
+{ 0x68 , 0x0068 },
+{ 0x69 , 0x0069 },
+{ 0x6a , 0x006A },
+{ 0x6b , 0x006B },
+{ 0x6c , 0x006C },
+{ 0x6d , 0x006D },
+{ 0x6e , 0x006E },
+{ 0x6f , 0x006F },
+{ 0x70 , 0x0070 },
+{ 0x71 , 0x0071 },
+{ 0x72 , 0x0072 },
+{ 0x73 , 0x0073 },
+{ 0x74 , 0x0074 },
+{ 0x75 , 0x0075 },
+{ 0x76 , 0x0076 },
+{ 0x77 , 0x0077 },
+{ 0x78 , 0x0078 },
+{ 0x79 , 0x0079 },
+{ 0x7a , 0x007A },
+{ 0x7b , 0x007B },
+{ 0x7c , 0x007C },
+{ 0x7d , 0x007D },
+{ 0x7e , 0x007E },
+{ 0x7f , 0x007F },
+{ 0x80 , 0x0080 },
+{ 0x81 , 0x0081 },
+{ 0x82 , 0x0082 },
+{ 0x83 , 0x0083 },
+{ 0x84 , 0x0084 },
+{ 0x85 , 0x0085 },
+{ 0x86 , 0x0086 },
+{ 0x87 , 0x0087 },
+{ 0x88 , 0x0088 },
+{ 0x89 , 0x0089 },
+{ 0x8a , 0x008A },
+{ 0x8b , 0x008B },
+{ 0x8c , 0x008C },
+{ 0x8d , 0x008D },
+{ 0x8e , 0x008E },
+{ 0x8f , 0x008F },
+{ 0x90 , 0x0090 },
+{ 0x91 , 0x0091 },
+{ 0x92 , 0x0092 },
+{ 0x93 , 0x0093 },
+{ 0x94 , 0x0094 },
+{ 0x95 , 0x0095 },
+{ 0x96 , 0x0096 },
+{ 0x97 , 0x0097 },
+{ 0x98 , 0x0098 },
+{ 0x99 , 0x0099 },
+{ 0x9a , 0x009A },
+{ 0x9b , 0x009B },
+{ 0x9c , 0x009C },
+{ 0x9d , 0x009D },
+{ 0x9e , 0x009E },
+{ 0x9f , 0x009F },
+{ 0xa0 , 0x00A0 },
+{ 0xa1 , 0x00A1 },
+{ 0xa2 , 0x00A2 },
+{ 0xa3 , 0x00A3 },
+{ 0xa4 , 0x20AC },
+{ 0xa5 , 0x00A5 },
+{ 0xa6 , 0x0160 },
+{ 0xa7 , 0x00A7 },
+{ 0xa8 , 0x0161 },
+{ 0xa9 , 0x00A9 },
+{ 0xaa , 0x00AA },
+{ 0xab , 0x00AB },
+{ 0xac , 0x00AC },
+{ 0xad , 0x00AD },
+{ 0xae , 0x00AE },
+{ 0xaf , 0x00AF },
+{ 0xb0 , 0x00B0 },
+{ 0xb1 , 0x00B1 },
+{ 0xb2 , 0x00B2 },
+{ 0xb3 , 0x00B3 },
+{ 0xb4 , 0x017D },
+{ 0xb5 , 0x00B5 },
+{ 0xb6 , 0x00B6 },
+{ 0xb7 , 0x00B7 },
+{ 0xb8 , 0x017E },
+{ 0xb9 , 0x00B9 },
+{ 0xba , 0x00BA },
+{ 0xbb , 0x00BB },
+{ 0xbc , 0x0152 },
+{ 0xbd , 0x0153 },
+{ 0xbe , 0x0178 },
+{ 0xbf , 0x00BF },
+{ 0xc0 , 0x00C0 },
+{ 0xc1 , 0x00C1 },
+{ 0xc2 , 0x00C2 },
+{ 0xc3 , 0x00C3 },
+{ 0xc4 , 0x00C4 },
+{ 0xc5 , 0x00C5 },
+{ 0xc6 , 0x00C6 },
+{ 0xc7 , 0x00C7 },
+{ 0xc8 , 0x00C8 },
+{ 0xc9 , 0x00C9 },
+{ 0xca , 0x00CA },
+{ 0xcb , 0x00CB },
+{ 0xcc , 0x00CC },
+{ 0xcd , 0x00CD },
+{ 0xce , 0x00CE },
+{ 0xcf , 0x00CF },
+{ 0xd0 , 0x00D0 },
+{ 0xd1 , 0x00D1 },
+{ 0xd2 , 0x00D2 },
+{ 0xd3 , 0x00D3 },
+{ 0xd4 , 0x00D4 },
+{ 0xd5 , 0x00D5 },
+{ 0xd6 , 0x00D6 },
+{ 0xd7 , 0x00D7 },
+{ 0xd8 , 0x00D8 },
+{ 0xd9 , 0x00D9 },
+{ 0xda , 0x00DA },
+{ 0xdb , 0x00DB },
+{ 0xdc , 0x00DC },
+{ 0xdd , 0x00DD },
+{ 0xde , 0x00DE },
+{ 0xdf , 0x00DF },
+{ 0xe0 , 0x00E0 },
+{ 0xe1 , 0x00E1 },
+{ 0xe2 , 0x00E2 },
+{ 0xe3 , 0x00E3 },
+{ 0xe4 , 0x00E4 },
+{ 0xe5 , 0x00E5 },
+{ 0xe6 , 0x00E6 },
+{ 0xe7 , 0x00E7 },
+{ 0xe8 , 0x00E8 },
+{ 0xe9 , 0x00E9 },
+{ 0xea , 0x00EA },
+{ 0xeb , 0x00EB },
+{ 0xec , 0x00EC },
+{ 0xed , 0x00ED },
+{ 0xee , 0x00EE },
+{ 0xef , 0x00EF },
+{ 0xf0 , 0x00F0 },
+{ 0xf1 , 0x00F1 },
+{ 0xf2 , 0x00F2 },
+{ 0xf3 , 0x00F3 },
+{ 0xf4 , 0x00F4 },
+{ 0xf5 , 0x00F5 },
+{ 0xf6 , 0x00F6 },
+{ 0xf7 , 0x00F7 },
+{ 0xf8 , 0x00F8 },
+{ 0xf9 , 0x00F9 },
+{ 0xfa , 0x00FA },
+{ 0xfb , 0x00FB },
+{ 0xfc , 0x00FC },
+{ 0xfd , 0x00FD },
+{ 0xfe , 0x00FE },
+{ 0xff , 0x00FF },
diff --git a/ap/build/uClibc/extra/locale/charmaps/ISO-8859-16.pairs b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-16.pairs
new file mode 100644
index 0000000..6b74963
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-16.pairs
@@ -0,0 +1,256 @@
+{ 0x00 , 0x0000 },
+{ 0x01 , 0x0001 },
+{ 0x02 , 0x0002 },
+{ 0x03 , 0x0003 },
+{ 0x04 , 0x0004 },
+{ 0x05 , 0x0005 },
+{ 0x06 , 0x0006 },
+{ 0x07 , 0x0007 },
+{ 0x08 , 0x0008 },
+{ 0x09 , 0x0009 },
+{ 0x0a , 0x000A },
+{ 0x0b , 0x000B },
+{ 0x0c , 0x000C },
+{ 0x0d , 0x000D },
+{ 0x0e , 0x000E },
+{ 0x0f , 0x000F },
+{ 0x10 , 0x0010 },
+{ 0x11 , 0x0011 },
+{ 0x12 , 0x0012 },
+{ 0x13 , 0x0013 },
+{ 0x14 , 0x0014 },
+{ 0x15 , 0x0015 },
+{ 0x16 , 0x0016 },
+{ 0x17 , 0x0017 },
+{ 0x18 , 0x0018 },
+{ 0x19 , 0x0019 },
+{ 0x1a , 0x001A },
+{ 0x1b , 0x001B },
+{ 0x1c , 0x001C },
+{ 0x1d , 0x001D },
+{ 0x1e , 0x001E },
+{ 0x1f , 0x001F },
+{ 0x20 , 0x0020 },
+{ 0x21 , 0x0021 },
+{ 0x22 , 0x0022 },
+{ 0x23 , 0x0023 },
+{ 0x24 , 0x0024 },
+{ 0x25 , 0x0025 },
+{ 0x26 , 0x0026 },
+{ 0x27 , 0x0027 },
+{ 0x28 , 0x0028 },
+{ 0x29 , 0x0029 },
+{ 0x2a , 0x002A },
+{ 0x2b , 0x002B },
+{ 0x2c , 0x002C },
+{ 0x2d , 0x002D },
+{ 0x2e , 0x002E },
+{ 0x2f , 0x002F },
+{ 0x30 , 0x0030 },
+{ 0x31 , 0x0031 },
+{ 0x32 , 0x0032 },
+{ 0x33 , 0x0033 },
+{ 0x34 , 0x0034 },
+{ 0x35 , 0x0035 },
+{ 0x36 , 0x0036 },
+{ 0x37 , 0x0037 },
+{ 0x38 , 0x0038 },
+{ 0x39 , 0x0039 },
+{ 0x3a , 0x003A },
+{ 0x3b , 0x003B },
+{ 0x3c , 0x003C },
+{ 0x3d , 0x003D },
+{ 0x3e , 0x003E },
+{ 0x3f , 0x003F },
+{ 0x40 , 0x0040 },
+{ 0x41 , 0x0041 },
+{ 0x42 , 0x0042 },
+{ 0x43 , 0x0043 },
+{ 0x44 , 0x0044 },
+{ 0x45 , 0x0045 },
+{ 0x46 , 0x0046 },
+{ 0x47 , 0x0047 },
+{ 0x48 , 0x0048 },
+{ 0x49 , 0x0049 },
+{ 0x4a , 0x004A },
+{ 0x4b , 0x004B },
+{ 0x4c , 0x004C },
+{ 0x4d , 0x004D },
+{ 0x4e , 0x004E },
+{ 0x4f , 0x004F },
+{ 0x50 , 0x0050 },
+{ 0x51 , 0x0051 },
+{ 0x52 , 0x0052 },
+{ 0x53 , 0x0053 },
+{ 0x54 , 0x0054 },
+{ 0x55 , 0x0055 },
+{ 0x56 , 0x0056 },
+{ 0x57 , 0x0057 },
+{ 0x58 , 0x0058 },
+{ 0x59 , 0x0059 },
+{ 0x5a , 0x005A },
+{ 0x5b , 0x005B },
+{ 0x5c , 0x005C },
+{ 0x5d , 0x005D },
+{ 0x5e , 0x005E },
+{ 0x5f , 0x005F },
+{ 0x60 , 0x0060 },
+{ 0x61 , 0x0061 },
+{ 0x62 , 0x0062 },
+{ 0x63 , 0x0063 },
+{ 0x64 , 0x0064 },
+{ 0x65 , 0x0065 },
+{ 0x66 , 0x0066 },
+{ 0x67 , 0x0067 },
+{ 0x68 , 0x0068 },
+{ 0x69 , 0x0069 },
+{ 0x6a , 0x006A },
+{ 0x6b , 0x006B },
+{ 0x6c , 0x006C },
+{ 0x6d , 0x006D },
+{ 0x6e , 0x006E },
+{ 0x6f , 0x006F },
+{ 0x70 , 0x0070 },
+{ 0x71 , 0x0071 },
+{ 0x72 , 0x0072 },
+{ 0x73 , 0x0073 },
+{ 0x74 , 0x0074 },
+{ 0x75 , 0x0075 },
+{ 0x76 , 0x0076 },
+{ 0x77 , 0x0077 },
+{ 0x78 , 0x0078 },
+{ 0x79 , 0x0079 },
+{ 0x7a , 0x007A },
+{ 0x7b , 0x007B },
+{ 0x7c , 0x007C },
+{ 0x7d , 0x007D },
+{ 0x7e , 0x007E },
+{ 0x7f , 0x007F },
+{ 0x80 , 0x0080 },
+{ 0x81 , 0x0081 },
+{ 0x82 , 0x0082 },
+{ 0x83 , 0x0083 },
+{ 0x84 , 0x0084 },
+{ 0x85 , 0x0085 },
+{ 0x86 , 0x0086 },
+{ 0x87 , 0x0087 },
+{ 0x88 , 0x0088 },
+{ 0x89 , 0x0089 },
+{ 0x8a , 0x008A },
+{ 0x8b , 0x008B },
+{ 0x8c , 0x008C },
+{ 0x8d , 0x008D },
+{ 0x8e , 0x008E },
+{ 0x8f , 0x008F },
+{ 0x90 , 0x0090 },
+{ 0x91 , 0x0091 },
+{ 0x92 , 0x0092 },
+{ 0x93 , 0x0093 },
+{ 0x94 , 0x0094 },
+{ 0x95 , 0x0095 },
+{ 0x96 , 0x0096 },
+{ 0x97 , 0x0097 },
+{ 0x98 , 0x0098 },
+{ 0x99 , 0x0099 },
+{ 0x9a , 0x009A },
+{ 0x9b , 0x009B },
+{ 0x9c , 0x009C },
+{ 0x9d , 0x009D },
+{ 0x9e , 0x009E },
+{ 0x9f , 0x009F },
+{ 0xa0 , 0x00A0 },
+{ 0xa1 , 0x0104 },
+{ 0xa2 , 0x0105 },
+{ 0xa3 , 0x0141 },
+{ 0xa4 , 0x20AC },
+{ 0xa5 , 0x00AB },
+{ 0xa6 , 0x0160 },
+{ 0xa7 , 0x00A7 },
+{ 0xa8 , 0x0161 },
+{ 0xa9 , 0x00A9 },
+{ 0xaa , 0x0218 },
+{ 0xab , 0x201E },
+{ 0xac , 0x0179 },
+{ 0xad , 0x00AD },
+{ 0xae , 0x017A },
+{ 0xaf , 0x017B },
+{ 0xb0 , 0x00B0 },
+{ 0xb1 , 0x00B1 },
+{ 0xb2 , 0x010C },
+{ 0xb3 , 0x0142 },
+{ 0xb4 , 0x017D },
+{ 0xb5 , 0x201D },
+{ 0xb6 , 0x00B6 },
+{ 0xb7 , 0x00B7 },
+{ 0xb8 , 0x017E },
+{ 0xb9 , 0x010D },
+{ 0xba , 0x0219 },
+{ 0xbb , 0x00BB },
+{ 0xbc , 0x0152 },
+{ 0xbd , 0x0153 },
+{ 0xbe , 0x0178 },
+{ 0xbf , 0x017C },
+{ 0xc0 , 0x00C0 },
+{ 0xc1 , 0x00C1 },
+{ 0xc2 , 0x00C2 },
+{ 0xc3 , 0x0102 },
+{ 0xc4 , 0x00C4 },
+{ 0xc5 , 0x0106 },
+{ 0xc6 , 0x00C6 },
+{ 0xc7 , 0x00C7 },
+{ 0xc8 , 0x00C8 },
+{ 0xc9 , 0x00C9 },
+{ 0xca , 0x00CA },
+{ 0xcb , 0x00CB },
+{ 0xcc , 0x00CC },
+{ 0xcd , 0x00CD },
+{ 0xce , 0x00CE },
+{ 0xcf , 0x00CF },
+{ 0xd0 , 0x0110 },
+{ 0xd1 , 0x0143 },
+{ 0xd2 , 0x00D2 },
+{ 0xd3 , 0x00D3 },
+{ 0xd4 , 0x00D4 },
+{ 0xd5 , 0x0150 },
+{ 0xd6 , 0x00D6 },
+{ 0xd7 , 0x015A },
+{ 0xd8 , 0x0170 },
+{ 0xd9 , 0x00D9 },
+{ 0xda , 0x00DA },
+{ 0xdb , 0x00DB },
+{ 0xdc , 0x00DC },
+{ 0xdd , 0x0118 },
+{ 0xde , 0x021A },
+{ 0xdf , 0x00DF },
+{ 0xe0 , 0x00E0 },
+{ 0xe1 , 0x00E1 },
+{ 0xe2 , 0x00E2 },
+{ 0xe3 , 0x0103 },
+{ 0xe4 , 0x00E4 },
+{ 0xe5 , 0x0107 },
+{ 0xe6 , 0x00E6 },
+{ 0xe7 , 0x00E7 },
+{ 0xe8 , 0x00E8 },
+{ 0xe9 , 0x00E9 },
+{ 0xea , 0x00EA },
+{ 0xeb , 0x00EB },
+{ 0xec , 0x00EC },
+{ 0xed , 0x00ED },
+{ 0xee , 0x00EE },
+{ 0xef , 0x00EF },
+{ 0xf0 , 0x0111 },
+{ 0xf1 , 0x0144 },
+{ 0xf2 , 0x00F2 },
+{ 0xf3 , 0x00F3 },
+{ 0xf4 , 0x00F4 },
+{ 0xf5 , 0x0151 },
+{ 0xf6 , 0x00F6 },
+{ 0xf7 , 0x015B },
+{ 0xf8 , 0x0171 },
+{ 0xf9 , 0x00F9 },
+{ 0xfa , 0x00FA },
+{ 0xfb , 0x00FB },
+{ 0xfc , 0x00FC },
+{ 0xfd , 0x0119 },
+{ 0xfe , 0x021B },
+{ 0xff , 0x00FF },
diff --git a/ap/build/uClibc/extra/locale/charmaps/ISO-8859-2.pairs b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-2.pairs
new file mode 100644
index 0000000..4e92f94
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-2.pairs
@@ -0,0 +1,256 @@
+{ 0x00 , 0x0000 },
+{ 0x01 , 0x0001 },
+{ 0x02 , 0x0002 },
+{ 0x03 , 0x0003 },
+{ 0x04 , 0x0004 },
+{ 0x05 , 0x0005 },
+{ 0x06 , 0x0006 },
+{ 0x07 , 0x0007 },
+{ 0x08 , 0x0008 },
+{ 0x09 , 0x0009 },
+{ 0x0a , 0x000A },
+{ 0x0b , 0x000B },
+{ 0x0c , 0x000C },
+{ 0x0d , 0x000D },
+{ 0x0e , 0x000E },
+{ 0x0f , 0x000F },
+{ 0x10 , 0x0010 },
+{ 0x11 , 0x0011 },
+{ 0x12 , 0x0012 },
+{ 0x13 , 0x0013 },
+{ 0x14 , 0x0014 },
+{ 0x15 , 0x0015 },
+{ 0x16 , 0x0016 },
+{ 0x17 , 0x0017 },
+{ 0x18 , 0x0018 },
+{ 0x19 , 0x0019 },
+{ 0x1a , 0x001A },
+{ 0x1b , 0x001B },
+{ 0x1c , 0x001C },
+{ 0x1d , 0x001D },
+{ 0x1e , 0x001E },
+{ 0x1f , 0x001F },
+{ 0x20 , 0x0020 },
+{ 0x21 , 0x0021 },
+{ 0x22 , 0x0022 },
+{ 0x23 , 0x0023 },
+{ 0x24 , 0x0024 },
+{ 0x25 , 0x0025 },
+{ 0x26 , 0x0026 },
+{ 0x27 , 0x0027 },
+{ 0x28 , 0x0028 },
+{ 0x29 , 0x0029 },
+{ 0x2a , 0x002A },
+{ 0x2b , 0x002B },
+{ 0x2c , 0x002C },
+{ 0x2d , 0x002D },
+{ 0x2e , 0x002E },
+{ 0x2f , 0x002F },
+{ 0x30 , 0x0030 },
+{ 0x31 , 0x0031 },
+{ 0x32 , 0x0032 },
+{ 0x33 , 0x0033 },
+{ 0x34 , 0x0034 },
+{ 0x35 , 0x0035 },
+{ 0x36 , 0x0036 },
+{ 0x37 , 0x0037 },
+{ 0x38 , 0x0038 },
+{ 0x39 , 0x0039 },
+{ 0x3a , 0x003A },
+{ 0x3b , 0x003B },
+{ 0x3c , 0x003C },
+{ 0x3d , 0x003D },
+{ 0x3e , 0x003E },
+{ 0x3f , 0x003F },
+{ 0x40 , 0x0040 },
+{ 0x41 , 0x0041 },
+{ 0x42 , 0x0042 },
+{ 0x43 , 0x0043 },
+{ 0x44 , 0x0044 },
+{ 0x45 , 0x0045 },
+{ 0x46 , 0x0046 },
+{ 0x47 , 0x0047 },
+{ 0x48 , 0x0048 },
+{ 0x49 , 0x0049 },
+{ 0x4a , 0x004A },
+{ 0x4b , 0x004B },
+{ 0x4c , 0x004C },
+{ 0x4d , 0x004D },
+{ 0x4e , 0x004E },
+{ 0x4f , 0x004F },
+{ 0x50 , 0x0050 },
+{ 0x51 , 0x0051 },
+{ 0x52 , 0x0052 },
+{ 0x53 , 0x0053 },
+{ 0x54 , 0x0054 },
+{ 0x55 , 0x0055 },
+{ 0x56 , 0x0056 },
+{ 0x57 , 0x0057 },
+{ 0x58 , 0x0058 },
+{ 0x59 , 0x0059 },
+{ 0x5a , 0x005A },
+{ 0x5b , 0x005B },
+{ 0x5c , 0x005C },
+{ 0x5d , 0x005D },
+{ 0x5e , 0x005E },
+{ 0x5f , 0x005F },
+{ 0x60 , 0x0060 },
+{ 0x61 , 0x0061 },
+{ 0x62 , 0x0062 },
+{ 0x63 , 0x0063 },
+{ 0x64 , 0x0064 },
+{ 0x65 , 0x0065 },
+{ 0x66 , 0x0066 },
+{ 0x67 , 0x0067 },
+{ 0x68 , 0x0068 },
+{ 0x69 , 0x0069 },
+{ 0x6a , 0x006A },
+{ 0x6b , 0x006B },
+{ 0x6c , 0x006C },
+{ 0x6d , 0x006D },
+{ 0x6e , 0x006E },
+{ 0x6f , 0x006F },
+{ 0x70 , 0x0070 },
+{ 0x71 , 0x0071 },
+{ 0x72 , 0x0072 },
+{ 0x73 , 0x0073 },
+{ 0x74 , 0x0074 },
+{ 0x75 , 0x0075 },
+{ 0x76 , 0x0076 },
+{ 0x77 , 0x0077 },
+{ 0x78 , 0x0078 },
+{ 0x79 , 0x0079 },
+{ 0x7a , 0x007A },
+{ 0x7b , 0x007B },
+{ 0x7c , 0x007C },
+{ 0x7d , 0x007D },
+{ 0x7e , 0x007E },
+{ 0x7f , 0x007F },
+{ 0x80 , 0x0080 },
+{ 0x81 , 0x0081 },
+{ 0x82 , 0x0082 },
+{ 0x83 , 0x0083 },
+{ 0x84 , 0x0084 },
+{ 0x85 , 0x0085 },
+{ 0x86 , 0x0086 },
+{ 0x87 , 0x0087 },
+{ 0x88 , 0x0088 },
+{ 0x89 , 0x0089 },
+{ 0x8a , 0x008A },
+{ 0x8b , 0x008B },
+{ 0x8c , 0x008C },
+{ 0x8d , 0x008D },
+{ 0x8e , 0x008E },
+{ 0x8f , 0x008F },
+{ 0x90 , 0x0090 },
+{ 0x91 , 0x0091 },
+{ 0x92 , 0x0092 },
+{ 0x93 , 0x0093 },
+{ 0x94 , 0x0094 },
+{ 0x95 , 0x0095 },
+{ 0x96 , 0x0096 },
+{ 0x97 , 0x0097 },
+{ 0x98 , 0x0098 },
+{ 0x99 , 0x0099 },
+{ 0x9a , 0x009A },
+{ 0x9b , 0x009B },
+{ 0x9c , 0x009C },
+{ 0x9d , 0x009D },
+{ 0x9e , 0x009E },
+{ 0x9f , 0x009F },
+{ 0xa0 , 0x00A0 },
+{ 0xa1 , 0x0104 },
+{ 0xa2 , 0x02D8 },
+{ 0xa3 , 0x0141 },
+{ 0xa4 , 0x00A4 },
+{ 0xa5 , 0x013D },
+{ 0xa6 , 0x015A },
+{ 0xa7 , 0x00A7 },
+{ 0xa8 , 0x00A8 },
+{ 0xa9 , 0x0160 },
+{ 0xaa , 0x015E },
+{ 0xab , 0x0164 },
+{ 0xac , 0x0179 },
+{ 0xad , 0x00AD },
+{ 0xae , 0x017D },
+{ 0xaf , 0x017B },
+{ 0xb0 , 0x00B0 },
+{ 0xb1 , 0x0105 },
+{ 0xb2 , 0x02DB },
+{ 0xb3 , 0x0142 },
+{ 0xb4 , 0x00B4 },
+{ 0xb5 , 0x013E },
+{ 0xb6 , 0x015B },
+{ 0xb7 , 0x02C7 },
+{ 0xb8 , 0x00B8 },
+{ 0xb9 , 0x0161 },
+{ 0xba , 0x015F },
+{ 0xbb , 0x0165 },
+{ 0xbc , 0x017A },
+{ 0xbd , 0x02DD },
+{ 0xbe , 0x017E },
+{ 0xbf , 0x017C },
+{ 0xc0 , 0x0154 },
+{ 0xc1 , 0x00C1 },
+{ 0xc2 , 0x00C2 },
+{ 0xc3 , 0x0102 },
+{ 0xc4 , 0x00C4 },
+{ 0xc5 , 0x0139 },
+{ 0xc6 , 0x0106 },
+{ 0xc7 , 0x00C7 },
+{ 0xc8 , 0x010C },
+{ 0xc9 , 0x00C9 },
+{ 0xca , 0x0118 },
+{ 0xcb , 0x00CB },
+{ 0xcc , 0x011A },
+{ 0xcd , 0x00CD },
+{ 0xce , 0x00CE },
+{ 0xcf , 0x010E },
+{ 0xd0 , 0x0110 },
+{ 0xd1 , 0x0143 },
+{ 0xd2 , 0x0147 },
+{ 0xd3 , 0x00D3 },
+{ 0xd4 , 0x00D4 },
+{ 0xd5 , 0x0150 },
+{ 0xd6 , 0x00D6 },
+{ 0xd7 , 0x00D7 },
+{ 0xd8 , 0x0158 },
+{ 0xd9 , 0x016E },
+{ 0xda , 0x00DA },
+{ 0xdb , 0x0170 },
+{ 0xdc , 0x00DC },
+{ 0xdd , 0x00DD },
+{ 0xde , 0x0162 },
+{ 0xdf , 0x00DF },
+{ 0xe0 , 0x0155 },
+{ 0xe1 , 0x00E1 },
+{ 0xe2 , 0x00E2 },
+{ 0xe3 , 0x0103 },
+{ 0xe4 , 0x00E4 },
+{ 0xe5 , 0x013A },
+{ 0xe6 , 0x0107 },
+{ 0xe7 , 0x00E7 },
+{ 0xe8 , 0x010D },
+{ 0xe9 , 0x00E9 },
+{ 0xea , 0x0119 },
+{ 0xeb , 0x00EB },
+{ 0xec , 0x011B },
+{ 0xed , 0x00ED },
+{ 0xee , 0x00EE },
+{ 0xef , 0x010F },
+{ 0xf0 , 0x0111 },
+{ 0xf1 , 0x0144 },
+{ 0xf2 , 0x0148 },
+{ 0xf3 , 0x00F3 },
+{ 0xf4 , 0x00F4 },
+{ 0xf5 , 0x0151 },
+{ 0xf6 , 0x00F6 },
+{ 0xf7 , 0x00F7 },
+{ 0xf8 , 0x0159 },
+{ 0xf9 , 0x016F },
+{ 0xfa , 0x00FA },
+{ 0xfb , 0x0171 },
+{ 0xfc , 0x00FC },
+{ 0xfd , 0x00FD },
+{ 0xfe , 0x0163 },
+{ 0xff , 0x02D9 },
diff --git a/ap/build/uClibc/extra/locale/charmaps/ISO-8859-3.pairs b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-3.pairs
new file mode 100644
index 0000000..3a8814c
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-3.pairs
@@ -0,0 +1,249 @@
+{ 0x00 , 0x0000 },
+{ 0x01 , 0x0001 },
+{ 0x02 , 0x0002 },
+{ 0x03 , 0x0003 },
+{ 0x04 , 0x0004 },
+{ 0x05 , 0x0005 },
+{ 0x06 , 0x0006 },
+{ 0x07 , 0x0007 },
+{ 0x08 , 0x0008 },
+{ 0x09 , 0x0009 },
+{ 0x0a , 0x000A },
+{ 0x0b , 0x000B },
+{ 0x0c , 0x000C },
+{ 0x0d , 0x000D },
+{ 0x0e , 0x000E },
+{ 0x0f , 0x000F },
+{ 0x10 , 0x0010 },
+{ 0x11 , 0x0011 },
+{ 0x12 , 0x0012 },
+{ 0x13 , 0x0013 },
+{ 0x14 , 0x0014 },
+{ 0x15 , 0x0015 },
+{ 0x16 , 0x0016 },
+{ 0x17 , 0x0017 },
+{ 0x18 , 0x0018 },
+{ 0x19 , 0x0019 },
+{ 0x1a , 0x001A },
+{ 0x1b , 0x001B },
+{ 0x1c , 0x001C },
+{ 0x1d , 0x001D },
+{ 0x1e , 0x001E },
+{ 0x1f , 0x001F },
+{ 0x20 , 0x0020 },
+{ 0x21 , 0x0021 },
+{ 0x22 , 0x0022 },
+{ 0x23 , 0x0023 },
+{ 0x24 , 0x0024 },
+{ 0x25 , 0x0025 },
+{ 0x26 , 0x0026 },
+{ 0x27 , 0x0027 },
+{ 0x28 , 0x0028 },
+{ 0x29 , 0x0029 },
+{ 0x2a , 0x002A },
+{ 0x2b , 0x002B },
+{ 0x2c , 0x002C },
+{ 0x2d , 0x002D },
+{ 0x2e , 0x002E },
+{ 0x2f , 0x002F },
+{ 0x30 , 0x0030 },
+{ 0x31 , 0x0031 },
+{ 0x32 , 0x0032 },
+{ 0x33 , 0x0033 },
+{ 0x34 , 0x0034 },
+{ 0x35 , 0x0035 },
+{ 0x36 , 0x0036 },
+{ 0x37 , 0x0037 },
+{ 0x38 , 0x0038 },
+{ 0x39 , 0x0039 },
+{ 0x3a , 0x003A },
+{ 0x3b , 0x003B },
+{ 0x3c , 0x003C },
+{ 0x3d , 0x003D },
+{ 0x3e , 0x003E },
+{ 0x3f , 0x003F },
+{ 0x40 , 0x0040 },
+{ 0x41 , 0x0041 },
+{ 0x42 , 0x0042 },
+{ 0x43 , 0x0043 },
+{ 0x44 , 0x0044 },
+{ 0x45 , 0x0045 },
+{ 0x46 , 0x0046 },
+{ 0x47 , 0x0047 },
+{ 0x48 , 0x0048 },
+{ 0x49 , 0x0049 },
+{ 0x4a , 0x004A },
+{ 0x4b , 0x004B },
+{ 0x4c , 0x004C },
+{ 0x4d , 0x004D },
+{ 0x4e , 0x004E },
+{ 0x4f , 0x004F },
+{ 0x50 , 0x0050 },
+{ 0x51 , 0x0051 },
+{ 0x52 , 0x0052 },
+{ 0x53 , 0x0053 },
+{ 0x54 , 0x0054 },
+{ 0x55 , 0x0055 },
+{ 0x56 , 0x0056 },
+{ 0x57 , 0x0057 },
+{ 0x58 , 0x0058 },
+{ 0x59 , 0x0059 },
+{ 0x5a , 0x005A },
+{ 0x5b , 0x005B },
+{ 0x5c , 0x005C },
+{ 0x5d , 0x005D },
+{ 0x5e , 0x005E },
+{ 0x5f , 0x005F },
+{ 0x60 , 0x0060 },
+{ 0x61 , 0x0061 },
+{ 0x62 , 0x0062 },
+{ 0x63 , 0x0063 },
+{ 0x64 , 0x0064 },
+{ 0x65 , 0x0065 },
+{ 0x66 , 0x0066 },
+{ 0x67 , 0x0067 },
+{ 0x68 , 0x0068 },
+{ 0x69 , 0x0069 },
+{ 0x6a , 0x006A },
+{ 0x6b , 0x006B },
+{ 0x6c , 0x006C },
+{ 0x6d , 0x006D },
+{ 0x6e , 0x006E },
+{ 0x6f , 0x006F },
+{ 0x70 , 0x0070 },
+{ 0x71 , 0x0071 },
+{ 0x72 , 0x0072 },
+{ 0x73 , 0x0073 },
+{ 0x74 , 0x0074 },
+{ 0x75 , 0x0075 },
+{ 0x76 , 0x0076 },
+{ 0x77 , 0x0077 },
+{ 0x78 , 0x0078 },
+{ 0x79 , 0x0079 },
+{ 0x7a , 0x007A },
+{ 0x7b , 0x007B },
+{ 0x7c , 0x007C },
+{ 0x7d , 0x007D },
+{ 0x7e , 0x007E },
+{ 0x7f , 0x007F },
+{ 0x80 , 0x0080 },
+{ 0x81 , 0x0081 },
+{ 0x82 , 0x0082 },
+{ 0x83 , 0x0083 },
+{ 0x84 , 0x0084 },
+{ 0x85 , 0x0085 },
+{ 0x86 , 0x0086 },
+{ 0x87 , 0x0087 },
+{ 0x88 , 0x0088 },
+{ 0x89 , 0x0089 },
+{ 0x8a , 0x008A },
+{ 0x8b , 0x008B },
+{ 0x8c , 0x008C },
+{ 0x8d , 0x008D },
+{ 0x8e , 0x008E },
+{ 0x8f , 0x008F },
+{ 0x90 , 0x0090 },
+{ 0x91 , 0x0091 },
+{ 0x92 , 0x0092 },
+{ 0x93 , 0x0093 },
+{ 0x94 , 0x0094 },
+{ 0x95 , 0x0095 },
+{ 0x96 , 0x0096 },
+{ 0x97 , 0x0097 },
+{ 0x98 , 0x0098 },
+{ 0x99 , 0x0099 },
+{ 0x9a , 0x009A },
+{ 0x9b , 0x009B },
+{ 0x9c , 0x009C },
+{ 0x9d , 0x009D },
+{ 0x9e , 0x009E },
+{ 0x9f , 0x009F },
+{ 0xa0 , 0x00A0 },
+{ 0xa1 , 0x0126 },
+{ 0xa2 , 0x02D8 },
+{ 0xa3 , 0x00A3 },
+{ 0xa4 , 0x00A4 },
+{ 0xa6 , 0x0124 },
+{ 0xa7 , 0x00A7 },
+{ 0xa8 , 0x00A8 },
+{ 0xa9 , 0x0130 },
+{ 0xaa , 0x015E },
+{ 0xab , 0x011E },
+{ 0xac , 0x0134 },
+{ 0xad , 0x00AD },
+{ 0xaf , 0x017B },
+{ 0xb0 , 0x00B0 },
+{ 0xb1 , 0x0127 },
+{ 0xb2 , 0x00B2 },
+{ 0xb3 , 0x00B3 },
+{ 0xb4 , 0x00B4 },
+{ 0xb5 , 0x00B5 },
+{ 0xb6 , 0x0125 },
+{ 0xb7 , 0x00B7 },
+{ 0xb8 , 0x00B8 },
+{ 0xb9 , 0x0131 },
+{ 0xba , 0x015F },
+{ 0xbb , 0x011F },
+{ 0xbc , 0x0135 },
+{ 0xbd , 0x00BD },
+{ 0xbf , 0x017C },
+{ 0xc0 , 0x00C0 },
+{ 0xc1 , 0x00C1 },
+{ 0xc2 , 0x00C2 },
+{ 0xc4 , 0x00C4 },
+{ 0xc5 , 0x010A },
+{ 0xc6 , 0x0108 },
+{ 0xc7 , 0x00C7 },
+{ 0xc8 , 0x00C8 },
+{ 0xc9 , 0x00C9 },
+{ 0xca , 0x00CA },
+{ 0xcb , 0x00CB },
+{ 0xcc , 0x00CC },
+{ 0xcd , 0x00CD },
+{ 0xce , 0x00CE },
+{ 0xcf , 0x00CF },
+{ 0xd1 , 0x00D1 },
+{ 0xd2 , 0x00D2 },
+{ 0xd3 , 0x00D3 },
+{ 0xd4 , 0x00D4 },
+{ 0xd5 , 0x0120 },
+{ 0xd6 , 0x00D6 },
+{ 0xd7 , 0x00D7 },
+{ 0xd8 , 0x011C },
+{ 0xd9 , 0x00D9 },
+{ 0xda , 0x00DA },
+{ 0xdb , 0x00DB },
+{ 0xdc , 0x00DC },
+{ 0xdd , 0x016C },
+{ 0xde , 0x015C },
+{ 0xdf , 0x00DF },
+{ 0xe0 , 0x00E0 },
+{ 0xe1 , 0x00E1 },
+{ 0xe2 , 0x00E2 },
+{ 0xe4 , 0x00E4 },
+{ 0xe5 , 0x010B },
+{ 0xe6 , 0x0109 },
+{ 0xe7 , 0x00E7 },
+{ 0xe8 , 0x00E8 },
+{ 0xe9 , 0x00E9 },
+{ 0xea , 0x00EA },
+{ 0xeb , 0x00EB },
+{ 0xec , 0x00EC },
+{ 0xed , 0x00ED },
+{ 0xee , 0x00EE },
+{ 0xef , 0x00EF },
+{ 0xf1 , 0x00F1 },
+{ 0xf2 , 0x00F2 },
+{ 0xf3 , 0x00F3 },
+{ 0xf4 , 0x00F4 },
+{ 0xf5 , 0x0121 },
+{ 0xf6 , 0x00F6 },
+{ 0xf7 , 0x00F7 },
+{ 0xf8 , 0x011D },
+{ 0xf9 , 0x00F9 },
+{ 0xfa , 0x00FA },
+{ 0xfb , 0x00FB },
+{ 0xfc , 0x00FC },
+{ 0xfd , 0x016D },
+{ 0xfe , 0x015D },
+{ 0xff , 0x02D9 },
diff --git a/ap/build/uClibc/extra/locale/charmaps/ISO-8859-4.pairs b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-4.pairs
new file mode 100644
index 0000000..dda865c
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-4.pairs
@@ -0,0 +1,256 @@
+{ 0x00 , 0x0000 },
+{ 0x01 , 0x0001 },
+{ 0x02 , 0x0002 },
+{ 0x03 , 0x0003 },
+{ 0x04 , 0x0004 },
+{ 0x05 , 0x0005 },
+{ 0x06 , 0x0006 },
+{ 0x07 , 0x0007 },
+{ 0x08 , 0x0008 },
+{ 0x09 , 0x0009 },
+{ 0x0a , 0x000A },
+{ 0x0b , 0x000B },
+{ 0x0c , 0x000C },
+{ 0x0d , 0x000D },
+{ 0x0e , 0x000E },
+{ 0x0f , 0x000F },
+{ 0x10 , 0x0010 },
+{ 0x11 , 0x0011 },
+{ 0x12 , 0x0012 },
+{ 0x13 , 0x0013 },
+{ 0x14 , 0x0014 },
+{ 0x15 , 0x0015 },
+{ 0x16 , 0x0016 },
+{ 0x17 , 0x0017 },
+{ 0x18 , 0x0018 },
+{ 0x19 , 0x0019 },
+{ 0x1a , 0x001A },
+{ 0x1b , 0x001B },
+{ 0x1c , 0x001C },
+{ 0x1d , 0x001D },
+{ 0x1e , 0x001E },
+{ 0x1f , 0x001F },
+{ 0x20 , 0x0020 },
+{ 0x21 , 0x0021 },
+{ 0x22 , 0x0022 },
+{ 0x23 , 0x0023 },
+{ 0x24 , 0x0024 },
+{ 0x25 , 0x0025 },
+{ 0x26 , 0x0026 },
+{ 0x27 , 0x0027 },
+{ 0x28 , 0x0028 },
+{ 0x29 , 0x0029 },
+{ 0x2a , 0x002A },
+{ 0x2b , 0x002B },
+{ 0x2c , 0x002C },
+{ 0x2d , 0x002D },
+{ 0x2e , 0x002E },
+{ 0x2f , 0x002F },
+{ 0x30 , 0x0030 },
+{ 0x31 , 0x0031 },
+{ 0x32 , 0x0032 },
+{ 0x33 , 0x0033 },
+{ 0x34 , 0x0034 },
+{ 0x35 , 0x0035 },
+{ 0x36 , 0x0036 },
+{ 0x37 , 0x0037 },
+{ 0x38 , 0x0038 },
+{ 0x39 , 0x0039 },
+{ 0x3a , 0x003A },
+{ 0x3b , 0x003B },
+{ 0x3c , 0x003C },
+{ 0x3d , 0x003D },
+{ 0x3e , 0x003E },
+{ 0x3f , 0x003F },
+{ 0x40 , 0x0040 },
+{ 0x41 , 0x0041 },
+{ 0x42 , 0x0042 },
+{ 0x43 , 0x0043 },
+{ 0x44 , 0x0044 },
+{ 0x45 , 0x0045 },
+{ 0x46 , 0x0046 },
+{ 0x47 , 0x0047 },
+{ 0x48 , 0x0048 },
+{ 0x49 , 0x0049 },
+{ 0x4a , 0x004A },
+{ 0x4b , 0x004B },
+{ 0x4c , 0x004C },
+{ 0x4d , 0x004D },
+{ 0x4e , 0x004E },
+{ 0x4f , 0x004F },
+{ 0x50 , 0x0050 },
+{ 0x51 , 0x0051 },
+{ 0x52 , 0x0052 },
+{ 0x53 , 0x0053 },
+{ 0x54 , 0x0054 },
+{ 0x55 , 0x0055 },
+{ 0x56 , 0x0056 },
+{ 0x57 , 0x0057 },
+{ 0x58 , 0x0058 },
+{ 0x59 , 0x0059 },
+{ 0x5a , 0x005A },
+{ 0x5b , 0x005B },
+{ 0x5c , 0x005C },
+{ 0x5d , 0x005D },
+{ 0x5e , 0x005E },
+{ 0x5f , 0x005F },
+{ 0x60 , 0x0060 },
+{ 0x61 , 0x0061 },
+{ 0x62 , 0x0062 },
+{ 0x63 , 0x0063 },
+{ 0x64 , 0x0064 },
+{ 0x65 , 0x0065 },
+{ 0x66 , 0x0066 },
+{ 0x67 , 0x0067 },
+{ 0x68 , 0x0068 },
+{ 0x69 , 0x0069 },
+{ 0x6a , 0x006A },
+{ 0x6b , 0x006B },
+{ 0x6c , 0x006C },
+{ 0x6d , 0x006D },
+{ 0x6e , 0x006E },
+{ 0x6f , 0x006F },
+{ 0x70 , 0x0070 },
+{ 0x71 , 0x0071 },
+{ 0x72 , 0x0072 },
+{ 0x73 , 0x0073 },
+{ 0x74 , 0x0074 },
+{ 0x75 , 0x0075 },
+{ 0x76 , 0x0076 },
+{ 0x77 , 0x0077 },
+{ 0x78 , 0x0078 },
+{ 0x79 , 0x0079 },
+{ 0x7a , 0x007A },
+{ 0x7b , 0x007B },
+{ 0x7c , 0x007C },
+{ 0x7d , 0x007D },
+{ 0x7e , 0x007E },
+{ 0x7f , 0x007F },
+{ 0x80 , 0x0080 },
+{ 0x81 , 0x0081 },
+{ 0x82 , 0x0082 },
+{ 0x83 , 0x0083 },
+{ 0x84 , 0x0084 },
+{ 0x85 , 0x0085 },
+{ 0x86 , 0x0086 },
+{ 0x87 , 0x0087 },
+{ 0x88 , 0x0088 },
+{ 0x89 , 0x0089 },
+{ 0x8a , 0x008A },
+{ 0x8b , 0x008B },
+{ 0x8c , 0x008C },
+{ 0x8d , 0x008D },
+{ 0x8e , 0x008E },
+{ 0x8f , 0x008F },
+{ 0x90 , 0x0090 },
+{ 0x91 , 0x0091 },
+{ 0x92 , 0x0092 },
+{ 0x93 , 0x0093 },
+{ 0x94 , 0x0094 },
+{ 0x95 , 0x0095 },
+{ 0x96 , 0x0096 },
+{ 0x97 , 0x0097 },
+{ 0x98 , 0x0098 },
+{ 0x99 , 0x0099 },
+{ 0x9a , 0x009A },
+{ 0x9b , 0x009B },
+{ 0x9c , 0x009C },
+{ 0x9d , 0x009D },
+{ 0x9e , 0x009E },
+{ 0x9f , 0x009F },
+{ 0xa0 , 0x00A0 },
+{ 0xa1 , 0x0104 },
+{ 0xa2 , 0x0138 },
+{ 0xa3 , 0x0156 },
+{ 0xa4 , 0x00A4 },
+{ 0xa5 , 0x0128 },
+{ 0xa6 , 0x013B },
+{ 0xa7 , 0x00A7 },
+{ 0xa8 , 0x00A8 },
+{ 0xa9 , 0x0160 },
+{ 0xaa , 0x0112 },
+{ 0xab , 0x0122 },
+{ 0xac , 0x0166 },
+{ 0xad , 0x00AD },
+{ 0xae , 0x017D },
+{ 0xaf , 0x00AF },
+{ 0xb0 , 0x00B0 },
+{ 0xb1 , 0x0105 },
+{ 0xb2 , 0x02DB },
+{ 0xb3 , 0x0157 },
+{ 0xb4 , 0x00B4 },
+{ 0xb5 , 0x0129 },
+{ 0xb6 , 0x013C },
+{ 0xb7 , 0x02C7 },
+{ 0xb8 , 0x00B8 },
+{ 0xb9 , 0x0161 },
+{ 0xba , 0x0113 },
+{ 0xbb , 0x0123 },
+{ 0xbc , 0x0167 },
+{ 0xbd , 0x014A },
+{ 0xbe , 0x017E },
+{ 0xbf , 0x014B },
+{ 0xc0 , 0x0100 },
+{ 0xc1 , 0x00C1 },
+{ 0xc2 , 0x00C2 },
+{ 0xc3 , 0x00C3 },
+{ 0xc4 , 0x00C4 },
+{ 0xc5 , 0x00C5 },
+{ 0xc6 , 0x00C6 },
+{ 0xc7 , 0x012E },
+{ 0xc8 , 0x010C },
+{ 0xc9 , 0x00C9 },
+{ 0xca , 0x0118 },
+{ 0xcb , 0x00CB },
+{ 0xcc , 0x0116 },
+{ 0xcd , 0x00CD },
+{ 0xce , 0x00CE },
+{ 0xcf , 0x012A },
+{ 0xd0 , 0x0110 },
+{ 0xd1 , 0x0145 },
+{ 0xd2 , 0x014C },
+{ 0xd3 , 0x0136 },
+{ 0xd4 , 0x00D4 },
+{ 0xd5 , 0x00D5 },
+{ 0xd6 , 0x00D6 },
+{ 0xd7 , 0x00D7 },
+{ 0xd8 , 0x00D8 },
+{ 0xd9 , 0x0172 },
+{ 0xda , 0x00DA },
+{ 0xdb , 0x00DB },
+{ 0xdc , 0x00DC },
+{ 0xdd , 0x0168 },
+{ 0xde , 0x016A },
+{ 0xdf , 0x00DF },
+{ 0xe0 , 0x0101 },
+{ 0xe1 , 0x00E1 },
+{ 0xe2 , 0x00E2 },
+{ 0xe3 , 0x00E3 },
+{ 0xe4 , 0x00E4 },
+{ 0xe5 , 0x00E5 },
+{ 0xe6 , 0x00E6 },
+{ 0xe7 , 0x012F },
+{ 0xe8 , 0x010D },
+{ 0xe9 , 0x00E9 },
+{ 0xea , 0x0119 },
+{ 0xeb , 0x00EB },
+{ 0xec , 0x0117 },
+{ 0xed , 0x00ED },
+{ 0xee , 0x00EE },
+{ 0xef , 0x012B },
+{ 0xf0 , 0x0111 },
+{ 0xf1 , 0x0146 },
+{ 0xf2 , 0x014D },
+{ 0xf3 , 0x0137 },
+{ 0xf4 , 0x00F4 },
+{ 0xf5 , 0x00F5 },
+{ 0xf6 , 0x00F6 },
+{ 0xf7 , 0x00F7 },
+{ 0xf8 , 0x00F8 },
+{ 0xf9 , 0x0173 },
+{ 0xfa , 0x00FA },
+{ 0xfb , 0x00FB },
+{ 0xfc , 0x00FC },
+{ 0xfd , 0x0169 },
+{ 0xfe , 0x016B },
+{ 0xff , 0x02D9 },
diff --git a/ap/build/uClibc/extra/locale/charmaps/ISO-8859-5.pairs b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-5.pairs
new file mode 100644
index 0000000..08ebcae
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-5.pairs
@@ -0,0 +1,256 @@
+{ 0x00 , 0x0000 },
+{ 0x01 , 0x0001 },
+{ 0x02 , 0x0002 },
+{ 0x03 , 0x0003 },
+{ 0x04 , 0x0004 },
+{ 0x05 , 0x0005 },
+{ 0x06 , 0x0006 },
+{ 0x07 , 0x0007 },
+{ 0x08 , 0x0008 },
+{ 0x09 , 0x0009 },
+{ 0x0a , 0x000A },
+{ 0x0b , 0x000B },
+{ 0x0c , 0x000C },
+{ 0x0d , 0x000D },
+{ 0x0e , 0x000E },
+{ 0x0f , 0x000F },
+{ 0x10 , 0x0010 },
+{ 0x11 , 0x0011 },
+{ 0x12 , 0x0012 },
+{ 0x13 , 0x0013 },
+{ 0x14 , 0x0014 },
+{ 0x15 , 0x0015 },
+{ 0x16 , 0x0016 },
+{ 0x17 , 0x0017 },
+{ 0x18 , 0x0018 },
+{ 0x19 , 0x0019 },
+{ 0x1a , 0x001A },
+{ 0x1b , 0x001B },
+{ 0x1c , 0x001C },
+{ 0x1d , 0x001D },
+{ 0x1e , 0x001E },
+{ 0x1f , 0x001F },
+{ 0x20 , 0x0020 },
+{ 0x21 , 0x0021 },
+{ 0x22 , 0x0022 },
+{ 0x23 , 0x0023 },
+{ 0x24 , 0x0024 },
+{ 0x25 , 0x0025 },
+{ 0x26 , 0x0026 },
+{ 0x27 , 0x0027 },
+{ 0x28 , 0x0028 },
+{ 0x29 , 0x0029 },
+{ 0x2a , 0x002A },
+{ 0x2b , 0x002B },
+{ 0x2c , 0x002C },
+{ 0x2d , 0x002D },
+{ 0x2e , 0x002E },
+{ 0x2f , 0x002F },
+{ 0x30 , 0x0030 },
+{ 0x31 , 0x0031 },
+{ 0x32 , 0x0032 },
+{ 0x33 , 0x0033 },
+{ 0x34 , 0x0034 },
+{ 0x35 , 0x0035 },
+{ 0x36 , 0x0036 },
+{ 0x37 , 0x0037 },
+{ 0x38 , 0x0038 },
+{ 0x39 , 0x0039 },
+{ 0x3a , 0x003A },
+{ 0x3b , 0x003B },
+{ 0x3c , 0x003C },
+{ 0x3d , 0x003D },
+{ 0x3e , 0x003E },
+{ 0x3f , 0x003F },
+{ 0x40 , 0x0040 },
+{ 0x41 , 0x0041 },
+{ 0x42 , 0x0042 },
+{ 0x43 , 0x0043 },
+{ 0x44 , 0x0044 },
+{ 0x45 , 0x0045 },
+{ 0x46 , 0x0046 },
+{ 0x47 , 0x0047 },
+{ 0x48 , 0x0048 },
+{ 0x49 , 0x0049 },
+{ 0x4a , 0x004A },
+{ 0x4b , 0x004B },
+{ 0x4c , 0x004C },
+{ 0x4d , 0x004D },
+{ 0x4e , 0x004E },
+{ 0x4f , 0x004F },
+{ 0x50 , 0x0050 },
+{ 0x51 , 0x0051 },
+{ 0x52 , 0x0052 },
+{ 0x53 , 0x0053 },
+{ 0x54 , 0x0054 },
+{ 0x55 , 0x0055 },
+{ 0x56 , 0x0056 },
+{ 0x57 , 0x0057 },
+{ 0x58 , 0x0058 },
+{ 0x59 , 0x0059 },
+{ 0x5a , 0x005A },
+{ 0x5b , 0x005B },
+{ 0x5c , 0x005C },
+{ 0x5d , 0x005D },
+{ 0x5e , 0x005E },
+{ 0x5f , 0x005F },
+{ 0x60 , 0x0060 },
+{ 0x61 , 0x0061 },
+{ 0x62 , 0x0062 },
+{ 0x63 , 0x0063 },
+{ 0x64 , 0x0064 },
+{ 0x65 , 0x0065 },
+{ 0x66 , 0x0066 },
+{ 0x67 , 0x0067 },
+{ 0x68 , 0x0068 },
+{ 0x69 , 0x0069 },
+{ 0x6a , 0x006A },
+{ 0x6b , 0x006B },
+{ 0x6c , 0x006C },
+{ 0x6d , 0x006D },
+{ 0x6e , 0x006E },
+{ 0x6f , 0x006F },
+{ 0x70 , 0x0070 },
+{ 0x71 , 0x0071 },
+{ 0x72 , 0x0072 },
+{ 0x73 , 0x0073 },
+{ 0x74 , 0x0074 },
+{ 0x75 , 0x0075 },
+{ 0x76 , 0x0076 },
+{ 0x77 , 0x0077 },
+{ 0x78 , 0x0078 },
+{ 0x79 , 0x0079 },
+{ 0x7a , 0x007A },
+{ 0x7b , 0x007B },
+{ 0x7c , 0x007C },
+{ 0x7d , 0x007D },
+{ 0x7e , 0x007E },
+{ 0x7f , 0x007F },
+{ 0x80 , 0x0080 },
+{ 0x81 , 0x0081 },
+{ 0x82 , 0x0082 },
+{ 0x83 , 0x0083 },
+{ 0x84 , 0x0084 },
+{ 0x85 , 0x0085 },
+{ 0x86 , 0x0086 },
+{ 0x87 , 0x0087 },
+{ 0x88 , 0x0088 },
+{ 0x89 , 0x0089 },
+{ 0x8a , 0x008A },
+{ 0x8b , 0x008B },
+{ 0x8c , 0x008C },
+{ 0x8d , 0x008D },
+{ 0x8e , 0x008E },
+{ 0x8f , 0x008F },
+{ 0x90 , 0x0090 },
+{ 0x91 , 0x0091 },
+{ 0x92 , 0x0092 },
+{ 0x93 , 0x0093 },
+{ 0x94 , 0x0094 },
+{ 0x95 , 0x0095 },
+{ 0x96 , 0x0096 },
+{ 0x97 , 0x0097 },
+{ 0x98 , 0x0098 },
+{ 0x99 , 0x0099 },
+{ 0x9a , 0x009A },
+{ 0x9b , 0x009B },
+{ 0x9c , 0x009C },
+{ 0x9d , 0x009D },
+{ 0x9e , 0x009E },
+{ 0x9f , 0x009F },
+{ 0xa0 , 0x00A0 },
+{ 0xa1 , 0x0401 },
+{ 0xa2 , 0x0402 },
+{ 0xa3 , 0x0403 },
+{ 0xa4 , 0x0404 },
+{ 0xa5 , 0x0405 },
+{ 0xa6 , 0x0406 },
+{ 0xa7 , 0x0407 },
+{ 0xa8 , 0x0408 },
+{ 0xa9 , 0x0409 },
+{ 0xaa , 0x040A },
+{ 0xab , 0x040B },
+{ 0xac , 0x040C },
+{ 0xad , 0x00AD },
+{ 0xae , 0x040E },
+{ 0xaf , 0x040F },
+{ 0xb0 , 0x0410 },
+{ 0xb1 , 0x0411 },
+{ 0xb2 , 0x0412 },
+{ 0xb3 , 0x0413 },
+{ 0xb4 , 0x0414 },
+{ 0xb5 , 0x0415 },
+{ 0xb6 , 0x0416 },
+{ 0xb7 , 0x0417 },
+{ 0xb8 , 0x0418 },
+{ 0xb9 , 0x0419 },
+{ 0xba , 0x041A },
+{ 0xbb , 0x041B },
+{ 0xbc , 0x041C },
+{ 0xbd , 0x041D },
+{ 0xbe , 0x041E },
+{ 0xbf , 0x041F },
+{ 0xc0 , 0x0420 },
+{ 0xc1 , 0x0421 },
+{ 0xc2 , 0x0422 },
+{ 0xc3 , 0x0423 },
+{ 0xc4 , 0x0424 },
+{ 0xc5 , 0x0425 },
+{ 0xc6 , 0x0426 },
+{ 0xc7 , 0x0427 },
+{ 0xc8 , 0x0428 },
+{ 0xc9 , 0x0429 },
+{ 0xca , 0x042A },
+{ 0xcb , 0x042B },
+{ 0xcc , 0x042C },
+{ 0xcd , 0x042D },
+{ 0xce , 0x042E },
+{ 0xcf , 0x042F },
+{ 0xd0 , 0x0430 },
+{ 0xd1 , 0x0431 },
+{ 0xd2 , 0x0432 },
+{ 0xd3 , 0x0433 },
+{ 0xd4 , 0x0434 },
+{ 0xd5 , 0x0435 },
+{ 0xd6 , 0x0436 },
+{ 0xd7 , 0x0437 },
+{ 0xd8 , 0x0438 },
+{ 0xd9 , 0x0439 },
+{ 0xda , 0x043A },
+{ 0xdb , 0x043B },
+{ 0xdc , 0x043C },
+{ 0xdd , 0x043D },
+{ 0xde , 0x043E },
+{ 0xdf , 0x043F },
+{ 0xe0 , 0x0440 },
+{ 0xe1 , 0x0441 },
+{ 0xe2 , 0x0442 },
+{ 0xe3 , 0x0443 },
+{ 0xe4 , 0x0444 },
+{ 0xe5 , 0x0445 },
+{ 0xe6 , 0x0446 },
+{ 0xe7 , 0x0447 },
+{ 0xe8 , 0x0448 },
+{ 0xe9 , 0x0449 },
+{ 0xea , 0x044A },
+{ 0xeb , 0x044B },
+{ 0xec , 0x044C },
+{ 0xed , 0x044D },
+{ 0xee , 0x044E },
+{ 0xef , 0x044F },
+{ 0xf0 , 0x2116 },
+{ 0xf1 , 0x0451 },
+{ 0xf2 , 0x0452 },
+{ 0xf3 , 0x0453 },
+{ 0xf4 , 0x0454 },
+{ 0xf5 , 0x0455 },
+{ 0xf6 , 0x0456 },
+{ 0xf7 , 0x0457 },
+{ 0xf8 , 0x0458 },
+{ 0xf9 , 0x0459 },
+{ 0xfa , 0x045A },
+{ 0xfb , 0x045B },
+{ 0xfc , 0x045C },
+{ 0xfd , 0x00A7 },
+{ 0xfe , 0x045E },
+{ 0xff , 0x045F },
diff --git a/ap/build/uClibc/extra/locale/charmaps/ISO-8859-6.pairs b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-6.pairs
new file mode 100644
index 0000000..ccba9f9
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-6.pairs
@@ -0,0 +1,211 @@
+{ 0x00 , 0x0000 },
+{ 0x01 , 0x0001 },
+{ 0x02 , 0x0002 },
+{ 0x03 , 0x0003 },
+{ 0x04 , 0x0004 },
+{ 0x05 , 0x0005 },
+{ 0x06 , 0x0006 },
+{ 0x07 , 0x0007 },
+{ 0x08 , 0x0008 },
+{ 0x09 , 0x0009 },
+{ 0x0a , 0x000A },
+{ 0x0b , 0x000B },
+{ 0x0c , 0x000C },
+{ 0x0d , 0x000D },
+{ 0x0e , 0x000E },
+{ 0x0f , 0x000F },
+{ 0x10 , 0x0010 },
+{ 0x11 , 0x0011 },
+{ 0x12 , 0x0012 },
+{ 0x13 , 0x0013 },
+{ 0x14 , 0x0014 },
+{ 0x15 , 0x0015 },
+{ 0x16 , 0x0016 },
+{ 0x17 , 0x0017 },
+{ 0x18 , 0x0018 },
+{ 0x19 , 0x0019 },
+{ 0x1a , 0x001A },
+{ 0x1b , 0x001B },
+{ 0x1c , 0x001C },
+{ 0x1d , 0x001D },
+{ 0x1e , 0x001E },
+{ 0x1f , 0x001F },
+{ 0x20 , 0x0020 },
+{ 0x21 , 0x0021 },
+{ 0x22 , 0x0022 },
+{ 0x23 , 0x0023 },
+{ 0x24 , 0x0024 },
+{ 0x25 , 0x0025 },
+{ 0x26 , 0x0026 },
+{ 0x27 , 0x0027 },
+{ 0x28 , 0x0028 },
+{ 0x29 , 0x0029 },
+{ 0x2a , 0x002A },
+{ 0x2b , 0x002B },
+{ 0x2c , 0x002C },
+{ 0x2d , 0x002D },
+{ 0x2e , 0x002E },
+{ 0x2f , 0x002F },
+{ 0x30 , 0x0030 },
+{ 0x31 , 0x0031 },
+{ 0x32 , 0x0032 },
+{ 0x33 , 0x0033 },
+{ 0x34 , 0x0034 },
+{ 0x35 , 0x0035 },
+{ 0x36 , 0x0036 },
+{ 0x37 , 0x0037 },
+{ 0x38 , 0x0038 },
+{ 0x39 , 0x0039 },
+{ 0x3a , 0x003A },
+{ 0x3b , 0x003B },
+{ 0x3c , 0x003C },
+{ 0x3d , 0x003D },
+{ 0x3e , 0x003E },
+{ 0x3f , 0x003F },
+{ 0x40 , 0x0040 },
+{ 0x41 , 0x0041 },
+{ 0x42 , 0x0042 },
+{ 0x43 , 0x0043 },
+{ 0x44 , 0x0044 },
+{ 0x45 , 0x0045 },
+{ 0x46 , 0x0046 },
+{ 0x47 , 0x0047 },
+{ 0x48 , 0x0048 },
+{ 0x49 , 0x0049 },
+{ 0x4a , 0x004A },
+{ 0x4b , 0x004B },
+{ 0x4c , 0x004C },
+{ 0x4d , 0x004D },
+{ 0x4e , 0x004E },
+{ 0x4f , 0x004F },
+{ 0x50 , 0x0050 },
+{ 0x51 , 0x0051 },
+{ 0x52 , 0x0052 },
+{ 0x53 , 0x0053 },
+{ 0x54 , 0x0054 },
+{ 0x55 , 0x0055 },
+{ 0x56 , 0x0056 },
+{ 0x57 , 0x0057 },
+{ 0x58 , 0x0058 },
+{ 0x59 , 0x0059 },
+{ 0x5a , 0x005A },
+{ 0x5b , 0x005B },
+{ 0x5c , 0x005C },
+{ 0x5d , 0x005D },
+{ 0x5e , 0x005E },
+{ 0x5f , 0x005F },
+{ 0x60 , 0x0060 },
+{ 0x61 , 0x0061 },
+{ 0x62 , 0x0062 },
+{ 0x63 , 0x0063 },
+{ 0x64 , 0x0064 },
+{ 0x65 , 0x0065 },
+{ 0x66 , 0x0066 },
+{ 0x67 , 0x0067 },
+{ 0x68 , 0x0068 },
+{ 0x69 , 0x0069 },
+{ 0x6a , 0x006A },
+{ 0x6b , 0x006B },
+{ 0x6c , 0x006C },
+{ 0x6d , 0x006D },
+{ 0x6e , 0x006E },
+{ 0x6f , 0x006F },
+{ 0x70 , 0x0070 },
+{ 0x71 , 0x0071 },
+{ 0x72 , 0x0072 },
+{ 0x73 , 0x0073 },
+{ 0x74 , 0x0074 },
+{ 0x75 , 0x0075 },
+{ 0x76 , 0x0076 },
+{ 0x77 , 0x0077 },
+{ 0x78 , 0x0078 },
+{ 0x79 , 0x0079 },
+{ 0x7a , 0x007A },
+{ 0x7b , 0x007B },
+{ 0x7c , 0x007C },
+{ 0x7d , 0x007D },
+{ 0x7e , 0x007E },
+{ 0x7f , 0x007F },
+{ 0x80 , 0x0080 },
+{ 0x81 , 0x0081 },
+{ 0x82 , 0x0082 },
+{ 0x83 , 0x0083 },
+{ 0x84 , 0x0084 },
+{ 0x85 , 0x0085 },
+{ 0x86 , 0x0086 },
+{ 0x87 , 0x0087 },
+{ 0x88 , 0x0088 },
+{ 0x89 , 0x0089 },
+{ 0x8a , 0x008A },
+{ 0x8b , 0x008B },
+{ 0x8c , 0x008C },
+{ 0x8d , 0x008D },
+{ 0x8e , 0x008E },
+{ 0x8f , 0x008F },
+{ 0x90 , 0x0090 },
+{ 0x91 , 0x0091 },
+{ 0x92 , 0x0092 },
+{ 0x93 , 0x0093 },
+{ 0x94 , 0x0094 },
+{ 0x95 , 0x0095 },
+{ 0x96 , 0x0096 },
+{ 0x97 , 0x0097 },
+{ 0x98 , 0x0098 },
+{ 0x99 , 0x0099 },
+{ 0x9a , 0x009A },
+{ 0x9b , 0x009B },
+{ 0x9c , 0x009C },
+{ 0x9d , 0x009D },
+{ 0x9e , 0x009E },
+{ 0x9f , 0x009F },
+{ 0xa0 , 0x00A0 },
+{ 0xa4 , 0x00A4 },
+{ 0xac , 0x060C },
+{ 0xad , 0x00AD },
+{ 0xbb , 0x061B },
+{ 0xbf , 0x061F },
+{ 0xc1 , 0x0621 },
+{ 0xc2 , 0x0622 },
+{ 0xc3 , 0x0623 },
+{ 0xc4 , 0x0624 },
+{ 0xc5 , 0x0625 },
+{ 0xc6 , 0x0626 },
+{ 0xc7 , 0x0627 },
+{ 0xc8 , 0x0628 },
+{ 0xc9 , 0x0629 },
+{ 0xca , 0x062A },
+{ 0xcb , 0x062B },
+{ 0xcc , 0x062C },
+{ 0xcd , 0x062D },
+{ 0xce , 0x062E },
+{ 0xcf , 0x062F },
+{ 0xd0 , 0x0630 },
+{ 0xd1 , 0x0631 },
+{ 0xd2 , 0x0632 },
+{ 0xd3 , 0x0633 },
+{ 0xd4 , 0x0634 },
+{ 0xd5 , 0x0635 },
+{ 0xd6 , 0x0636 },
+{ 0xd7 , 0x0637 },
+{ 0xd8 , 0x0638 },
+{ 0xd9 , 0x0639 },
+{ 0xda , 0x063A },
+{ 0xe0 , 0x0640 },
+{ 0xe1 , 0x0641 },
+{ 0xe2 , 0x0642 },
+{ 0xe3 , 0x0643 },
+{ 0xe4 , 0x0644 },
+{ 0xe5 , 0x0645 },
+{ 0xe6 , 0x0646 },
+{ 0xe7 , 0x0647 },
+{ 0xe8 , 0x0648 },
+{ 0xe9 , 0x0649 },
+{ 0xea , 0x064A },
+{ 0xeb , 0x064B },
+{ 0xec , 0x064C },
+{ 0xed , 0x064D },
+{ 0xee , 0x064E },
+{ 0xef , 0x064F },
+{ 0xf0 , 0x0650 },
+{ 0xf1 , 0x0651 },
+{ 0xf2 , 0x0652 },
diff --git a/ap/build/uClibc/extra/locale/charmaps/ISO-8859-7.pairs b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-7.pairs
new file mode 100644
index 0000000..36b8ba2
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-7.pairs
@@ -0,0 +1,250 @@
+{ 0x00 , 0x0000 },
+{ 0x01 , 0x0001 },
+{ 0x02 , 0x0002 },
+{ 0x03 , 0x0003 },
+{ 0x04 , 0x0004 },
+{ 0x05 , 0x0005 },
+{ 0x06 , 0x0006 },
+{ 0x07 , 0x0007 },
+{ 0x08 , 0x0008 },
+{ 0x09 , 0x0009 },
+{ 0x0a , 0x000A },
+{ 0x0b , 0x000B },
+{ 0x0c , 0x000C },
+{ 0x0d , 0x000D },
+{ 0x0e , 0x000E },
+{ 0x0f , 0x000F },
+{ 0x10 , 0x0010 },
+{ 0x11 , 0x0011 },
+{ 0x12 , 0x0012 },
+{ 0x13 , 0x0013 },
+{ 0x14 , 0x0014 },
+{ 0x15 , 0x0015 },
+{ 0x16 , 0x0016 },
+{ 0x17 , 0x0017 },
+{ 0x18 , 0x0018 },
+{ 0x19 , 0x0019 },
+{ 0x1a , 0x001A },
+{ 0x1b , 0x001B },
+{ 0x1c , 0x001C },
+{ 0x1d , 0x001D },
+{ 0x1e , 0x001E },
+{ 0x1f , 0x001F },
+{ 0x20 , 0x0020 },
+{ 0x21 , 0x0021 },
+{ 0x22 , 0x0022 },
+{ 0x23 , 0x0023 },
+{ 0x24 , 0x0024 },
+{ 0x25 , 0x0025 },
+{ 0x26 , 0x0026 },
+{ 0x27 , 0x0027 },
+{ 0x28 , 0x0028 },
+{ 0x29 , 0x0029 },
+{ 0x2a , 0x002A },
+{ 0x2b , 0x002B },
+{ 0x2c , 0x002C },
+{ 0x2d , 0x002D },
+{ 0x2e , 0x002E },
+{ 0x2f , 0x002F },
+{ 0x30 , 0x0030 },
+{ 0x31 , 0x0031 },
+{ 0x32 , 0x0032 },
+{ 0x33 , 0x0033 },
+{ 0x34 , 0x0034 },
+{ 0x35 , 0x0035 },
+{ 0x36 , 0x0036 },
+{ 0x37 , 0x0037 },
+{ 0x38 , 0x0038 },
+{ 0x39 , 0x0039 },
+{ 0x3a , 0x003A },
+{ 0x3b , 0x003B },
+{ 0x3c , 0x003C },
+{ 0x3d , 0x003D },
+{ 0x3e , 0x003E },
+{ 0x3f , 0x003F },
+{ 0x40 , 0x0040 },
+{ 0x41 , 0x0041 },
+{ 0x42 , 0x0042 },
+{ 0x43 , 0x0043 },
+{ 0x44 , 0x0044 },
+{ 0x45 , 0x0045 },
+{ 0x46 , 0x0046 },
+{ 0x47 , 0x0047 },
+{ 0x48 , 0x0048 },
+{ 0x49 , 0x0049 },
+{ 0x4a , 0x004A },
+{ 0x4b , 0x004B },
+{ 0x4c , 0x004C },
+{ 0x4d , 0x004D },
+{ 0x4e , 0x004E },
+{ 0x4f , 0x004F },
+{ 0x50 , 0x0050 },
+{ 0x51 , 0x0051 },
+{ 0x52 , 0x0052 },
+{ 0x53 , 0x0053 },
+{ 0x54 , 0x0054 },
+{ 0x55 , 0x0055 },
+{ 0x56 , 0x0056 },
+{ 0x57 , 0x0057 },
+{ 0x58 , 0x0058 },
+{ 0x59 , 0x0059 },
+{ 0x5a , 0x005A },
+{ 0x5b , 0x005B },
+{ 0x5c , 0x005C },
+{ 0x5d , 0x005D },
+{ 0x5e , 0x005E },
+{ 0x5f , 0x005F },
+{ 0x60 , 0x0060 },
+{ 0x61 , 0x0061 },
+{ 0x62 , 0x0062 },
+{ 0x63 , 0x0063 },
+{ 0x64 , 0x0064 },
+{ 0x65 , 0x0065 },
+{ 0x66 , 0x0066 },
+{ 0x67 , 0x0067 },
+{ 0x68 , 0x0068 },
+{ 0x69 , 0x0069 },
+{ 0x6a , 0x006A },
+{ 0x6b , 0x006B },
+{ 0x6c , 0x006C },
+{ 0x6d , 0x006D },
+{ 0x6e , 0x006E },
+{ 0x6f , 0x006F },
+{ 0x70 , 0x0070 },
+{ 0x71 , 0x0071 },
+{ 0x72 , 0x0072 },
+{ 0x73 , 0x0073 },
+{ 0x74 , 0x0074 },
+{ 0x75 , 0x0075 },
+{ 0x76 , 0x0076 },
+{ 0x77 , 0x0077 },
+{ 0x78 , 0x0078 },
+{ 0x79 , 0x0079 },
+{ 0x7a , 0x007A },
+{ 0x7b , 0x007B },
+{ 0x7c , 0x007C },
+{ 0x7d , 0x007D },
+{ 0x7e , 0x007E },
+{ 0x7f , 0x007F },
+{ 0x80 , 0x0080 },
+{ 0x81 , 0x0081 },
+{ 0x82 , 0x0082 },
+{ 0x83 , 0x0083 },
+{ 0x84 , 0x0084 },
+{ 0x85 , 0x0085 },
+{ 0x86 , 0x0086 },
+{ 0x87 , 0x0087 },
+{ 0x88 , 0x0088 },
+{ 0x89 , 0x0089 },
+{ 0x8a , 0x008A },
+{ 0x8b , 0x008B },
+{ 0x8c , 0x008C },
+{ 0x8d , 0x008D },
+{ 0x8e , 0x008E },
+{ 0x8f , 0x008F },
+{ 0x90 , 0x0090 },
+{ 0x91 , 0x0091 },
+{ 0x92 , 0x0092 },
+{ 0x93 , 0x0093 },
+{ 0x94 , 0x0094 },
+{ 0x95 , 0x0095 },
+{ 0x96 , 0x0096 },
+{ 0x97 , 0x0097 },
+{ 0x98 , 0x0098 },
+{ 0x99 , 0x0099 },
+{ 0x9a , 0x009A },
+{ 0x9b , 0x009B },
+{ 0x9c , 0x009C },
+{ 0x9d , 0x009D },
+{ 0x9e , 0x009E },
+{ 0x9f , 0x009F },
+{ 0xa0 , 0x00A0 },
+{ 0xa1 , 0x2018 },
+{ 0xa2 , 0x2019 },
+{ 0xa3 , 0x00A3 },
+{ 0xa6 , 0x00A6 },
+{ 0xa7 , 0x00A7 },
+{ 0xa8 , 0x00A8 },
+{ 0xa9 , 0x00A9 },
+{ 0xab , 0x00AB },
+{ 0xac , 0x00AC },
+{ 0xad , 0x00AD },
+{ 0xaf , 0x2015 },
+{ 0xb0 , 0x00B0 },
+{ 0xb1 , 0x00B1 },
+{ 0xb2 , 0x00B2 },
+{ 0xb3 , 0x00B3 },
+{ 0xb4 , 0x0384 },
+{ 0xb5 , 0x0385 },
+{ 0xb6 , 0x0386 },
+{ 0xb7 , 0x00B7 },
+{ 0xb8 , 0x0388 },
+{ 0xb9 , 0x0389 },
+{ 0xba , 0x038A },
+{ 0xbb , 0x00BB },
+{ 0xbc , 0x038C },
+{ 0xbd , 0x00BD },
+{ 0xbe , 0x038E },
+{ 0xbf , 0x038F },
+{ 0xc0 , 0x0390 },
+{ 0xc1 , 0x0391 },
+{ 0xc2 , 0x0392 },
+{ 0xc3 , 0x0393 },
+{ 0xc4 , 0x0394 },
+{ 0xc5 , 0x0395 },
+{ 0xc6 , 0x0396 },
+{ 0xc7 , 0x0397 },
+{ 0xc8 , 0x0398 },
+{ 0xc9 , 0x0399 },
+{ 0xca , 0x039A },
+{ 0xcb , 0x039B },
+{ 0xcc , 0x039C },
+{ 0xcd , 0x039D },
+{ 0xce , 0x039E },
+{ 0xcf , 0x039F },
+{ 0xd0 , 0x03A0 },
+{ 0xd1 , 0x03A1 },
+{ 0xd3 , 0x03A3 },
+{ 0xd4 , 0x03A4 },
+{ 0xd5 , 0x03A5 },
+{ 0xd6 , 0x03A6 },
+{ 0xd7 , 0x03A7 },
+{ 0xd8 , 0x03A8 },
+{ 0xd9 , 0x03A9 },
+{ 0xda , 0x03AA },
+{ 0xdb , 0x03AB },
+{ 0xdc , 0x03AC },
+{ 0xdd , 0x03AD },
+{ 0xde , 0x03AE },
+{ 0xdf , 0x03AF },
+{ 0xe0 , 0x03B0 },
+{ 0xe1 , 0x03B1 },
+{ 0xe2 , 0x03B2 },
+{ 0xe3 , 0x03B3 },
+{ 0xe4 , 0x03B4 },
+{ 0xe5 , 0x03B5 },
+{ 0xe6 , 0x03B6 },
+{ 0xe7 , 0x03B7 },
+{ 0xe8 , 0x03B8 },
+{ 0xe9 , 0x03B9 },
+{ 0xea , 0x03BA },
+{ 0xeb , 0x03BB },
+{ 0xec , 0x03BC },
+{ 0xed , 0x03BD },
+{ 0xee , 0x03BE },
+{ 0xef , 0x03BF },
+{ 0xf0 , 0x03C0 },
+{ 0xf1 , 0x03C1 },
+{ 0xf2 , 0x03C2 },
+{ 0xf3 , 0x03C3 },
+{ 0xf4 , 0x03C4 },
+{ 0xf5 , 0x03C5 },
+{ 0xf6 , 0x03C6 },
+{ 0xf7 , 0x03C7 },
+{ 0xf8 , 0x03C8 },
+{ 0xf9 , 0x03C9 },
+{ 0xfa , 0x03CA },
+{ 0xfb , 0x03CB },
+{ 0xfc , 0x03CC },
+{ 0xfd , 0x03CD },
+{ 0xfe , 0x03CE },
diff --git a/ap/build/uClibc/extra/locale/charmaps/ISO-8859-8.pairs b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-8.pairs
new file mode 100644
index 0000000..8d32dd8
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-8.pairs
@@ -0,0 +1,220 @@
+{ 0x00 , 0x0000 },
+{ 0x01 , 0x0001 },
+{ 0x02 , 0x0002 },
+{ 0x03 , 0x0003 },
+{ 0x04 , 0x0004 },
+{ 0x05 , 0x0005 },
+{ 0x06 , 0x0006 },
+{ 0x07 , 0x0007 },
+{ 0x08 , 0x0008 },
+{ 0x09 , 0x0009 },
+{ 0x0a , 0x000A },
+{ 0x0b , 0x000B },
+{ 0x0c , 0x000C },
+{ 0x0d , 0x000D },
+{ 0x0e , 0x000E },
+{ 0x0f , 0x000F },
+{ 0x10 , 0x0010 },
+{ 0x11 , 0x0011 },
+{ 0x12 , 0x0012 },
+{ 0x13 , 0x0013 },
+{ 0x14 , 0x0014 },
+{ 0x15 , 0x0015 },
+{ 0x16 , 0x0016 },
+{ 0x17 , 0x0017 },
+{ 0x18 , 0x0018 },
+{ 0x19 , 0x0019 },
+{ 0x1a , 0x001A },
+{ 0x1b , 0x001B },
+{ 0x1c , 0x001C },
+{ 0x1d , 0x001D },
+{ 0x1e , 0x001E },
+{ 0x1f , 0x001F },
+{ 0x20 , 0x0020 },
+{ 0x21 , 0x0021 },
+{ 0x22 , 0x0022 },
+{ 0x23 , 0x0023 },
+{ 0x24 , 0x0024 },
+{ 0x25 , 0x0025 },
+{ 0x26 , 0x0026 },
+{ 0x27 , 0x0027 },
+{ 0x28 , 0x0028 },
+{ 0x29 , 0x0029 },
+{ 0x2a , 0x002A },
+{ 0x2b , 0x002B },
+{ 0x2c , 0x002C },
+{ 0x2d , 0x002D },
+{ 0x2e , 0x002E },
+{ 0x2f , 0x002F },
+{ 0x30 , 0x0030 },
+{ 0x31 , 0x0031 },
+{ 0x32 , 0x0032 },
+{ 0x33 , 0x0033 },
+{ 0x34 , 0x0034 },
+{ 0x35 , 0x0035 },
+{ 0x36 , 0x0036 },
+{ 0x37 , 0x0037 },
+{ 0x38 , 0x0038 },
+{ 0x39 , 0x0039 },
+{ 0x3a , 0x003A },
+{ 0x3b , 0x003B },
+{ 0x3c , 0x003C },
+{ 0x3d , 0x003D },
+{ 0x3e , 0x003E },
+{ 0x3f , 0x003F },
+{ 0x40 , 0x0040 },
+{ 0x41 , 0x0041 },
+{ 0x42 , 0x0042 },
+{ 0x43 , 0x0043 },
+{ 0x44 , 0x0044 },
+{ 0x45 , 0x0045 },
+{ 0x46 , 0x0046 },
+{ 0x47 , 0x0047 },
+{ 0x48 , 0x0048 },
+{ 0x49 , 0x0049 },
+{ 0x4a , 0x004A },
+{ 0x4b , 0x004B },
+{ 0x4c , 0x004C },
+{ 0x4d , 0x004D },
+{ 0x4e , 0x004E },
+{ 0x4f , 0x004F },
+{ 0x50 , 0x0050 },
+{ 0x51 , 0x0051 },
+{ 0x52 , 0x0052 },
+{ 0x53 , 0x0053 },
+{ 0x54 , 0x0054 },
+{ 0x55 , 0x0055 },
+{ 0x56 , 0x0056 },
+{ 0x57 , 0x0057 },
+{ 0x58 , 0x0058 },
+{ 0x59 , 0x0059 },
+{ 0x5a , 0x005A },
+{ 0x5b , 0x005B },
+{ 0x5c , 0x005C },
+{ 0x5d , 0x005D },
+{ 0x5e , 0x005E },
+{ 0x5f , 0x005F },
+{ 0x60 , 0x0060 },
+{ 0x61 , 0x0061 },
+{ 0x62 , 0x0062 },
+{ 0x63 , 0x0063 },
+{ 0x64 , 0x0064 },
+{ 0x65 , 0x0065 },
+{ 0x66 , 0x0066 },
+{ 0x67 , 0x0067 },
+{ 0x68 , 0x0068 },
+{ 0x69 , 0x0069 },
+{ 0x6a , 0x006A },
+{ 0x6b , 0x006B },
+{ 0x6c , 0x006C },
+{ 0x6d , 0x006D },
+{ 0x6e , 0x006E },
+{ 0x6f , 0x006F },
+{ 0x70 , 0x0070 },
+{ 0x71 , 0x0071 },
+{ 0x72 , 0x0072 },
+{ 0x73 , 0x0073 },
+{ 0x74 , 0x0074 },
+{ 0x75 , 0x0075 },
+{ 0x76 , 0x0076 },
+{ 0x77 , 0x0077 },
+{ 0x78 , 0x0078 },
+{ 0x79 , 0x0079 },
+{ 0x7a , 0x007A },
+{ 0x7b , 0x007B },
+{ 0x7c , 0x007C },
+{ 0x7d , 0x007D },
+{ 0x7e , 0x007E },
+{ 0x7f , 0x007F },
+{ 0x80 , 0x0080 },
+{ 0x81 , 0x0081 },
+{ 0x82 , 0x0082 },
+{ 0x83 , 0x0083 },
+{ 0x84 , 0x0084 },
+{ 0x85 , 0x0085 },
+{ 0x86 , 0x0086 },
+{ 0x87 , 0x0087 },
+{ 0x88 , 0x0088 },
+{ 0x89 , 0x0089 },
+{ 0x8a , 0x008A },
+{ 0x8b , 0x008B },
+{ 0x8c , 0x008C },
+{ 0x8d , 0x008D },
+{ 0x8e , 0x008E },
+{ 0x8f , 0x008F },
+{ 0x90 , 0x0090 },
+{ 0x91 , 0x0091 },
+{ 0x92 , 0x0092 },
+{ 0x93 , 0x0093 },
+{ 0x94 , 0x0094 },
+{ 0x95 , 0x0095 },
+{ 0x96 , 0x0096 },
+{ 0x97 , 0x0097 },
+{ 0x98 , 0x0098 },
+{ 0x99 , 0x0099 },
+{ 0x9a , 0x009A },
+{ 0x9b , 0x009B },
+{ 0x9c , 0x009C },
+{ 0x9d , 0x009D },
+{ 0x9e , 0x009E },
+{ 0x9f , 0x009F },
+{ 0xa0 , 0x00A0 },
+{ 0xa2 , 0x00A2 },
+{ 0xa3 , 0x00A3 },
+{ 0xa4 , 0x00A4 },
+{ 0xa5 , 0x00A5 },
+{ 0xa6 , 0x00A6 },
+{ 0xa7 , 0x00A7 },
+{ 0xa8 , 0x00A8 },
+{ 0xa9 , 0x00A9 },
+{ 0xaa , 0x00D7 },
+{ 0xab , 0x00AB },
+{ 0xac , 0x00AC },
+{ 0xad , 0x00AD },
+{ 0xae , 0x00AE },
+{ 0xaf , 0x00AF },
+{ 0xb0 , 0x00B0 },
+{ 0xb1 , 0x00B1 },
+{ 0xb2 , 0x00B2 },
+{ 0xb3 , 0x00B3 },
+{ 0xb4 , 0x00B4 },
+{ 0xb5 , 0x00B5 },
+{ 0xb6 , 0x00B6 },
+{ 0xb7 , 0x00B7 },
+{ 0xb8 , 0x00B8 },
+{ 0xb9 , 0x00B9 },
+{ 0xba , 0x00F7 },
+{ 0xbb , 0x00BB },
+{ 0xbc , 0x00BC },
+{ 0xbd , 0x00BD },
+{ 0xbe , 0x00BE },
+{ 0xdf , 0x2017 },
+{ 0xe0 , 0x05D0 },
+{ 0xe1 , 0x05D1 },
+{ 0xe2 , 0x05D2 },
+{ 0xe3 , 0x05D3 },
+{ 0xe4 , 0x05D4 },
+{ 0xe5 , 0x05D5 },
+{ 0xe6 , 0x05D6 },
+{ 0xe7 , 0x05D7 },
+{ 0xe8 , 0x05D8 },
+{ 0xe9 , 0x05D9 },
+{ 0xea , 0x05DA },
+{ 0xeb , 0x05DB },
+{ 0xec , 0x05DC },
+{ 0xed , 0x05DD },
+{ 0xee , 0x05DE },
+{ 0xef , 0x05DF },
+{ 0xf0 , 0x05E0 },
+{ 0xf1 , 0x05E1 },
+{ 0xf2 , 0x05E2 },
+{ 0xf3 , 0x05E3 },
+{ 0xf4 , 0x05E4 },
+{ 0xf5 , 0x05E5 },
+{ 0xf6 , 0x05E6 },
+{ 0xf7 , 0x05E7 },
+{ 0xf8 , 0x05E8 },
+{ 0xf9 , 0x05E9 },
+{ 0xfa , 0x05EA },
+{ 0xfd , 0x200E },
+{ 0xfe , 0x200F },
diff --git a/ap/build/uClibc/extra/locale/charmaps/ISO-8859-9.pairs b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-9.pairs
new file mode 100644
index 0000000..a5748cd
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/charmaps/ISO-8859-9.pairs
@@ -0,0 +1,256 @@
+{ 0x00 , 0x0000 },
+{ 0x01 , 0x0001 },
+{ 0x02 , 0x0002 },
+{ 0x03 , 0x0003 },
+{ 0x04 , 0x0004 },
+{ 0x05 , 0x0005 },
+{ 0x06 , 0x0006 },
+{ 0x07 , 0x0007 },
+{ 0x08 , 0x0008 },
+{ 0x09 , 0x0009 },
+{ 0x0a , 0x000A },
+{ 0x0b , 0x000B },
+{ 0x0c , 0x000C },
+{ 0x0d , 0x000D },
+{ 0x0e , 0x000E },
+{ 0x0f , 0x000F },
+{ 0x10 , 0x0010 },
+{ 0x11 , 0x0011 },
+{ 0x12 , 0x0012 },
+{ 0x13 , 0x0013 },
+{ 0x14 , 0x0014 },
+{ 0x15 , 0x0015 },
+{ 0x16 , 0x0016 },
+{ 0x17 , 0x0017 },
+{ 0x18 , 0x0018 },
+{ 0x19 , 0x0019 },
+{ 0x1a , 0x001A },
+{ 0x1b , 0x001B },
+{ 0x1c , 0x001C },
+{ 0x1d , 0x001D },
+{ 0x1e , 0x001E },
+{ 0x1f , 0x001F },
+{ 0x20 , 0x0020 },
+{ 0x21 , 0x0021 },
+{ 0x22 , 0x0022 },
+{ 0x23 , 0x0023 },
+{ 0x24 , 0x0024 },
+{ 0x25 , 0x0025 },
+{ 0x26 , 0x0026 },
+{ 0x27 , 0x0027 },
+{ 0x28 , 0x0028 },
+{ 0x29 , 0x0029 },
+{ 0x2a , 0x002A },
+{ 0x2b , 0x002B },
+{ 0x2c , 0x002C },
+{ 0x2d , 0x002D },
+{ 0x2e , 0x002E },
+{ 0x2f , 0x002F },
+{ 0x30 , 0x0030 },
+{ 0x31 , 0x0031 },
+{ 0x32 , 0x0032 },
+{ 0x33 , 0x0033 },
+{ 0x34 , 0x0034 },
+{ 0x35 , 0x0035 },
+{ 0x36 , 0x0036 },
+{ 0x37 , 0x0037 },
+{ 0x38 , 0x0038 },
+{ 0x39 , 0x0039 },
+{ 0x3a , 0x003A },
+{ 0x3b , 0x003B },
+{ 0x3c , 0x003C },
+{ 0x3d , 0x003D },
+{ 0x3e , 0x003E },
+{ 0x3f , 0x003F },
+{ 0x40 , 0x0040 },
+{ 0x41 , 0x0041 },
+{ 0x42 , 0x0042 },
+{ 0x43 , 0x0043 },
+{ 0x44 , 0x0044 },
+{ 0x45 , 0x0045 },
+{ 0x46 , 0x0046 },
+{ 0x47 , 0x0047 },
+{ 0x48 , 0x0048 },
+{ 0x49 , 0x0049 },
+{ 0x4a , 0x004A },
+{ 0x4b , 0x004B },
+{ 0x4c , 0x004C },
+{ 0x4d , 0x004D },
+{ 0x4e , 0x004E },
+{ 0x4f , 0x004F },
+{ 0x50 , 0x0050 },
+{ 0x51 , 0x0051 },
+{ 0x52 , 0x0052 },
+{ 0x53 , 0x0053 },
+{ 0x54 , 0x0054 },
+{ 0x55 , 0x0055 },
+{ 0x56 , 0x0056 },
+{ 0x57 , 0x0057 },
+{ 0x58 , 0x0058 },
+{ 0x59 , 0x0059 },
+{ 0x5a , 0x005A },
+{ 0x5b , 0x005B },
+{ 0x5c , 0x005C },
+{ 0x5d , 0x005D },
+{ 0x5e , 0x005E },
+{ 0x5f , 0x005F },
+{ 0x60 , 0x0060 },
+{ 0x61 , 0x0061 },
+{ 0x62 , 0x0062 },
+{ 0x63 , 0x0063 },
+{ 0x64 , 0x0064 },
+{ 0x65 , 0x0065 },
+{ 0x66 , 0x0066 },
+{ 0x67 , 0x0067 },
+{ 0x68 , 0x0068 },
+{ 0x69 , 0x0069 },
+{ 0x6a , 0x006A },
+{ 0x6b , 0x006B },
+{ 0x6c , 0x006C },
+{ 0x6d , 0x006D },
+{ 0x6e , 0x006E },
+{ 0x6f , 0x006F },
+{ 0x70 , 0x0070 },
+{ 0x71 , 0x0071 },
+{ 0x72 , 0x0072 },
+{ 0x73 , 0x0073 },
+{ 0x74 , 0x0074 },
+{ 0x75 , 0x0075 },
+{ 0x76 , 0x0076 },
+{ 0x77 , 0x0077 },
+{ 0x78 , 0x0078 },
+{ 0x79 , 0x0079 },
+{ 0x7a , 0x007A },
+{ 0x7b , 0x007B },
+{ 0x7c , 0x007C },
+{ 0x7d , 0x007D },
+{ 0x7e , 0x007E },
+{ 0x7f , 0x007F },
+{ 0x80 , 0x0080 },
+{ 0x81 , 0x0081 },
+{ 0x82 , 0x0082 },
+{ 0x83 , 0x0083 },
+{ 0x84 , 0x0084 },
+{ 0x85 , 0x0085 },
+{ 0x86 , 0x0086 },
+{ 0x87 , 0x0087 },
+{ 0x88 , 0x0088 },
+{ 0x89 , 0x0089 },
+{ 0x8a , 0x008A },
+{ 0x8b , 0x008B },
+{ 0x8c , 0x008C },
+{ 0x8d , 0x008D },
+{ 0x8e , 0x008E },
+{ 0x8f , 0x008F },
+{ 0x90 , 0x0090 },
+{ 0x91 , 0x0091 },
+{ 0x92 , 0x0092 },
+{ 0x93 , 0x0093 },
+{ 0x94 , 0x0094 },
+{ 0x95 , 0x0095 },
+{ 0x96 , 0x0096 },
+{ 0x97 , 0x0097 },
+{ 0x98 , 0x0098 },
+{ 0x99 , 0x0099 },
+{ 0x9a , 0x009A },
+{ 0x9b , 0x009B },
+{ 0x9c , 0x009C },
+{ 0x9d , 0x009D },
+{ 0x9e , 0x009E },
+{ 0x9f , 0x009F },
+{ 0xa0 , 0x00A0 },
+{ 0xa1 , 0x00A1 },
+{ 0xa2 , 0x00A2 },
+{ 0xa3 , 0x00A3 },
+{ 0xa4 , 0x00A4 },
+{ 0xa5 , 0x00A5 },
+{ 0xa6 , 0x00A6 },
+{ 0xa7 , 0x00A7 },
+{ 0xa8 , 0x00A8 },
+{ 0xa9 , 0x00A9 },
+{ 0xaa , 0x00AA },
+{ 0xab , 0x00AB },
+{ 0xac , 0x00AC },
+{ 0xad , 0x00AD },
+{ 0xae , 0x00AE },
+{ 0xaf , 0x00AF },
+{ 0xb0 , 0x00B0 },
+{ 0xb1 , 0x00B1 },
+{ 0xb2 , 0x00B2 },
+{ 0xb3 , 0x00B3 },
+{ 0xb4 , 0x00B4 },
+{ 0xb5 , 0x00B5 },
+{ 0xb6 , 0x00B6 },
+{ 0xb7 , 0x00B7 },
+{ 0xb8 , 0x00B8 },
+{ 0xb9 , 0x00B9 },
+{ 0xba , 0x00BA },
+{ 0xbb , 0x00BB },
+{ 0xbc , 0x00BC },
+{ 0xbd , 0x00BD },
+{ 0xbe , 0x00BE },
+{ 0xbf , 0x00BF },
+{ 0xc0 , 0x00C0 },
+{ 0xc1 , 0x00C1 },
+{ 0xc2 , 0x00C2 },
+{ 0xc3 , 0x00C3 },
+{ 0xc4 , 0x00C4 },
+{ 0xc5 , 0x00C5 },
+{ 0xc6 , 0x00C6 },
+{ 0xc7 , 0x00C7 },
+{ 0xc8 , 0x00C8 },
+{ 0xc9 , 0x00C9 },
+{ 0xca , 0x00CA },
+{ 0xcb , 0x00CB },
+{ 0xcc , 0x00CC },
+{ 0xcd , 0x00CD },
+{ 0xce , 0x00CE },
+{ 0xcf , 0x00CF },
+{ 0xd0 , 0x011E },
+{ 0xd1 , 0x00D1 },
+{ 0xd2 , 0x00D2 },
+{ 0xd3 , 0x00D3 },
+{ 0xd4 , 0x00D4 },
+{ 0xd5 , 0x00D5 },
+{ 0xd6 , 0x00D6 },
+{ 0xd7 , 0x00D7 },
+{ 0xd8 , 0x00D8 },
+{ 0xd9 , 0x00D9 },
+{ 0xda , 0x00DA },
+{ 0xdb , 0x00DB },
+{ 0xdc , 0x00DC },
+{ 0xdd , 0x0130 },
+{ 0xde , 0x015E },
+{ 0xdf , 0x00DF },
+{ 0xe0 , 0x00E0 },
+{ 0xe1 , 0x00E1 },
+{ 0xe2 , 0x00E2 },
+{ 0xe3 , 0x00E3 },
+{ 0xe4 , 0x00E4 },
+{ 0xe5 , 0x00E5 },
+{ 0xe6 , 0x00E6 },
+{ 0xe7 , 0x00E7 },
+{ 0xe8 , 0x00E8 },
+{ 0xe9 , 0x00E9 },
+{ 0xea , 0x00EA },
+{ 0xeb , 0x00EB },
+{ 0xec , 0x00EC },
+{ 0xed , 0x00ED },
+{ 0xee , 0x00EE },
+{ 0xef , 0x00EF },
+{ 0xf0 , 0x011F },
+{ 0xf1 , 0x00F1 },
+{ 0xf2 , 0x00F2 },
+{ 0xf3 , 0x00F3 },
+{ 0xf4 , 0x00F4 },
+{ 0xf5 , 0x00F5 },
+{ 0xf6 , 0x00F6 },
+{ 0xf7 , 0x00F7 },
+{ 0xf8 , 0x00F8 },
+{ 0xf9 , 0x00F9 },
+{ 0xfa , 0x00FA },
+{ 0xfb , 0x00FB },
+{ 0xfc , 0x00FC },
+{ 0xfd , 0x0131 },
+{ 0xfe , 0x015F },
+{ 0xff , 0x00FF },
diff --git a/ap/build/uClibc/extra/locale/charmaps/KOI8-R.pairs b/ap/build/uClibc/extra/locale/charmaps/KOI8-R.pairs
new file mode 100644
index 0000000..f34053d
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/charmaps/KOI8-R.pairs
@@ -0,0 +1,256 @@
+{ 0x00 , 0x0000 },
+{ 0x01 , 0x0001 },
+{ 0x02 , 0x0002 },
+{ 0x03 , 0x0003 },
+{ 0x04 , 0x0004 },
+{ 0x05 , 0x0005 },
+{ 0x06 , 0x0006 },
+{ 0x07 , 0x0007 },
+{ 0x08 , 0x0008 },
+{ 0x09 , 0x0009 },
+{ 0x0a , 0x000A },
+{ 0x0b , 0x000B },
+{ 0x0c , 0x000C },
+{ 0x0d , 0x000D },
+{ 0x0e , 0x000E },
+{ 0x0f , 0x000F },
+{ 0x10 , 0x0010 },
+{ 0x11 , 0x0011 },
+{ 0x12 , 0x0012 },
+{ 0x13 , 0x0013 },
+{ 0x14 , 0x0014 },
+{ 0x15 , 0x0015 },
+{ 0x16 , 0x0016 },
+{ 0x17 , 0x0017 },
+{ 0x18 , 0x0018 },
+{ 0x19 , 0x0019 },
+{ 0x1a , 0x001A },
+{ 0x1b , 0x001B },
+{ 0x1c , 0x001C },
+{ 0x1d , 0x001D },
+{ 0x1e , 0x001E },
+{ 0x1f , 0x001F },
+{ 0x20 , 0x0020 },
+{ 0x21 , 0x0021 },
+{ 0x22 , 0x0022 },
+{ 0x23 , 0x0023 },
+{ 0x24 , 0x0024 },
+{ 0x25 , 0x0025 },
+{ 0x26 , 0x0026 },
+{ 0x27 , 0x0027 },
+{ 0x28 , 0x0028 },
+{ 0x29 , 0x0029 },
+{ 0x2a , 0x002A },
+{ 0x2b , 0x002B },
+{ 0x2c , 0x002C },
+{ 0x2d , 0x002D },
+{ 0x2e , 0x002E },
+{ 0x2f , 0x002F },
+{ 0x30 , 0x0030 },
+{ 0x31 , 0x0031 },
+{ 0x32 , 0x0032 },
+{ 0x33 , 0x0033 },
+{ 0x34 , 0x0034 },
+{ 0x35 , 0x0035 },
+{ 0x36 , 0x0036 },
+{ 0x37 , 0x0037 },
+{ 0x38 , 0x0038 },
+{ 0x39 , 0x0039 },
+{ 0x3a , 0x003A },
+{ 0x3b , 0x003B },
+{ 0x3c , 0x003C },
+{ 0x3d , 0x003D },
+{ 0x3e , 0x003E },
+{ 0x3f , 0x003F },
+{ 0x40 , 0x0040 },
+{ 0x41 , 0x0041 },
+{ 0x42 , 0x0042 },
+{ 0x43 , 0x0043 },
+{ 0x44 , 0x0044 },
+{ 0x45 , 0x0045 },
+{ 0x46 , 0x0046 },
+{ 0x47 , 0x0047 },
+{ 0x48 , 0x0048 },
+{ 0x49 , 0x0049 },
+{ 0x4a , 0x004A },
+{ 0x4b , 0x004B },
+{ 0x4c , 0x004C },
+{ 0x4d , 0x004D },
+{ 0x4e , 0x004E },
+{ 0x4f , 0x004F },
+{ 0x50 , 0x0050 },
+{ 0x51 , 0x0051 },
+{ 0x52 , 0x0052 },
+{ 0x53 , 0x0053 },
+{ 0x54 , 0x0054 },
+{ 0x55 , 0x0055 },
+{ 0x56 , 0x0056 },
+{ 0x57 , 0x0057 },
+{ 0x58 , 0x0058 },
+{ 0x59 , 0x0059 },
+{ 0x5a , 0x005A },
+{ 0x5b , 0x005B },
+{ 0x5c , 0x005C },
+{ 0x5d , 0x005D },
+{ 0x5e , 0x005E },
+{ 0x5f , 0x005F },
+{ 0x60 , 0x0060 },
+{ 0x61 , 0x0061 },
+{ 0x62 , 0x0062 },
+{ 0x63 , 0x0063 },
+{ 0x64 , 0x0064 },
+{ 0x65 , 0x0065 },
+{ 0x66 , 0x0066 },
+{ 0x67 , 0x0067 },
+{ 0x68 , 0x0068 },
+{ 0x69 , 0x0069 },
+{ 0x6a , 0x006A },
+{ 0x6b , 0x006B },
+{ 0x6c , 0x006C },
+{ 0x6d , 0x006D },
+{ 0x6e , 0x006E },
+{ 0x6f , 0x006F },
+{ 0x70 , 0x0070 },
+{ 0x71 , 0x0071 },
+{ 0x72 , 0x0072 },
+{ 0x73 , 0x0073 },
+{ 0x74 , 0x0074 },
+{ 0x75 , 0x0075 },
+{ 0x76 , 0x0076 },
+{ 0x77 , 0x0077 },
+{ 0x78 , 0x0078 },
+{ 0x79 , 0x0079 },
+{ 0x7a , 0x007A },
+{ 0x7b , 0x007B },
+{ 0x7c , 0x007C },
+{ 0x7d , 0x007D },
+{ 0x7e , 0x007E },
+{ 0x7f , 0x007F },
+{ 0x80 , 0x2500 },
+{ 0x81 , 0x2502 },
+{ 0x82 , 0x250C },
+{ 0x83 , 0x2510 },
+{ 0x84 , 0x2514 },
+{ 0x85 , 0x2518 },
+{ 0x86 , 0x251C },
+{ 0x87 , 0x2524 },
+{ 0x88 , 0x252C },
+{ 0x89 , 0x2534 },
+{ 0x8a , 0x253C },
+{ 0x8b , 0x2580 },
+{ 0x8c , 0x2584 },
+{ 0x8d , 0x2588 },
+{ 0x8e , 0x258C },
+{ 0x8f , 0x2590 },
+{ 0x90 , 0x2591 },
+{ 0x91 , 0x2592 },
+{ 0x92 , 0x2593 },
+{ 0x93 , 0x2320 },
+{ 0x94 , 0x25A0 },
+{ 0x95 , 0x2219 },
+{ 0x96 , 0x221A },
+{ 0x97 , 0x2248 },
+{ 0x98 , 0x2264 },
+{ 0x99 , 0x2265 },
+{ 0x9a , 0x00A0 },
+{ 0x9b , 0x2321 },
+{ 0x9c , 0x00B0 },
+{ 0x9d , 0x00B2 },
+{ 0x9e , 0x00B7 },
+{ 0x9f , 0x00F7 },
+{ 0xa0 , 0x2550 },
+{ 0xa1 , 0x2551 },
+{ 0xa2 , 0x2552 },
+{ 0xa3 , 0x0451 },
+{ 0xa4 , 0x2553 },
+{ 0xa5 , 0x2554 },
+{ 0xa6 , 0x2555 },
+{ 0xa7 , 0x2556 },
+{ 0xa8 , 0x2557 },
+{ 0xa9 , 0x2558 },
+{ 0xaa , 0x2559 },
+{ 0xab , 0x255A },
+{ 0xac , 0x255B },
+{ 0xad , 0x255C },
+{ 0xae , 0x255D },
+{ 0xaf , 0x255E },
+{ 0xb0 , 0x255F },
+{ 0xb1 , 0x2560 },
+{ 0xb2 , 0x2561 },
+{ 0xb3 , 0x0401 },
+{ 0xb4 , 0x2562 },
+{ 0xb5 , 0x2563 },
+{ 0xb6 , 0x2564 },
+{ 0xb7 , 0x2565 },
+{ 0xb8 , 0x2566 },
+{ 0xb9 , 0x2567 },
+{ 0xba , 0x2568 },
+{ 0xbb , 0x2569 },
+{ 0xbc , 0x256A },
+{ 0xbd , 0x256B },
+{ 0xbe , 0x256C },
+{ 0xbf , 0x00A9 },
+{ 0xc0 , 0x044E },
+{ 0xc1 , 0x0430 },
+{ 0xc2 , 0x0431 },
+{ 0xc3 , 0x0446 },
+{ 0xc4 , 0x0434 },
+{ 0xc5 , 0x0435 },
+{ 0xc6 , 0x0444 },
+{ 0xc7 , 0x0433 },
+{ 0xc8 , 0x0445 },
+{ 0xc9 , 0x0438 },
+{ 0xca , 0x0439 },
+{ 0xcb , 0x043A },
+{ 0xcc , 0x043B },
+{ 0xcd , 0x043C },
+{ 0xce , 0x043D },
+{ 0xcf , 0x043E },
+{ 0xd0 , 0x043F },
+{ 0xd1 , 0x044F },
+{ 0xd2 , 0x0440 },
+{ 0xd3 , 0x0441 },
+{ 0xd4 , 0x0442 },
+{ 0xd5 , 0x0443 },
+{ 0xd6 , 0x0436 },
+{ 0xd7 , 0x0432 },
+{ 0xd8 , 0x044C },
+{ 0xd9 , 0x044B },
+{ 0xda , 0x0437 },
+{ 0xdb , 0x0448 },
+{ 0xdc , 0x044D },
+{ 0xdd , 0x0449 },
+{ 0xde , 0x0447 },
+{ 0xdf , 0x044A },
+{ 0xe0 , 0x042E },
+{ 0xe1 , 0x0410 },
+{ 0xe2 , 0x0411 },
+{ 0xe3 , 0x0426 },
+{ 0xe4 , 0x0414 },
+{ 0xe5 , 0x0415 },
+{ 0xe6 , 0x0424 },
+{ 0xe7 , 0x0413 },
+{ 0xe8 , 0x0425 },
+{ 0xe9 , 0x0418 },
+{ 0xea , 0x0419 },
+{ 0xeb , 0x041A },
+{ 0xec , 0x041B },
+{ 0xed , 0x041C },
+{ 0xee , 0x041D },
+{ 0xef , 0x041E },
+{ 0xf0 , 0x041F },
+{ 0xf1 , 0x042F },
+{ 0xf2 , 0x0420 },
+{ 0xf3 , 0x0421 },
+{ 0xf4 , 0x0422 },
+{ 0xf5 , 0x0423 },
+{ 0xf6 , 0x0416 },
+{ 0xf7 , 0x0412 },
+{ 0xf8 , 0x042C },
+{ 0xf9 , 0x042B },
+{ 0xfa , 0x0417 },
+{ 0xfb , 0x0428 },
+{ 0xfc , 0x042D },
+{ 0xfd , 0x0429 },
+{ 0xfe , 0x0427 },
+{ 0xff , 0x042A },
diff --git a/ap/build/uClibc/extra/locale/charmaps/KOI8-T.pairs b/ap/build/uClibc/extra/locale/charmaps/KOI8-T.pairs
new file mode 100644
index 0000000..aeba582
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/charmaps/KOI8-T.pairs
@@ -0,0 +1,237 @@
+{ 0x00 , 0x0000 },
+{ 0x01 , 0x0001 },
+{ 0x02 , 0x0002 },
+{ 0x03 , 0x0003 },
+{ 0x04 , 0x0004 },
+{ 0x05 , 0x0005 },
+{ 0x06 , 0x0006 },
+{ 0x07 , 0x0007 },
+{ 0x08 , 0x0008 },
+{ 0x09 , 0x0009 },
+{ 0x0a , 0x000A },
+{ 0x0b , 0x000B },
+{ 0x0c , 0x000C },
+{ 0x0d , 0x000D },
+{ 0x0e , 0x000E },
+{ 0x0f , 0x000F },
+{ 0x10 , 0x0010 },
+{ 0x11 , 0x0011 },
+{ 0x12 , 0x0012 },
+{ 0x13 , 0x0013 },
+{ 0x14 , 0x0014 },
+{ 0x15 , 0x0015 },
+{ 0x16 , 0x0016 },
+{ 0x17 , 0x0017 },
+{ 0x18 , 0x0018 },
+{ 0x19 , 0x0019 },
+{ 0x1a , 0x001A },
+{ 0x1b , 0x001B },
+{ 0x1c , 0x001C },
+{ 0x1d , 0x001D },
+{ 0x1e , 0x001E },
+{ 0x1f , 0x001F },
+{ 0x20 , 0x0020 },
+{ 0x21 , 0x0021 },
+{ 0x22 , 0x0022 },
+{ 0x23 , 0x0023 },
+{ 0x24 , 0x0024 },
+{ 0x25 , 0x0025 },
+{ 0x26 , 0x0026 },
+{ 0x27 , 0x0027 },
+{ 0x28 , 0x0028 },
+{ 0x29 , 0x0029 },
+{ 0x2a , 0x002A },
+{ 0x2b , 0x002B },
+{ 0x2c , 0x002C },
+{ 0x2d , 0x002D },
+{ 0x2e , 0x002E },
+{ 0x2f , 0x002F },
+{ 0x30 , 0x0030 },
+{ 0x31 , 0x0031 },
+{ 0x32 , 0x0032 },
+{ 0x33 , 0x0033 },
+{ 0x34 , 0x0034 },
+{ 0x35 , 0x0035 },
+{ 0x36 , 0x0036 },
+{ 0x37 , 0x0037 },
+{ 0x38 , 0x0038 },
+{ 0x39 , 0x0039 },
+{ 0x3a , 0x003A },
+{ 0x3b , 0x003B },
+{ 0x3c , 0x003C },
+{ 0x3d , 0x003D },
+{ 0x3e , 0x003E },
+{ 0x3f , 0x003F },
+{ 0x40 , 0x0040 },
+{ 0x41 , 0x0041 },
+{ 0x42 , 0x0042 },
+{ 0x43 , 0x0043 },
+{ 0x44 , 0x0044 },
+{ 0x45 , 0x0045 },
+{ 0x46 , 0x0046 },
+{ 0x47 , 0x0047 },
+{ 0x48 , 0x0048 },
+{ 0x49 , 0x0049 },
+{ 0x4a , 0x004A },
+{ 0x4b , 0x004B },
+{ 0x4c , 0x004C },
+{ 0x4d , 0x004D },
+{ 0x4e , 0x004E },
+{ 0x4f , 0x004F },
+{ 0x50 , 0x0050 },
+{ 0x51 , 0x0051 },
+{ 0x52 , 0x0052 },
+{ 0x53 , 0x0053 },
+{ 0x54 , 0x0054 },
+{ 0x55 , 0x0055 },
+{ 0x56 , 0x0056 },
+{ 0x57 , 0x0057 },
+{ 0x58 , 0x0058 },
+{ 0x59 , 0x0059 },
+{ 0x5a , 0x005A },
+{ 0x5b , 0x005B },
+{ 0x5c , 0x005C },
+{ 0x5d , 0x005D },
+{ 0x5e , 0x005E },
+{ 0x5f , 0x005F },
+{ 0x60 , 0x0060 },
+{ 0x61 , 0x0061 },
+{ 0x62 , 0x0062 },
+{ 0x63 , 0x0063 },
+{ 0x64 , 0x0064 },
+{ 0x65 , 0x0065 },
+{ 0x66 , 0x0066 },
+{ 0x67 , 0x0067 },
+{ 0x68 , 0x0068 },
+{ 0x69 , 0x0069 },
+{ 0x6a , 0x006A },
+{ 0x6b , 0x006B },
+{ 0x6c , 0x006C },
+{ 0x6d , 0x006D },
+{ 0x6e , 0x006E },
+{ 0x6f , 0x006F },
+{ 0x70 , 0x0070 },
+{ 0x71 , 0x0071 },
+{ 0x72 , 0x0072 },
+{ 0x73 , 0x0073 },
+{ 0x74 , 0x0074 },
+{ 0x75 , 0x0075 },
+{ 0x76 , 0x0076 },
+{ 0x77 , 0x0077 },
+{ 0x78 , 0x0078 },
+{ 0x79 , 0x0079 },
+{ 0x7a , 0x007A },
+{ 0x7b , 0x007B },
+{ 0x7c , 0x007C },
+{ 0x7d , 0x007D },
+{ 0x7e , 0x007E },
+{ 0x7f , 0x007F },
+{ 0x80 , 0x049B },
+{ 0x81 , 0x0493 },
+{ 0x82 , 0x201A },
+{ 0x83 , 0x0492 },
+{ 0x84 , 0x201E },
+{ 0x85 , 0x2026 },
+{ 0x86 , 0x2020 },
+{ 0x87 , 0x2021 },
+{ 0x89 , 0x2030 },
+{ 0x8a , 0x04B3 },
+{ 0x8b , 0x2039 },
+{ 0x8c , 0x04B2 },
+{ 0x8d , 0x04B7 },
+{ 0x8e , 0x04B6 },
+{ 0x90 , 0x049A },
+{ 0x91 , 0x2018 },
+{ 0x92 , 0x2019 },
+{ 0x93 , 0x201C },
+{ 0x94 , 0x201D },
+{ 0x95 , 0x2022 },
+{ 0x96 , 0x2013 },
+{ 0x97 , 0x2014 },
+{ 0x99 , 0x2122 },
+{ 0x9b , 0x203A },
+{ 0xa1 , 0x04EF },
+{ 0xa2 , 0x04EE },
+{ 0xa3 , 0x0451 },
+{ 0xa4 , 0x00A4 },
+{ 0xa5 , 0x04E3 },
+{ 0xa6 , 0x00A6 },
+{ 0xa7 , 0x00A7 },
+{ 0xab , 0x00AB },
+{ 0xac , 0x00AC },
+{ 0xad , 0x00AD },
+{ 0xae , 0x00AE },
+{ 0xb0 , 0x00B0 },
+{ 0xb1 , 0x00B1 },
+{ 0xb2 , 0x00B2 },
+{ 0xb3 , 0x0401 },
+{ 0xb5 , 0x04E2 },
+{ 0xb6 , 0x00B6 },
+{ 0xb7 , 0x00B7 },
+{ 0xb9 , 0x2116 },
+{ 0xbb , 0x00BB },
+{ 0xbf , 0x00A9 },
+{ 0xc0 , 0x044E },
+{ 0xc1 , 0x0430 },
+{ 0xc2 , 0x0431 },
+{ 0xc3 , 0x0446 },
+{ 0xc4 , 0x0434 },
+{ 0xc5 , 0x0435 },
+{ 0xc6 , 0x0444 },
+{ 0xc7 , 0x0433 },
+{ 0xc8 , 0x0445 },
+{ 0xc9 , 0x0438 },
+{ 0xca , 0x0439 },
+{ 0xcb , 0x043A },
+{ 0xcc , 0x043B },
+{ 0xcd , 0x043C },
+{ 0xce , 0x043D },
+{ 0xcf , 0x043E },
+{ 0xd0 , 0x043F },
+{ 0xd1 , 0x044F },
+{ 0xd2 , 0x0440 },
+{ 0xd3 , 0x0441 },
+{ 0xd4 , 0x0442 },
+{ 0xd5 , 0x0443 },
+{ 0xd6 , 0x0436 },
+{ 0xd7 , 0x0432 },
+{ 0xd8 , 0x044C },
+{ 0xd9 , 0x044B },
+{ 0xda , 0x0437 },
+{ 0xdb , 0x0448 },
+{ 0xdc , 0x044D },
+{ 0xdd , 0x0449 },
+{ 0xde , 0x0447 },
+{ 0xdf , 0x044A },
+{ 0xe0 , 0x042E },
+{ 0xe1 , 0x0410 },
+{ 0xe2 , 0x0411 },
+{ 0xe3 , 0x0426 },
+{ 0xe4 , 0x0414 },
+{ 0xe5 , 0x0415 },
+{ 0xe6 , 0x0424 },
+{ 0xe7 , 0x0413 },
+{ 0xe8 , 0x0425 },
+{ 0xe9 , 0x0418 },
+{ 0xea , 0x0419 },
+{ 0xeb , 0x041A },
+{ 0xec , 0x041B },
+{ 0xed , 0x041C },
+{ 0xee , 0x041D },
+{ 0xef , 0x041E },
+{ 0xf0 , 0x041F },
+{ 0xf1 , 0x042F },
+{ 0xf2 , 0x0420 },
+{ 0xf3 , 0x0421 },
+{ 0xf4 , 0x0422 },
+{ 0xf5 , 0x0423 },
+{ 0xf6 , 0x0416 },
+{ 0xf7 , 0x0412 },
+{ 0xf8 , 0x042C },
+{ 0xf9 , 0x042B },
+{ 0xfa , 0x0417 },
+{ 0xfb , 0x0428 },
+{ 0xfc , 0x042D },
+{ 0xfd , 0x0429 },
+{ 0xfe , 0x0427 },
+{ 0xff , 0x042A },
diff --git a/ap/build/uClibc/extra/locale/charmaps/KOI8-U.pairs b/ap/build/uClibc/extra/locale/charmaps/KOI8-U.pairs
new file mode 100644
index 0000000..ff05ed2
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/charmaps/KOI8-U.pairs
@@ -0,0 +1,256 @@
+{ 0x00 , 0x0000 },
+{ 0x01 , 0x0001 },
+{ 0x02 , 0x0002 },
+{ 0x03 , 0x0003 },
+{ 0x04 , 0x0004 },
+{ 0x05 , 0x0005 },
+{ 0x06 , 0x0006 },
+{ 0x07 , 0x0007 },
+{ 0x08 , 0x0008 },
+{ 0x09 , 0x0009 },
+{ 0x0a , 0x000A },
+{ 0x0b , 0x000B },
+{ 0x0c , 0x000C },
+{ 0x0d , 0x000D },
+{ 0x0e , 0x000E },
+{ 0x0f , 0x000F },
+{ 0x10 , 0x0010 },
+{ 0x11 , 0x0011 },
+{ 0x12 , 0x0012 },
+{ 0x13 , 0x0013 },
+{ 0x14 , 0x0014 },
+{ 0x15 , 0x0015 },
+{ 0x16 , 0x0016 },
+{ 0x17 , 0x0017 },
+{ 0x18 , 0x0018 },
+{ 0x19 , 0x0019 },
+{ 0x1a , 0x001A },
+{ 0x1b , 0x001B },
+{ 0x1c , 0x001C },
+{ 0x1d , 0x001D },
+{ 0x1e , 0x001E },
+{ 0x1f , 0x001F },
+{ 0x20 , 0x0020 },
+{ 0x21 , 0x0021 },
+{ 0x22 , 0x0022 },
+{ 0x23 , 0x0023 },
+{ 0x24 , 0x0024 },
+{ 0x25 , 0x0025 },
+{ 0x26 , 0x0026 },
+{ 0x27 , 0x0027 },
+{ 0x28 , 0x0028 },
+{ 0x29 , 0x0029 },
+{ 0x2a , 0x002A },
+{ 0x2b , 0x002B },
+{ 0x2c , 0x002C },
+{ 0x2d , 0x002D },
+{ 0x2e , 0x002E },
+{ 0x2f , 0x002F },
+{ 0x30 , 0x0030 },
+{ 0x31 , 0x0031 },
+{ 0x32 , 0x0032 },
+{ 0x33 , 0x0033 },
+{ 0x34 , 0x0034 },
+{ 0x35 , 0x0035 },
+{ 0x36 , 0x0036 },
+{ 0x37 , 0x0037 },
+{ 0x38 , 0x0038 },
+{ 0x39 , 0x0039 },
+{ 0x3a , 0x003A },
+{ 0x3b , 0x003B },
+{ 0x3c , 0x003C },
+{ 0x3d , 0x003D },
+{ 0x3e , 0x003E },
+{ 0x3f , 0x003F },
+{ 0x40 , 0x0040 },
+{ 0x41 , 0x0041 },
+{ 0x42 , 0x0042 },
+{ 0x43 , 0x0043 },
+{ 0x44 , 0x0044 },
+{ 0x45 , 0x0045 },
+{ 0x46 , 0x0046 },
+{ 0x47 , 0x0047 },
+{ 0x48 , 0x0048 },
+{ 0x49 , 0x0049 },
+{ 0x4a , 0x004A },
+{ 0x4b , 0x004B },
+{ 0x4c , 0x004C },
+{ 0x4d , 0x004D },
+{ 0x4e , 0x004E },
+{ 0x4f , 0x004F },
+{ 0x50 , 0x0050 },
+{ 0x51 , 0x0051 },
+{ 0x52 , 0x0052 },
+{ 0x53 , 0x0053 },
+{ 0x54 , 0x0054 },
+{ 0x55 , 0x0055 },
+{ 0x56 , 0x0056 },
+{ 0x57 , 0x0057 },
+{ 0x58 , 0x0058 },
+{ 0x59 , 0x0059 },
+{ 0x5a , 0x005A },
+{ 0x5b , 0x005B },
+{ 0x5c , 0x005C },
+{ 0x5d , 0x005D },
+{ 0x5e , 0x005E },
+{ 0x5f , 0x005F },
+{ 0x60 , 0x0060 },
+{ 0x61 , 0x0061 },
+{ 0x62 , 0x0062 },
+{ 0x63 , 0x0063 },
+{ 0x64 , 0x0064 },
+{ 0x65 , 0x0065 },
+{ 0x66 , 0x0066 },
+{ 0x67 , 0x0067 },
+{ 0x68 , 0x0068 },
+{ 0x69 , 0x0069 },
+{ 0x6a , 0x006A },
+{ 0x6b , 0x006B },
+{ 0x6c , 0x006C },
+{ 0x6d , 0x006D },
+{ 0x6e , 0x006E },
+{ 0x6f , 0x006F },
+{ 0x70 , 0x0070 },
+{ 0x71 , 0x0071 },
+{ 0x72 , 0x0072 },
+{ 0x73 , 0x0073 },
+{ 0x74 , 0x0074 },
+{ 0x75 , 0x0075 },
+{ 0x76 , 0x0076 },
+{ 0x77 , 0x0077 },
+{ 0x78 , 0x0078 },
+{ 0x79 , 0x0079 },
+{ 0x7a , 0x007A },
+{ 0x7b , 0x007B },
+{ 0x7c , 0x007C },
+{ 0x7d , 0x007D },
+{ 0x7e , 0x007E },
+{ 0x7f , 0x007F },
+{ 0x80 , 0x2500 },
+{ 0x81 , 0x2502 },
+{ 0x82 , 0x250C },
+{ 0x83 , 0x2510 },
+{ 0x84 , 0x2514 },
+{ 0x85 , 0x2518 },
+{ 0x86 , 0x251C },
+{ 0x87 , 0x2524 },
+{ 0x88 , 0x252C },
+{ 0x89 , 0x2534 },
+{ 0x8a , 0x253C },
+{ 0x8b , 0x2580 },
+{ 0x8c , 0x2584 },
+{ 0x8d , 0x2588 },
+{ 0x8e , 0x258C },
+{ 0x8f , 0x2590 },
+{ 0x90 , 0x2591 },
+{ 0x91 , 0x2592 },
+{ 0x92 , 0x2593 },
+{ 0x93 , 0x2320 },
+{ 0x94 , 0x25A0 },
+{ 0x95 , 0x2219 },
+{ 0x96 , 0x221A },
+{ 0x97 , 0x2248 },
+{ 0x98 , 0x2264 },
+{ 0x99 , 0x2265 },
+{ 0x9a , 0x00A0 },
+{ 0x9b , 0x2321 },
+{ 0x9c , 0x00B0 },
+{ 0x9d , 0x00B2 },
+{ 0x9e , 0x00B7 },
+{ 0x9f , 0x00F7 },
+{ 0xa0 , 0x2550 },
+{ 0xa1 , 0x2551 },
+{ 0xa2 , 0x2552 },
+{ 0xa3 , 0x0451 },
+{ 0xa4 , 0x0454 },
+{ 0xa5 , 0x2554 },
+{ 0xa6 , 0x0456 },
+{ 0xa7 , 0x0457 },
+{ 0xa8 , 0x2557 },
+{ 0xa9 , 0x2558 },
+{ 0xaa , 0x2559 },
+{ 0xab , 0x255A },
+{ 0xac , 0x255B },
+{ 0xad , 0x0491 },
+{ 0xae , 0x255D },
+{ 0xaf , 0x255E },
+{ 0xb0 , 0x255F },
+{ 0xb1 , 0x2560 },
+{ 0xb2 , 0x2561 },
+{ 0xb3 , 0x0401 },
+{ 0xb4 , 0x0404 },
+{ 0xb5 , 0x2563 },
+{ 0xb6 , 0x0406 },
+{ 0xb7 , 0x0407 },
+{ 0xb8 , 0x2566 },
+{ 0xb9 , 0x2567 },
+{ 0xba , 0x2568 },
+{ 0xbb , 0x2569 },
+{ 0xbc , 0x256A },
+{ 0xbd , 0x0490 },
+{ 0xbe , 0x256C },
+{ 0xbf , 0x00A9 },
+{ 0xc0 , 0x044E },
+{ 0xc1 , 0x0430 },
+{ 0xc2 , 0x0431 },
+{ 0xc3 , 0x0446 },
+{ 0xc4 , 0x0434 },
+{ 0xc5 , 0x0435 },
+{ 0xc6 , 0x0444 },
+{ 0xc7 , 0x0433 },
+{ 0xc8 , 0x0445 },
+{ 0xc9 , 0x0438 },
+{ 0xca , 0x0439 },
+{ 0xcb , 0x043A },
+{ 0xcc , 0x043B },
+{ 0xcd , 0x043C },
+{ 0xce , 0x043D },
+{ 0xcf , 0x043E },
+{ 0xd0 , 0x043F },
+{ 0xd1 , 0x044F },
+{ 0xd2 , 0x0440 },
+{ 0xd3 , 0x0441 },
+{ 0xd4 , 0x0442 },
+{ 0xd5 , 0x0443 },
+{ 0xd6 , 0x0436 },
+{ 0xd7 , 0x0432 },
+{ 0xd8 , 0x044C },
+{ 0xd9 , 0x044B },
+{ 0xda , 0x0437 },
+{ 0xdb , 0x0448 },
+{ 0xdc , 0x044D },
+{ 0xdd , 0x0449 },
+{ 0xde , 0x0447 },
+{ 0xdf , 0x044A },
+{ 0xe0 , 0x042E },
+{ 0xe1 , 0x0410 },
+{ 0xe2 , 0x0411 },
+{ 0xe3 , 0x0426 },
+{ 0xe4 , 0x0414 },
+{ 0xe5 , 0x0415 },
+{ 0xe6 , 0x0424 },
+{ 0xe7 , 0x0413 },
+{ 0xe8 , 0x0425 },
+{ 0xe9 , 0x0418 },
+{ 0xea , 0x0419 },
+{ 0xeb , 0x041A },
+{ 0xec , 0x041B },
+{ 0xed , 0x041C },
+{ 0xee , 0x041D },
+{ 0xef , 0x041E },
+{ 0xf0 , 0x041F },
+{ 0xf1 , 0x042F },
+{ 0xf2 , 0x0420 },
+{ 0xf3 , 0x0421 },
+{ 0xf4 , 0x0422 },
+{ 0xf5 , 0x0423 },
+{ 0xf6 , 0x0416 },
+{ 0xf7 , 0x0412 },
+{ 0xf8 , 0x042C },
+{ 0xf9 , 0x042B },
+{ 0xfa , 0x0417 },
+{ 0xfb , 0x0428 },
+{ 0xfc , 0x042D },
+{ 0xfd , 0x0429 },
+{ 0xfe , 0x0427 },
+{ 0xff , 0x042A },
diff --git a/ap/build/uClibc/extra/locale/charmaps/TIS-620.pairs b/ap/build/uClibc/extra/locale/charmaps/TIS-620.pairs
new file mode 100644
index 0000000..618a3be
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/charmaps/TIS-620.pairs
@@ -0,0 +1,215 @@
+{ 0x00 , 0x0000 },
+{ 0x01 , 0x0001 },
+{ 0x02 , 0x0002 },
+{ 0x03 , 0x0003 },
+{ 0x04 , 0x0004 },
+{ 0x05 , 0x0005 },
+{ 0x06 , 0x0006 },
+{ 0x07 , 0x0007 },
+{ 0x08 , 0x0008 },
+{ 0x09 , 0x0009 },
+{ 0x0a , 0x000A },
+{ 0x0b , 0x000B },
+{ 0x0c , 0x000C },
+{ 0x0d , 0x000D },
+{ 0x0e , 0x000E },
+{ 0x0f , 0x000F },
+{ 0x10 , 0x0010 },
+{ 0x11 , 0x0011 },
+{ 0x12 , 0x0012 },
+{ 0x13 , 0x0013 },
+{ 0x14 , 0x0014 },
+{ 0x15 , 0x0015 },
+{ 0x16 , 0x0016 },
+{ 0x17 , 0x0017 },
+{ 0x18 , 0x0018 },
+{ 0x19 , 0x0019 },
+{ 0x1a , 0x001A },
+{ 0x1b , 0x001B },
+{ 0x1c , 0x001C },
+{ 0x1d , 0x001D },
+{ 0x1e , 0x001E },
+{ 0x1f , 0x001F },
+{ 0x20 , 0x0020 },
+{ 0x21 , 0x0021 },
+{ 0x22 , 0x0022 },
+{ 0x23 , 0x0023 },
+{ 0x24 , 0x0024 },
+{ 0x25 , 0x0025 },
+{ 0x26 , 0x0026 },
+{ 0x27 , 0x0027 },
+{ 0x28 , 0x0028 },
+{ 0x29 , 0x0029 },
+{ 0x2a , 0x002A },
+{ 0x2b , 0x002B },
+{ 0x2c , 0x002C },
+{ 0x2d , 0x002D },
+{ 0x2e , 0x002E },
+{ 0x2f , 0x002F },
+{ 0x30 , 0x0030 },
+{ 0x31 , 0x0031 },
+{ 0x32 , 0x0032 },
+{ 0x33 , 0x0033 },
+{ 0x34 , 0x0034 },
+{ 0x35 , 0x0035 },
+{ 0x36 , 0x0036 },
+{ 0x37 , 0x0037 },
+{ 0x38 , 0x0038 },
+{ 0x39 , 0x0039 },
+{ 0x3a , 0x003A },
+{ 0x3b , 0x003B },
+{ 0x3c , 0x003C },
+{ 0x3d , 0x003D },
+{ 0x3e , 0x003E },
+{ 0x3f , 0x003F },
+{ 0x40 , 0x0040 },
+{ 0x41 , 0x0041 },
+{ 0x42 , 0x0042 },
+{ 0x43 , 0x0043 },
+{ 0x44 , 0x0044 },
+{ 0x45 , 0x0045 },
+{ 0x46 , 0x0046 },
+{ 0x47 , 0x0047 },
+{ 0x48 , 0x0048 },
+{ 0x49 , 0x0049 },
+{ 0x4a , 0x004A },
+{ 0x4b , 0x004B },
+{ 0x4c , 0x004C },
+{ 0x4d , 0x004D },
+{ 0x4e , 0x004E },
+{ 0x4f , 0x004F },
+{ 0x50 , 0x0050 },
+{ 0x51 , 0x0051 },
+{ 0x52 , 0x0052 },
+{ 0x53 , 0x0053 },
+{ 0x54 , 0x0054 },
+{ 0x55 , 0x0055 },
+{ 0x56 , 0x0056 },
+{ 0x57 , 0x0057 },
+{ 0x58 , 0x0058 },
+{ 0x59 , 0x0059 },
+{ 0x5a , 0x005A },
+{ 0x5b , 0x005B },
+{ 0x5c , 0x005C },
+{ 0x5d , 0x005D },
+{ 0x5e , 0x005E },
+{ 0x5f , 0x005F },
+{ 0x60 , 0x0060 },
+{ 0x61 , 0x0061 },
+{ 0x62 , 0x0062 },
+{ 0x63 , 0x0063 },
+{ 0x64 , 0x0064 },
+{ 0x65 , 0x0065 },
+{ 0x66 , 0x0066 },
+{ 0x67 , 0x0067 },
+{ 0x68 , 0x0068 },
+{ 0x69 , 0x0069 },
+{ 0x6a , 0x006A },
+{ 0x6b , 0x006B },
+{ 0x6c , 0x006C },
+{ 0x6d , 0x006D },
+{ 0x6e , 0x006E },
+{ 0x6f , 0x006F },
+{ 0x70 , 0x0070 },
+{ 0x71 , 0x0071 },
+{ 0x72 , 0x0072 },
+{ 0x73 , 0x0073 },
+{ 0x74 , 0x0074 },
+{ 0x75 , 0x0075 },
+{ 0x76 , 0x0076 },
+{ 0x77 , 0x0077 },
+{ 0x78 , 0x0078 },
+{ 0x79 , 0x0079 },
+{ 0x7a , 0x007A },
+{ 0x7b , 0x007B },
+{ 0x7c , 0x007C },
+{ 0x7d , 0x007D },
+{ 0x7e , 0x007E },
+{ 0x7f , 0x007F },
+{ 0xa1 , 0x0E01 },
+{ 0xa2 , 0x0E02 },
+{ 0xa3 , 0x0E03 },
+{ 0xa4 , 0x0E04 },
+{ 0xa5 , 0x0E05 },
+{ 0xa6 , 0x0E06 },
+{ 0xa7 , 0x0E07 },
+{ 0xa8 , 0x0E08 },
+{ 0xa9 , 0x0E09 },
+{ 0xaa , 0x0E0A },
+{ 0xab , 0x0E0B },
+{ 0xac , 0x0E0C },
+{ 0xad , 0x0E0D },
+{ 0xae , 0x0E0E },
+{ 0xaf , 0x0E0F },
+{ 0xb0 , 0x0E10 },
+{ 0xb1 , 0x0E11 },
+{ 0xb2 , 0x0E12 },
+{ 0xb3 , 0x0E13 },
+{ 0xb4 , 0x0E14 },
+{ 0xb5 , 0x0E15 },
+{ 0xb6 , 0x0E16 },
+{ 0xb7 , 0x0E17 },
+{ 0xb8 , 0x0E18 },
+{ 0xb9 , 0x0E19 },
+{ 0xba , 0x0E1A },
+{ 0xbb , 0x0E1B },
+{ 0xbc , 0x0E1C },
+{ 0xbd , 0x0E1D },
+{ 0xbe , 0x0E1E },
+{ 0xbf , 0x0E1F },
+{ 0xc0 , 0x0E20 },
+{ 0xc1 , 0x0E21 },
+{ 0xc2 , 0x0E22 },
+{ 0xc3 , 0x0E23 },
+{ 0xc4 , 0x0E24 },
+{ 0xc5 , 0x0E25 },
+{ 0xc6 , 0x0E26 },
+{ 0xc7 , 0x0E27 },
+{ 0xc8 , 0x0E28 },
+{ 0xc9 , 0x0E29 },
+{ 0xca , 0x0E2A },
+{ 0xcb , 0x0E2B },
+{ 0xcc , 0x0E2C },
+{ 0xcd , 0x0E2D },
+{ 0xce , 0x0E2E },
+{ 0xcf , 0x0E2F },
+{ 0xd0 , 0x0E30 },
+{ 0xd1 , 0x0E31 },
+{ 0xd2 , 0x0E32 },
+{ 0xd3 , 0x0E33 },
+{ 0xd4 , 0x0E34 },
+{ 0xd5 , 0x0E35 },
+{ 0xd6 , 0x0E36 },
+{ 0xd7 , 0x0E37 },
+{ 0xd8 , 0x0E38 },
+{ 0xd9 , 0x0E39 },
+{ 0xda , 0x0E3A },
+{ 0xdf , 0x0E3F },
+{ 0xe0 , 0x0E40 },
+{ 0xe1 , 0x0E41 },
+{ 0xe2 , 0x0E42 },
+{ 0xe3 , 0x0E43 },
+{ 0xe4 , 0x0E44 },
+{ 0xe5 , 0x0E45 },
+{ 0xe6 , 0x0E46 },
+{ 0xe7 , 0x0E47 },
+{ 0xe8 , 0x0E48 },
+{ 0xe9 , 0x0E49 },
+{ 0xea , 0x0E4A },
+{ 0xeb , 0x0E4B },
+{ 0xec , 0x0E4C },
+{ 0xed , 0x0E4D },
+{ 0xee , 0x0E4E },
+{ 0xef , 0x0E4F },
+{ 0xf0 , 0x0E50 },
+{ 0xf1 , 0x0E51 },
+{ 0xf2 , 0x0E52 },
+{ 0xf3 , 0x0E53 },
+{ 0xf4 , 0x0E54 },
+{ 0xf5 , 0x0E55 },
+{ 0xf6 , 0x0E56 },
+{ 0xf7 , 0x0E57 },
+{ 0xf8 , 0x0E58 },
+{ 0xf9 , 0x0E59 },
+{ 0xfa , 0x0E5A },
+{ 0xfb , 0x0E5B },
diff --git a/ap/build/uClibc/extra/locale/collation/af_ZA b/ap/build/uClibc/extra/locale/collation/af_ZA
new file mode 100644
index 0000000..d66184e
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/af_ZA
@@ -0,0 +1 @@
+copy "en_DK"
diff --git a/ap/build/uClibc/extra/locale/collation/am_ET b/ap/build/uClibc/extra/locale/collation/am_ET
new file mode 100644
index 0000000..94a9181
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/am_ET
@@ -0,0 +1,26 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
+% Correct Unicode Addressing
+script <ETHIOPIC>
+order_start <ETHIOPIC>;forward
+# qW qWi
+<U124D>
+<U124A>
+# QW QWi
+<U125D>
+<U125A>
+# hW hWi
+<U128D>
+<U128A>
+# kW kWi
+<U12B5>
+<U12B2>
+# KW KWi
+<U12C5>
+<U12C2>
+# gW gWi
+<U1315>
+<U1312>
+order_end
diff --git a/ap/build/uClibc/extra/locale/collation/ar_AE b/ap/build/uClibc/extra/locale/collation/ar_AE
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ar_AE
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/ar_BH b/ap/build/uClibc/extra/locale/collation/ar_BH
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ar_BH
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/ar_DZ b/ap/build/uClibc/extra/locale/collation/ar_DZ
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ar_DZ
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/ar_EG b/ap/build/uClibc/extra/locale/collation/ar_EG
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ar_EG
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/ar_IN b/ap/build/uClibc/extra/locale/collation/ar_IN
new file mode 100644
index 0000000..d05f74d
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ar_IN
@@ -0,0 +1,3 @@
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/ar_IQ b/ap/build/uClibc/extra/locale/collation/ar_IQ
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ar_IQ
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/ar_JO b/ap/build/uClibc/extra/locale/collation/ar_JO
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ar_JO
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/ar_KW b/ap/build/uClibc/extra/locale/collation/ar_KW
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ar_KW
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/ar_LB b/ap/build/uClibc/extra/locale/collation/ar_LB
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ar_LB
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/ar_LY b/ap/build/uClibc/extra/locale/collation/ar_LY
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ar_LY
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/ar_MA b/ap/build/uClibc/extra/locale/collation/ar_MA
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ar_MA
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/ar_OM b/ap/build/uClibc/extra/locale/collation/ar_OM
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ar_OM
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/ar_QA b/ap/build/uClibc/extra/locale/collation/ar_QA
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ar_QA
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/ar_SA b/ap/build/uClibc/extra/locale/collation/ar_SA
new file mode 100644
index 0000000..a01c4ec
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ar_SA
@@ -0,0 +1,220 @@
+
+
+order_start forward; forward
+<U0020> <U0020>
+<U0030> <U0030>
+<U0031> <U0031>
+<U0032> <U0032>
+<U0033> <U0033>
+<U0034> <U0034>
+<U0035> <U0035>
+<U0036> <U0036>
+<U0037> <U0037>
+<U0038> <U0038>
+<U0039> <U0039>
+<U0041> <U0041>;<U0041>
+<U0061> <U0041>;<U0061>
+<U0042> <U0042>;<U0042>
+<U0062> <U0042>;<U0062>
+<U0043> <U0043>;<U0043>
+<U0063> <U0043>;<U0063>
+<U0044> <U0044>;<U0044>
+<U0064> <U0044>;<U0064>
+<U0045> <U0045>;<U0045>
+<U0065> <U0045>;<U0065>
+<U0046> <U0046>;<U0046>
+<U0066> <U0046>;<U0066>
+<U0047> <U0047>;<U0047>
+<U0067> <U0047>;<U0067>
+<U0048> <U0048>;<U0048>
+<U0068> <U0048>;<U0068>
+<U0049> <U0049>;<U0049>
+<U0069> <U0049>;<U0069>
+<U004A> <U004A>;<U004A>
+<U006A> <U004A>;<U006A>
+<U004B> <U004B>;<U004B>
+<U006B> <U004B>;<U006B>
+<U004C> <U004C>;<U004C>
+<U006C> <U004C>;<U006C>
+<U004D> <U004D>;<U004D>
+<U006D> <U004D>;<U006D>
+<U004E> <U004E>;<U004E>
+<U006E> <U004E>;<U006E>
+<U004F> <U004F>;<U004F>
+<U006F> <U004F>;<U006F>
+<U0050> <U0050>;<U0050>
+<U0070> <U0050>;<U0070>
+<U0051> <U0051>;<U0051>
+<U0071> <U0051>;<U0071>
+<U0052> <U0052>;<U0052>
+<U0072> <U0052>;<U0072>
+<U0053> <U0053>;<U0053>
+<U0073> <U0053>;<U0073>
+<U0054> <U0054>;<U0054>
+<U0074> <U0054>;<U0074>
+<U0055> <U0055>;<U0055>
+<U0075> <U0055>;<U0075>
+<U0056> <U0056>;<U0056>
+<U0076> <U0056>;<U0076>
+<U0057> <U0057>;<U0057>
+<U0077> <U0057>;<U0077>
+<U0058> <U0058>;<U0058>
+<U0078> <U0058>;<U0078>
+<U0059> <U0059>;<U0059>
+<U0079> <U0059>;<U0079>
+<U005A> <U005A>;<U005A>
+<U007A> <U005A>;<U007A>
+<U0021> <U0021>
+<U0022> <U0022>
+<U0023> <U0023>
+<U0024> <U0024>
+<U0025> <U0025>
+<U0026> <U0026>
+<U0027> <U0027>
+<U0028> <U0028>
+<U0029> <U0029>
+<U002A> <U002A>
+<U002B> <U002B>
+<U002C> <U002C>
+<U002D> <U002D>
+<U002E> <U002E>
+<U002F> <U002F>
+<U003A> <U003A>
+<U003B> <U003B>
+<U003C> <U003C>
+<U003D> <U003D>
+<U003E> <U003E>
+<U003F> <U003F>
+<U0040> <U0040>
+<U005B> <U005B>
+<U005C> <U005C>
+<U005D> <U005D>
+<U005E> <U005E>
+<U005F> <U005F>
+<U0060> <U0060>
+<U007B> <U007B>
+<U007C> <U007C>
+<U007D> <U007D>
+<U007E> <U007E>
+<U00A0> <U00A0>
+<U0621> <U0621>
+<U0622> <U0622>
+<U0623> <U0623>
+<U0624> <U0624>
+<U0625> <U0625>
+<U0626> <U0626>
+<U0627> <U0627>
+<U0628> <U0628>
+<U0629> <U0629>
+<U062A> <U062A>
+<U062B> <U062B>
+<U062C> <U062C>
+<U062D> <U062D>
+<U062E> <U062E>
+<U062F> <U062F>
+<U0630> <U0630>
+<U0631> <U0631>
+<U0632> <U0632>
+<U0633> <U0633>
+<U0634> <U0634>
+<U0635> <U0635>
+<U0636> <U0636>
+<U0637> <U0637>
+<U0638> <U0638>
+<U0639> <U0639>
+<U063A> <U063A>
+<U0641> <U0641>
+<U0642> <U0642>
+<U0643> <U0643>
+<U0644> <U0644>
+<U0645> <U0645>
+<U0646> <U0646>
+<U0647> <U0647>
+<U0648> <U0648>
+<U0649> <U0649>
+<U064A> <U064A>
+<U00A4> <U00A4>
+<U060C> <U060C>
+<U00AD> <U00AD>
+<U061B> <U061B>
+<U061F> <U061F>
+<U0000> <U0000>
+<U0001> <U0001>
+<U0002> <U0002>
+<U0003> <U0003>
+<U0004> <U0004>
+<U0005> <U0005>
+<U0006> <U0006>
+<U0007> <U0007>
+<U0008> <U0008>
+<U0009> <U0009>
+<U000A> <U000A>
+<U000B> <U000B>
+<U000C> <U000C>
+<U000D> <U000D>
+<U000E> <U000E>
+<U000F> <U000F>
+<U0010> <U0010>
+<U0011> <U0011>
+<U0012> <U0012>
+<U0013> <U0013>
+<U0014> <U0014>
+<U0015> <U0015>
+<U0016> <U0016>
+<U0017> <U0017>
+<U0018> <U0018>
+<U0019> <U0019>
+<U001A> <U001A>
+<U001B> <U001B>
+<U001C> <U001C>
+<U001D> <U001D>
+<U001E> <U001E>
+<U001F> <U001F>
+<U0080> <U0080>
+<U0081> <U0081>
+<U0082> <U0082>
+<U0083> <U0083>
+<U0084> <U0084>
+<U0085> <U0085>
+<U0086> <U0086>
+<U0087> <U0087>
+<U0088> <U0088>
+<U0089> <U0089>
+<U008A> <U008A>
+<U008B> <U008B>
+<U008C> <U008C>
+<U008D> <U008D>
+<U008E> <U008E>
+<U008F> <U008F>
+<U0090> <U0090>
+<U0091> <U0091>
+<U0092> <U0092>
+<U0093> <U0093>
+<U0094> <U0094>
+<U0095> <U0095>
+<U0096> <U0096>
+<U0097> <U0097>
+<U0098> <U0098>
+<U0099> <U0099>
+<U009A> <U009A>
+<U009B> <U009B>
+<U009C> <U009C>
+<U009D> <U009D>
+<U009E> <U009E>
+<U009F> <U009F>
+<U007F> <U007F>
+<U0640> IGNORE
+<U064B> IGNORE
+<U064C> IGNORE
+<U064D> IGNORE
+<U064E> IGNORE
+<U064F> IGNORE
+<U0650> IGNORE
+<U0651> IGNORE
+<U0652> IGNORE
+
+% UCLIBC -- add an explicit UNDEFINED entry
+UNDEFINED
+order_end
+
+
diff --git a/ap/build/uClibc/extra/locale/collation/ar_SD b/ap/build/uClibc/extra/locale/collation/ar_SD
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ar_SD
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/ar_SY b/ap/build/uClibc/extra/locale/collation/ar_SY
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ar_SY
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/ar_TN b/ap/build/uClibc/extra/locale/collation/ar_TN
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ar_TN
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/ar_YE b/ap/build/uClibc/extra/locale/collation/ar_YE
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ar_YE
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/az_AZ b/ap/build/uClibc/extra/locale/collation/az_AZ
new file mode 100644
index 0000000..daaeacc
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/az_AZ
@@ -0,0 +1,137 @@
+% The new (1991) latin azeri alphabet is:
+% <a>, <b>, <c>, <c,>, <d>, <e>, <sw>, <f>, <g>, <g(>, <h>, <x>,
+% <i> (dotless i), <i.> (i with dot), <j>, <k>, <q>, <l>, <m>, <n>, <o>,
+% <o:>, <p>, <r>, <s>, <s,>, <t>, <u>, <u:>, <v>, <y>, <z>
+%
+% cyrillic alphabet:
+% <a=>, <b=>, <g=>, <g-=>, <d=>, <e=>, <sw=>, <z%>, <z=>, <i=>, <y=>,
+% <j%>, <k=>, <k//=>, <l=>, <m=>, <n=>, <o=>, <o-=>, <p=>, <r=>, <s=>,
+% <t=>, <u=>, <u'=>, <f=>, <h=>, <h'=>, <c%>, <c%//=>, <s%>
+
+copy "iso14651_t1"
+
+collating-symbol <c,>
+collating-symbol <sw>
+collating-symbol <g(>
+collating-symbol <i.>
+collating-symbol <o:>
+collating-symbol <s,>
+collating-symbol <u:>
+
+collating-symbol <g-=>
+collating-symbol <sw=>
+collating-symbol <k//=>
+collating-symbol <o-=>
+collating-symbol <u'=>
+collating-symbol <h'=>
+collating-symbol <c%//=>
+
+reorder-after <c>
+<c,>
+reorder-after <e>
+<sw>
+reorder-after <g>
+<g(>
+reorder-after <h>
+<x>
+<i>
+<i.>
+<j>
+<k>
+<q>
+reorder-after <o>
+<o:>
+reorder-after <s>
+<s,>
+reorder-after <u>
+<u:>
+
+reorder-after <CYR-GHE>
+<g-=>
+reorder-after <CYR-IE>
+<sw=>
+reorder-after <CYR-KA>
+<k//=>
+reorder-after <CYR-O>
+<o-=>
+reorder-after <CYR-OUBRE>
+<u'=>
+reorder-after <CYR-HA>
+<h'=>
+reorder-after <CYR-CHE>
+<c%//=>
+
+reorder-after <U0063>
+<U00E7> <c,>;<CDI>;<MIN>;IGNORE
+reorder-after <U0043>
+<U00C7> <c,>;<CDI>;<CAP>;IGNORE
+
+reorder-after <U0065>
+<U0259> <sw>;<PCL>;<MIN>;IGNORE
+reorder-after <U0045>
+<U018F> <sw>;<PCL>;<CAP>;IGNORE
+
+reorder-after <U0067>
+<U011F> <g(>;<BRE>;<MIN>;IGNORE
+reorder-after <U0047>
+<U011E> <g(>;<BRE>;<CAP>;IGNORE
+
+reorder-after <U0068>
+<U0131> <i>;<BAS>;<MIN>;IGNORE
+<U0069> <i.>;<PCT>;<MIN>;IGNORE
+reorder-after <U0048>
+<U0049> <i>;<BAS>;<CAP>;IGNORE
+<U0130> <i.>;<PCT>;<CAP>;IGNORE
+
+reorder-after <U006F>
+<U00F6> <o:>;<REU>;<MIN>;IGNORE
+reorder-after <U004F>
+<U00D6> <o:>;<REU>;<CAP>;IGNORE
+
+reorder-after <U0073>
+<U015F> <s,>;<CDI>;<MIN>;IGNORE
+reorder-after <U0053>
+<U015E> <s,>;<CDI>;<CAP>;IGNORE
+
+reorder-after <U0075>
+<U00FC> <u:>;<REU>;<MIN>;IGNORE
+reorder-after <U0055>
+<U00DC> <u:>;<REU>;<CAP>;IGNORE
+
+reorder-after <U0433>
+<U0493> <g-=>;<PCL>;<MIN>;IGNORE
+reorder-after <U0413>
+<U0492> <g-=>;<PCL>;<CAP>;IGNORE
+
+reorder-after <U0435>
+<U04D9> <sw=>;<PCL>;<MIN>;IGNORE
+reorder-after <U0415>
+<U04D8> <sw=>;<PCL>;<CAP>;IGNORE
+
+reorder-after <U043A>
+<U049D> <k//=>;<PCL>;<MIN>;IGNORE
+reorder-after <U041A>
+<U049C> <k//=>;<PCL>;<CAP>;IGNORE
+
+reorder-after <U043E>
+<U04E9> <o-=>;<PCL>;<MIN>;IGNORE
+reorder-after <U041E>
+<U04E8> <o-=>;<PCL>;<CAP>;IGNORE
+
+reorder-after <U0443>
+<U04AF> <u'=>;<PCL>;<MIN>;IGNORE
+reorder-after <U0423>
+<U04AE> <u'=>;<PCL>;<CAP>;IGNORE
+
+reorder-after <U0445>
+<U04BB> <h'=>;<PCL>;<MIN>;IGNORE
+reorder-after <U0425>
+<U04BA> <h'=>;<PCL>;<CAP>;IGNORE
+
+reorder-after <U0447>
+<U04B9> <c%//=>;<PCL>;<MIN>;IGNORE
+reorder-after <U0427>
+<U04B8> <c%//=>;<PCL>;<CAP>;IGNORE
+
+reorder-end
+
diff --git a/ap/build/uClibc/extra/locale/collation/be_BY b/ap/build/uClibc/extra/locale/collation/be_BY
new file mode 100644
index 0000000..342a761
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/be_BY
@@ -0,0 +1,15 @@
+copy "iso14651_t1"
+
+% iso14651_t1 is missing Ukrainian ghe
+collating-symbol <UKR-GHE>
+
+reorder-after <CYR-GZHE>
+<UKR-GHE>
+
+reorder-after <U0453>
+<U0491> <UKR-GHE>;<BAS>;<MIN>;IGNORE
+
+reorder-after <U0403>
+<U0490> <UKR-GHE>;<BAS>;<CAP>;IGNORE
+
+reorder-end
diff --git a/ap/build/uClibc/extra/locale/collation/bg_BG b/ap/build/uClibc/extra/locale/collation/bg_BG
new file mode 100644
index 0000000..ddf84dc
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/bg_BG
@@ -0,0 +1,106 @@
+
+% We have made the following changes to the basic collation scheme in
+% the file iso14651_t1:
+% 1. The Cyrillic script is first in the order.
+% 2. The non-Bulgarian Cyrillic letters are sorted according to
+% their transliteration with Bulgarian Cyrillic letters.
+
+copy "iso14651_t1"
+reorder-after <9>
+<CYR-A>
+<CYR-BE>
+<CYR-VE>
+<CYR-GHE>
+<CYR-DE>
+<CYR-GZHE>
+<CYR-DJE>
+<CYR-IE>
+<UKR-IE>
+<CYR-IO>
+<CYR-ZHE>
+<CYR-ZE>
+<CYR-DZE>
+<CYR-I>
+<UKR-I>
+<UKR-YI>
+<CYR-IBRE>
+<CYR-JE>
+<CYR-KA>
+<CYR-EL>
+<CYR-LJE>
+<CYR-EM>
+<CYR-EN>
+<CYR-NJE>
+<CYR-O>
+<CYR-PE>
+<CYR-ER>
+<CYR-ES>
+<CYR-TE>
+<CYR-KJE>
+<CYR-TSHE>
+<CYR-OU>
+<CYR-OUBRE>
+<CYR-EF>
+<CYR-HA>
+<CYR-TSE>
+<CYR-CHE>
+<CYR-DCHE>
+<CYR-SHA>
+<CYR-SHTSHA>
+<CYR-SIGDUR>
+<CYR-YEROU>
+<CYR-SIGMOUIL>
+<CYR-E>
+<CYR-YOU>
+<CYR-YA>
+reorder-after <U0433>
+<U0453> <CYR-GHE>;<CYR-GZHE>;<MIN>;IGNORE % Mac. gje
+reorder-after <U0434>
+<U0452> "<CYR-DE><CYR-ZHE>";"<LIG><LIG>";"<MIN><MIN>";IGNORE % CYR-DJE
+<U045F> "<CYR-DE><CYR-ZHE>";"<CYR-DCHE><LIG>";"<MIN><MIN>";IGNORE % CYR-DCHE
+<U0455> "<CYR-DE><CYR-ZE>";"<LIG><LIG>";"<MIN><MIN>";IGNORE % CYR-DZE
+reorder-after <U0435>
+<U0454> <CYR-IE>;<UKR-IE>;<MIN>;IGNORE
+<U0451> <CYR-IE>;<CYR-IO>;<MIN>;IGNORE
+<U044D> <CYR-IE>;<CYR-E>;<MIN>;IGNORE
+reorder-after <U0438>
+<U0406> <CYR-I>;<UKR-I>;<MIN>;IGNORE
+<U0457> <CYR-I>;<UKR-YI>;<MIN>;IGNORE
+<U044B> <CYR-I>;<CYR-YEROU>;<MIN>;IGNORE
+reorder-after <U043A>
+<U045C> <CYR-KA>;<CYR-KJE>;<MIN>;IGNORE
+reorder-after <U043B>
+<U0459> "<CYR-EL><CYR-SIGMOUIL>";"<LIG><LIG>";"<MIN><MIN>";IGNORE % CYR-LJE
+reorder-after <U043D>
+<U045A> "<CYR-EN><CYR-SIGMOUIL>";"<LIG><LIG>";"<MIN><MIN>";IGNORE % CYR-NJE
+reorder-after <U0443>
+<U045E> <CYR-OU>;<CYR-OUBRE>;<MIN>;IGNORE
+reorder-after <U0447>
+<U045B> <CYR-CHE>;<CYR-TSHE>;<MIN>;IGNORE
+reorder-after <U0413>
+<U0403> <CYR-GHE>;<CYR-GZHE>;<CAP>;IGNORE % Mac. gje
+reorder-after <U0414>
+<U0402> "<CYR-DE><CYR-ZHE>";"<LIG><LIG>";"<CAP><CAP>";IGNORE % CYR-DJE
+<U040F> "<CYR-DE><CYR-ZHE>";"<CYR-DCHE><LIG>";"<CAP><CAP>";IGNORE % CYR-DCHE
+<U0405> "<CYR-DE><CYR-ZE>";"<LIG><LIG>";"<CAP><CAP>";IGNORE % CYR-DZE
+reorder-after <U0415>
+<U0404> <CYR-IE>;<UKR-IE>;<CAP>;IGNORE
+<U0401> <CYR-IE>;<CYR-IO>;<CAP>;IGNORE
+<U042D> <CYR-IE>;<CYR-E>;<CAP>;IGNORE
+reorder-after <U0418>
+<U0456> <CYR-I>;<UKR-I>;<CAP>;IGNORE
+<U0407> <CYR-I>;<UKR-YI>;<CAP>;IGNORE
+<U042B> <CYR-I>;<CYR-YEROU>;<CAP>;IGNORE
+reorder-after <U0419>
+<U0408> <CYR-IBRE>;<CYR-JE>;<CAP>;IGNORE
+reorder-after <U041A>
+<U040C> <CYR-KA>;<CYR-KJE>;<CAP>;IGNORE
+reorder-after <U041B>
+<U0409> "<CYR-EL><CYR-SIGMOUIL>";"<LIG><LIG>";"<CAP><CAP>";IGNORE % CYR-LJE
+reorder-after <U041D>
+<U040A> "<CYR-EN><CYR-SIGMOUIL>";"<LIG><LIG>";"<CAP><CAP>";IGNORE % CYR-NJE
+reorder-after <U0423>
+<U040E> <CYR-OU>;<CYR-OUBRE>;<CAP>;IGNORE
+reorder-after <U0427>
+<U040B> <CYR-CHE>;<CYR-TSHE>;<CAP>;IGNORE
+reorder-end
diff --git a/ap/build/uClibc/extra/locale/collation/bn_BD b/ap/build/uClibc/extra/locale/collation/bn_BD
new file mode 100644
index 0000000..9a3ff3b
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/bn_BD
@@ -0,0 +1,2 @@
+% TODO: Bengali sorting should be added
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/bn_IN b/ap/build/uClibc/extra/locale/collation/bn_IN
new file mode 100644
index 0000000..0caba14
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/bn_IN
@@ -0,0 +1,4 @@
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
+%
diff --git a/ap/build/uClibc/extra/locale/collation/br_FR b/ap/build/uClibc/extra/locale/collation/br_FR
new file mode 100644
index 0000000..0887c81
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/br_FR
@@ -0,0 +1,40 @@
+copy "iso14651_t1"
+
+%% a b c ch c'h d e f g h i j k l m n o p q r s t u v w x y z
+collating-symbol <c-h-br>
+collating-element <C-H> from "<U0043><U0048>"
+collating-element <c-h> from "<U0063><U0068>"
+collating-element <C-h> from "<U0043><U0068>"
+collating-element <c-H> from "<U0063><U0048>"
+collating-symbol <c-'-h-br>
+collating-element <C'H> from "<U0043><U0027><U0048>"
+collating-element <c'h> from "<U0063><U0027><U0068>"
+collating-element <C'h> from "<U0043><U0027><U0068>"
+collating-element <c'H> from "<U0063><U0027><U0048>"
+
+collating-symbol <CAP-MIN>
+collating-symbol <MIN-CAP>
+
+reorder-after <MIN>
+<MIN-CAP>
+
+reorder-after <CAP>
+<CAP-MIN>
+
+reorder-after <c>
+<c-h-br>
+<c-'-h-br>
+
+reorder-after <U0063>
+<c-h> <c-h-br>;<PCT>;<MIN>;IGNORE
+<c-H> <c-h-br>;<PCT>;<MIN-CAP>;IGNORE
+<c'h> <c-'-h-br>;<PCT>;<MIN>;IGNORE
+<c'H> <c-'-h-br>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U0043>
+<C-H> <c-h-br>;<PCT>;<CAP>;IGNORE
+<C-h> <c-h-br>;<PCT>;<CAP-MIN>;IGNORE
+<C'H> <c-'-h-br>;<PCT>;<CAP>;IGNORE
+<C'h> <c-'-h-br>;<PCT>;<CAP-MIN>;IGNORE
+
+reorder-end
+
diff --git a/ap/build/uClibc/extra/locale/collation/bs_BA b/ap/build/uClibc/extra/locale/collation/bs_BA
new file mode 100644
index 0000000..24be941
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/bs_BA
@@ -0,0 +1,91 @@
+copy "iso14651_t1"
+
+% a b c c' c< d dz< d// e f g h i j k l lj m n nj o p
+% q r s s< t u v w x y z z<
+
+collating-symbol <d-z-sh>
+collating-element <D-Z<> from "<U0044><U017D>"
+collating-element <D-z<> from "<U0044><U017E>"
+collating-element <d-Z<> from "<U0064><U017D>"
+collating-element <d-z<> from "<U0064><U017E>"
+collating-symbol <l-j-sh>
+collating-element <L-J> from "<U004C><U004A>"
+collating-element <L-j> from "<U004C><U006A>"
+collating-element <l-J> from "<U006C><U004A>"
+collating-element <l-j> from "<U006C><U006A>"
+collating-symbol <n-j-sh>
+collating-element <N-J> from "<U004E><U004A>"
+collating-element <N-j> from "<U004E><U006A>"
+collating-element <n-J> from "<U006E><U004A>"
+collating-element <n-j> from "<U006E><U006A>"
+collating-symbol <cacute>
+collating-symbol <ccaron>
+collating-symbol <d//>
+collating-symbol <scaron>
+collating-symbol <zcaron>
+
+collating-symbol <CAP-MIN>
+collating-symbol <MIN-CAP>
+
+reorder-after <MIN>
+<MIN-CAP>
+reorder-after <CAP>
+<CAP-MIN>
+
+reorder-after <c>
+<cacute>
+<ccaron>
+<d>
+<d-z-sh>
+<d//>
+reorder-after <l>
+<l-j-sh>
+reorder-after <n>
+<n-j-sh>
+reorder-after <s>
+<scaron>
+reorder-after <z>
+<zcaron>
+
+reorder-after <U0063>
+<U0107> <cacute>;<PCT>;<MIN>;IGNORE
+<U010D> <ccaron>;<PCT>;<MIN>;IGNORE
+reorder-after <U0043>
+<U0106> <cacute>;<PCT>;<CAP>;IGNORE
+<U010C> <ccaron>;<PCT>;<CAP>;IGNORE
+
+reorder-after <U0064>
+<d-z<> <d-z-sh>;<PCT>;<MIN>;IGNORE
+<d-Z<> <d-z-sh>;<PCT>;<MIN-CAP>;IGNORE
+<U0111> <d//>;<PCT>;<MIN>;IGNORE
+reorder-after <U0044>
+<D-Z<> <d-z-sh>;<PCT>;<CAP>;IGNORE
+<D-z<> <d-z-sh>;<PCT>;<CAP-MIN>;IGNORE
+<U0110> <d//>;<PCT>;<CAP>;IGNORE
+
+%reorder-after <U006C>
+<l-j> <l-j-sh>;<PCT>;<MIN>;IGNORE
+<l-J> <l-j-sh>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U004C>
+<L-J> <l-j-sh>;<PCT>;<CAP>;IGNORE
+<L-j> <l-j-sh>;<PCT>;<CAP-MIN>;IGNORE
+
+reorder-after <U006E>
+<n-j> <n-j-sh>;<PCT>;<MIN>;IGNORE
+<n-J> <n-j-sh>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U004E>
+<N-J> <n-j-sh>;<PCT>;<CAP>;IGNORE
+<N-j> <n-j-sh>;<PCT>;<CAP-MIN>;IGNORE
+
+reorder-after <U0073>
+<U0161> <scaron>;<PCT>;<MIN>;IGNORE
+reorder-after <U0053>
+<U0160> <scaron>;<PCT>;<CAP>;IGNORE
+
+reorder-after <U007A>
+<U017E> <zcaron>;<PCT>;<MIN>;IGNORE
+reorder-after <U005A>
+<U017D> <zcaron>;<PCT>;<CAP>;IGNORE
+
+reorder-end
+
diff --git a/ap/build/uClibc/extra/locale/collation/ca_ES b/ap/build/uClibc/extra/locale/collation/ca_ES
new file mode 100644
index 0000000..2c0a033
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ca_ES
@@ -0,0 +1,2061 @@
+
+% Base collation scheme: 1994-03-22
+
+% Ordering algorithm:
+% 1. Spaces and hyphen (but not soft
+% hyphen) before punctuation
+% characters, punctuation characters
+% before numbers,
+% numbers before letters.
+% 2. Letters with diacritical marks are
+% members of equivalence classes
+% 3. A distinction is made with regards
+% to case as noted below.
+% 4. Special characters are ignored
+% when comparing letters, but then
+% they are considered
+% 5. The alphabets are sorted in order
+% of first appearance in ISO 10646:
+% Latin, Greek, Cyrillic, etc.
+%
+% According to Greek specifications,
+% the steps 2. and 3. above are reversed
+% for the Greek script
+
+% collating symbols
+
+% The collating symbol naming is
+% mostly taken from ISO 10646-1,
+% for example the case and accent
+% names are from this standard.
+
+collating-symbol <CAPITAL>
+collating-symbol <CAPITAL-SMALL>
+collating-symbol <SMALL-CAPITAL>
+collating-symbol <SMALL>
+
+% <CAPITAL-SMALL> and <SMALL-CAPITAL>
+% are for cases like Danish <U0041><U0061>
+% and Spanish <U0043><U0068> being treated
+% as one letter.
+
+% The <a8> ...... <z8> collating
+% symbols have defined weights as
+% the last character in a group of
+% Latin letters. They are used
+% to specify deltas by locales using
+% a locale as the default ordering
+% and by "replace-after" statements
+% specifying the changed placement
+% in an ordering of a character.
+
+collating-symbol <a8>
+collating-symbol <b8>
+collating-symbol <c8>
+collating-symbol <d8>
+collating-symbol <e8>
+collating-symbol <f8>
+collating-symbol <g8>
+collating-symbol <h8>
+collating-symbol <i8>
+collating-symbol <j8>
+collating-symbol <k8>
+collating-symbol <l8>
+collating-symbol <m8>
+collating-symbol <n8>
+collating-symbol <o8>
+collating-symbol <p8>
+collating-symbol <q8>
+collating-symbol <r8>
+collating-symbol <s8>
+collating-symbol <t8>
+collating-symbol <u8>
+collating-symbol <v8>
+collating-symbol <w8>
+collating-symbol <x8>
+collating-symbol <y8>
+collating-symbol <z8>
+
+collating-symbol <NONE>
+collating-symbol <ACUTE>
+collating-symbol <ACUTE+DOT>
+collating-symbol <GRAVE>
+collating-symbol <DOUBLE-GRAVE>
+collating-symbol <BREVE>
+collating-symbol <BREVE+ACUTE>
+collating-symbol <BREVE+GRAVE>
+collating-symbol <BREVE+MACRON>
+collating-symbol <BREVE+HOOK>
+collating-symbol <BREVE+TILDE>
+collating-symbol <BREVE+DOT-BELOW>
+collating-symbol <BREVE-BELOW>
+collating-symbol <INVERTED-BREVE>
+collating-symbol <CIRCUMFLEX>
+collating-symbol <CIRCUMFLEX+ACUTE>
+collating-symbol <CIRCUMFLEX+GRAVE>
+collating-symbol <CIRCUMFLEX+HOOK>
+collating-symbol <CIRCUMFLEX+TILDE>
+collating-symbol <CIRCUMFLEX+DOT-BELOW>
+collating-symbol <CARON>
+collating-symbol <CARON+DIAERESIS>
+collating-symbol <CARON+DOT>
+collating-symbol <RING>
+collating-symbol <RING+ACUTE>
+collating-symbol <RING-BELOW>
+collating-symbol <DIAERESIS>
+collating-symbol <DIAERESIS+MACRON>
+collating-symbol <DIAERESIS+ACUTE>
+collating-symbol <DIAERESIS+GRAVE>
+collating-symbol <DIAERESIS+CARON>
+collating-symbol <DOUBLE-ACUTE>
+collating-symbol <HOOK>
+collating-symbol <TILDE>
+collating-symbol <TILDE+ACUTE>
+collating-symbol <TILDE+DIAERESIS>
+collating-symbol <TILDE-BELOW>
+collating-symbol <DOT>
+collating-symbol <DOT-BELOW>
+collating-symbol <DOT+DOT-BELOW>
+collating-symbol <STROKE>
+collating-symbol <STROKE+ACUTE>
+collating-symbol <CEDILLA>
+collating-symbol <CEDILLA+ACUTE>
+collating-symbol <CEDILLA+GRAVE>
+collating-symbol <CEDILLA+BREVE>
+collating-symbol <OGONEK>
+collating-symbol <OGONEK+MACRON>
+collating-symbol <MACRON>
+collating-symbol <MACRON+ACUTE>
+collating-symbol <MACRON+GRAVE>
+collating-symbol <MACRON+DIAERESIS>
+collating-symbol <MACRON+DIAERESIS-BELOW>
+collating-symbol <MACRON+DOT>
+collating-symbol <MACRON+DOT-BELOW>
+collating-symbol <MACRON+CIRCUMFLEX>
+collating-symbol <LINE-BELOW>
+collating-symbol <HORN>
+collating-symbol <HORN+ACUTE>
+collating-symbol <HORN+GRAVE>
+collating-symbol <HORN+HOOK>
+collating-symbol <HORN+TILDE>
+collating-symbol <HORN+DOT-BELOW>
+collating-symbol <PRECEDED-BY-APOSTROPHE>
+collating-symbol <GREEK>
+collating-symbol <TONOS>
+collating-symbol <DIALYTICA>
+collating-symbol <DIALYTICA+TONOS>
+collating-symbol <CYRILLIC>
+collating-symbol <HIRAGANA>
+collating-symbol <KATAKANA>
+collating-symbol <SPECIAL>
+
+% letter;accent;case;specials
+
+order_start forward;backward;forward;position
+
+% <CAPITAL> or <SMALL> letters first:
+
+<SMALL>
+<SMALL-CAPITAL>
+<CAPITAL-SMALL>
+<CAPITAL>
+
+% Accents:
+
+<NONE>
+<ACUTE>
+<ACUTE+DOT>
+<GRAVE>
+<DOUBLE-GRAVE>
+<BREVE>
+<BREVE+ACUTE>
+<BREVE+GRAVE>
+<BREVE+MACRON>
+<BREVE+HOOK>
+<BREVE+TILDE>
+<BREVE+DOT-BELOW>
+<BREVE-BELOW>
+<INVERTED-BREVE>
+<CIRCUMFLEX>
+<CIRCUMFLEX+ACUTE>
+<CIRCUMFLEX+GRAVE>
+<CIRCUMFLEX+HOOK>
+<CIRCUMFLEX+TILDE>
+<CIRCUMFLEX+DOT-BELOW>
+<CARON>
+<CARON+DIAERESIS>
+<CARON+DOT>
+<RING>
+<RING+ACUTE>
+<RING-BELOW>
+<DIAERESIS>
+<DIAERESIS+MACRON>
+<DIAERESIS+ACUTE>
+<DIAERESIS+GRAVE>
+<DIAERESIS+CARON>
+<DOUBLE-ACUTE>
+<HOOK>
+<TILDE>
+<TILDE+ACUTE>
+<TILDE+DIAERESIS>
+<TILDE-BELOW>
+<DOT>
+<DOT-BELOW>
+<DOT+DOT-BELOW>
+<STROKE>
+<STROKE+ACUTE>
+<CEDILLA>
+<CEDILLA+ACUTE>
+<CEDILLA+GRAVE>
+<CEDILLA+BREVE>
+<OGONEK>
+<OGONEK+MACRON>
+<MACRON>
+<MACRON+ACUTE>
+<MACRON+GRAVE>
+<MACRON+DIAERESIS>
+<MACRON+DIAERESIS-BELOW>
+<MACRON+DOT>
+<MACRON+DOT-BELOW>
+<MACRON+CIRCUMFLEX>
+<LINE-BELOW>
+<HORN>
+<HORN+ACUTE>
+<HORN+GRAVE>
+<HORN+HOOK>
+<HORN+TILDE>
+<HORN+DOT-BELOW>
+<PRECEDED-BY-APOSTROPHE>
+<GREEK>
+<TONOS>
+<DIALYTICA>
+<DIALYTICA+TONOS>
+<CYRILLIC>
+<HIRAGANA>
+<KATAKANA>
+<SPECIAL>
+
+<U00A0> <U00A0>;<U00A0>;<U00A0>;IGNORE
+<U0020> IGNORE;IGNORE;IGNORE;<U0020>
+<U0009> IGNORE;IGNORE;IGNORE;<U0009>
+<U000B> IGNORE;IGNORE;IGNORE;<U000B>
+<U000D> IGNORE;IGNORE;IGNORE;<U000D>
+<U000A> IGNORE;IGNORE;IGNORE;<U000A>
+<U000C> IGNORE;IGNORE;IGNORE;<U000C>
+<U005F> IGNORE;IGNORE;IGNORE;<U005F>
+<U00AF> IGNORE;IGNORE;IGNORE;<U00AF>
+<U00AD> IGNORE;IGNORE;IGNORE;<U00AD>
+<U002D> IGNORE;IGNORE;IGNORE;<U002D>
+<U002C> IGNORE;IGNORE;IGNORE;<U002C>
+<U003B> IGNORE;IGNORE;IGNORE;<U003B>
+<U003A> IGNORE;IGNORE;IGNORE;<U003A>
+<U0021> IGNORE;IGNORE;IGNORE;<U0021>
+<U00A1> IGNORE;IGNORE;IGNORE;<U00A1>
+<U003F> IGNORE;IGNORE;IGNORE;<U003F>
+<U00BF> IGNORE;IGNORE;IGNORE;<U00BF>
+<U002F> IGNORE;IGNORE;IGNORE;<U002F>
+<U002E> IGNORE;IGNORE;IGNORE;<U002E>
+<U00B4> IGNORE;IGNORE;IGNORE;<U00B4>
+<U0060> IGNORE;IGNORE;IGNORE;<U0060>
+<U005E> IGNORE;IGNORE;IGNORE;<U005E>
+<U00A8> IGNORE;IGNORE;IGNORE;<U00A8>
+<U007E> IGNORE;IGNORE;IGNORE;<U007E>
+<U00B7> IGNORE;IGNORE;IGNORE;<U00B7>
+<U00B8> IGNORE;IGNORE;IGNORE;<U00B8>
+<U0027> IGNORE;IGNORE;IGNORE;<U0027>
+<U2018> IGNORE;IGNORE;IGNORE;<U2018>
+<U2019> IGNORE;IGNORE;IGNORE;<U2019>
+<U0022> IGNORE;IGNORE;IGNORE;<U0022>
+<U201C> IGNORE;IGNORE;IGNORE;<U201C>
+<U201D> IGNORE;IGNORE;IGNORE;<U201D>
+<U00AB> IGNORE;IGNORE;IGNORE;<U00AB>
+<U00BB> IGNORE;IGNORE;IGNORE;<U00BB>
+<U0028> IGNORE;IGNORE;IGNORE;<U0028>
+<U207D> IGNORE;IGNORE;IGNORE;<U207D>
+<U0029> IGNORE;IGNORE;IGNORE;<U0029>
+<U207E> IGNORE;IGNORE;IGNORE;<U207E>
+<U005B> IGNORE;IGNORE;IGNORE;<U005B>
+<U005D> IGNORE;IGNORE;IGNORE;<U005D>
+<U007B> IGNORE;IGNORE;IGNORE;<U007B>
+<U007D> IGNORE;IGNORE;IGNORE;<U007D>
+<U00A7> IGNORE;IGNORE;IGNORE;<U00A7>
+<U00B6> IGNORE;IGNORE;IGNORE;<U00B6>
+<U00A9> IGNORE;IGNORE;IGNORE;<U00A9>
+<U00AE> IGNORE;IGNORE;IGNORE;<U00AE>
+<U0040> IGNORE;IGNORE;IGNORE;<U0040>
+<U00A4> IGNORE;IGNORE;IGNORE;<U00A4>
+<U00A2> IGNORE;IGNORE;IGNORE;<U00A2>
+<U0024> IGNORE;IGNORE;IGNORE;<U0024>
+<U00A3> IGNORE;IGNORE;IGNORE;<U00A3>
+<U00A5> IGNORE;IGNORE;IGNORE;<U00A5>
+<U002A> IGNORE;IGNORE;IGNORE;<U002A>
+<U005C> IGNORE;IGNORE;IGNORE;<U005C>
+<U0026> IGNORE;IGNORE;IGNORE;<U0026>
+<U0023> IGNORE;IGNORE;IGNORE;<U0023>
+<U0025> IGNORE;IGNORE;IGNORE;<U0025>
+<U207B> IGNORE;IGNORE;IGNORE;<U207B>
+<U002B> IGNORE;IGNORE;IGNORE;<U002B>
+<U207A> IGNORE;IGNORE;IGNORE;<U207A>
+<U00B1> IGNORE;IGNORE;IGNORE;<U00B1>
+<U00F7> IGNORE;IGNORE;IGNORE;<U00F7>
+<U00D7> IGNORE;IGNORE;IGNORE;<U00D7>
+<U2260> IGNORE;IGNORE;IGNORE;<U2260>
+<U003C> IGNORE;IGNORE;IGNORE;<U003C>
+<U2264> IGNORE;IGNORE;IGNORE;<U2264>
+<U003D> IGNORE;IGNORE;IGNORE;<U003D>
+<U2265> IGNORE;IGNORE;IGNORE;<U2265>
+<U003E> IGNORE;IGNORE;IGNORE;<U003E>
+<U00AC> IGNORE;IGNORE;IGNORE;<U00AC>
+<U007C> IGNORE;IGNORE;IGNORE;<U007C>
+<U00A6> IGNORE;IGNORE;IGNORE;<U00A6>
+<U00B0> IGNORE;IGNORE;IGNORE;<U00B0>
+<U00B5> IGNORE;IGNORE;IGNORE;<U00B5>
+<U02C7> IGNORE;IGNORE;IGNORE;<U02C7>
+<U02D8> IGNORE;IGNORE;IGNORE;<U02D8>
+<U02D9> IGNORE;IGNORE;IGNORE;<U02D9>
+<U02DA> IGNORE;IGNORE;IGNORE;<U02DA>
+<U02DB> IGNORE;IGNORE;IGNORE;<U02DB>
+<U02DC> IGNORE;IGNORE;IGNORE;<U02DC>
+<U02DD> IGNORE;IGNORE;IGNORE;<U02DD>
+<U0374> IGNORE;IGNORE;IGNORE;<U0374>
+<U0375> IGNORE;IGNORE;IGNORE;<U0375>
+<U037A> IGNORE;IGNORE;IGNORE;<U037A>
+<U037E> IGNORE;IGNORE;IGNORE;<U037E>
+<U0384> IGNORE;IGNORE;IGNORE;<U0384>
+<U0385> IGNORE;IGNORE;IGNORE;<U0385>
+<U0387> IGNORE;IGNORE;IGNORE;<U0387>
+<U03D0> IGNORE;IGNORE;IGNORE;<U03D0>
+<U1FBF> IGNORE;IGNORE;IGNORE;<U1FBF>
+<U1FC0> IGNORE;IGNORE;IGNORE;<U1FC0>
+<U1FC1> IGNORE;IGNORE;IGNORE;<U1FC1>
+<U1FCD> IGNORE;IGNORE;IGNORE;<U1FCD>
+<U1FCE> IGNORE;IGNORE;IGNORE;<U1FCE>
+<U1FCF> IGNORE;IGNORE;IGNORE;<U1FCF>
+<U1FDD> IGNORE;IGNORE;IGNORE;<U1FDD>
+<U1FDE> IGNORE;IGNORE;IGNORE;<U1FDE>
+<U1FDF> IGNORE;IGNORE;IGNORE;<U1FDF>
+<U1FED> IGNORE;IGNORE;IGNORE;<U1FED>
+<U1FEF> IGNORE;IGNORE;IGNORE;<U1FEF>
+<U1FFE> IGNORE;IGNORE;IGNORE;<U1FFE>
+<U2002> IGNORE;IGNORE;IGNORE;<U2002>
+<U2003> IGNORE;IGNORE;IGNORE;<U2003>
+<U2004> IGNORE;IGNORE;IGNORE;<U2004>
+<U2005> IGNORE;IGNORE;IGNORE;<U2005>
+<U2006> IGNORE;IGNORE;IGNORE;<U2006>
+<U200E> IGNORE;IGNORE;IGNORE;<U200E>
+<U200F> IGNORE;IGNORE;IGNORE;<U200F>
+<U2009> IGNORE;IGNORE;IGNORE;<U2009>
+<U200A> IGNORE;IGNORE;IGNORE;<U200A>
+<U2010> IGNORE;IGNORE;IGNORE;<U2010>
+<U2013> IGNORE;IGNORE;IGNORE;<U2013>
+<U2014> IGNORE;IGNORE;IGNORE;<U2014>
+<U2015> IGNORE;IGNORE;IGNORE;<U2015>
+<U2016> IGNORE;IGNORE;IGNORE;<U2016>
+<U2017> IGNORE;IGNORE;IGNORE;<U2017>
+<U201A> IGNORE;IGNORE;IGNORE;<U201A>
+<U201B> IGNORE;IGNORE;IGNORE;<U201B>
+<U201E> IGNORE;IGNORE;IGNORE;<U201E>
+<U201F> IGNORE;IGNORE;IGNORE;<U201F>
+<U2020> IGNORE;IGNORE;IGNORE;<U2020>
+<U2021> IGNORE;IGNORE;IGNORE;<U2021>
+<U2219> IGNORE;IGNORE;IGNORE;<U2219>
+<U2025> IGNORE;IGNORE;IGNORE;<U2025>
+<U2026> IGNORE;IGNORE;IGNORE;<U2026>
+<U2030> IGNORE;IGNORE;IGNORE;<U2030>
+<U2032> IGNORE;IGNORE;IGNORE;<U2032>
+<U2033> IGNORE;IGNORE;IGNORE;<U2033>
+<U2034> IGNORE;IGNORE;IGNORE;<U2034>
+<U2035> IGNORE;IGNORE;IGNORE;<U2035>
+<U2036> IGNORE;IGNORE;IGNORE;<U2036>
+<U2037> IGNORE;IGNORE;IGNORE;<U2037>
+<U2038> IGNORE;IGNORE;IGNORE;<U2038>
+<U2039> IGNORE;IGNORE;IGNORE;<U2039>
+<U203A> IGNORE;IGNORE;IGNORE;<U203A>
+<U203B> IGNORE;IGNORE;IGNORE;<U203B>
+<U203C> IGNORE;IGNORE;IGNORE;<U203C>
+<U203E> IGNORE;IGNORE;IGNORE;<U203E>
+<U207C> IGNORE;IGNORE;IGNORE;<U207C>
+<U2080> IGNORE;IGNORE;IGNORE;<U2080>
+<U2081> IGNORE;IGNORE;IGNORE;<U2081>
+<U2082> IGNORE;IGNORE;IGNORE;<U2082>
+<U2083> IGNORE;IGNORE;IGNORE;<U2083>
+<U2084> IGNORE;IGNORE;IGNORE;<U2084>
+<U2085> IGNORE;IGNORE;IGNORE;<U2085>
+<U2086> IGNORE;IGNORE;IGNORE;<U2086>
+<U2087> IGNORE;IGNORE;IGNORE;<U2087>
+<U2088> IGNORE;IGNORE;IGNORE;<U2088>
+<U2089> IGNORE;IGNORE;IGNORE;<U2089>
+<U208A> IGNORE;IGNORE;IGNORE;<U208A>
+<U208B> IGNORE;IGNORE;IGNORE;<U208B>
+<U208C> IGNORE;IGNORE;IGNORE;<U208C>
+<U208D> IGNORE;IGNORE;IGNORE;<U208D>
+<U208E> IGNORE;IGNORE;IGNORE;<U208E>
+<U20A3> IGNORE;IGNORE;IGNORE;<U20A3>
+<U20A4> IGNORE;IGNORE;IGNORE;<U20A4>
+<U20A7> IGNORE;IGNORE;IGNORE;<U20A7>
+<U20A9> IGNORE;IGNORE;IGNORE;<U20A9>
+<U2103> IGNORE;IGNORE;IGNORE;<U2103>
+<U2105> IGNORE;IGNORE;IGNORE;<U2105>
+<U2109> IGNORE;IGNORE;IGNORE;<U2109>
+<U2116> IGNORE;IGNORE;IGNORE;<U2116>
+<U2117> IGNORE;IGNORE;IGNORE;<U2117>
+<U211E> IGNORE;IGNORE;IGNORE;<U211E>
+<U2120> IGNORE;IGNORE;IGNORE;<U2120>
+<U2122> IGNORE;IGNORE;IGNORE;<U2122>
+<U2126> IGNORE;IGNORE;IGNORE;<U2126>
+<U212B> IGNORE;IGNORE;IGNORE;<U212B>
+<U2153> IGNORE;IGNORE;IGNORE;<U2153>
+<U2154> IGNORE;IGNORE;IGNORE;<U2154>
+<U2155> IGNORE;IGNORE;IGNORE;<U2155>
+<U2156> IGNORE;IGNORE;IGNORE;<U2156>
+<U2157> IGNORE;IGNORE;IGNORE;<U2157>
+<U2158> IGNORE;IGNORE;IGNORE;<U2158>
+<U2159> IGNORE;IGNORE;IGNORE;<U2159>
+<U215A> IGNORE;IGNORE;IGNORE;<U215A>
+<U2160> IGNORE;IGNORE;IGNORE;<U2160>
+<U2161> IGNORE;IGNORE;IGNORE;<U2161>
+<U2162> IGNORE;IGNORE;IGNORE;<U2162>
+<U2163> IGNORE;IGNORE;IGNORE;<U2163>
+<U2164> IGNORE;IGNORE;IGNORE;<U2164>
+<U2165> IGNORE;IGNORE;IGNORE;<U2165>
+<U2166> IGNORE;IGNORE;IGNORE;<U2166>
+<U2167> IGNORE;IGNORE;IGNORE;<U2167>
+<U2168> IGNORE;IGNORE;IGNORE;<U2168>
+<U2169> IGNORE;IGNORE;IGNORE;<U2169>
+<U216A> IGNORE;IGNORE;IGNORE;<U216A>
+<U216B> IGNORE;IGNORE;IGNORE;<U216B>
+<U216C> IGNORE;IGNORE;IGNORE;<U216C>
+<U216D> IGNORE;IGNORE;IGNORE;<U216D>
+<U216E> IGNORE;IGNORE;IGNORE;<U216E>
+<U216F> IGNORE;IGNORE;IGNORE;<U216F>
+<U2170> IGNORE;IGNORE;IGNORE;<U2170>
+<U2171> IGNORE;IGNORE;IGNORE;<U2171>
+<U2172> IGNORE;IGNORE;IGNORE;<U2172>
+<U2173> IGNORE;IGNORE;IGNORE;<U2173>
+<U2174> IGNORE;IGNORE;IGNORE;<U2174>
+<U2175> IGNORE;IGNORE;IGNORE;<U2175>
+<U2176> IGNORE;IGNORE;IGNORE;<U2176>
+<U2177> IGNORE;IGNORE;IGNORE;<U2177>
+<U2178> IGNORE;IGNORE;IGNORE;<U2178>
+<U2179> IGNORE;IGNORE;IGNORE;<U2179>
+<U217A> IGNORE;IGNORE;IGNORE;<U217A>
+<U217B> IGNORE;IGNORE;IGNORE;<U217B>
+<U217C> IGNORE;IGNORE;IGNORE;<U217C>
+<U217D> IGNORE;IGNORE;IGNORE;<U217D>
+<U217E> IGNORE;IGNORE;IGNORE;<U217E>
+<U217F> IGNORE;IGNORE;IGNORE;<U217F>
+<U2180> IGNORE;IGNORE;IGNORE;<U2180>
+<U2181> IGNORE;IGNORE;IGNORE;<U2181>
+<U2182> IGNORE;IGNORE;IGNORE;<U2182>
+<U2191> IGNORE;IGNORE;IGNORE;<U2191>
+<U2193> IGNORE;IGNORE;IGNORE;<U2193>
+<U2194> IGNORE;IGNORE;IGNORE;<U2194>
+<U2195> IGNORE;IGNORE;IGNORE;<U2195>
+<U2196> IGNORE;IGNORE;IGNORE;<U2196>
+<U2197> IGNORE;IGNORE;IGNORE;<U2197>
+<U2198> IGNORE;IGNORE;IGNORE;<U2198>
+<U2199> IGNORE;IGNORE;IGNORE;<U2199>
+<U21A8> IGNORE;IGNORE;IGNORE;<U21A8>
+<U21C0> IGNORE;IGNORE;IGNORE;<U21C0>
+<U21D0> IGNORE;IGNORE;IGNORE;<U21D0>
+<U21D2> IGNORE;IGNORE;IGNORE;<U21D2>
+<U21D4> IGNORE;IGNORE;IGNORE;<U21D4>
+<U2200> IGNORE;IGNORE;IGNORE;<U2200>
+<U2202> IGNORE;IGNORE;IGNORE;<U2202>
+<U2203> IGNORE;IGNORE;IGNORE;<U2203>
+<U2205> IGNORE;IGNORE;IGNORE;<U2205>
+<U2206> IGNORE;IGNORE;IGNORE;<U2206>
+<U2207> IGNORE;IGNORE;IGNORE;<U2207>
+<U2208> IGNORE;IGNORE;IGNORE;<U2208>
+<U220B> IGNORE;IGNORE;IGNORE;<U220B>
+<U220F> IGNORE;IGNORE;IGNORE;<U220F>
+<U2211> IGNORE;IGNORE;IGNORE;<U2211>
+<U2212> IGNORE;IGNORE;IGNORE;<U2212>
+<U2213> IGNORE;IGNORE;IGNORE;<U2213>
+<U2214> IGNORE;IGNORE;IGNORE;<U2214>
+<U2044> IGNORE;IGNORE;IGNORE;<U2044>
+<U2217> IGNORE;IGNORE;IGNORE;<U2217>
+<U2218> IGNORE;IGNORE;IGNORE;<U2218>
+<U2022> IGNORE;IGNORE;IGNORE;<U2022>
+<U221A> IGNORE;IGNORE;IGNORE;<U221A>
+<U221D> IGNORE;IGNORE;IGNORE;<U221D>
+<U221E> IGNORE;IGNORE;IGNORE;<U221E>
+<U221F> IGNORE;IGNORE;IGNORE;<U221F>
+<U2220> IGNORE;IGNORE;IGNORE;<U2220>
+<U2225> IGNORE;IGNORE;IGNORE;<U2225>
+<U2227> IGNORE;IGNORE;IGNORE;<U2227>
+<U2228> IGNORE;IGNORE;IGNORE;<U2228>
+<U2229> IGNORE;IGNORE;IGNORE;<U2229>
+<U222A> IGNORE;IGNORE;IGNORE;<U222A>
+<U222B> IGNORE;IGNORE;IGNORE;<U222B>
+<U222C> IGNORE;IGNORE;IGNORE;<U222C>
+<U222E> IGNORE;IGNORE;IGNORE;<U222E>
+<U2234> IGNORE;IGNORE;IGNORE;<U2234>
+<U2235> IGNORE;IGNORE;IGNORE;<U2235>
+<U2236> IGNORE;IGNORE;IGNORE;<U2236>
+<U2237> IGNORE;IGNORE;IGNORE;<U2237>
+<U223C> IGNORE;IGNORE;IGNORE;<U223C>
+<U223E> IGNORE;IGNORE;IGNORE;<U223E>
+<U2243> IGNORE;IGNORE;IGNORE;<U2243>
+<U2245> IGNORE;IGNORE;IGNORE;<U2245>
+<U2248> IGNORE;IGNORE;IGNORE;<U2248>
+<U224C> IGNORE;IGNORE;IGNORE;<U224C>
+<U2253> IGNORE;IGNORE;IGNORE;<U2253>
+<U2261> IGNORE;IGNORE;IGNORE;<U2261>
+<U226A> IGNORE;IGNORE;IGNORE;<U226A>
+<U226B> IGNORE;IGNORE;IGNORE;<U226B>
+<U226E> IGNORE;IGNORE;IGNORE;<U226E>
+<U226F> IGNORE;IGNORE;IGNORE;<U226F>
+<U2282> IGNORE;IGNORE;IGNORE;<U2282>
+<U2283> IGNORE;IGNORE;IGNORE;<U2283>
+<U2286> IGNORE;IGNORE;IGNORE;<U2286>
+<U2287> IGNORE;IGNORE;IGNORE;<U2287>
+<U2299> IGNORE;IGNORE;IGNORE;<U2299>
+<U229A> IGNORE;IGNORE;IGNORE;<U229A>
+<U22A5> IGNORE;IGNORE;IGNORE;<U22A5>
+<U22C5> IGNORE;IGNORE;IGNORE;<U22C5>
+<U22EE> IGNORE;IGNORE;IGNORE;<U22EE>
+<U2302> IGNORE;IGNORE;IGNORE;<U2302>
+<U2308> IGNORE;IGNORE;IGNORE;<U2308>
+<U2309> IGNORE;IGNORE;IGNORE;<U2309>
+<U230A> IGNORE;IGNORE;IGNORE;<U230A>
+<U230B> IGNORE;IGNORE;IGNORE;<U230B>
+<U2310> IGNORE;IGNORE;IGNORE;<U2310>
+<U2312> IGNORE;IGNORE;IGNORE;<U2312>
+<U2315> IGNORE;IGNORE;IGNORE;<U2315>
+<U2320> IGNORE;IGNORE;IGNORE;<U2320>
+<U2321> IGNORE;IGNORE;IGNORE;<U2321>
+<U2423> IGNORE;IGNORE;IGNORE;<U2423>
+<U2440> IGNORE;IGNORE;IGNORE;<U2440>
+<U2441> IGNORE;IGNORE;IGNORE;<U2441>
+<U2442> IGNORE;IGNORE;IGNORE;<U2442>
+<U2443> IGNORE;IGNORE;IGNORE;<U2443>
+<U2446> IGNORE;IGNORE;IGNORE;<U2446>
+<U2447> IGNORE;IGNORE;IGNORE;<U2447>
+<U2448> IGNORE;IGNORE;IGNORE;<U2448>
+<U2449> IGNORE;IGNORE;IGNORE;<U2449>
+<U2460> IGNORE;IGNORE;IGNORE;<U2460>
+<U2461> IGNORE;IGNORE;IGNORE;<U2461>
+<U2462> IGNORE;IGNORE;IGNORE;<U2462>
+<U2463> IGNORE;IGNORE;IGNORE;<U2463>
+<U2464> IGNORE;IGNORE;IGNORE;<U2464>
+<U2465> IGNORE;IGNORE;IGNORE;<U2465>
+<U2466> IGNORE;IGNORE;IGNORE;<U2466>
+<U2467> IGNORE;IGNORE;IGNORE;<U2467>
+<U2468> IGNORE;IGNORE;IGNORE;<U2468>
+<U2469> IGNORE;IGNORE;IGNORE;<U2469>
+<U246A> IGNORE;IGNORE;IGNORE;<U246A>
+<U246B> IGNORE;IGNORE;IGNORE;<U246B>
+<U246C> IGNORE;IGNORE;IGNORE;<U246C>
+<U246D> IGNORE;IGNORE;IGNORE;<U246D>
+<U246E> IGNORE;IGNORE;IGNORE;<U246E>
+<U246F> IGNORE;IGNORE;IGNORE;<U246F>
+<U2470> IGNORE;IGNORE;IGNORE;<U2470>
+<U2471> IGNORE;IGNORE;IGNORE;<U2471>
+<U2472> IGNORE;IGNORE;IGNORE;<U2472>
+<U2473> IGNORE;IGNORE;IGNORE;<U2473>
+<U2474> IGNORE;IGNORE;IGNORE;<U2474>
+<U2475> IGNORE;IGNORE;IGNORE;<U2475>
+<U2476> IGNORE;IGNORE;IGNORE;<U2476>
+<U2477> IGNORE;IGNORE;IGNORE;<U2477>
+<U2478> IGNORE;IGNORE;IGNORE;<U2478>
+<U2479> IGNORE;IGNORE;IGNORE;<U2479>
+<U247A> IGNORE;IGNORE;IGNORE;<U247A>
+<U247B> IGNORE;IGNORE;IGNORE;<U247B>
+<U247C> IGNORE;IGNORE;IGNORE;<U247C>
+<U247D> IGNORE;IGNORE;IGNORE;<U247D>
+<U247E> IGNORE;IGNORE;IGNORE;<U247E>
+<U247F> IGNORE;IGNORE;IGNORE;<U247F>
+<U2480> IGNORE;IGNORE;IGNORE;<U2480>
+<U2481> IGNORE;IGNORE;IGNORE;<U2481>
+<U2482> IGNORE;IGNORE;IGNORE;<U2482>
+<U2483> IGNORE;IGNORE;IGNORE;<U2483>
+<U2484> IGNORE;IGNORE;IGNORE;<U2484>
+<U2485> IGNORE;IGNORE;IGNORE;<U2485>
+<U2486> IGNORE;IGNORE;IGNORE;<U2486>
+<U2487> IGNORE;IGNORE;IGNORE;<U2487>
+<U2488> IGNORE;IGNORE;IGNORE;<U2488>
+<U2489> IGNORE;IGNORE;IGNORE;<U2489>
+<U248A> IGNORE;IGNORE;IGNORE;<U248A>
+<U248B> IGNORE;IGNORE;IGNORE;<U248B>
+<U248C> IGNORE;IGNORE;IGNORE;<U248C>
+<U248D> IGNORE;IGNORE;IGNORE;<U248D>
+<U248E> IGNORE;IGNORE;IGNORE;<U248E>
+<U248F> IGNORE;IGNORE;IGNORE;<U248F>
+<U2490> IGNORE;IGNORE;IGNORE;<U2490>
+<U2491> IGNORE;IGNORE;IGNORE;<U2491>
+<U2492> IGNORE;IGNORE;IGNORE;<U2492>
+<U2493> IGNORE;IGNORE;IGNORE;<U2493>
+<U2494> IGNORE;IGNORE;IGNORE;<U2494>
+<U2495> IGNORE;IGNORE;IGNORE;<U2495>
+<U2496> IGNORE;IGNORE;IGNORE;<U2496>
+<U2497> IGNORE;IGNORE;IGNORE;<U2497>
+<U2498> IGNORE;IGNORE;IGNORE;<U2498>
+<U2499> IGNORE;IGNORE;IGNORE;<U2499>
+<U249A> IGNORE;IGNORE;IGNORE;<U249A>
+<U249B> IGNORE;IGNORE;IGNORE;<U249B>
+<U24EA> IGNORE;IGNORE;IGNORE;<U24EA>
+<U2500> IGNORE;IGNORE;IGNORE;<U2500>
+<U2550> IGNORE;IGNORE;IGNORE;<U2550>
+<U2502> IGNORE;IGNORE;IGNORE;<U2502>
+<U2551> IGNORE;IGNORE;IGNORE;<U2551>
+<U2504> IGNORE;IGNORE;IGNORE;<U2504>
+<U2505> IGNORE;IGNORE;IGNORE;<U2505>
+<U2506> IGNORE;IGNORE;IGNORE;<U2506>
+<U2507> IGNORE;IGNORE;IGNORE;<U2507>
+<U2508> IGNORE;IGNORE;IGNORE;<U2508>
+<U2509> IGNORE;IGNORE;IGNORE;<U2509>
+<U250A> IGNORE;IGNORE;IGNORE;<U250A>
+<U250B> IGNORE;IGNORE;IGNORE;<U250B>
+<U250C> IGNORE;IGNORE;IGNORE;<U250C>
+<U2552> IGNORE;IGNORE;IGNORE;<U2552>
+<U2553> IGNORE;IGNORE;IGNORE;<U2553>
+<U2554> IGNORE;IGNORE;IGNORE;<U2554>
+<U2510> IGNORE;IGNORE;IGNORE;<U2510>
+<U2555> IGNORE;IGNORE;IGNORE;<U2555>
+<U2556> IGNORE;IGNORE;IGNORE;<U2556>
+<U2557> IGNORE;IGNORE;IGNORE;<U2557>
+<U2514> IGNORE;IGNORE;IGNORE;<U2514>
+<U2558> IGNORE;IGNORE;IGNORE;<U2558>
+<U2559> IGNORE;IGNORE;IGNORE;<U2559>
+<U255A> IGNORE;IGNORE;IGNORE;<U255A>
+<U2518> IGNORE;IGNORE;IGNORE;<U2518>
+<U255B> IGNORE;IGNORE;IGNORE;<U255B>
+<U255C> IGNORE;IGNORE;IGNORE;<U255C>
+<U255D> IGNORE;IGNORE;IGNORE;<U255D>
+<U251C> IGNORE;IGNORE;IGNORE;<U251C>
+<U255E> IGNORE;IGNORE;IGNORE;<U255E>
+<U251E> IGNORE;IGNORE;IGNORE;<U251E>
+<U251F> IGNORE;IGNORE;IGNORE;<U251F>
+<U255F> IGNORE;IGNORE;IGNORE;<U255F>
+<U2521> IGNORE;IGNORE;IGNORE;<U2521>
+<U2522> IGNORE;IGNORE;IGNORE;<U2522>
+<U2560> IGNORE;IGNORE;IGNORE;<U2560>
+<U2524> IGNORE;IGNORE;IGNORE;<U2524>
+<U2561> IGNORE;IGNORE;IGNORE;<U2561>
+<U2526> IGNORE;IGNORE;IGNORE;<U2526>
+<U2527> IGNORE;IGNORE;IGNORE;<U2527>
+<U2562> IGNORE;IGNORE;IGNORE;<U2562>
+<U2529> IGNORE;IGNORE;IGNORE;<U2529>
+<U252A> IGNORE;IGNORE;IGNORE;<U252A>
+<U2563> IGNORE;IGNORE;IGNORE;<U2563>
+<U252C> IGNORE;IGNORE;IGNORE;<U252C>
+<U252D> IGNORE;IGNORE;IGNORE;<U252D>
+<U252E> IGNORE;IGNORE;IGNORE;<U252E>
+<U2564> IGNORE;IGNORE;IGNORE;<U2564>
+<U2565> IGNORE;IGNORE;IGNORE;<U2565>
+<U2531> IGNORE;IGNORE;IGNORE;<U2531>
+<U2532> IGNORE;IGNORE;IGNORE;<U2532>
+<U2566> IGNORE;IGNORE;IGNORE;<U2566>
+<U2534> IGNORE;IGNORE;IGNORE;<U2534>
+<U2535> IGNORE;IGNORE;IGNORE;<U2535>
+<U2536> IGNORE;IGNORE;IGNORE;<U2536>
+<U2567> IGNORE;IGNORE;IGNORE;<U2567>
+<U2568> IGNORE;IGNORE;IGNORE;<U2568>
+<U2539> IGNORE;IGNORE;IGNORE;<U2539>
+<U253A> IGNORE;IGNORE;IGNORE;<U253A>
+<U2569> IGNORE;IGNORE;IGNORE;<U2569>
+<U253C> IGNORE;IGNORE;IGNORE;<U253C>
+<U253D> IGNORE;IGNORE;IGNORE;<U253D>
+<U253E> IGNORE;IGNORE;IGNORE;<U253E>
+<U256A> IGNORE;IGNORE;IGNORE;<U256A>
+<U2540> IGNORE;IGNORE;IGNORE;<U2540>
+<U2541> IGNORE;IGNORE;IGNORE;<U2541>
+<U256B> IGNORE;IGNORE;IGNORE;<U256B>
+<U2543> IGNORE;IGNORE;IGNORE;<U2543>
+<U2544> IGNORE;IGNORE;IGNORE;<U2544>
+<U2545> IGNORE;IGNORE;IGNORE;<U2545>
+<U2546> IGNORE;IGNORE;IGNORE;<U2546>
+<U2547> IGNORE;IGNORE;IGNORE;<U2547>
+<U2548> IGNORE;IGNORE;IGNORE;<U2548>
+<U2549> IGNORE;IGNORE;IGNORE;<U2549>
+<U254A> IGNORE;IGNORE;IGNORE;<U254A>
+<U256C> IGNORE;IGNORE;IGNORE;<U256C>
+<U2571> IGNORE;IGNORE;IGNORE;<U2571>
+<U2572> IGNORE;IGNORE;IGNORE;<U2572>
+<U2580> IGNORE;IGNORE;IGNORE;<U2580>
+<U2584> IGNORE;IGNORE;IGNORE;<U2584>
+<U2588> IGNORE;IGNORE;IGNORE;<U2588>
+<U258C> IGNORE;IGNORE;IGNORE;<U258C>
+<U2590> IGNORE;IGNORE;IGNORE;<U2590>
+<U2591> IGNORE;IGNORE;IGNORE;<U2591>
+<U2592> IGNORE;IGNORE;IGNORE;<U2592>
+<U2593> IGNORE;IGNORE;IGNORE;<U2593>
+<U25A0> IGNORE;IGNORE;IGNORE;<U25A0>
+<U25A1> IGNORE;IGNORE;IGNORE;<U25A1>
+<U25A2> IGNORE;IGNORE;IGNORE;<U25A2>
+<U25A3> IGNORE;IGNORE;IGNORE;<U25A3>
+<U25A4> IGNORE;IGNORE;IGNORE;<U25A4>
+<U25A5> IGNORE;IGNORE;IGNORE;<U25A5>
+<U25A6> IGNORE;IGNORE;IGNORE;<U25A6>
+<U25A7> IGNORE;IGNORE;IGNORE;<U25A7>
+<U25A8> IGNORE;IGNORE;IGNORE;<U25A8>
+<U25A9> IGNORE;IGNORE;IGNORE;<U25A9>
+<U25AA> IGNORE;IGNORE;IGNORE;<U25AA>
+<U25AC> IGNORE;IGNORE;IGNORE;<U25AC>
+<U25AD> IGNORE;IGNORE;IGNORE;<U25AD>
+<U25B2> IGNORE;IGNORE;IGNORE;<U25B2>
+<U25B3> IGNORE;IGNORE;IGNORE;<U25B3>
+<U25B7> IGNORE;IGNORE;IGNORE;<U25B7>
+<U25BA> IGNORE;IGNORE;IGNORE;<U25BA>
+<U25BC> IGNORE;IGNORE;IGNORE;<U25BC>
+<U25BD> IGNORE;IGNORE;IGNORE;<U25BD>
+<U25C1> IGNORE;IGNORE;IGNORE;<U25C1>
+<U25C4> IGNORE;IGNORE;IGNORE;<U25C4>
+<U25C6> IGNORE;IGNORE;IGNORE;<U25C6>
+<U25C7> IGNORE;IGNORE;IGNORE;<U25C7>
+<U25CA> IGNORE;IGNORE;IGNORE;<U25CA>
+<U25CB> IGNORE;IGNORE;IGNORE;<U25CB>
+<U25CE> IGNORE;IGNORE;IGNORE;<U25CE>
+<U25CF> IGNORE;IGNORE;IGNORE;<U25CF>
+<U25D0> IGNORE;IGNORE;IGNORE;<U25D0>
+<U25D1> IGNORE;IGNORE;IGNORE;<U25D1>
+<U25D8> IGNORE;IGNORE;IGNORE;<U25D8>
+<U25D9> IGNORE;IGNORE;IGNORE;<U25D9>
+<U25E2> IGNORE;IGNORE;IGNORE;<U25E2>
+<U25E3> IGNORE;IGNORE;IGNORE;<U25E3>
+<U25EF> IGNORE;IGNORE;IGNORE;<U25EF>
+<U2605> IGNORE;IGNORE;IGNORE;<U2605>
+<U2606> IGNORE;IGNORE;IGNORE;<U2606>
+<U260E> IGNORE;IGNORE;IGNORE;<U260E>
+<U260F> IGNORE;IGNORE;IGNORE;<U260F>
+<U261C> IGNORE;IGNORE;IGNORE;<U261C>
+<U261E> IGNORE;IGNORE;IGNORE;<U261E>
+<U263A> IGNORE;IGNORE;IGNORE;<U263A>
+<U263B> IGNORE;IGNORE;IGNORE;<U263B>
+<U263C> IGNORE;IGNORE;IGNORE;<U263C>
+<U2640> IGNORE;IGNORE;IGNORE;<U2640>
+<U2642> IGNORE;IGNORE;IGNORE;<U2642>
+<U2660> IGNORE;IGNORE;IGNORE;<U2660>
+<U2661> IGNORE;IGNORE;IGNORE;<U2661>
+<U2662> IGNORE;IGNORE;IGNORE;<U2662>
+<U2663> IGNORE;IGNORE;IGNORE;<U2663>
+<U2664> IGNORE;IGNORE;IGNORE;<U2664>
+<U2665> IGNORE;IGNORE;IGNORE;<U2665>
+<U2666> IGNORE;IGNORE;IGNORE;<U2666>
+<U2667> IGNORE;IGNORE;IGNORE;<U2667>
+<U2669> IGNORE;IGNORE;IGNORE;<U2669>
+<U266A> IGNORE;IGNORE;IGNORE;<U266A>
+<U266B> IGNORE;IGNORE;IGNORE;<U266B>
+<U266C> IGNORE;IGNORE;IGNORE;<U266C>
+<U266D> IGNORE;IGNORE;IGNORE;<U266D>
+<U266E> IGNORE;IGNORE;IGNORE;<U266E>
+<U266F> IGNORE;IGNORE;IGNORE;<U266F>
+<U2713> IGNORE;IGNORE;IGNORE;<U2713>
+<U2717> IGNORE;IGNORE;IGNORE;<U2717>
+<U2720> IGNORE;IGNORE;IGNORE;<U2720>
+<U3000> IGNORE;IGNORE;IGNORE;<U3000>
+<U3001> IGNORE;IGNORE;IGNORE;<U3001>
+<U3002> IGNORE;IGNORE;IGNORE;<U3002>
+<U3003> IGNORE;IGNORE;IGNORE;<U3003>
+<U3004> IGNORE;IGNORE;IGNORE;<U3004>
+<U3005> IGNORE;IGNORE;IGNORE;<U3005>
+<U3006> IGNORE;IGNORE;IGNORE;<U3006>
+<U3007> IGNORE;IGNORE;IGNORE;<U3007>
+<U300A> IGNORE;IGNORE;IGNORE;<U300A>
+<U300B> IGNORE;IGNORE;IGNORE;<U300B>
+<U300C> IGNORE;IGNORE;IGNORE;<U300C>
+<U300D> IGNORE;IGNORE;IGNORE;<U300D>
+<U300E> IGNORE;IGNORE;IGNORE;<U300E>
+<U300F> IGNORE;IGNORE;IGNORE;<U300F>
+<U3010> IGNORE;IGNORE;IGNORE;<U3010>
+<U3011> IGNORE;IGNORE;IGNORE;<U3011>
+<U3012> IGNORE;IGNORE;IGNORE;<U3012>
+<U3013> IGNORE;IGNORE;IGNORE;<U3013>
+<U3014> IGNORE;IGNORE;IGNORE;<U3014>
+<U3015> IGNORE;IGNORE;IGNORE;<U3015>
+<U3016> IGNORE;IGNORE;IGNORE;<U3016>
+<U3017> IGNORE;IGNORE;IGNORE;<U3017>
+<U301C> IGNORE;IGNORE;IGNORE;<U301C>
+<U3020> IGNORE;IGNORE;IGNORE;<U3020>
+<U309B> IGNORE;IGNORE;IGNORE;<U309B>
+<U309C> IGNORE;IGNORE;IGNORE;<U309C>
+<U309D> IGNORE;IGNORE;IGNORE;<U309D>
+<U309E> IGNORE;IGNORE;IGNORE;<U309E>
+<U30FB> IGNORE;IGNORE;IGNORE;<U30FB>
+<U30FC> IGNORE;IGNORE;IGNORE;<U30FC>
+<U30FD> IGNORE;IGNORE;IGNORE;<U30FD>
+<U30FE> IGNORE;IGNORE;IGNORE;<U30FE>
+<U321C> IGNORE;IGNORE;IGNORE;<U321C>
+<U3220> IGNORE;IGNORE;IGNORE;<U3220>
+<U3221> IGNORE;IGNORE;IGNORE;<U3221>
+<U3222> IGNORE;IGNORE;IGNORE;<U3222>
+<U3223> IGNORE;IGNORE;IGNORE;<U3223>
+<U3224> IGNORE;IGNORE;IGNORE;<U3224>
+<U3225> IGNORE;IGNORE;IGNORE;<U3225>
+<U3226> IGNORE;IGNORE;IGNORE;<U3226>
+<U3227> IGNORE;IGNORE;IGNORE;<U3227>
+<U3228> IGNORE;IGNORE;IGNORE;<U3228>
+<U3229> IGNORE;IGNORE;IGNORE;<U3229>
+<U327F> IGNORE;IGNORE;IGNORE;<U327F>
+<U33C2> IGNORE;IGNORE;IGNORE;<U33C2>
+<U33D8> IGNORE;IGNORE;IGNORE;<U33D8>
+<U0000> IGNORE;IGNORE;IGNORE;<U0000>
+<U0001> IGNORE;IGNORE;IGNORE;<U0001>
+<U0002> IGNORE;IGNORE;IGNORE;<U0002>
+<U0003> IGNORE;IGNORE;IGNORE;<U0003>
+<U0004> IGNORE;IGNORE;IGNORE;<U0004>
+<U0005> IGNORE;IGNORE;IGNORE;<U0005>
+<U0006> IGNORE;IGNORE;IGNORE;<U0006>
+<U0007> IGNORE;IGNORE;IGNORE;<U0007>
+<U0008> IGNORE;IGNORE;IGNORE;<U0008>
+<U000E> IGNORE;IGNORE;IGNORE;<U000E>
+<U000F> IGNORE;IGNORE;IGNORE;<U000F>
+<U0010> IGNORE;IGNORE;IGNORE;<U0010>
+<U0011> IGNORE;IGNORE;IGNORE;<U0011>
+<U0012> IGNORE;IGNORE;IGNORE;<U0012>
+<U0013> IGNORE;IGNORE;IGNORE;<U0013>
+<U0014> IGNORE;IGNORE;IGNORE;<U0014>
+<U0015> IGNORE;IGNORE;IGNORE;<U0015>
+<U0016> IGNORE;IGNORE;IGNORE;<U0016>
+<U0017> IGNORE;IGNORE;IGNORE;<U0017>
+<U0018> IGNORE;IGNORE;IGNORE;<U0018>
+<U0019> IGNORE;IGNORE;IGNORE;<U0019>
+<U001A> IGNORE;IGNORE;IGNORE;<U001A>
+<U001B> IGNORE;IGNORE;IGNORE;<U001B>
+<U001C> IGNORE;IGNORE;IGNORE;<U001C>
+<U001D> IGNORE;IGNORE;IGNORE;<U001D>
+<U001E> IGNORE;IGNORE;IGNORE;<U001E>
+<U001F> IGNORE;IGNORE;IGNORE;<U001F>
+<U007F> IGNORE;IGNORE;IGNORE;<U007F>
+<U0080> IGNORE;IGNORE;IGNORE;<U0080>
+<U0081> IGNORE;IGNORE;IGNORE;<U0081>
+<U0082> IGNORE;IGNORE;IGNORE;<U0082>
+<U0083> IGNORE;IGNORE;IGNORE;<U0083>
+<U0084> IGNORE;IGNORE;IGNORE;<U0084>
+<U0085> IGNORE;IGNORE;IGNORE;<U0085>
+<U0086> IGNORE;IGNORE;IGNORE;<U0086>
+<U0087> IGNORE;IGNORE;IGNORE;<U0087>
+<U0088> IGNORE;IGNORE;IGNORE;<U0088>
+<U0089> IGNORE;IGNORE;IGNORE;<U0089>
+<U008A> IGNORE;IGNORE;IGNORE;<U008A>
+<U008B> IGNORE;IGNORE;IGNORE;<U008B>
+<U008C> IGNORE;IGNORE;IGNORE;<U008C>
+<U008D> IGNORE;IGNORE;IGNORE;<U008D>
+<U008E> IGNORE;IGNORE;IGNORE;<U008E>
+<U008F> IGNORE;IGNORE;IGNORE;<U008F>
+<U0090> IGNORE;IGNORE;IGNORE;<U0090>
+<U0091> IGNORE;IGNORE;IGNORE;<U0091>
+<U0092> IGNORE;IGNORE;IGNORE;<U0092>
+<U0093> IGNORE;IGNORE;IGNORE;<U0093>
+<U0094> IGNORE;IGNORE;IGNORE;<U0094>
+<U0095> IGNORE;IGNORE;IGNORE;<U0095>
+<U0096> IGNORE;IGNORE;IGNORE;<U0096>
+<U0097> IGNORE;IGNORE;IGNORE;<U0097>
+<U0098> IGNORE;IGNORE;IGNORE;<U0098>
+<U0099> IGNORE;IGNORE;IGNORE;<U0099>
+<U009A> IGNORE;IGNORE;IGNORE;<U009A>
+<U009B> IGNORE;IGNORE;IGNORE;<U009B>
+<U009C> IGNORE;IGNORE;IGNORE;<U009C>
+<U009D> IGNORE;IGNORE;IGNORE;<U009D>
+<U009E> IGNORE;IGNORE;IGNORE;<U009E>
+<U009F> IGNORE;IGNORE;IGNORE;<U009F>
+<UE000> IGNORE;IGNORE;IGNORE;<UE000>
+<UE001> IGNORE;IGNORE;IGNORE;<UE001>
+<UE002> IGNORE;IGNORE;IGNORE;<UE002>
+<U0301> IGNORE;IGNORE;IGNORE;<U0301>
+<UE004> IGNORE;IGNORE;IGNORE;<UE004>
+<UE005> IGNORE;IGNORE;IGNORE;<UE005>
+<UE006> IGNORE;IGNORE;IGNORE;<UE006>
+<UE007> IGNORE;IGNORE;IGNORE;<UE007>
+<UE008> IGNORE;IGNORE;IGNORE;<UE008>
+<UE009> IGNORE;IGNORE;IGNORE;<UE009>
+<UE00A> IGNORE;IGNORE;IGNORE;<UE00A>
+<UE00B> IGNORE;IGNORE;IGNORE;<UE00B>
+<UE00C> IGNORE;IGNORE;IGNORE;<UE00C>
+<UE00D> IGNORE;IGNORE;IGNORE;<UE00D>
+<UE00E> IGNORE;IGNORE;IGNORE;<UE00E>
+<UE00F> IGNORE;IGNORE;IGNORE;<UE00F>
+<"=> IGNORE;IGNORE;IGNORE;<"=>
+<UE011> IGNORE;IGNORE;IGNORE;<UE011>
+<UE012> IGNORE;IGNORE;IGNORE;<UE012>
+<UE013> IGNORE;IGNORE;IGNORE;<UE013>
+<UE014> IGNORE;IGNORE;IGNORE;<UE014>
+<UE015> IGNORE;IGNORE;IGNORE;<UE015>
+<UE017> IGNORE;IGNORE;IGNORE;<UE017>
+<UE018> IGNORE;IGNORE;IGNORE;<UE018>
+<UE019> IGNORE;IGNORE;IGNORE;<UE019>
+UNDEFINED IGNORE;IGNORE;IGNORE
+
+<U0030> <U0030>;<U0030>;IGNORE;IGNORE
+<U2070> <U0030>;<U2070>;IGNORE;IGNORE
+<U215B> <U0030>;<U215B>;IGNORE;IGNORE
+<U00BC> <U0030>;<U00BC>;IGNORE;IGNORE
+<U215C> <U0030>;<U215C>;IGNORE;IGNORE
+<U00BD> <U0030>;<U00BD>;IGNORE;IGNORE
+<U215D> <U0030>;<U215D>;IGNORE;IGNORE
+<U00BE> <U0030>;<U00BE>;IGNORE;IGNORE
+<U215E> <U0030>;<U215E>;IGNORE;IGNORE
+<U0031> <U0031>;<U0031>;IGNORE;IGNORE
+<U0032> <U0032>;<U0032>;IGNORE;IGNORE
+<U0033> <U0033>;<U0033>;IGNORE;IGNORE
+<U0034> <U0034>;<U0034>;IGNORE;IGNORE
+<U0035> <U0035>;<U0035>;IGNORE;IGNORE
+<U0036> <U0036>;<U0036>;IGNORE;IGNORE
+<U0037> <U0037>;<U0037>;IGNORE;IGNORE
+<U0038> <U0038>;<U0038>;IGNORE;IGNORE
+<U0039> <U0039>;<U0039>;IGNORE;IGNORE
+<U00B9> <U0031>;<U00B9>;IGNORE;IGNORE
+<U00B2> <U0032>;<U00B2>;IGNORE;IGNORE
+<U00B3> <U0033>;<U00B3>;IGNORE;IGNORE
+<U2074> <U0034>;<U2074>;IGNORE;IGNORE
+<U2075> <U0035>;<U2075>;IGNORE;IGNORE
+<U2076> <U0036>;<U2076>;IGNORE;IGNORE
+<U2077> <U0037>;<U2077>;IGNORE;IGNORE
+<U2078> <U0038>;<U2078>;IGNORE;IGNORE
+<U2079> <U0039>;<U2079>;IGNORE;IGNORE
+<U0041> <U0041>;<NONE>;<CAPITAL>;IGNORE
+<U0061> <U0041>;<NONE>;<SMALL>;IGNORE
+<U00AA> <U0041>;<NONE>;<U00AA>;IGNORE
+<U00C1> <U0041>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E1> <U0041>;<ACUTE>;<SMALL>;IGNORE
+<U00C0> <U0041>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E0> <U0041>;<GRAVE>;<SMALL>;IGNORE
+<U0200> <U0041>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0201> <U0041>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0102> <U0041>;<BREVE>;<CAPITAL>;IGNORE
+<U0103> <U0041>;<BREVE>;<SMALL>;IGNORE
+<U1EAE> <U0041>;<BREVE+ACUTE>;<CAPITAL>;IGNORE
+<U1EAF> <U0041>;<BREVE+ACUTE>;<SMALL>;IGNORE
+<U1EB0> <U0041>;<BREVE+GRAVE>;<CAPITAL>;IGNORE
+<U1EB1> <U0041>;<BREVE+GRAVE>;<SMALL>;IGNORE
+<U1EB2> <U0041>;<BREVE+HOOK>;<CAPITAL>;IGNORE
+<U1EB3> <U0041>;<BREVE+HOOK>;<SMALL>;IGNORE
+<U1EB4> <U0041>;<BREVE+TILDE>;<CAPITAL>;IGNORE
+<U1EB5> <U0041>;<BREVE+TILDE>;<SMALL>;IGNORE
+<U1EB6> <U0041>;<BREVE+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB7> <U0041>;<BREVE+DOT-BELOW>;<SMALL>;IGNORE
+<U0202> <U0041>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0203> <U0041>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00C2> <U0041>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00E2> <U0041>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EA4> <U0041>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EA5> <U0041>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EA6> <U0041>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EA7> <U0041>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EA8> <U0041>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EA9> <U0041>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EAA> <U0041>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EAB> <U0041>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EAC> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EAD> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01CD> <U0041>;<CARON>;<CAPITAL>;IGNORE
+<U01CE> <U0041>;<CARON>;<SMALL>;IGNORE
+<U00C5> <U0041>;<RING>;<CAPITAL>;IGNORE
+<U00E5> <U0041>;<RING>;<SMALL>;IGNORE
+<U01FA> <U0041>;<RING+ACUTE>;<CAPITAL>;IGNORE
+<U01FB> <U0041>;<RING+ACUTE>;<SMALL>;IGNORE
+<U1E00> <U0041>;<RING-BELOW>;<CAPITAL>;IGNORE
+<U1E01> <U0041>;<RING-BELOW>;<SMALL>;IGNORE
+<U00C4> <U0041>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00E4> <U0041>;<DIAERESIS>;<SMALL>;IGNORE
+<U01DE> <U0041>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01DF> <U0041>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U1EA2> <U0041>;<HOOK>;<CAPITAL>;IGNORE
+<U1EA3> <U0041>;<HOOK>;<SMALL>;IGNORE
+<U00C3> <U0041>;<TILDE>;<CAPITAL>;IGNORE
+<U00E3> <U0041>;<TILDE>;<SMALL>;IGNORE
+<U1EA0> <U0041>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EA1> <U0041>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0104> <U0041>;<OGONEK>;<CAPITAL>;IGNORE
+<U0105> <U0041>;<OGONEK>;<SMALL>;IGNORE
+<U0100> <U0041>;<MACRON>;<CAPITAL>;IGNORE
+<U0101> <U0041>;<MACRON>;<SMALL>;IGNORE
+<U01E0> <U0041>;<MACRON+DOT>;<CAPITAL>;IGNORE
+<U01E1> <U0041>;<MACRON+DOT>;<SMALL>;IGNORE
+<a8>
+<U00C6> "<U0041><U0045>";"<U00C6><U00C6>";"<CAPITAL><CAPITAL>";IGNORE
+<U00E6> "<U0041><U0045>";"<U00C6><U00C6>";"<SMALL><SMALL>";IGNORE
+<U01FC> "<U0041><U0045>";"<U01FC><U01FC>";"<CAPITAL><CAPITAL>";IGNORE
+<U01FD> "<U0041><U0045>";"<U01FC><U01FC>";"<SMALL><SMALL>";IGNORE
+<U01E2> "<U0041><U0045>";"<U01E2><U01E2>";"<CAPITAL><CAPITAL>";IGNORE
+<U01E3> "<U0041><U0045>";"<U01E2><U01E2>";"<SMALL><SMALL>";IGNORE
+<U0042> <U0042>;<NONE>;<CAPITAL>;IGNORE
+<U0062> <U0042>;<NONE>;<SMALL>;IGNORE
+<U1E02> <U0042>;<DOT>;<CAPITAL>;IGNORE
+<U1E03> <U0042>;<DOT>;<SMALL>;IGNORE
+<U1E04> <U0042>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E05> <U0042>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E06> <U0042>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E07> <U0042>;<LINE-BELOW>;<SMALL>;IGNORE
+<b8>
+<U0043> <U0043>;<NONE>;<CAPITAL>;IGNORE
+<U0063> <U0043>;<NONE>;<SMALL>;IGNORE
+<U0106> <U0043>;<ACUTE>;<CAPITAL>;IGNORE
+<U0107> <U0043>;<ACUTE>;<SMALL>;IGNORE
+<U0108> <U0043>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0109> <U0043>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U010C> <U0043>;<CARON>;<CAPITAL>;IGNORE
+<U010D> <U0043>;<CARON>;<SMALL>;IGNORE
+<U0187> <U0043>;<HOOK>;<CAPITAL>;IGNORE
+<U0188> <U0043>;<HOOK>;<SMALL>;IGNORE
+<U010A> <U0043>;<DOT>;<CAPITAL>;IGNORE
+<U010B> <U0043>;<DOT>;<SMALL>;IGNORE
+<U00C7> <U0043>;<CEDILLA>;<CAPITAL>;IGNORE
+<U00E7> <U0043>;<CEDILLA>;<SMALL>;IGNORE
+<U1E08> <U0043>;<CEDILLA+ACUTE>;<CAPITAL>;IGNORE
+<U1E09> <U0043>;<CEDILLA+ACUTE>;<SMALL>;IGNORE
+<c8>
+<U0044> <U0044>;<NONE>;<CAPITAL>;IGNORE
+<U0064> <U0044>;<NONE>;<SMALL>;IGNORE
+<U010E> <U0044>;<CARON>;<CAPITAL>;IGNORE
+<U010F> <U0044>;<CARON>;<SMALL>;IGNORE
+<U1E0A> <U0044>;<DOT>;<CAPITAL>;IGNORE
+<U1E0B> <U0044>;<DOT>;<SMALL>;IGNORE
+<U1E0C> <U0044>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E0D> <U0044>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0110> <U0044>;<STROKE>;<CAPITAL>;IGNORE
+<U0111> <U0044>;<STROKE>;<SMALL>;IGNORE
+<U1E10> <U0044>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E11> <U0044>;<CEDILLA>;<SMALL>;IGNORE
+<U1E12> <U0044>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E13> <U0044>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E0E> <U0044>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E0F> <U0044>;<LINE-BELOW>;<SMALL>;IGNORE
+<d8>
+<U0045> <U0045>;<NONE>;<CAPITAL>;IGNORE
+<U0065> <U0045>;<NONE>;<SMALL>;IGNORE
+<U00C9> <U0045>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E9> <U0045>;<ACUTE>;<SMALL>;IGNORE
+<U00C8> <U0045>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E8> <U0045>;<GRAVE>;<SMALL>;IGNORE
+<U0204> <U0045>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0205> <U0045>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0114> <U0045>;<BREVE>;<CAPITAL>;IGNORE
+<U0115> <U0045>;<BREVE>;<SMALL>;IGNORE
+<U0206> <U0045>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0207> <U0045>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CA> <U0045>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EA> <U0045>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EBE> <U0045>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EBF> <U0045>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EC0> <U0045>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EC1> <U0045>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EC2> <U0045>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EC3> <U0045>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EC4> <U0045>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EC5> <U0045>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EC6> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EC7> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U011A> <U0045>;<CARON>;<CAPITAL>;IGNORE
+<U011B> <U0045>;<CARON>;<SMALL>;IGNORE
+<U00CB> <U0045>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EB> <U0045>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EBA> <U0045>;<HOOK>;<CAPITAL>;IGNORE
+<U1EBB> <U0045>;<HOOK>;<SMALL>;IGNORE
+<U1EBC> <U0045>;<TILDE>;<CAPITAL>;IGNORE
+<U1EBD> <U0045>;<TILDE>;<SMALL>;IGNORE
+<U1E1A> <U0045>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E1B> <U0045>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0116> <U0045>;<DOT>;<CAPITAL>;IGNORE
+<U0117> <U0045>;<DOT>;<SMALL>;IGNORE
+<U1EB8> <U0045>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB9> <U0045>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E1C> <U0045>;<CEDILLA+BREVE>;<CAPITAL>;IGNORE
+<U1E1D> <U0045>;<CEDILLA+BREVE>;<SMALL>;IGNORE
+<U0118> <U0045>;<OGONEK>;<CAPITAL>;IGNORE
+<U0119> <U0045>;<OGONEK>;<SMALL>;IGNORE
+<U0112> <U0045>;<MACRON>;<CAPITAL>;IGNORE
+<U0113> <U0045>;<MACRON>;<SMALL>;IGNORE
+<U1E16> <U0045>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E17> <U0045>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E14> <U0045>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E15> <U0045>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U1E18> <U0045>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E19> <U0045>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<e8>
+<U0046> <U0046>;<NONE>;<CAPITAL>;IGNORE
+<U0066> <U0046>;<NONE>;<SMALL>;IGNORE
+<U0191> <U0046>;<HOOK>;<CAPITAL>;IGNORE
+<U0192> <U0046>;<HOOK>;<SMALL>;IGNORE
+<U1E1E> <U0046>;<DOT>;<CAPITAL>;IGNORE
+<U1E1F> <U0046>;<DOT>;<SMALL>;IGNORE
+<f8>
+<UFB00> "<U0046><U0046>";"<NONE><NONE>";"<UFB00><UFB00>";IGNORE
+<UFB01> "<U0046><U0049>";"<NONE><NONE>";"<UFB01><UFB01>";IGNORE
+<UFB02> "<U0046><U004C>";"<NONE><NONE>";"<UFB02><UFB02>";IGNORE
+<UFB03> "<U0046><U0046><U0049>";"<NONE><NONE><NONE>";"<UFB03><UFB03><UFB03>";IGNORE
+<UFB04> "<U0046><U0046><U004C>";"<NONE><NONE><NONE>";"<UFB04><UFB04><UFB04>";IGNORE
+<U0047> <U0047>;<NONE>;<CAPITAL>;IGNORE
+<U0067> <U0047>;<NONE>;<SMALL>;IGNORE
+<U01F4> <U0047>;<ACUTE>;<CAPITAL>;IGNORE
+<U01F5> <U0047>;<ACUTE>;<SMALL>;IGNORE
+<U011E> <U0047>;<BREVE>;<CAPITAL>;IGNORE
+<U011F> <U0047>;<BREVE>;<SMALL>;IGNORE
+<U011C> <U0047>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U011D> <U0047>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01E6> <U0047>;<CARON>;<CAPITAL>;IGNORE
+<U01E7> <U0047>;<CARON>;<SMALL>;IGNORE
+<U0120> <U0047>;<DOT>;<CAPITAL>;IGNORE
+<U0121> <U0047>;<DOT>;<SMALL>;IGNORE
+<U01E4> <U0047>;<STROKE>;<CAPITAL>;IGNORE
+<U01E5> <U0047>;<STROKE>;<SMALL>;IGNORE
+<U0122> <U0047>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0123> <U0047>;<CEDILLA>;<SMALL>;IGNORE
+<U1E20> <U0047>;<MACRON>;<CAPITAL>;IGNORE
+<U1E21> <U0047>;<MACRON>;<SMALL>;IGNORE
+<g8>
+<U0048> <U0048>;<NONE>;<CAPITAL>;IGNORE
+<U0068> <U0048>;<NONE>;<SMALL>;IGNORE
+<U1E2A> <U0048>;<BREVE-BELOW>;<CAPITAL>;IGNORE
+<U1E2B> <U0048>;<BREVE-BELOW>;<SMALL>;IGNORE
+<U0124> <U0048>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0125> <U0048>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E26> <U0048>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E27> <U0048>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E22> <U0048>;<DOT>;<CAPITAL>;IGNORE
+<U1E23> <U0048>;<DOT>;<SMALL>;IGNORE
+<U1E24> <U0048>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E25> <U0048>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0126> <U0048>;<STROKE>;<CAPITAL>;IGNORE
+<U0127> <U0048>;<STROKE>;<SMALL>;IGNORE
+<U1E28> <U0048>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E29> <U0048>;<CEDILLA>;<SMALL>;IGNORE
+<h8>
+<U0049> <U0049>;<NONE>;<CAPITAL>;IGNORE
+<U0069> <U0049>;<NONE>;<SMALL>;IGNORE
+<U00CD> <U0049>;<ACUTE>;<CAPITAL>;IGNORE
+<U00ED> <U0049>;<ACUTE>;<SMALL>;IGNORE
+<U00CC> <U0049>;<GRAVE>;<CAPITAL>;IGNORE
+<U00EC> <U0049>;<GRAVE>;<SMALL>;IGNORE
+<U0208> <U0049>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0209> <U0049>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U012C> <U0049>;<BREVE>;<CAPITAL>;IGNORE
+<U012D> <U0049>;<BREVE>;<SMALL>;IGNORE
+<U020A> <U0049>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020B> <U0049>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CE> <U0049>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EE> <U0049>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01CF> <U0049>;<CARON>;<CAPITAL>;IGNORE
+<U01D0> <U0049>;<CARON>;<SMALL>;IGNORE
+<U00CF> <U0049>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EF> <U0049>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E2E> <U0049>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U1E2F> <U0049>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U1EC8> <U0049>;<HOOK>;<CAPITAL>;IGNORE
+<U1EC9> <U0049>;<HOOK>;<SMALL>;IGNORE
+<U0128> <U0049>;<TILDE>;<CAPITAL>;IGNORE
+<U0129> <U0049>;<TILDE>;<SMALL>;IGNORE
+<U1E2C> <U0049>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E2D> <U0049>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0130> <U0049>;<DOT>;<CAPITAL>;IGNORE
+<U0131> <U0049>;<DOT>;<SMALL>;IGNORE
+<U1ECA> <U0049>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECB> <U0049>;<DOT-BELOW>;<SMALL>;IGNORE
+<U012E> <U0049>;<OGONEK>;<CAPITAL>;IGNORE
+<U012F> <U0049>;<OGONEK>;<SMALL>;IGNORE
+<U012A> <U0049>;<MACRON>;<CAPITAL>;IGNORE
+<U012B> <U0049>;<MACRON>;<SMALL>;IGNORE
+<i8>
+<U0132> "<U0049><U004A>";"<U0132><U0132>";"<CAPITAL><CAPITAL>";IGNORE
+<U0133> "<U0049><U004A>";"<U0132><U0132>";"<SMALL><SMALL>";IGNORE
+<U004A> <U004A>;<NONE>;<CAPITAL>;IGNORE
+<U006A> <U004A>;<NONE>;<SMALL>;IGNORE
+<U0134> <U004A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0135> <U004A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<j8>
+<U004B> <U004B>;<NONE>;<CAPITAL>;IGNORE
+<U006B> <U004B>;<NONE>;<SMALL>;IGNORE
+<U1E30> <U004B>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E31> <U004B>;<ACUTE>;<SMALL>;IGNORE
+<U01E8> <U004B>;<CARON>;<CAPITAL>;IGNORE
+<U01E9> <U004B>;<CARON>;<SMALL>;IGNORE
+<U0198> <U004B>;<HOOK>;<CAPITAL>;IGNORE
+<U0199> <U004B>;<HOOK>;<SMALL>;IGNORE
+<U1E32> <U004B>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E33> <U004B>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0136> <U004B>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0137> <U004B>;<CEDILLA>;<SMALL>;IGNORE
+<U1E34> <U004B>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E35> <U004B>;<LINE-BELOW>;<SMALL>;IGNORE
+<k8>
+<U0138> <U004B>;<U0138>;<SMALL>;IGNORE
+<U004C> <U004C>;<NONE>;<CAPITAL>;IGNORE
+<U006C> <U004C>;<NONE>;<SMALL>;IGNORE
+<U0139> <U004C>;<ACUTE>;<CAPITAL>;IGNORE
+<U013A> <U004C>;<ACUTE>;<SMALL>;IGNORE
+<U013D> <U004C>;<CARON>;<CAPITAL>;IGNORE
+<U013E> <U004C>;<CARON>;<SMALL>;IGNORE
+<U013F> <U004C>;<DOT>;<CAPITAL>;IGNORE
+<U0140> <U004C>;<DOT>;<SMALL>;IGNORE
+<U1E36> <U004C>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E37> <U004C>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0141> <U004C>;<STROKE>;<CAPITAL>;IGNORE
+<U0142> <U004C>;<STROKE>;<SMALL>;IGNORE
+<U013B> <U004C>;<CEDILLA>;<CAPITAL>;IGNORE
+<U013C> <U004C>;<CEDILLA>;<SMALL>;IGNORE
+<U1E38> <U004C>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E39> <U004C>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E3C> <U004C>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E3D> <U004C>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E3A> <U004C>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E3B> <U004C>;<LINE-BELOW>;<SMALL>;IGNORE
+<l8>
+<U004D> <U004D>;<NONE>;<CAPITAL>;IGNORE
+<U006D> <U004D>;<NONE>;<SMALL>;IGNORE
+<U1E3E> <U004D>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E3F> <U004D>;<ACUTE>;<SMALL>;IGNORE
+<U1E40> <U004D>;<DOT>;<CAPITAL>;IGNORE
+<U1E41> <U004D>;<DOT>;<SMALL>;IGNORE
+<U1E42> <U004D>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E43> <U004D>;<DOT-BELOW>;<SMALL>;IGNORE
+<m8>
+<U004E> <U004E>;<NONE>;<CAPITAL>;IGNORE
+<U006E> <U004E>;<NONE>;<SMALL>;IGNORE
+<U0143> <U004E>;<ACUTE>;<CAPITAL>;IGNORE
+<U0144> <U004E>;<ACUTE>;<SMALL>;IGNORE
+<U0147> <U004E>;<CARON>;<CAPITAL>;IGNORE
+<U0148> <U004E>;<CARON>;<SMALL>;IGNORE
+<U1E44> <U004E>;<DOT>;<CAPITAL>;IGNORE
+<U1E45> <U004E>;<DOT>;<SMALL>;IGNORE
+<U1E46> <U004E>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E47> <U004E>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0145> <U004E>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0146> <U004E>;<CEDILLA>;<SMALL>;IGNORE
+<U1E4A> <U004E>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E4B> <U004E>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E48> <U004E>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E49> <U004E>;<LINE-BELOW>;<SMALL>;IGNORE
+<U0149> <U004E>;<PRECEDED-BY-APOSTROPHE>;<SMALL>;IGNORE
+<n8>
+<U00D1> <U00D1>;<NONE>;<CAPITAL>;IGNORE
+<U00F1> <U00D1>;<NONE>;<SMALL>;IGNORE
+<U014A> "<U004E><U0047>";"<U014A><U014A>";"<CAPITAL><CAPITAL>";IGNORE
+<U014B> "<U004E><U0047>";"<U014A><U014A>";"<SMALL><SMALL>";IGNORE
+<U004F> <U004F>;<NONE>;<CAPITAL>;IGNORE
+<U006F> <U004F>;<NONE>;<SMALL>;IGNORE
+<U00BA> <U004F>;<NONE>;<U00BA>;IGNORE
+<U00D3> <U004F>;<ACUTE>;<CAPITAL>;IGNORE
+<U00F3> <U004F>;<ACUTE>;<SMALL>;IGNORE
+<U00D2> <U004F>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F2> <U004F>;<GRAVE>;<SMALL>;IGNORE
+<U020C> <U004F>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U020D> <U004F>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U014E> <U004F>;<BREVE>;<CAPITAL>;IGNORE
+<U014F> <U004F>;<BREVE>;<SMALL>;IGNORE
+<U020E> <U004F>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020F> <U004F>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00D4> <U004F>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00F4> <U004F>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1ED0> <U004F>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1ED1> <U004F>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1ED2> <U004F>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1ED3> <U004F>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1ED4> <U004F>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1ED5> <U004F>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1ED6> <U004F>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1ED7> <U004F>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1ED8> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ED9> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01D1> <U004F>;<CARON>;<CAPITAL>;IGNORE
+<U01D2> <U004F>;<CARON>;<SMALL>;IGNORE
+<U00D6> <U004F>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00F6> <U004F>;<DIAERESIS>;<SMALL>;IGNORE
+<U0150> <U004F>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0151> <U004F>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1ECE> <U004F>;<HOOK>;<CAPITAL>;IGNORE
+<U1ECF> <U004F>;<HOOK>;<SMALL>;IGNORE
+<U00D5> <U004F>;<TILDE>;<CAPITAL>;IGNORE
+<U00F5> <U004F>;<TILDE>;<SMALL>;IGNORE
+<U1E4C> <U004F>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E4D> <U004F>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E4E> <U004F>;<TILDE+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E4F> <U004F>;<TILDE+DIAERESIS>;<SMALL>;IGNORE
+<U1ECC> <U004F>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECD> <U004F>;<DOT-BELOW>;<SMALL>;IGNORE
+<U00D8> <U004F>;<STROKE>;<CAPITAL>;IGNORE
+<U00F8> <U004F>;<STROKE>;<SMALL>;IGNORE
+<U01FE> <U004F>;<STROKE+ACUTE>;<CAPITAL>;IGNORE
+<U01FF> <U004F>;<STROKE+ACUTE>;<SMALL>;IGNORE
+<U01EA> <U004F>;<OGONEK>;<CAPITAL>;IGNORE
+<U01EB> <U004F>;<OGONEK>;<SMALL>;IGNORE
+<U01EC> <U004F>;<OGONEK+MACRON>;<CAPITAL>;IGNORE
+<U01ED> <U004F>;<OGONEK+MACRON>;<SMALL>;IGNORE
+<U014C> <U004F>;<MACRON>;<CAPITAL>;IGNORE
+<U014D> <U004F>;<MACRON>;<SMALL>;IGNORE
+<U1E52> <U004F>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E53> <U004F>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E50> <U004F>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E51> <U004F>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U01A0> <U004F>;<HORN>;<CAPITAL>;IGNORE
+<U01A1> <U004F>;<HORN>;<SMALL>;IGNORE
+<U1EDA> <U004F>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EDB> <U004F>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EDC> <U004F>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EDD> <U004F>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EDE> <U004F>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EDF> <U004F>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EE0> <U004F>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EE1> <U004F>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EE2> <U004F>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE3> <U004F>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<o8>
+<U0152> "<U004F><U0045>";"<U0152><U0152>";"<CAPITAL><CAPITAL>";IGNORE
+<U0153> "<U004F><U0045>";"<U0152><U0152>";"<SMALL><SMALL>";IGNORE
+<U0050> <U0050>;<NONE>;<CAPITAL>;IGNORE
+<U0070> <U0050>;<NONE>;<SMALL>;IGNORE
+<U1E54> <U0050>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E55> <U0050>;<ACUTE>;<SMALL>;IGNORE
+<U1E56> <U0050>;<DOT>;<CAPITAL>;IGNORE
+<U1E57> <U0050>;<DOT>;<SMALL>;IGNORE
+<p8>
+<U0051> <U0051>;<NONE>;<CAPITAL>;IGNORE
+<U0071> <U0051>;<NONE>;<SMALL>;IGNORE
+<q8>
+<U0052> <U0052>;<NONE>;<CAPITAL>;IGNORE
+<U0072> <U0052>;<NONE>;<SMALL>;IGNORE
+<U0154> <U0052>;<ACUTE>;<CAPITAL>;IGNORE
+<U0155> <U0052>;<ACUTE>;<SMALL>;IGNORE
+<U0210> <U0052>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0211> <U0052>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0212> <U0052>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0213> <U0052>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U0158> <U0052>;<CARON>;<CAPITAL>;IGNORE
+<U0159> <U0052>;<CARON>;<SMALL>;IGNORE
+<U1E58> <U0052>;<DOT>;<CAPITAL>;IGNORE
+<U1E59> <U0052>;<DOT>;<SMALL>;IGNORE
+<U1E5A> <U0052>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5B> <U0052>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0156> <U0052>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0157> <U0052>;<CEDILLA>;<SMALL>;IGNORE
+<U1E5C> <U0052>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5D> <U0052>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E5E> <U0052>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E5F> <U0052>;<LINE-BELOW>;<SMALL>;IGNORE
+<r8>
+<U0053> <U0053>;<NONE>;<CAPITAL>;IGNORE
+<U0073> <U0053>;<NONE>;<SMALL>;IGNORE
+<UFB06> "<U0053><U0054>";"<NONE><NONE>";"<UFB06><UFB06>";IGNORE
+<U015A> <U0053>;<ACUTE>;<CAPITAL>;IGNORE
+<U015B> <U0053>;<ACUTE>;<SMALL>;IGNORE
+<U1E64> <U0053>;<ACUTE+DOT>;<CAPITAL>;IGNORE
+<U1E65> <U0053>;<ACUTE+DOT>;<SMALL>;IGNORE
+<U015C> <U0053>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U015D> <U0053>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0160> <U0053>;<CARON>;<CAPITAL>;IGNORE
+<U0161> <U0053>;<CARON>;<SMALL>;IGNORE
+<U1E66> <U0053>;<CARON+DOT>;<CAPITAL>;IGNORE
+<U1E67> <U0053>;<CARON+DOT>;<SMALL>;IGNORE
+<U1E60> <U0053>;<DOT>;<CAPITAL>;IGNORE
+<U1E61> <U0053>;<DOT>;<SMALL>;IGNORE
+<U1E62> <U0053>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E63> <U0053>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E68> <U0053>;<DOT+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E69> <U0053>;<DOT+DOT-BELOW>;<SMALL>;IGNORE
+<U015E> <U0053>;<CEDILLA>;<CAPITAL>;IGNORE
+<U015F> <U0053>;<CEDILLA>;<SMALL>;IGNORE
+<s8>
+<U017F> <U0053>;<U017F>;<SMALL>;IGNORE
+<U00DF> "<U0053><U0053>";"<NONE><NONE>";"<SMALL><U00DF>";IGNORE
+<UFB05> "<U0053><U0054>";"<NONE><NONE>";"<UFB05><UFB05>";IGNORE
+<U0054> <U0054>;<NONE>;<CAPITAL>;IGNORE
+<U0074> <U0054>;<NONE>;<SMALL>;IGNORE
+<U0164> <U0054>;<CARON>;<CAPITAL>;IGNORE
+<U0165> <U0054>;<CARON>;<SMALL>;IGNORE
+<U1E6A> <U0054>;<DOT>;<CAPITAL>;IGNORE
+<U1E6B> <U0054>;<DOT>;<SMALL>;IGNORE
+<U1E6C> <U0054>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E6D> <U0054>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0166> <U0054>;<STROKE>;<CAPITAL>;IGNORE
+<U0167> <U0054>;<STROKE>;<SMALL>;IGNORE
+<U0162> <U0054>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0163> <U0054>;<CEDILLA>;<SMALL>;IGNORE
+<U1E70> <U0054>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E71> <U0054>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E6E> <U0054>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E6F> <U0054>;<LINE-BELOW>;<SMALL>;IGNORE
+<t8>
+<U00DE> "<U0054><U0048>";"<U00DE><U00DE>";"<CAPITAL><CAPITAL>";IGNORE
+<U00FE> "<U0054><U0048>";"<U00DE><U00DE>";"<SMALL><SMALL>";IGNORE
+<U0055> <U0055>;<NONE>;<CAPITAL>;IGNORE
+<U0075> <U0055>;<NONE>;<SMALL>;IGNORE
+<U00DA> <U0055>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FA> <U0055>;<ACUTE>;<SMALL>;IGNORE
+<U00D9> <U0055>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F9> <U0055>;<GRAVE>;<SMALL>;IGNORE
+<U0214> <U0055>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0215> <U0055>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U016C> <U0055>;<BREVE>;<CAPITAL>;IGNORE
+<U016D> <U0055>;<BREVE>;<SMALL>;IGNORE
+<U0216> <U0055>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0217> <U0055>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00DB> <U0055>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00FB> <U0055>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01D3> <U0055>;<CARON>;<CAPITAL>;IGNORE
+<U01D4> <U0055>;<CARON>;<SMALL>;IGNORE
+<U016E> <U0055>;<RING>;<CAPITAL>;IGNORE
+<U016F> <U0055>;<RING>;<SMALL>;IGNORE
+<U00DC> <U0055>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FC> <U0055>;<DIAERESIS>;<SMALL>;IGNORE
+<U01D5> <U0055>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01D6> <U0055>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U01D7> <U0055>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U01D8> <U0055>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U01DB> <U0055>;<DIAERESIS+GRAVE>;<CAPITAL>;IGNORE
+<U01DC> <U0055>;<DIAERESIS+GRAVE>;<SMALL>;IGNORE
+<U01D9> <U0055>;<DIAERESIS+CARON>;<CAPITAL>;IGNORE
+<U01DA> <U0055>;<DIAERESIS+CARON>;<SMALL>;IGNORE
+<U0170> <U0055>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0171> <U0055>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1EE6> <U0055>;<HOOK>;<CAPITAL>;IGNORE
+<U1EE7> <U0055>;<HOOK>;<SMALL>;IGNORE
+<U0168> <U0055>;<TILDE>;<CAPITAL>;IGNORE
+<U0169> <U0055>;<TILDE>;<SMALL>;IGNORE
+<U1E78> <U0055>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E79> <U0055>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E74> <U0055>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E75> <U0055>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U1EE4> <U0055>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE5> <U0055>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0172> <U0055>;<OGONEK>;<CAPITAL>;IGNORE
+<U0173> <U0055>;<OGONEK>;<SMALL>;IGNORE
+<U016A> <U0055>;<MACRON>;<CAPITAL>;IGNORE
+<U016B> <U0055>;<MACRON>;<SMALL>;IGNORE
+<U1E7A> <U0055>;<MACRON+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E7B> <U0055>;<MACRON+DIAERESIS>;<SMALL>;IGNORE
+<U1E72> <U0055>;<MACRON+DIAERESIS-BELOW>;<CAPITAL>;IGNORE
+<U1E73> <U0055>;<MACRON+DIAERESIS-BELOW>;<SMALL>;IGNORE
+<U1E76> <U0055>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E77> <U0055>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U01AF> <U0055>;<HORN>;<CAPITAL>;IGNORE
+<U01B0> <U0055>;<HORN>;<SMALL>;IGNORE
+<U1EE8> <U0055>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EE9> <U0055>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EEA> <U0055>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EEB> <U0055>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EEC> <U0055>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EED> <U0055>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EEE> <U0055>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EEF> <U0055>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EF0> <U0055>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF1> <U0055>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<u8>
+<U0056> <U0056>;<NONE>;<CAPITAL>;IGNORE
+<U0076> <U0056>;<NONE>;<SMALL>;IGNORE
+<U1E7C> <U0056>;<TILDE>;<CAPITAL>;IGNORE
+<U1E7D> <U0056>;<TILDE>;<SMALL>;IGNORE
+<U1E7E> <U0056>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E7F> <U0056>;<DOT-BELOW>;<SMALL>;IGNORE
+<v8>
+<U0057> <U0057>;<NONE>;<CAPITAL>;IGNORE
+<U0077> <U0057>;<NONE>;<SMALL>;IGNORE
+<U1E82> <U0057>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E83> <U0057>;<ACUTE>;<SMALL>;IGNORE
+<U1E80> <U0057>;<GRAVE>;<CAPITAL>;IGNORE
+<U1E81> <U0057>;<GRAVE>;<SMALL>;IGNORE
+<U0174> <U0057>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0175> <U0057>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E84> <U0057>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E85> <U0057>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E86> <U0057>;<DOT>;<CAPITAL>;IGNORE
+<U1E87> <U0057>;<DOT>;<SMALL>;IGNORE
+<U1E88> <U0057>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E89> <U0057>;<DOT-BELOW>;<SMALL>;IGNORE
+<w8>
+<U0058> <U0058>;<NONE>;<CAPITAL>;IGNORE
+<U0078> <U0058>;<NONE>;<SMALL>;IGNORE
+<U1E8C> <U0058>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E8D> <U0058>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E8A> <U0058>;<DOT>;<CAPITAL>;IGNORE
+<U1E8B> <U0058>;<DOT>;<SMALL>;IGNORE
+<x8>
+<U0059> <U0059>;<NONE>;<CAPITAL>;IGNORE
+<U0079> <U0059>;<NONE>;<SMALL>;IGNORE
+<U00DD> <U0059>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FD> <U0059>;<ACUTE>;<SMALL>;IGNORE
+<U1EF2> <U0059>;<GRAVE>;<CAPITAL>;IGNORE
+<U1EF3> <U0059>;<GRAVE>;<SMALL>;IGNORE
+<U0176> <U0059>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0177> <U0059>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0178> <U0059>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FF> <U0059>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EF6> <U0059>;<HOOK>;<CAPITAL>;IGNORE
+<U1EF7> <U0059>;<HOOK>;<SMALL>;IGNORE
+<U1EF8> <U0059>;<TILDE>;<CAPITAL>;IGNORE
+<U1EF9> <U0059>;<TILDE>;<SMALL>;IGNORE
+<U1E8E> <U0059>;<DOT>;<CAPITAL>;IGNORE
+<U1E8F> <U0059>;<DOT>;<SMALL>;IGNORE
+<U1EF4> <U0059>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF5> <U0059>;<DOT-BELOW>;<SMALL>;IGNORE
+<y8>
+<U005A> <U005A>;<NONE>;<CAPITAL>;IGNORE
+<U007A> <U005A>;<NONE>;<SMALL>;IGNORE
+<U0179> <U005A>;<ACUTE>;<CAPITAL>;IGNORE
+<U017A> <U005A>;<ACUTE>;<SMALL>;IGNORE
+<U1E90> <U005A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E91> <U005A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U017D> <U005A>;<CARON>;<CAPITAL>;IGNORE
+<U017E> <U005A>;<CARON>;<SMALL>;IGNORE
+<U017B> <U005A>;<DOT>;<CAPITAL>;IGNORE
+<U017C> <U005A>;<DOT>;<SMALL>;IGNORE
+<U1E92> <U005A>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E93> <U005A>;<DOT-BELOW>;<SMALL>;IGNORE
+<U01B5> <U005A>;<STROKE>;<CAPITAL>;IGNORE
+<U01B6> <U005A>;<STROKE>;<SMALL>;IGNORE
+<U1E94> <U005A>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E95> <U005A>;<LINE-BELOW>;<SMALL>;IGNORE
+<z8>
+<U0391> <U0391>;<CAPITAL>;<GREEK>;IGNORE
+<U0386> <U0391>;<CAPITAL>;<TONOS>;IGNORE
+<U03B1> <U0391>;<SMALL>;<GREEK>;IGNORE
+<U03AC> <U0391>;<SMALL>;<TONOS>;IGNORE
+<U0392> <U0392>;<CAPITAL>;<GREEK>;IGNORE
+<U03B2> <U0392>;<SMALL>;<GREEK>;IGNORE
+<U0393> <U0393>;<CAPITAL>;<GREEK>;IGNORE
+<U03B3> <U0393>;<SMALL>;<GREEK>;IGNORE
+<U0394> <U0394>;<CAPITAL>;<GREEK>;IGNORE
+<U03B4> <U0394>;<SMALL>;<GREEK>;IGNORE
+<U0395> <U0395>;<CAPITAL>;<GREEK>;IGNORE
+<U0388> <U0395>;<CAPITAL>;<TONOS>;IGNORE
+<U03B5> <U0395>;<SMALL>;<GREEK>;IGNORE
+<U03AD> <U0395>;<SMALL>;<TONOS>;IGNORE
+<U0396> <U0396>;<CAPITAL>;<GREEK>;IGNORE
+<U03B6> <U0396>;<SMALL>;<GREEK>;IGNORE
+<U0397> <U0397>;<CAPITAL>;<GREEK>;IGNORE
+<U0389> <U0397>;<CAPITAL>;<TONOS>;IGNORE
+<U03B7> <U0397>;<SMALL>;<GREEK>;IGNORE
+<U03AE> <U0397>;<SMALL>;<TONOS>;IGNORE
+<U0398> <U0398>;<CAPITAL>;<GREEK>;IGNORE
+<U03B8> <U0398>;<SMALL>;<GREEK>;IGNORE
+<U0399> <U0399>;<CAPITAL>;<GREEK>;IGNORE
+<U038A> <U0399>;<CAPITAL>;<TONOS>;IGNORE
+<U03AA> <U0399>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03B9> <U0399>;<SMALL>;<GREEK>;IGNORE
+<U03AF> <U0399>;<SMALL>;<TONOS>;IGNORE
+<U03CA> <U0399>;<SMALL>;<DIALYTICA>;IGNORE
+<U0390> <U0399>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U039A> <U039A>;<CAPITAL>;<GREEK>;IGNORE
+<U03BA> <U039A>;<SMALL>;<GREEK>;IGNORE
+<U039B> <U039B>;<CAPITAL>;<GREEK>;IGNORE
+<U03BB> <U039B>;<SMALL>;<GREEK>;IGNORE
+<U039C> <U039C>;<CAPITAL>;<GREEK>;IGNORE
+<U03BC> <U039C>;<SMALL>;<GREEK>;IGNORE
+<U039D> <U039D>;<CAPITAL>;<GREEK>;IGNORE
+<U03BD> <U039D>;<SMALL>;<GREEK>;IGNORE
+<U039E> <U039E>;<CAPITAL>;<GREEK>;IGNORE
+<U03BE> <U039E>;<SMALL>;<GREEK>;IGNORE
+<U039F> <U039F>;<CAPITAL>;<GREEK>;IGNORE
+<U038C> <U039F>;<CAPITAL>;<TONOS>;IGNORE
+<U03BF> <U039F>;<SMALL>;<GREEK>;IGNORE
+<U03CC> <U039F>;<SMALL>;<TONOS>;IGNORE
+<U03A0> <U03A0>;<CAPITAL>;<GREEK>;IGNORE
+<U03C0> <U03A0>;<SMALL>;<GREEK>;IGNORE
+<U03A1> <U03A1>;<CAPITAL>;<GREEK>;IGNORE
+<U03C1> <U03A1>;<SMALL>;<GREEK>;IGNORE
+<U03A3> <U03A3>;<CAPITAL>;<GREEK>;IGNORE
+<U03C3> <U03A3>;<SMALL>;<GREEK>;IGNORE
+<U03C2> <U03A3>;<SMALL>;<U03C2>;IGNORE
+<U03A4> <U03A4>;<CAPITAL>;<GREEK>;IGNORE
+<U03C4> <U03A4>;<SMALL>;<GREEK>;IGNORE
+<U03A5> <U03A5>;<CAPITAL>;<GREEK>;IGNORE
+<U038E> <U03A5>;<CAPITAL>;<TONOS>;IGNORE
+<U03AB> <U03A5>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03C5> <U03A5>;<SMALL>;<GREEK>;IGNORE
+<U03CD> <U03A5>;<SMALL>;<TONOS>;IGNORE
+<U03CB> <U03A5>;<SMALL>;<DIALYTICA>;IGNORE
+<U03B0> <U03A5>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U03A6> <U03A6>;<CAPITAL>;<GREEK>;IGNORE
+<U03C6> <U03A6>;<SMALL>;<GREEK>;IGNORE
+<U03A7> <U03A7>;<CAPITAL>;<GREEK>;IGNORE
+<U03C7> <U03A7>;<SMALL>;<GREEK>;IGNORE
+<U03A8> <U03A8>;<CAPITAL>;<GREEK>;IGNORE
+<U03C8> <U03A8>;<SMALL>;<GREEK>;IGNORE
+<U03A9> <U03A9>;<CAPITAL>;<GREEK>;IGNORE
+<U038F> <U03A9>;<CAPITAL>;<TONOS>;IGNORE
+<U03C9> <U03A9>;<SMALL>;<GREEK>;IGNORE
+<U03CE> <U03A9>;<SMALL>;<TONOS>;IGNORE
+<U0410> <U0410>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0430> <U0410>;<CYRILLIC>;<SMALL>;IGNORE
+<U0411> <U0411>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0431> <U0411>;<CYRILLIC>;<SMALL>;IGNORE
+<U0412> <U0412>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0432> <U0412>;<CYRILLIC>;<SMALL>;IGNORE
+<U0413> <U0413>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0433> <U0413>;<CYRILLIC>;<SMALL>;IGNORE
+<U0403> <U0403>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0453> <U0403>;<CYRILLIC>;<SMALL>;IGNORE
+<U0490> <U0490>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0491> <U0490>;<CYRILLIC>;<SMALL>;IGNORE
+<U0414> <U0414>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0434> <U0414>;<CYRILLIC>;<SMALL>;IGNORE
+<U0402> <U0402>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0452> <U0402>;<CYRILLIC>;<SMALL>;IGNORE
+<U0415> <U0415>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0435> <U0415>;<CYRILLIC>;<SMALL>;IGNORE
+<U0401> <U0401>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0451> <U0401>;<CYRILLIC>;<SMALL>;IGNORE
+<U0404> <U0404>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0454> <U0404>;<CYRILLIC>;<SMALL>;IGNORE
+<U0416> <U0416>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0436> <U0416>;<CYRILLIC>;<SMALL>;IGNORE
+<U0417> <U0417>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0437> <U0417>;<CYRILLIC>;<SMALL>;IGNORE
+<U0418> <U0418>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0438> <U0418>;<CYRILLIC>;<SMALL>;IGNORE
+<U0406> <U0406>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0456> <U0406>;<CYRILLIC>;<SMALL>;IGNORE
+<U0407> <U0407>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0457> <U0407>;<CYRILLIC>;<SMALL>;IGNORE
+<U0408> <U0408>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0458> <U0408>;<CYRILLIC>;<SMALL>;IGNORE
+<U0419> <U0419>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0439> <U0419>;<CYRILLIC>;<SMALL>;IGNORE
+<U041A> <U041A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043A> <U041A>;<CYRILLIC>;<SMALL>;IGNORE
+<U040C> <U040C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045C> <U040C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041B> <U041B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043B> <U041B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0409> <U0409>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0459> <U0409>;<CYRILLIC>;<SMALL>;IGNORE
+<U041C> <U041C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043C> <U041C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041D> <U041D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043D> <U041D>;<CYRILLIC>;<SMALL>;IGNORE
+<U040A> <U040A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045A> <U040A>;<CYRILLIC>;<SMALL>;IGNORE
+<U041E> <U041E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043E> <U041E>;<CYRILLIC>;<SMALL>;IGNORE
+<U041F> <U041F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043F> <U041F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0420> <U0420>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0440> <U0420>;<CYRILLIC>;<SMALL>;IGNORE
+<U0421> <U0421>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0441> <U0421>;<CYRILLIC>;<SMALL>;IGNORE
+<U0422> <U0422>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0442> <U0422>;<CYRILLIC>;<SMALL>;IGNORE
+<U040B> <U040B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045B> <U040B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0423> <U0423>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0443> <U0423>;<CYRILLIC>;<SMALL>;IGNORE
+<U040E> <U040E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045E> <U040E>;<CYRILLIC>;<SMALL>;IGNORE
+<U0424> <U0424>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0444> <U0424>;<CYRILLIC>;<SMALL>;IGNORE
+<U0425> <U0425>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0445> <U0425>;<CYRILLIC>;<SMALL>;IGNORE
+<U0426> <U0426>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0446> <U0426>;<CYRILLIC>;<SMALL>;IGNORE
+<U0405> <U0405>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0455> <U0405>;<CYRILLIC>;<SMALL>;IGNORE
+<U0427> <U0427>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0447> <U0427>;<CYRILLIC>;<SMALL>;IGNORE
+<U040F> <U040F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045F> <U040F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0428> <U0428>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0448> <U0428>;<CYRILLIC>;<SMALL>;IGNORE
+<U0429> <U0429>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0449> <U0429>;<CYRILLIC>;<SMALL>;IGNORE
+<U044A> <U044A>;<CYRILLIC>;<SMALL>;IGNORE
+<U042A> <U044A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042B> <U042B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044B> <U042B>;<CYRILLIC>;<SMALL>;IGNORE
+<U044C> <U044C>;<CYRILLIC>;<SMALL>;IGNORE
+<U042C> <U044C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042D> <U042D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044D> <U042D>;<CYRILLIC>;<SMALL>;IGNORE
+<U042E> <U042E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044E> <U042E>;<CYRILLIC>;<SMALL>;IGNORE
+<U042F> <U042F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044F> <U042F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0462> <U0462>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0463> <U0462>;<CYRILLIC>;<SMALL>;IGNORE
+<U046A> <U046A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U046B> <U046A>;<CYRILLIC>;<SMALL>;IGNORE
+<U0472> <U0472>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0473> <U0472>;<CYRILLIC>;<SMALL>;IGNORE
+<U0474> <U0474>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0475> <U0474>;<CYRILLIC>;<SMALL>;IGNORE
+<U0480> <U0480>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0481> <U0480>;<CYRILLIC>;<SMALL>;IGNORE
+<U05D0> <U05D0>;IGNORE;IGNORE;IGNORE
+<U05D1> <U05D1>;IGNORE;IGNORE;IGNORE
+<U05D2> <U05D2>;IGNORE;IGNORE;IGNORE
+<U05D3> <U05D3>;IGNORE;IGNORE;IGNORE
+<U05D4> <U05D4>;IGNORE;IGNORE;IGNORE
+<U05D5> <U05D5>;IGNORE;IGNORE;IGNORE
+<U05D6> <U05D6>;IGNORE;IGNORE;IGNORE
+<U05D7> <U05D7>;IGNORE;IGNORE;IGNORE
+<U05D8> <U05D8>;IGNORE;IGNORE;IGNORE
+<U05D9> <U05D9>;IGNORE;IGNORE;IGNORE
+<U05DA> <U05DA>;IGNORE;IGNORE;IGNORE
+<U05DB> <U05DB>;IGNORE;IGNORE;IGNORE
+<U05DC> <U05DC>;IGNORE;IGNORE;IGNORE
+<U05DD> <U05DD>;IGNORE;IGNORE;IGNORE
+<U05DE> <U05DE>;IGNORE;IGNORE;IGNORE
+<U05DF> <U05DF>;IGNORE;IGNORE;IGNORE
+<U05E0> <U05E0>;IGNORE;IGNORE;IGNORE
+<U05E1> <U05E1>;IGNORE;IGNORE;IGNORE
+<U05E2> <U05E2>;IGNORE;IGNORE;IGNORE
+<U05E3> <U05E3>;IGNORE;IGNORE;IGNORE
+<U05E4> <U05E4>;IGNORE;IGNORE;IGNORE
+<U05E5> <U05E5>;IGNORE;IGNORE;IGNORE
+<U05E6> <U05E6>;IGNORE;IGNORE;IGNORE
+<U05E7> <U05E7>;IGNORE;IGNORE;IGNORE
+<U05E8> <U05E8>;IGNORE;IGNORE;IGNORE
+<U05E9> <U05E9>;IGNORE;IGNORE;IGNORE
+<U05EA> <U05EA>;IGNORE;IGNORE;IGNORE
+
+% Arabic collating
+
+<U060C> IGNORE;IGNORE;IGNORE;<U060C>
+<U061B> IGNORE;IGNORE;IGNORE;<U061B>
+<U061F> IGNORE;IGNORE;IGNORE;<U061F>
+<U0640> IGNORE;IGNORE;IGNORE;<U0640>
+
+<U0621> <U0621>;<U0621>;IGNORE;IGNORE
+<U0622> <U0622>;<U0622>;IGNORE;IGNORE
+<UFE82> <U0622>;<UFE82>;IGNORE;IGNORE
+<U0623> <U0621>;<U0623>;IGNORE;IGNORE
+<UFE84> <U0621>;<UFE84>;IGNORE;IGNORE
+<U0624> <U0621>;<U0624>;IGNORE;IGNORE
+<U0625> <U0621>;<U0625>;IGNORE;IGNORE
+<UFE88> <U0621>;<UFE88>;IGNORE;IGNORE
+<U0626> <U0621>;<U0626>;IGNORE;IGNORE
+<U0670> <U0670>;<U0670>;IGNORE;IGNORE
+<U0627> <U0627>;<U0627>;IGNORE;IGNORE
+<UFE8D> <U0627>;<UFE8D>;IGNORE;IGNORE
+<UFE8E> <U0627>;<UFE8E>;IGNORE;IGNORE
+<UE016> <U0627>;<UE016>;IGNORE;IGNORE
+<U0628> <U0628>;<U0628>;IGNORE;IGNORE
+<UFE8F> <U0628>;<UFE8F>;IGNORE;IGNORE
+<UFE90> <U0628>;<UFE90>;IGNORE;IGNORE
+<UFE91> <U0628>;<UFE91>;IGNORE;IGNORE
+<UFE92> <U0628>;<UFE92>;IGNORE;IGNORE
+<U067E> <U067E>;<U067E>;IGNORE;IGNORE
+<U06A4> <U06A4>;<U06A4>;IGNORE;IGNORE
+<U0629> <U0629>;<U0629>;IGNORE;IGNORE
+<UFE93> <U0629>;<UFE93>;IGNORE;IGNORE
+<UFE94> <U0629>;<UFE94>;IGNORE;IGNORE
+<U062A> <U0629>;<U062A>;IGNORE;IGNORE
+<UFE95> <U0629>;<UFE95>;IGNORE;IGNORE
+<UFE96> <U0629>;<UFE96>;IGNORE;IGNORE
+<UFE97> <U0629>;<UFE97>;IGNORE;IGNORE
+<UFE98> <U0629>;<UFE98>;IGNORE;IGNORE
+<U062B> <U062B>;<U062B>;IGNORE;IGNORE
+<UFE99> <U062B>;<UFE99>;IGNORE;IGNORE
+<UFE9A> <U062B>;<UFE9A>;IGNORE;IGNORE
+<UFE9B> <U062B>;<UFE9B>;IGNORE;IGNORE
+<UFE9C> <U062B>;<UFE9C>;IGNORE;IGNORE
+<U062C> <U062C>;<U062C>;IGNORE;IGNORE
+<UFE9D> <U062C>;<UFE9D>;IGNORE;IGNORE
+<UFE9E> <U062C>;<UFE9E>;IGNORE;IGNORE
+<UFE9F> <U062C>;<UFE9F>;IGNORE;IGNORE
+<UFEA0> <U062C>;<UFEA0>;IGNORE;IGNORE
+<U062D> <U062D>;<U062D>;IGNORE;IGNORE
+<UFEA1> <U062D>;<UFEA1>;IGNORE;IGNORE
+<UFEA2> <U062D>;<UFEA2>;IGNORE;IGNORE
+<UFEA3> <U062D>;<UFEA3>;IGNORE;IGNORE
+<UFEA4> <U062D>;<UFEA4>;IGNORE;IGNORE
+<U062E> <U062E>;<U062E>;IGNORE;IGNORE
+<UFEA5> <U062E>;<UFEA5>;IGNORE;IGNORE
+<UFEA6> <U062E>;<UFEA6>;IGNORE;IGNORE
+<UFEA7> <U062E>;<UFEA7>;IGNORE;IGNORE
+<UFEA8> <U062E>;<UFEA8>;IGNORE;IGNORE
+<U062F> <U062F>;<U062F>;IGNORE;IGNORE
+<UFEA9> <U062F>;<UFEA9>;IGNORE;IGNORE
+<UFEAA> <U062F>;<UFEAA>;IGNORE;IGNORE
+<U0630> <U0630>;<U0630>;IGNORE;IGNORE
+<UFEAB> <U0630>;<UFEAB>;IGNORE;IGNORE
+<UFEAC> <U0630>;<UFEAC>;IGNORE;IGNORE
+<U0631> <U0631>;<U0631>;IGNORE;IGNORE
+<UFEAD> <U0631>;<UFEAD>;IGNORE;IGNORE
+<UFEAE> <U0631>;<UFEAE>;IGNORE;IGNORE
+<U0632> <U0632>;<U0632>;IGNORE;IGNORE
+<UFEAF> <U0632>;<UFEAF>;IGNORE;IGNORE
+<UFEB0> <U0632>;<UFEB0>;IGNORE;IGNORE
+<U0633> <U0633>;<U0633>;IGNORE;IGNORE
+<UFEB1> <U0633>;<UFEB1>;IGNORE;IGNORE
+<UFEB2> <U0633>;<UFEB2>;IGNORE;IGNORE
+<UFEB3> <U0633>;<UFEB3>;IGNORE;IGNORE
+<UFEB4> <U0633>;<UFEB4>;IGNORE;IGNORE
+<U0634> <U0634>;<U0634>;IGNORE;IGNORE
+<UFEB5> <U0634>;<UFEB5>;IGNORE;IGNORE
+<UFEB6> <U0634>;<UFEB6>;IGNORE;IGNORE
+<UFEB7> <U0634>;<UFEB7>;IGNORE;IGNORE
+<UFEB8> <U0634>;<UFEB8>;IGNORE;IGNORE
+<U0635> <U0635>;<U0635>;IGNORE;IGNORE
+<UFEB9> <U0635>;<UFEB9>;IGNORE;IGNORE
+<UFEBA> <U0635>;<UFEBA>;IGNORE;IGNORE
+<UFEBB> <U0635>;<UFEBB>;IGNORE;IGNORE
+<UFEBC> <U0635>;<UFEBC>;IGNORE;IGNORE
+<U0636> <U0636>;<U0636>;IGNORE;IGNORE
+<UFEBD> <U0636>;<UFEBD>;IGNORE;IGNORE
+<UFEBE> <U0636>;<UFEBE>;IGNORE;IGNORE
+<UFEBF> <U0636>;<UFEBF>;IGNORE;IGNORE
+<UFEC0> <U0636>;<UFEC0>;IGNORE;IGNORE
+<U0637> <U0637>;<U0637>;IGNORE;IGNORE
+<UFEC1> <U0637>;<UFEC1>;IGNORE;IGNORE
+<UFEC2> <U0637>;<UFEC2>;IGNORE;IGNORE
+<UFEC3> <U0637>;<UFEC3>;IGNORE;IGNORE
+<UFEC4> <U0637>;<UFEC4>;IGNORE;IGNORE
+<U0638> <U0638>;<U0638>;IGNORE;IGNORE
+<UFEC5> <U0638>;<UFEC5>;IGNORE;IGNORE
+<UFEC6> <U0638>;<UFEC6>;IGNORE;IGNORE
+<UFEC7> <U0638>;<UFEC7>;IGNORE;IGNORE
+<UFEC8> <U0638>;<UFEC8>;IGNORE;IGNORE
+<U0639> <U0639>;<U0639>;IGNORE;IGNORE
+<UFEC9> <U0639>;<UFEC9>;IGNORE;IGNORE
+<UFECA> <U0639>;<UFECA>;IGNORE;IGNORE
+<UFECB> <U0639>;<UFECB>;IGNORE;IGNORE
+<UFECC> <U0639>;<UFECC>;IGNORE;IGNORE
+<U063A> <U063A>;<U063A>;IGNORE;IGNORE
+<UFECD> <U063A>;<UFECD>;IGNORE;IGNORE
+<UFECE> <U063A>;<UFECE>;IGNORE;IGNORE
+<UFECF> <U063A>;<UFECF>;IGNORE;IGNORE
+<UFED0> <U063A>;<UFED0>;IGNORE;IGNORE
+<U0641> <U0641>;<U0641>;IGNORE;IGNORE
+<UFED1> <U0641>;<UFED1>;IGNORE;IGNORE
+<UFED2> <U0641>;<UFED2>;IGNORE;IGNORE
+<UFED3> <U0641>;<UFED3>;IGNORE;IGNORE
+<UFED4> <U0641>;<UFED4>;IGNORE;IGNORE
+<U0642> <U0642>;<U0642>;IGNORE;IGNORE
+<UFED5> <U0642>;<UFED5>;IGNORE;IGNORE
+<UFED6> <U0642>;<UFED6>;IGNORE;IGNORE
+<UFED7> <U0642>;<UFED7>;IGNORE;IGNORE
+<UFED8> <U0642>;<UFED8>;IGNORE;IGNORE
+<U0643> <U0643>;<U0643>;IGNORE;IGNORE
+<UFED9> <U0643>;<UFED9>;IGNORE;IGNORE
+<UFEDA> <U0643>;<UFEDA>;IGNORE;IGNORE
+<UFEDB> <U0643>;<UFEDB>;IGNORE;IGNORE
+<UFEDC> <U0643>;<UFEDC>;IGNORE;IGNORE
+<U0644> <U0644>;<U0644>;IGNORE;IGNORE
+<UFEDD> <U0644>;<UFEDD>;IGNORE;IGNORE
+<UFEDE> <U0644>;<UFEDE>;IGNORE;IGNORE
+<UFEDF> <U0644>;<UFEDF>;IGNORE;IGNORE
+<UFEE0> <U0644>;<UFEE0>;IGNORE;IGNORE
+<U0645> <U0645>;<U0645>;IGNORE;IGNORE
+<UFEE1> <U0645>;<UFEE1>;IGNORE;IGNORE
+<UFEE2> <U0645>;<UFEE2>;IGNORE;IGNORE
+<UFEE3> <U0645>;<UFEE3>;IGNORE;IGNORE
+<UFEE4> <U0645>;<UFEE4>;IGNORE;IGNORE
+<U0646> <U0646>;<U0646>;IGNORE;IGNORE
+<UFEE5> <U0646>;<UFEE5>;IGNORE;IGNORE
+<UFEE6> <U0646>;<UFEE6>;IGNORE;IGNORE
+<UFEE7> <U0646>;<UFEE7>;IGNORE;IGNORE
+<UFEE8> <U0646>;<UFEE8>;IGNORE;IGNORE
+<U0647> <U0647>;<U0647>;IGNORE;IGNORE
+<UFEE9> <U0647>;<UFEE9>;IGNORE;IGNORE
+<UFEEA> <U0647>;<UFEEA>;IGNORE;IGNORE
+<UFEEB> <U0647>;<UFEEB>;IGNORE;IGNORE
+<UFEEC> <U0647>;<UFEEC>;IGNORE;IGNORE
+<U0648> <U0648>;<U0648>;IGNORE;IGNORE
+<UFEED> <U0648>;<UFEED>;IGNORE;IGNORE
+<UFEEE> <U0648>;<UFEEE>;IGNORE;IGNORE
+<U0649> <U0649>;<U0649>;IGNORE;IGNORE
+<UFEEF> <U0649>;<UFEEF>;IGNORE;IGNORE
+<UFEF0> <U0649>;<UFEF0>;IGNORE;IGNORE
+<U064A> <U064A>;<U064A>;IGNORE;IGNORE
+<UFEF1> <U064A>;<UFEF1>;IGNORE;IGNORE
+<UFEF2> <U064A>;<UFEF2>;IGNORE;IGNORE
+<UFEF3> <U064A>;<UFEF3>;IGNORE;IGNORE
+<UFEF4> <U064A>;<UFEF4>;IGNORE;IGNORE
+
+<U064B> IGNORE;IGNORE;<U064B>;IGNORE
+<U064C> IGNORE;IGNORE;<U064C>;IGNORE
+<U064D> IGNORE;IGNORE;<U064D>;IGNORE
+<U064E> IGNORE;IGNORE;<U064E>;IGNORE
+<U064F> IGNORE;IGNORE;<U064F>;IGNORE
+<U0650> IGNORE;IGNORE;<U0650>;IGNORE
+<U0651> IGNORE;IGNORE;<U0651>;IGNORE
+<UFE7D> IGNORE;IGNORE;<UFE7D>;IGNORE
+<U0652> IGNORE;IGNORE;<U0652>;IGNORE
+
+<U0660> <U0030>;<U0660>;IGNORE;IGNORE
+<U0661> <U0031>;<U0661>;IGNORE;IGNORE
+<U0662> <U0032>;<U0662>;IGNORE;IGNORE
+<U0663> <U0033>;<U0663>;IGNORE;IGNORE
+<U0664> <U0034>;<U0664>;IGNORE;IGNORE
+<U0665> <U0035>;<U0665>;IGNORE;IGNORE
+<U0666> <U0036>;<U0666>;IGNORE;IGNORE
+<U0667> <U0037>;<U0667>;IGNORE;IGNORE
+<U0668> <U0038>;<U0668>;IGNORE;IGNORE
+<U0669> <U0039>;<U0669>;IGNORE;IGNORE
+
+<UFEF5> "<U0644><U0622>";"<U0644><U0622>";"<UFEF5><UFEF5>";IGNORE
+<UFEF6> "<U0644><U0622>";"<U0644><UFE82>";"<UFEF6><UFEF6>";IGNORE
+<UFEF7> "<U0644><U0623>";"<U0644><U0623>";"<UFEF7><UFEF7>";IGNORE
+<UFEF8> "<U0644><U0623>";"<U0644><UFE84>";"<UFEF8><UFEF8>";IGNORE
+<UFEF9> "<U0644><U0625>";"<U0644><U0625>";"<UFEF9><UFEF9>";IGNORE
+<UFEFA> "<U0644><U0625>";"<U0644><UFE88>";"<UFEFA><UFEFA>";IGNORE
+<UFEFB> "<U0644><U0627>";"<U0644><UFE8D>";"<UFEFB><UFEFB>";IGNORE
+<UFEFC> "<U0644><U0627>";"<U0644><UFE8E>";"<UFEFC><UFEFC>";IGNORE
+
+% katakana/hiragana sorting
+% base is katakana, as this is present in most charsets
+% normal before voiced before semi-voiced
+% small vocals before normal vocals
+% katakana before hiragana
+
+<U30A1> <U30A1>;<U30A1>;IGNORE;IGNORE
+<U3041> <U30A1>;<U3041>;IGNORE;IGNORE
+<U30A2> <U30A1>;<U30A2>;IGNORE;IGNORE
+<U3042> <U30A1>;<U3042>;IGNORE;IGNORE
+<U30A3> <U30A3>;<U30A3>;IGNORE;IGNORE
+<U3043> <U30A3>;<U3043>;IGNORE;IGNORE
+<U30A4> <U30A3>;<U30A4>;IGNORE;IGNORE
+<U3044> <U30A3>;<U3044>;IGNORE;IGNORE
+<U30A5> <U30A5>;<U30A5>;IGNORE;IGNORE
+<U3045> <U30A5>;<U3045>;IGNORE;IGNORE
+<U30A6> <U30A5>;<U30A6>;IGNORE;IGNORE
+<U3046> <U30A5>;<U3046>;IGNORE;IGNORE
+<U30F4> <U30A5>;<U30F4>;IGNORE;IGNORE
+<U30A7> <U30A7>;<U30A7>;IGNORE;IGNORE
+<U3047> <U30A7>;<U3047>;IGNORE;IGNORE
+<U30A8> <U30A7>;<U30A8>;IGNORE;IGNORE
+<U3048> <U30A7>;<U3048>;IGNORE;IGNORE
+<U30A9> <U30A9>;<U30A9>;IGNORE;IGNORE
+<U3049> <U30A9>;<U3049>;IGNORE;IGNORE
+<U30AA> <U30A9>;<U30AA>;IGNORE;IGNORE
+<U304A> <U30A9>;<U304A>;IGNORE;IGNORE
+<U30F5> <U30F5>;<U30F5>;IGNORE;IGNORE
+<U30AB> <U30F5>;<U30AB>;IGNORE;IGNORE
+<U304B> <U30F5>;<U304B>;IGNORE;IGNORE
+<U30AC> <U30F5>;<U30AC>;IGNORE;IGNORE
+<U304C> <U30F5>;<U304C>;IGNORE;IGNORE
+<U30AD> <U30AD>;<U30AD>;IGNORE;IGNORE
+<U304D> <U30AD>;<U304D>;IGNORE;IGNORE
+<U30AE> <U30AD>;<U30AE>;IGNORE;IGNORE
+<U304E> <U30AD>;<U304E>;IGNORE;IGNORE
+<U30AF> <U30AF>;<U30AF>;IGNORE;IGNORE
+<U304F> <U30AF>;<U304F>;IGNORE;IGNORE
+<U30B0> <U30AF>;<U30B0>;IGNORE;IGNORE
+<U3050> <U30AF>;<U3050>;IGNORE;IGNORE
+<U30F6> <U30F6>;<U30F6>;IGNORE;IGNORE
+<U30B1> <U30F6>;<U30B1>;IGNORE;IGNORE
+<U3051> <U30F6>;<U3051>;IGNORE;IGNORE
+<U30B2> <U30F6>;<U30B2>;IGNORE;IGNORE
+<U3052> <U30F6>;<U3052>;IGNORE;IGNORE
+<U30B3> <U30B3>;<U30B3>;IGNORE;IGNORE
+<U3053> <U30B3>;<U3053>;IGNORE;IGNORE
+<U30B4> <U30B3>;<U30B4>;IGNORE;IGNORE
+<U3054> <U30B3>;<U3054>;IGNORE;IGNORE
+<U30B5> <U30B5>;<U30B5>;IGNORE;IGNORE
+<U3055> <U30B5>;<U3055>;IGNORE;IGNORE
+<U30B6> <U30B5>;<U30B6>;IGNORE;IGNORE
+<U3056> <U30B5>;<U3056>;IGNORE;IGNORE
+<U30B7> <U30B7>;<U30B7>;IGNORE;IGNORE
+<U3057> <U30B7>;<U3057>;IGNORE;IGNORE
+<U30B8> <U30B7>;<U30B8>;IGNORE;IGNORE
+<U3058> <U30B7>;<U3058>;IGNORE;IGNORE
+<U30B9> <U30B9>;<U30B9>;IGNORE;IGNORE
+<U3059> <U30B9>;<U3059>;IGNORE;IGNORE
+<U30BA> <U30B9>;<U30BA>;IGNORE;IGNORE
+<U305A> <U30B9>;<U305A>;IGNORE;IGNORE
+<U30BB> <U30BB>;<U30BB>;IGNORE;IGNORE
+<U305B> <U30BB>;<U305B>;IGNORE;IGNORE
+<U30BC> <U30BB>;<U30BC>;IGNORE;IGNORE
+<U305C> <U30BB>;<U305C>;IGNORE;IGNORE
+<U30BD> <U30BD>;<U30BD>;IGNORE;IGNORE
+<U305D> <U30BD>;<U305D>;IGNORE;IGNORE
+<U30BE> <U30BD>;<U30BE>;IGNORE;IGNORE
+<U305E> <U30BD>;<U305E>;IGNORE;IGNORE
+<U30BF> <U30BF>;<U30BF>;IGNORE;IGNORE
+<U305F> <U30BF>;<U305F>;IGNORE;IGNORE
+<U30C0> <U30BF>;<U30C0>;IGNORE;IGNORE
+<U3060> <U30BF>;<U3060>;IGNORE;IGNORE
+<U30C1> <U30C1>;<U30C1>;IGNORE;IGNORE
+<U3061> <U30C1>;<U3061>;IGNORE;IGNORE
+<U30C2> <U30C1>;<U30C2>;IGNORE;IGNORE
+<U3062> <U30C1>;<U3062>;IGNORE;IGNORE
+<U30C3> <U30C3>;<U30C3>;IGNORE;IGNORE
+<U3063> <U30C3>;<U3063>;IGNORE;IGNORE
+<U30C4> <U30C3>;<U30C4>;IGNORE;IGNORE
+<U3064> <U30C3>;<U3064>;IGNORE;IGNORE
+<U30C5> <U30C3>;<U30C5>;IGNORE;IGNORE
+<U3065> <U30C3>;<U3065>;IGNORE;IGNORE
+<U30C6> <U30C6>;<U30C6>;IGNORE;IGNORE
+<U3066> <U30C6>;<U3066>;IGNORE;IGNORE
+<U30C7> <U30C6>;<U30C7>;IGNORE;IGNORE
+<U3067> <U30C6>;<U3067>;IGNORE;IGNORE
+<U30C8> <U30C8>;<U30C8>;IGNORE;IGNORE
+<U3068> <U30C8>;<U3068>;IGNORE;IGNORE
+<U30C9> <U30C8>;<U30C9>;IGNORE;IGNORE
+<U3069> <U30C8>;<U3069>;IGNORE;IGNORE
+<U30CA> <U30CA>;<U30CA>;IGNORE;IGNORE
+<U306A> <U30CA>;<U306A>;IGNORE;IGNORE
+<U30CB> <U30CB>;<U30CB>;IGNORE;IGNORE
+<U306B> <U30CB>;<U306B>;IGNORE;IGNORE
+<U30CC> <U30CC>;<U30CC>;IGNORE;IGNORE
+<U306C> <U30CC>;<U306C>;IGNORE;IGNORE
+<U30CD> <U30CD>;<U30CD>;IGNORE;IGNORE
+<U306D> <U30CD>;<U306D>;IGNORE;IGNORE
+<U30CE> <U30CE>;<U30CE>;IGNORE;IGNORE
+<U306E> <U30CE>;<U306E>;IGNORE;IGNORE
+<U30CF> <U30CF>;<U30CF>;IGNORE;IGNORE
+<U306F> <U30CF>;<U306F>;IGNORE;IGNORE
+<U30D0> <U30CF>;<U30D0>;IGNORE;IGNORE
+<U3070> <U30CF>;<U3070>;IGNORE;IGNORE
+<U30D1> <U30CF>;<U30D1>;IGNORE;IGNORE
+<U3071> <U30CF>;<U3071>;IGNORE;IGNORE
+<U30D2> <U30D2>;<U30D2>;IGNORE;IGNORE
+<U3072> <U30D2>;<U3072>;IGNORE;IGNORE
+<U30D3> <U30D2>;<U30D3>;IGNORE;IGNORE
+<U3073> <U30D2>;<U3073>;IGNORE;IGNORE
+<U30D4> <U30D2>;<U30D4>;IGNORE;IGNORE
+<U3074> <U30D2>;<U3074>;IGNORE;IGNORE
+<U30D5> <U30D5>;<U30D5>;IGNORE;IGNORE
+<U3075> <U30D5>;<U3075>;IGNORE;IGNORE
+<U30D6> <U30D5>;<U30D6>;IGNORE;IGNORE
+<U3076> <U30D5>;<U3076>;IGNORE;IGNORE
+<U30D7> <U30D5>;<U30D7>;IGNORE;IGNORE
+<U3077> <U30D5>;<U3077>;IGNORE;IGNORE
+<U30D8> <U30D8>;<U30D8>;IGNORE;IGNORE
+<U3078> <U30D8>;<U3078>;IGNORE;IGNORE
+<U30D9> <U30D8>;<U30D9>;IGNORE;IGNORE
+<U3079> <U30D8>;<U3079>;IGNORE;IGNORE
+<U30DA> <U30D8>;<U30DA>;IGNORE;IGNORE
+<U307A> <U30D8>;<U307A>;IGNORE;IGNORE
+<U30DB> <U30DB>;<U30DB>;IGNORE;IGNORE
+<U307B> <U30DB>;<U307B>;IGNORE;IGNORE
+<U30DC> <U30DB>;<U30DC>;IGNORE;IGNORE
+<U307C> <U30DB>;<U307C>;IGNORE;IGNORE
+<U30DD> <U30DB>;<U30DD>;IGNORE;IGNORE
+<U307D> <U30DB>;<U307D>;IGNORE;IGNORE
+<U30DE> <U30DE>;<U30DE>;IGNORE;IGNORE
+<U307E> <U30DE>;<U307E>;IGNORE;IGNORE
+<U30DF> <U30DF>;<U30DF>;IGNORE;IGNORE
+<U307F> <U30DF>;<U307F>;IGNORE;IGNORE
+<U30E0> <U30E0>;<U30E0>;IGNORE;IGNORE
+<U3080> <U30E0>;<U3080>;IGNORE;IGNORE
+<U30E1> <U30E1>;<U30E1>;IGNORE;IGNORE
+<U3081> <U30E1>;<U3081>;IGNORE;IGNORE
+<U30E2> <U30E2>;<U30E2>;IGNORE;IGNORE
+<U3082> <U30E2>;<U3082>;IGNORE;IGNORE
+<U30E3> <U30E3>;<U30E3>;IGNORE;IGNORE
+<U3083> <U30E3>;<U3083>;IGNORE;IGNORE
+<U30E4> <U30E3>;<U30E4>;IGNORE;IGNORE
+<U3084> <U30E3>;<U3084>;IGNORE;IGNORE
+<U30E5> <U30E5>;<U30E5>;IGNORE;IGNORE
+<U3085> <U30E5>;<U3085>;IGNORE;IGNORE
+<U30E6> <U30E5>;<U30E6>;IGNORE;IGNORE
+<U3086> <U30E5>;<U3086>;IGNORE;IGNORE
+<U30E7> <U30E7>;<U30E7>;IGNORE;IGNORE
+<U3087> <U30E7>;<U3087>;IGNORE;IGNORE
+<U30E8> <U30E7>;<U30E8>;IGNORE;IGNORE
+<U3088> <U30E7>;<U3088>;IGNORE;IGNORE
+<U30E9> <U30E9>;<U30E9>;IGNORE;IGNORE
+<U3089> <U30E9>;<U3089>;IGNORE;IGNORE
+<U30EA> <U30EA>;<U30EA>;IGNORE;IGNORE
+<U308A> <U30EA>;<U308A>;IGNORE;IGNORE
+<U30EB> <U30EB>;<U30EB>;IGNORE;IGNORE
+<U308B> <U30EB>;<U308B>;IGNORE;IGNORE
+<U30EC> <U30EC>;<U30EC>;IGNORE;IGNORE
+<U308C> <U30EC>;<U308C>;IGNORE;IGNORE
+<U30ED> <U30ED>;<U30ED>;IGNORE;IGNORE
+<U308D> <U30ED>;<U308D>;IGNORE;IGNORE
+<U30EE> <U30EE>;<U30EE>;IGNORE;IGNORE
+<U308E> <U30EE>;<U308E>;IGNORE;IGNORE
+<U30EF> <U30EE>;<U30EF>;IGNORE;IGNORE
+<U308F> <U30EE>;<U308F>;IGNORE;IGNORE
+<U30F0> <U30F0>;<U30F0>;IGNORE;IGNORE
+<U3090> <U30F0>;<U3090>;IGNORE;IGNORE
+<U30F1> <U30F1>;<U30F1>;IGNORE;IGNORE
+<U3091> <U30F1>;<U3091>;IGNORE;IGNORE
+<U30F2> <U30F2>;<U30F2>;IGNORE;IGNORE
+<U3092> <U30F2>;<U3092>;IGNORE;IGNORE
+<U30F3> <U30F3>;<U30F3>;IGNORE;IGNORE
+<U3093> <U30F3>;<U3093>;IGNORE;IGNORE
+
+order_end
+
diff --git a/ap/build/uClibc/extra/locale/collation/comm b/ap/build/uClibc/extra/locale/collation/comm
new file mode 100644
index 0000000..356df60
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/comm
@@ -0,0 +1,1872 @@
+
+% Base collation scheme: 1994-03-22
+
+% Ordering algorithm:
+% 1. Spaces and hyphen (but not soft
+% hyphen) before punctuation
+% characters, punctuation characters
+% before numbers,
+% numbers before letters.
+% 2. Letters with diacritical marks are
+% members of equivalence classes
+% 3. A distinction is made with regards
+% to case as noted below.
+% 4. Special characters are ignored
+% when comparing letters, but then
+% they are considered
+% 5. The alphabets are sorted in order
+% of first appearance in ISO 10646:
+% Latin, Greek, Cyrillic, etc.
+%
+% According to Greek specifications,
+% the steps 2. and 3. above are reversed
+% for the Greek script
+
+% collating symbols
+
+% The collating symbol naming is
+% mostly taken from ISO 10646-1,
+% for example the case and accent
+% names are from this standard.
+
+collating-symbol <CAPITAL>
+collating-symbol <CAPITAL-SMALL>
+collating-symbol <SMALL-CAPITAL>
+collating-symbol <SMALL>
+
+% <CAPITAL-SMALL> and <SMALL-CAPITAL>
+% are for cases like Danish <U0041><U0061>
+% and Spanish <U0043><U0068> being treated
+% as one letter.
+
+% The <a8> ...... <z8> collating
+% symbols have defined weights as
+% the last character in a group of
+% Latin letters. They are used
+% to specify deltas by locales using
+% a locale as the default ordering
+% and by "replace-after" statements
+% specifying the changed placement
+% in an ordering of a character.
+
+collating-symbol <a8>
+collating-symbol <b8>
+collating-symbol <c8>
+collating-symbol <d8>
+collating-symbol <e8>
+collating-symbol <f8>
+collating-symbol <g8>
+collating-symbol <h8>
+collating-symbol <i8>
+collating-symbol <j8>
+collating-symbol <k8>
+collating-symbol <l8>
+collating-symbol <m8>
+collating-symbol <n8>
+collating-symbol <o8>
+collating-symbol <p8>
+collating-symbol <q8>
+collating-symbol <r8>
+collating-symbol <s8>
+collating-symbol <t8>
+collating-symbol <u8>
+collating-symbol <v8>
+collating-symbol <w8>
+collating-symbol <x8>
+collating-symbol <y8>
+collating-symbol <z8>
+
+collating-symbol <NONE>
+collating-symbol <ACUTE>
+collating-symbol <ACUTE+DOT>
+collating-symbol <GRAVE>
+collating-symbol <DOUBLE-GRAVE>
+collating-symbol <BREVE>
+collating-symbol <BREVE+ACUTE>
+collating-symbol <BREVE+GRAVE>
+collating-symbol <BREVE+MACRON>
+collating-symbol <BREVE+HOOK>
+collating-symbol <BREVE+TILDE>
+collating-symbol <BREVE+DOT-BELOW>
+collating-symbol <BREVE-BELOW>
+collating-symbol <INVERTED-BREVE>
+collating-symbol <CIRCUMFLEX>
+collating-symbol <CIRCUMFLEX+ACUTE>
+collating-symbol <CIRCUMFLEX+GRAVE>
+collating-symbol <CIRCUMFLEX+HOOK>
+collating-symbol <CIRCUMFLEX+TILDE>
+collating-symbol <CIRCUMFLEX+DOT-BELOW>
+collating-symbol <CARON>
+collating-symbol <CARON+DIAERESIS>
+collating-symbol <CARON+DOT>
+collating-symbol <RING>
+collating-symbol <RING+ACUTE>
+collating-symbol <RING-BELOW>
+collating-symbol <DIAERESIS>
+collating-symbol <DIAERESIS+MACRON>
+collating-symbol <DIAERESIS+ACUTE>
+collating-symbol <DIAERESIS+GRAVE>
+collating-symbol <DIAERESIS+CARON>
+collating-symbol <DOUBLE-ACUTE>
+collating-symbol <HOOK>
+collating-symbol <TILDE>
+collating-symbol <TILDE+ACUTE>
+collating-symbol <TILDE+DIAERESIS>
+collating-symbol <TILDE-BELOW>
+collating-symbol <DOT>
+collating-symbol <DOT-BELOW>
+collating-symbol <DOT+DOT-BELOW>
+collating-symbol <STROKE>
+collating-symbol <STROKE+ACUTE>
+collating-symbol <CEDILLA>
+collating-symbol <CEDILLA+ACUTE>
+collating-symbol <CEDILLA+GRAVE>
+collating-symbol <CEDILLA+BREVE>
+collating-symbol <OGONEK>
+collating-symbol <OGONEK+MACRON>
+collating-symbol <MACRON>
+collating-symbol <MACRON+ACUTE>
+collating-symbol <MACRON+GRAVE>
+collating-symbol <MACRON+DIAERESIS>
+collating-symbol <MACRON+DIAERESIS-BELOW>
+collating-symbol <MACRON+DOT>
+collating-symbol <MACRON+DOT-BELOW>
+collating-symbol <MACRON+CIRCUMFLEX>
+collating-symbol <LINE-BELOW>
+collating-symbol <HORN>
+collating-symbol <HORN+ACUTE>
+collating-symbol <HORN+GRAVE>
+collating-symbol <HORN+HOOK>
+collating-symbol <HORN+TILDE>
+collating-symbol <HORN+DOT-BELOW>
+collating-symbol <PRECEDED-BY-APOSTROPHE>
+collating-symbol <GREEK>
+collating-symbol <TONOS>
+collating-symbol <DIALYTICA>
+collating-symbol <DIALYTICA+TONOS>
+collating-symbol <CYRILLIC>
+collating-symbol <HIRAGANA>
+collating-symbol <KATAKANA>
+collating-symbol <SPECIAL>
+
+% letter;accent;case;specials
+
+order_start forward;backward;forward;position
+
+% <CAPITAL> or <SMALL> letters first:
+
+<CAPITAL>
+
+% Accents:
+
+<NONE>
+<ACUTE>
+<ACUTE+DOT>
+<GRAVE>
+<DOUBLE-GRAVE>
+<BREVE>
+<BREVE+ACUTE>
+<BREVE+GRAVE>
+<BREVE+MACRON>
+<BREVE+HOOK>
+<BREVE+TILDE>
+<BREVE+DOT-BELOW>
+<BREVE-BELOW>
+<INVERTED-BREVE>
+<CIRCUMFLEX>
+<CIRCUMFLEX+ACUTE>
+<CIRCUMFLEX+GRAVE>
+<CIRCUMFLEX+HOOK>
+<CIRCUMFLEX+TILDE>
+<CIRCUMFLEX+DOT-BELOW>
+<CARON>
+<CARON+DIAERESIS>
+<CARON+DOT>
+<RING>
+<RING+ACUTE>
+<RING-BELOW>
+<DIAERESIS>
+<DIAERESIS+MACRON>
+<DIAERESIS+ACUTE>
+<DIAERESIS+GRAVE>
+<DIAERESIS+CARON>
+<DOUBLE-ACUTE>
+<HOOK>
+<TILDE>
+<TILDE+ACUTE>
+<TILDE+DIAERESIS>
+<TILDE-BELOW>
+<DOT>
+<DOT-BELOW>
+<DOT+DOT-BELOW>
+<STROKE>
+<STROKE+ACUTE>
+<CEDILLA>
+<CEDILLA+ACUTE>
+<CEDILLA+GRAVE>
+<CEDILLA+BREVE>
+<OGONEK>
+<OGONEK+MACRON>
+<MACRON>
+<MACRON+ACUTE>
+<MACRON+GRAVE>
+<MACRON+DIAERESIS>
+<MACRON+DIAERESIS-BELOW>
+<MACRON+DOT>
+<MACRON+DOT-BELOW>
+<MACRON+CIRCUMFLEX>
+<LINE-BELOW>
+<HORN>
+<HORN+ACUTE>
+<HORN+GRAVE>
+<HORN+HOOK>
+<HORN+TILDE>
+<HORN+DOT-BELOW>
+<PRECEDED-BY-APOSTROPHE>
+<GREEK>
+<TONOS>
+<DIALYTICA>
+<DIALYTICA+TONOS>
+<CYRILLIC>
+<HIRAGANA>
+<KATAKANA>
+<SPECIAL>
+
+<U00A0> <U00A0>;<U00A0>;<U00A0>;IGNORE
+<U0009> IGNORE;IGNORE;IGNORE;<U0009>
+<U000B> IGNORE;IGNORE;IGNORE;<U000B>
+<U000D> IGNORE;IGNORE;IGNORE;<U000D>
+<U000A> IGNORE;IGNORE;IGNORE;<U000A>
+<U000C> IGNORE;IGNORE;IGNORE;<U000C>
+<U005F> IGNORE;IGNORE;IGNORE;<U005F>
+<U00AF> IGNORE;IGNORE;IGNORE;<U00AF>
+<U00AD> IGNORE;IGNORE;IGNORE;<U00AD>
+<U002C> IGNORE;IGNORE;IGNORE;<U002C>
+<U003B> IGNORE;IGNORE;IGNORE;<U003B>
+<U003A> IGNORE;IGNORE;IGNORE;<U003A>
+<U0021> IGNORE;IGNORE;IGNORE;<U0021>
+<U00A1> IGNORE;IGNORE;IGNORE;<U00A1>
+<U003F> IGNORE;IGNORE;IGNORE;<U003F>
+<U00BF> IGNORE;IGNORE;IGNORE;<U00BF>
+<U002E> IGNORE;IGNORE;IGNORE;<U002E>
+<U00B4> IGNORE;IGNORE;IGNORE;<U00B4>
+<U0060> IGNORE;IGNORE;IGNORE;<U0060>
+<U005E> IGNORE;IGNORE;IGNORE;<U005E>
+<U00A8> IGNORE;IGNORE;IGNORE;<U00A8>
+<U007E> IGNORE;IGNORE;IGNORE;<U007E>
+<U00B7> IGNORE;IGNORE;IGNORE;<U00B7>
+<U00B8> IGNORE;IGNORE;IGNORE;<U00B8>
+<U0027> IGNORE;IGNORE;IGNORE;<U0027>
+<U2018> IGNORE;IGNORE;IGNORE;<U2018>
+<U2019> IGNORE;IGNORE;IGNORE;<U2019>
+<U0022> IGNORE;IGNORE;IGNORE;<U0022>
+<U201C> IGNORE;IGNORE;IGNORE;<U201C>
+<U201D> IGNORE;IGNORE;IGNORE;<U201D>
+<U00AB> IGNORE;IGNORE;IGNORE;<U00AB>
+<U00BB> IGNORE;IGNORE;IGNORE;<U00BB>
+<U0028> IGNORE;IGNORE;IGNORE;<U0028>
+<U207D> IGNORE;IGNORE;IGNORE;<U207D>
+<U0029> IGNORE;IGNORE;IGNORE;<U0029>
+<U207E> IGNORE;IGNORE;IGNORE;<U207E>
+<U005B> IGNORE;IGNORE;IGNORE;<U005B>
+<U005D> IGNORE;IGNORE;IGNORE;<U005D>
+<U007B> IGNORE;IGNORE;IGNORE;<U007B>
+<U007D> IGNORE;IGNORE;IGNORE;<U007D>
+<U00A7> IGNORE;IGNORE;IGNORE;<U00A7>
+<U00B6> IGNORE;IGNORE;IGNORE;<U00B6>
+<U00A9> IGNORE;IGNORE;IGNORE;<U00A9>
+<U00AE> IGNORE;IGNORE;IGNORE;<U00AE>
+<U0040> IGNORE;IGNORE;IGNORE;<U0040>
+<U00A4> IGNORE;IGNORE;IGNORE;<U00A4>
+<U00A2> IGNORE;IGNORE;IGNORE;<U00A2>
+<U0024> IGNORE;IGNORE;IGNORE;<U0024>
+<U00A3> IGNORE;IGNORE;IGNORE;<U00A3>
+<U00A5> IGNORE;IGNORE;IGNORE;<U00A5>
+<U002A> IGNORE;IGNORE;IGNORE;<U002A>
+<U005C> IGNORE;IGNORE;IGNORE;<U005C>
+<U0026> IGNORE;IGNORE;IGNORE;<U0026>
+<U0023> IGNORE;IGNORE;IGNORE;<U0023>
+<U0025> IGNORE;IGNORE;IGNORE;<U0025>
+<U207B> IGNORE;IGNORE;IGNORE;<U207B>
+<U002B> IGNORE;IGNORE;IGNORE;<U002B>
+<U207A> IGNORE;IGNORE;IGNORE;<U207A>
+<U00B1> IGNORE;IGNORE;IGNORE;<U00B1>
+<U00F7> IGNORE;IGNORE;IGNORE;<U00F7>
+<U00D7> IGNORE;IGNORE;IGNORE;<U00D7>
+<U2260> IGNORE;IGNORE;IGNORE;<U2260>
+<U003C> IGNORE;IGNORE;IGNORE;<U003C>
+<U2264> IGNORE;IGNORE;IGNORE;<U2264>
+<U003D> IGNORE;IGNORE;IGNORE;<U003D>
+<U2265> IGNORE;IGNORE;IGNORE;<U2265>
+<U003E> IGNORE;IGNORE;IGNORE;<U003E>
+<U00AC> IGNORE;IGNORE;IGNORE;<U00AC>
+<U007C> IGNORE;IGNORE;IGNORE;<U007C>
+<U00A6> IGNORE;IGNORE;IGNORE;<U00A6>
+<U00B0> IGNORE;IGNORE;IGNORE;<U00B0>
+<U00B5> IGNORE;IGNORE;IGNORE;<U00B5>
+<U02C7> IGNORE;IGNORE;IGNORE;<U02C7>
+<U02D8> IGNORE;IGNORE;IGNORE;<U02D8>
+<U02D9> IGNORE;IGNORE;IGNORE;<U02D9>
+<U02DA> IGNORE;IGNORE;IGNORE;<U02DA>
+<U02DB> IGNORE;IGNORE;IGNORE;<U02DB>
+<U02DC> IGNORE;IGNORE;IGNORE;<U02DC>
+<U02DD> IGNORE;IGNORE;IGNORE;<U02DD>
+<U0374> IGNORE;IGNORE;IGNORE;<U0374>
+<U0375> IGNORE;IGNORE;IGNORE;<U0375>
+<U037A> IGNORE;IGNORE;IGNORE;<U037A>
+<U037E> IGNORE;IGNORE;IGNORE;<U037E>
+<U0384> IGNORE;IGNORE;IGNORE;<U0384>
+<U0385> IGNORE;IGNORE;IGNORE;<U0385>
+<U0387> IGNORE;IGNORE;IGNORE;<U0387>
+<U03D0> IGNORE;IGNORE;IGNORE;<U03D0>
+<U1FBF> IGNORE;IGNORE;IGNORE;<U1FBF>
+<U1FC0> IGNORE;IGNORE;IGNORE;<U1FC0>
+<U1FC1> IGNORE;IGNORE;IGNORE;<U1FC1>
+<U1FCD> IGNORE;IGNORE;IGNORE;<U1FCD>
+<U1FCE> IGNORE;IGNORE;IGNORE;<U1FCE>
+<U1FCF> IGNORE;IGNORE;IGNORE;<U1FCF>
+<U1FDD> IGNORE;IGNORE;IGNORE;<U1FDD>
+<U1FDE> IGNORE;IGNORE;IGNORE;<U1FDE>
+<U1FDF> IGNORE;IGNORE;IGNORE;<U1FDF>
+<U1FED> IGNORE;IGNORE;IGNORE;<U1FED>
+<U1FEF> IGNORE;IGNORE;IGNORE;<U1FEF>
+<U1FFE> IGNORE;IGNORE;IGNORE;<U1FFE>
+<U2002> IGNORE;IGNORE;IGNORE;<U2002>
+<U2003> IGNORE;IGNORE;IGNORE;<U2003>
+<U2004> IGNORE;IGNORE;IGNORE;<U2004>
+<U2005> IGNORE;IGNORE;IGNORE;<U2005>
+<U2006> IGNORE;IGNORE;IGNORE;<U2006>
+<U200E> IGNORE;IGNORE;IGNORE;<U200E>
+<U200F> IGNORE;IGNORE;IGNORE;<U200F>
+<U2009> IGNORE;IGNORE;IGNORE;<U2009>
+<U200A> IGNORE;IGNORE;IGNORE;<U200A>
+<U2010> IGNORE;IGNORE;IGNORE;<U2010>
+<U2013> IGNORE;IGNORE;IGNORE;<U2013>
+<U2014> IGNORE;IGNORE;IGNORE;<U2014>
+<U2015> IGNORE;IGNORE;IGNORE;<U2015>
+<U2016> IGNORE;IGNORE;IGNORE;<U2016>
+<U2017> IGNORE;IGNORE;IGNORE;<U2017>
+<U201A> IGNORE;IGNORE;IGNORE;<U201A>
+<U201B> IGNORE;IGNORE;IGNORE;<U201B>
+<U201E> IGNORE;IGNORE;IGNORE;<U201E>
+<U201F> IGNORE;IGNORE;IGNORE;<U201F>
+<U2020> IGNORE;IGNORE;IGNORE;<U2020>
+<U2021> IGNORE;IGNORE;IGNORE;<U2021>
+<U2025> IGNORE;IGNORE;IGNORE;<U2025>
+<U2026> IGNORE;IGNORE;IGNORE;<U2026>
+<U2030> IGNORE;IGNORE;IGNORE;<U2030>
+<U2032> IGNORE;IGNORE;IGNORE;<U2032>
+<U2033> IGNORE;IGNORE;IGNORE;<U2033>
+<U2034> IGNORE;IGNORE;IGNORE;<U2034>
+<U2035> IGNORE;IGNORE;IGNORE;<U2035>
+<U2036> IGNORE;IGNORE;IGNORE;<U2036>
+<U2037> IGNORE;IGNORE;IGNORE;<U2037>
+<U2038> IGNORE;IGNORE;IGNORE;<U2038>
+<U2039> IGNORE;IGNORE;IGNORE;<U2039>
+<U203A> IGNORE;IGNORE;IGNORE;<U203A>
+<U203B> IGNORE;IGNORE;IGNORE;<U203B>
+<U203C> IGNORE;IGNORE;IGNORE;<U203C>
+<U203E> IGNORE;IGNORE;IGNORE;<U203E>
+<U207C> IGNORE;IGNORE;IGNORE;<U207C>
+<U2080> IGNORE;IGNORE;IGNORE;<U2080>
+<U2081> IGNORE;IGNORE;IGNORE;<U2081>
+<U2082> IGNORE;IGNORE;IGNORE;<U2082>
+<U2083> IGNORE;IGNORE;IGNORE;<U2083>
+<U2084> IGNORE;IGNORE;IGNORE;<U2084>
+<U2085> IGNORE;IGNORE;IGNORE;<U2085>
+<U2086> IGNORE;IGNORE;IGNORE;<U2086>
+<U2087> IGNORE;IGNORE;IGNORE;<U2087>
+<U2088> IGNORE;IGNORE;IGNORE;<U2088>
+<U2089> IGNORE;IGNORE;IGNORE;<U2089>
+<U208A> IGNORE;IGNORE;IGNORE;<U208A>
+<U208B> IGNORE;IGNORE;IGNORE;<U208B>
+<U208C> IGNORE;IGNORE;IGNORE;<U208C>
+<U208D> IGNORE;IGNORE;IGNORE;<U208D>
+<U208E> IGNORE;IGNORE;IGNORE;<U208E>
+<U20A3> IGNORE;IGNORE;IGNORE;<U20A3>
+<U20A4> IGNORE;IGNORE;IGNORE;<U20A4>
+<U20A7> IGNORE;IGNORE;IGNORE;<U20A7>
+<U20A9> IGNORE;IGNORE;IGNORE;<U20A9>
+<U2103> IGNORE;IGNORE;IGNORE;<U2103>
+<U2105> IGNORE;IGNORE;IGNORE;<U2105>
+<U2109> IGNORE;IGNORE;IGNORE;<U2109>
+<U2116> IGNORE;IGNORE;IGNORE;<U2116>
+<U2117> IGNORE;IGNORE;IGNORE;<U2117>
+<U211E> IGNORE;IGNORE;IGNORE;<U211E>
+<U2120> IGNORE;IGNORE;IGNORE;<U2120>
+<U2122> IGNORE;IGNORE;IGNORE;<U2122>
+<U2126> IGNORE;IGNORE;IGNORE;<U2126>
+<U212B> IGNORE;IGNORE;IGNORE;<U212B>
+<U2153> IGNORE;IGNORE;IGNORE;<U2153>
+<U2154> IGNORE;IGNORE;IGNORE;<U2154>
+<U2155> IGNORE;IGNORE;IGNORE;<U2155>
+<U2156> IGNORE;IGNORE;IGNORE;<U2156>
+<U2157> IGNORE;IGNORE;IGNORE;<U2157>
+<U2158> IGNORE;IGNORE;IGNORE;<U2158>
+<U2159> IGNORE;IGNORE;IGNORE;<U2159>
+<U215A> IGNORE;IGNORE;IGNORE;<U215A>
+<U2160> IGNORE;IGNORE;IGNORE;<U2160>
+<U2161> IGNORE;IGNORE;IGNORE;<U2161>
+<U2162> IGNORE;IGNORE;IGNORE;<U2162>
+<U2163> IGNORE;IGNORE;IGNORE;<U2163>
+<U2164> IGNORE;IGNORE;IGNORE;<U2164>
+<U2165> IGNORE;IGNORE;IGNORE;<U2165>
+<U2166> IGNORE;IGNORE;IGNORE;<U2166>
+<U2167> IGNORE;IGNORE;IGNORE;<U2167>
+<U2168> IGNORE;IGNORE;IGNORE;<U2168>
+<U2169> IGNORE;IGNORE;IGNORE;<U2169>
+<U216A> IGNORE;IGNORE;IGNORE;<U216A>
+<U216B> IGNORE;IGNORE;IGNORE;<U216B>
+<U216C> IGNORE;IGNORE;IGNORE;<U216C>
+<U216D> IGNORE;IGNORE;IGNORE;<U216D>
+<U216E> IGNORE;IGNORE;IGNORE;<U216E>
+<U216F> IGNORE;IGNORE;IGNORE;<U216F>
+<U2170> IGNORE;IGNORE;IGNORE;<U2170>
+<U2171> IGNORE;IGNORE;IGNORE;<U2171>
+<U2172> IGNORE;IGNORE;IGNORE;<U2172>
+<U2173> IGNORE;IGNORE;IGNORE;<U2173>
+<U2174> IGNORE;IGNORE;IGNORE;<U2174>
+<U2175> IGNORE;IGNORE;IGNORE;<U2175>
+<U2176> IGNORE;IGNORE;IGNORE;<U2176>
+<U2177> IGNORE;IGNORE;IGNORE;<U2177>
+<U2178> IGNORE;IGNORE;IGNORE;<U2178>
+<U2179> IGNORE;IGNORE;IGNORE;<U2179>
+<U217A> IGNORE;IGNORE;IGNORE;<U217A>
+<U217B> IGNORE;IGNORE;IGNORE;<U217B>
+<U217C> IGNORE;IGNORE;IGNORE;<U217C>
+<U217D> IGNORE;IGNORE;IGNORE;<U217D>
+<U217E> IGNORE;IGNORE;IGNORE;<U217E>
+<U217F> IGNORE;IGNORE;IGNORE;<U217F>
+<U2180> IGNORE;IGNORE;IGNORE;<U2180>
+<U2181> IGNORE;IGNORE;IGNORE;<U2181>
+<U2182> IGNORE;IGNORE;IGNORE;<U2182>
+<U2191> IGNORE;IGNORE;IGNORE;<U2191>
+<U2193> IGNORE;IGNORE;IGNORE;<U2193>
+<U2194> IGNORE;IGNORE;IGNORE;<U2194>
+<U2195> IGNORE;IGNORE;IGNORE;<U2195>
+<U2196> IGNORE;IGNORE;IGNORE;<U2196>
+<U2197> IGNORE;IGNORE;IGNORE;<U2197>
+<U2198> IGNORE;IGNORE;IGNORE;<U2198>
+<U2199> IGNORE;IGNORE;IGNORE;<U2199>
+<U21A8> IGNORE;IGNORE;IGNORE;<U21A8>
+<U21C0> IGNORE;IGNORE;IGNORE;<U21C0>
+<U21D0> IGNORE;IGNORE;IGNORE;<U21D0>
+<U21D2> IGNORE;IGNORE;IGNORE;<U21D2>
+<U21D4> IGNORE;IGNORE;IGNORE;<U21D4>
+<U2200> IGNORE;IGNORE;IGNORE;<U2200>
+<U2202> IGNORE;IGNORE;IGNORE;<U2202>
+<U2203> IGNORE;IGNORE;IGNORE;<U2203>
+<U2205> IGNORE;IGNORE;IGNORE;<U2205>
+<U2206> IGNORE;IGNORE;IGNORE;<U2206>
+<U2207> IGNORE;IGNORE;IGNORE;<U2207>
+<U2208> IGNORE;IGNORE;IGNORE;<U2208>
+<U220B> IGNORE;IGNORE;IGNORE;<U220B>
+<U220F> IGNORE;IGNORE;IGNORE;<U220F>
+<U2211> IGNORE;IGNORE;IGNORE;<U2211>
+<U2212> IGNORE;IGNORE;IGNORE;<U2212>
+<U2213> IGNORE;IGNORE;IGNORE;<U2213>
+<U2214> IGNORE;IGNORE;IGNORE;<U2214>
+<U2217> IGNORE;IGNORE;IGNORE;<U2217>
+<U2218> IGNORE;IGNORE;IGNORE;<U2218>
+<U221A> IGNORE;IGNORE;IGNORE;<U221A>
+<U221D> IGNORE;IGNORE;IGNORE;<U221D>
+<U221E> IGNORE;IGNORE;IGNORE;<U221E>
+<U221F> IGNORE;IGNORE;IGNORE;<U221F>
+<U2220> IGNORE;IGNORE;IGNORE;<U2220>
+<U2225> IGNORE;IGNORE;IGNORE;<U2225>
+<U2227> IGNORE;IGNORE;IGNORE;<U2227>
+<U2228> IGNORE;IGNORE;IGNORE;<U2228>
+<U2229> IGNORE;IGNORE;IGNORE;<U2229>
+<U222A> IGNORE;IGNORE;IGNORE;<U222A>
+<U222B> IGNORE;IGNORE;IGNORE;<U222B>
+<U222C> IGNORE;IGNORE;IGNORE;<U222C>
+<U222E> IGNORE;IGNORE;IGNORE;<U222E>
+<U2234> IGNORE;IGNORE;IGNORE;<U2234>
+<U2235> IGNORE;IGNORE;IGNORE;<U2235>
+<U2236> IGNORE;IGNORE;IGNORE;<U2236>
+<U2237> IGNORE;IGNORE;IGNORE;<U2237>
+<U223C> IGNORE;IGNORE;IGNORE;<U223C>
+<U223E> IGNORE;IGNORE;IGNORE;<U223E>
+<U2243> IGNORE;IGNORE;IGNORE;<U2243>
+<U2245> IGNORE;IGNORE;IGNORE;<U2245>
+<U2248> IGNORE;IGNORE;IGNORE;<U2248>
+<U224C> IGNORE;IGNORE;IGNORE;<U224C>
+<U2253> IGNORE;IGNORE;IGNORE;<U2253>
+<U2261> IGNORE;IGNORE;IGNORE;<U2261>
+<U226A> IGNORE;IGNORE;IGNORE;<U226A>
+<U226B> IGNORE;IGNORE;IGNORE;<U226B>
+<U226E> IGNORE;IGNORE;IGNORE;<U226E>
+<U226F> IGNORE;IGNORE;IGNORE;<U226F>
+<U2282> IGNORE;IGNORE;IGNORE;<U2282>
+<U2283> IGNORE;IGNORE;IGNORE;<U2283>
+<U2286> IGNORE;IGNORE;IGNORE;<U2286>
+<U2287> IGNORE;IGNORE;IGNORE;<U2287>
+<U2299> IGNORE;IGNORE;IGNORE;<U2299>
+<U229A> IGNORE;IGNORE;IGNORE;<U229A>
+<U22A5> IGNORE;IGNORE;IGNORE;<U22A5>
+<U22C5> IGNORE;IGNORE;IGNORE;<U22C5>
+<U22EE> IGNORE;IGNORE;IGNORE;<U22EE>
+<U2302> IGNORE;IGNORE;IGNORE;<U2302>
+<U2308> IGNORE;IGNORE;IGNORE;<U2308>
+<U2309> IGNORE;IGNORE;IGNORE;<U2309>
+<U230A> IGNORE;IGNORE;IGNORE;<U230A>
+<U230B> IGNORE;IGNORE;IGNORE;<U230B>
+<U2310> IGNORE;IGNORE;IGNORE;<U2310>
+<U2312> IGNORE;IGNORE;IGNORE;<U2312>
+<U2315> IGNORE;IGNORE;IGNORE;<U2315>
+<U2320> IGNORE;IGNORE;IGNORE;<U2320>
+<U2321> IGNORE;IGNORE;IGNORE;<U2321>
+<U2423> IGNORE;IGNORE;IGNORE;<U2423>
+<U2440> IGNORE;IGNORE;IGNORE;<U2440>
+<U2441> IGNORE;IGNORE;IGNORE;<U2441>
+<U2442> IGNORE;IGNORE;IGNORE;<U2442>
+<U2443> IGNORE;IGNORE;IGNORE;<U2443>
+<U2446> IGNORE;IGNORE;IGNORE;<U2446>
+<U2447> IGNORE;IGNORE;IGNORE;<U2447>
+<U2448> IGNORE;IGNORE;IGNORE;<U2448>
+<U2449> IGNORE;IGNORE;IGNORE;<U2449>
+<U2460> IGNORE;IGNORE;IGNORE;<U2460>
+<U2461> IGNORE;IGNORE;IGNORE;<U2461>
+<U2462> IGNORE;IGNORE;IGNORE;<U2462>
+<U2463> IGNORE;IGNORE;IGNORE;<U2463>
+<U2464> IGNORE;IGNORE;IGNORE;<U2464>
+<U2465> IGNORE;IGNORE;IGNORE;<U2465>
+<U2466> IGNORE;IGNORE;IGNORE;<U2466>
+<U2467> IGNORE;IGNORE;IGNORE;<U2467>
+<U2468> IGNORE;IGNORE;IGNORE;<U2468>
+<U2469> IGNORE;IGNORE;IGNORE;<U2469>
+<U246A> IGNORE;IGNORE;IGNORE;<U246A>
+<U246B> IGNORE;IGNORE;IGNORE;<U246B>
+<U246C> IGNORE;IGNORE;IGNORE;<U246C>
+<U246D> IGNORE;IGNORE;IGNORE;<U246D>
+<U246E> IGNORE;IGNORE;IGNORE;<U246E>
+<U246F> IGNORE;IGNORE;IGNORE;<U246F>
+<U2470> IGNORE;IGNORE;IGNORE;<U2470>
+<U2471> IGNORE;IGNORE;IGNORE;<U2471>
+<U2472> IGNORE;IGNORE;IGNORE;<U2472>
+<U2473> IGNORE;IGNORE;IGNORE;<U2473>
+<U2474> IGNORE;IGNORE;IGNORE;<U2474>
+<U2475> IGNORE;IGNORE;IGNORE;<U2475>
+<U2476> IGNORE;IGNORE;IGNORE;<U2476>
+<U2477> IGNORE;IGNORE;IGNORE;<U2477>
+<U2478> IGNORE;IGNORE;IGNORE;<U2478>
+<U2479> IGNORE;IGNORE;IGNORE;<U2479>
+<U247A> IGNORE;IGNORE;IGNORE;<U247A>
+<U247B> IGNORE;IGNORE;IGNORE;<U247B>
+<U247C> IGNORE;IGNORE;IGNORE;<U247C>
+<U247D> IGNORE;IGNORE;IGNORE;<U247D>
+<U247E> IGNORE;IGNORE;IGNORE;<U247E>
+<U247F> IGNORE;IGNORE;IGNORE;<U247F>
+<U2480> IGNORE;IGNORE;IGNORE;<U2480>
+<U2481> IGNORE;IGNORE;IGNORE;<U2481>
+<U2482> IGNORE;IGNORE;IGNORE;<U2482>
+<U2483> IGNORE;IGNORE;IGNORE;<U2483>
+<U2484> IGNORE;IGNORE;IGNORE;<U2484>
+<U2485> IGNORE;IGNORE;IGNORE;<U2485>
+<U2486> IGNORE;IGNORE;IGNORE;<U2486>
+<U2487> IGNORE;IGNORE;IGNORE;<U2487>
+<U2488> IGNORE;IGNORE;IGNORE;<U2488>
+<U2489> IGNORE;IGNORE;IGNORE;<U2489>
+<U248A> IGNORE;IGNORE;IGNORE;<U248A>
+<U248B> IGNORE;IGNORE;IGNORE;<U248B>
+<U248C> IGNORE;IGNORE;IGNORE;<U248C>
+<U248D> IGNORE;IGNORE;IGNORE;<U248D>
+<U248E> IGNORE;IGNORE;IGNORE;<U248E>
+<U248F> IGNORE;IGNORE;IGNORE;<U248F>
+<U2490> IGNORE;IGNORE;IGNORE;<U2490>
+<U2491> IGNORE;IGNORE;IGNORE;<U2491>
+<U2492> IGNORE;IGNORE;IGNORE;<U2492>
+<U2493> IGNORE;IGNORE;IGNORE;<U2493>
+<U2494> IGNORE;IGNORE;IGNORE;<U2494>
+<U2495> IGNORE;IGNORE;IGNORE;<U2495>
+<U2496> IGNORE;IGNORE;IGNORE;<U2496>
+<U2497> IGNORE;IGNORE;IGNORE;<U2497>
+<U2498> IGNORE;IGNORE;IGNORE;<U2498>
+<U2499> IGNORE;IGNORE;IGNORE;<U2499>
+<U249A> IGNORE;IGNORE;IGNORE;<U249A>
+<U249B> IGNORE;IGNORE;IGNORE;<U249B>
+<U24EA> IGNORE;IGNORE;IGNORE;<U24EA>
+<U2500> IGNORE;IGNORE;IGNORE;<U2500>
+<U2502> IGNORE;IGNORE;IGNORE;<U2502>
+<U2504> IGNORE;IGNORE;IGNORE;<U2504>
+<U2505> IGNORE;IGNORE;IGNORE;<U2505>
+<U2506> IGNORE;IGNORE;IGNORE;<U2506>
+<U2507> IGNORE;IGNORE;IGNORE;<U2507>
+<U2508> IGNORE;IGNORE;IGNORE;<U2508>
+<U2509> IGNORE;IGNORE;IGNORE;<U2509>
+<U250A> IGNORE;IGNORE;IGNORE;<U250A>
+<U250B> IGNORE;IGNORE;IGNORE;<U250B>
+<U250C> IGNORE;IGNORE;IGNORE;<U250C>
+<U2510> IGNORE;IGNORE;IGNORE;<U2510>
+<U2514> IGNORE;IGNORE;IGNORE;<U2514>
+<U2518> IGNORE;IGNORE;IGNORE;<U2518>
+<U251C> IGNORE;IGNORE;IGNORE;<U251C>
+<U251E> IGNORE;IGNORE;IGNORE;<U251E>
+<U251F> IGNORE;IGNORE;IGNORE;<U251F>
+<U2521> IGNORE;IGNORE;IGNORE;<U2521>
+<U2522> IGNORE;IGNORE;IGNORE;<U2522>
+<U2524> IGNORE;IGNORE;IGNORE;<U2524>
+<U2526> IGNORE;IGNORE;IGNORE;<U2526>
+<U2527> IGNORE;IGNORE;IGNORE;<U2527>
+<U2529> IGNORE;IGNORE;IGNORE;<U2529>
+<U252A> IGNORE;IGNORE;IGNORE;<U252A>
+<U252C> IGNORE;IGNORE;IGNORE;<U252C>
+<U252D> IGNORE;IGNORE;IGNORE;<U252D>
+<U252E> IGNORE;IGNORE;IGNORE;<U252E>
+<U2531> IGNORE;IGNORE;IGNORE;<U2531>
+<U2532> IGNORE;IGNORE;IGNORE;<U2532>
+<U2534> IGNORE;IGNORE;IGNORE;<U2534>
+<U2535> IGNORE;IGNORE;IGNORE;<U2535>
+<U2536> IGNORE;IGNORE;IGNORE;<U2536>
+<U2539> IGNORE;IGNORE;IGNORE;<U2539>
+<U253A> IGNORE;IGNORE;IGNORE;<U253A>
+<U253C> IGNORE;IGNORE;IGNORE;<U253C>
+<U253D> IGNORE;IGNORE;IGNORE;<U253D>
+<U253E> IGNORE;IGNORE;IGNORE;<U253E>
+<U2540> IGNORE;IGNORE;IGNORE;<U2540>
+<U2541> IGNORE;IGNORE;IGNORE;<U2541>
+<U2543> IGNORE;IGNORE;IGNORE;<U2543>
+<U2544> IGNORE;IGNORE;IGNORE;<U2544>
+<U2545> IGNORE;IGNORE;IGNORE;<U2545>
+<U2546> IGNORE;IGNORE;IGNORE;<U2546>
+<U2547> IGNORE;IGNORE;IGNORE;<U2547>
+<U2548> IGNORE;IGNORE;IGNORE;<U2548>
+<U2549> IGNORE;IGNORE;IGNORE;<U2549>
+<U254A> IGNORE;IGNORE;IGNORE;<U254A>
+<U256C> IGNORE;IGNORE;IGNORE;<U256C>
+<U2571> IGNORE;IGNORE;IGNORE;<U2571>
+<U2572> IGNORE;IGNORE;IGNORE;<U2572>
+<U2580> IGNORE;IGNORE;IGNORE;<U2580>
+<U2584> IGNORE;IGNORE;IGNORE;<U2584>
+<U2588> IGNORE;IGNORE;IGNORE;<U2588>
+<U258C> IGNORE;IGNORE;IGNORE;<U258C>
+<U2590> IGNORE;IGNORE;IGNORE;<U2590>
+<U2591> IGNORE;IGNORE;IGNORE;<U2591>
+<U2592> IGNORE;IGNORE;IGNORE;<U2592>
+<U2593> IGNORE;IGNORE;IGNORE;<U2593>
+<U25A0> IGNORE;IGNORE;IGNORE;<U25A0>
+<U25A1> IGNORE;IGNORE;IGNORE;<U25A1>
+<U25A2> IGNORE;IGNORE;IGNORE;<U25A2>
+<U25A3> IGNORE;IGNORE;IGNORE;<U25A3>
+<U25A4> IGNORE;IGNORE;IGNORE;<U25A4>
+<U25A5> IGNORE;IGNORE;IGNORE;<U25A5>
+<U25A6> IGNORE;IGNORE;IGNORE;<U25A6>
+<U25A7> IGNORE;IGNORE;IGNORE;<U25A7>
+<U25A8> IGNORE;IGNORE;IGNORE;<U25A8>
+<U25A9> IGNORE;IGNORE;IGNORE;<U25A9>
+<U25AA> IGNORE;IGNORE;IGNORE;<U25AA>
+<U25AC> IGNORE;IGNORE;IGNORE;<U25AC>
+<U25AD> IGNORE;IGNORE;IGNORE;<U25AD>
+<U25B2> IGNORE;IGNORE;IGNORE;<U25B2>
+<U25B3> IGNORE;IGNORE;IGNORE;<U25B3>
+<U25B7> IGNORE;IGNORE;IGNORE;<U25B7>
+<U25BA> IGNORE;IGNORE;IGNORE;<U25BA>
+<U25BC> IGNORE;IGNORE;IGNORE;<U25BC>
+<U25BD> IGNORE;IGNORE;IGNORE;<U25BD>
+<U25C1> IGNORE;IGNORE;IGNORE;<U25C1>
+<U25C4> IGNORE;IGNORE;IGNORE;<U25C4>
+<U25C6> IGNORE;IGNORE;IGNORE;<U25C6>
+<U25C7> IGNORE;IGNORE;IGNORE;<U25C7>
+<U25CA> IGNORE;IGNORE;IGNORE;<U25CA>
+<U25CB> IGNORE;IGNORE;IGNORE;<U25CB>
+<U25CE> IGNORE;IGNORE;IGNORE;<U25CE>
+<U25CF> IGNORE;IGNORE;IGNORE;<U25CF>
+<U25D0> IGNORE;IGNORE;IGNORE;<U25D0>
+<U25D1> IGNORE;IGNORE;IGNORE;<U25D1>
+<U25D8> IGNORE;IGNORE;IGNORE;<U25D8>
+<U25D9> IGNORE;IGNORE;IGNORE;<U25D9>
+<U25E2> IGNORE;IGNORE;IGNORE;<U25E2>
+<U25E3> IGNORE;IGNORE;IGNORE;<U25E3>
+<U25EF> IGNORE;IGNORE;IGNORE;<U25EF>
+<U2605> IGNORE;IGNORE;IGNORE;<U2605>
+<U2606> IGNORE;IGNORE;IGNORE;<U2606>
+<U260E> IGNORE;IGNORE;IGNORE;<U260E>
+<U260F> IGNORE;IGNORE;IGNORE;<U260F>
+<U261C> IGNORE;IGNORE;IGNORE;<U261C>
+<U261E> IGNORE;IGNORE;IGNORE;<U261E>
+<U263A> IGNORE;IGNORE;IGNORE;<U263A>
+<U263B> IGNORE;IGNORE;IGNORE;<U263B>
+<U263C> IGNORE;IGNORE;IGNORE;<U263C>
+<U2640> IGNORE;IGNORE;IGNORE;<U2640>
+<U2642> IGNORE;IGNORE;IGNORE;<U2642>
+<U2660> IGNORE;IGNORE;IGNORE;<U2660>
+<U2661> IGNORE;IGNORE;IGNORE;<U2661>
+<U2662> IGNORE;IGNORE;IGNORE;<U2662>
+<U2663> IGNORE;IGNORE;IGNORE;<U2663>
+<U2664> IGNORE;IGNORE;IGNORE;<U2664>
+<U2665> IGNORE;IGNORE;IGNORE;<U2665>
+<U2666> IGNORE;IGNORE;IGNORE;<U2666>
+<U2667> IGNORE;IGNORE;IGNORE;<U2667>
+<U2669> IGNORE;IGNORE;IGNORE;<U2669>
+<U266A> IGNORE;IGNORE;IGNORE;<U266A>
+<U266B> IGNORE;IGNORE;IGNORE;<U266B>
+<U266C> IGNORE;IGNORE;IGNORE;<U266C>
+<U266D> IGNORE;IGNORE;IGNORE;<U266D>
+<U266E> IGNORE;IGNORE;IGNORE;<U266E>
+<U266F> IGNORE;IGNORE;IGNORE;<U266F>
+<U2713> IGNORE;IGNORE;IGNORE;<U2713>
+<U2717> IGNORE;IGNORE;IGNORE;<U2717>
+<U2720> IGNORE;IGNORE;IGNORE;<U2720>
+<U3000> IGNORE;IGNORE;IGNORE;<U3000>
+<U3001> IGNORE;IGNORE;IGNORE;<U3001>
+<U3002> IGNORE;IGNORE;IGNORE;<U3002>
+<U3003> IGNORE;IGNORE;IGNORE;<U3003>
+<U3004> IGNORE;IGNORE;IGNORE;<U3004>
+<U3005> IGNORE;IGNORE;IGNORE;<U3005>
+<U3006> IGNORE;IGNORE;IGNORE;<U3006>
+<U3007> IGNORE;IGNORE;IGNORE;<U3007>
+<U300A> IGNORE;IGNORE;IGNORE;<U300A>
+<U300B> IGNORE;IGNORE;IGNORE;<U300B>
+<U300C> IGNORE;IGNORE;IGNORE;<U300C>
+<U300D> IGNORE;IGNORE;IGNORE;<U300D>
+<U300E> IGNORE;IGNORE;IGNORE;<U300E>
+<U300F> IGNORE;IGNORE;IGNORE;<U300F>
+<U3010> IGNORE;IGNORE;IGNORE;<U3010>
+<U3011> IGNORE;IGNORE;IGNORE;<U3011>
+<U3012> IGNORE;IGNORE;IGNORE;<U3012>
+<U3013> IGNORE;IGNORE;IGNORE;<U3013>
+<U3014> IGNORE;IGNORE;IGNORE;<U3014>
+<U3015> IGNORE;IGNORE;IGNORE;<U3015>
+<U3016> IGNORE;IGNORE;IGNORE;<U3016>
+<U3017> IGNORE;IGNORE;IGNORE;<U3017>
+<U301C> IGNORE;IGNORE;IGNORE;<U301C>
+<U3020> IGNORE;IGNORE;IGNORE;<U3020>
+<U309B> IGNORE;IGNORE;IGNORE;<U309B>
+<U309C> IGNORE;IGNORE;IGNORE;<U309C>
+<U309D> IGNORE;IGNORE;IGNORE;<U309D>
+<U309E> IGNORE;IGNORE;IGNORE;<U309E>
+<U30FB> IGNORE;IGNORE;IGNORE;<U30FB>
+<U30FC> IGNORE;IGNORE;IGNORE;<U30FC>
+<U30FD> IGNORE;IGNORE;IGNORE;<U30FD>
+<U30FE> IGNORE;IGNORE;IGNORE;<U30FE>
+<U321C> IGNORE;IGNORE;IGNORE;<U321C>
+<U3220> IGNORE;IGNORE;IGNORE;<U3220>
+<U3221> IGNORE;IGNORE;IGNORE;<U3221>
+<U3222> IGNORE;IGNORE;IGNORE;<U3222>
+<U3223> IGNORE;IGNORE;IGNORE;<U3223>
+<U3224> IGNORE;IGNORE;IGNORE;<U3224>
+<U3225> IGNORE;IGNORE;IGNORE;<U3225>
+<U3226> IGNORE;IGNORE;IGNORE;<U3226>
+<U3227> IGNORE;IGNORE;IGNORE;<U3227>
+<U3228> IGNORE;IGNORE;IGNORE;<U3228>
+<U3229> IGNORE;IGNORE;IGNORE;<U3229>
+<U327F> IGNORE;IGNORE;IGNORE;<U327F>
+<U33C2> IGNORE;IGNORE;IGNORE;<U33C2>
+<U33D8> IGNORE;IGNORE;IGNORE;<U33D8>
+<U0000> IGNORE;IGNORE;IGNORE;<U0000>
+<U0001> IGNORE;IGNORE;IGNORE;<U0001>
+<U0002> IGNORE;IGNORE;IGNORE;<U0002>
+<U0003> IGNORE;IGNORE;IGNORE;<U0003>
+<U0004> IGNORE;IGNORE;IGNORE;<U0004>
+<U0005> IGNORE;IGNORE;IGNORE;<U0005>
+<U0006> IGNORE;IGNORE;IGNORE;<U0006>
+<U0007> IGNORE;IGNORE;IGNORE;<U0007>
+<U0008> IGNORE;IGNORE;IGNORE;<U0008>
+<U000E> IGNORE;IGNORE;IGNORE;<U000E>
+<U000F> IGNORE;IGNORE;IGNORE;<U000F>
+<U0010> IGNORE;IGNORE;IGNORE;<U0010>
+<U0011> IGNORE;IGNORE;IGNORE;<U0011>
+<U0012> IGNORE;IGNORE;IGNORE;<U0012>
+<U0013> IGNORE;IGNORE;IGNORE;<U0013>
+<U0014> IGNORE;IGNORE;IGNORE;<U0014>
+<U0015> IGNORE;IGNORE;IGNORE;<U0015>
+<U0016> IGNORE;IGNORE;IGNORE;<U0016>
+<U0017> IGNORE;IGNORE;IGNORE;<U0017>
+<U0018> IGNORE;IGNORE;IGNORE;<U0018>
+<U0019> IGNORE;IGNORE;IGNORE;<U0019>
+<U001A> IGNORE;IGNORE;IGNORE;<U001A>
+<U001B> IGNORE;IGNORE;IGNORE;<U001B>
+<U001C> IGNORE;IGNORE;IGNORE;<U001C>
+<U001D> IGNORE;IGNORE;IGNORE;<U001D>
+<U001E> IGNORE;IGNORE;IGNORE;<U001E>
+<U001F> IGNORE;IGNORE;IGNORE;<U001F>
+<U007F> IGNORE;IGNORE;IGNORE;<U007F>
+<U0080> IGNORE;IGNORE;IGNORE;<U0080>
+<U0081> IGNORE;IGNORE;IGNORE;<U0081>
+<U0082> IGNORE;IGNORE;IGNORE;<U0082>
+<U0083> IGNORE;IGNORE;IGNORE;<U0083>
+<U0084> IGNORE;IGNORE;IGNORE;<U0084>
+<U0085> IGNORE;IGNORE;IGNORE;<U0085>
+<U0086> IGNORE;IGNORE;IGNORE;<U0086>
+<U0087> IGNORE;IGNORE;IGNORE;<U0087>
+<U0088> IGNORE;IGNORE;IGNORE;<U0088>
+<U0089> IGNORE;IGNORE;IGNORE;<U0089>
+<U008A> IGNORE;IGNORE;IGNORE;<U008A>
+<U008B> IGNORE;IGNORE;IGNORE;<U008B>
+<U008C> IGNORE;IGNORE;IGNORE;<U008C>
+<U008D> IGNORE;IGNORE;IGNORE;<U008D>
+<U008E> IGNORE;IGNORE;IGNORE;<U008E>
+<U008F> IGNORE;IGNORE;IGNORE;<U008F>
+<U0090> IGNORE;IGNORE;IGNORE;<U0090>
+<U0091> IGNORE;IGNORE;IGNORE;<U0091>
+<U0092> IGNORE;IGNORE;IGNORE;<U0092>
+<U0093> IGNORE;IGNORE;IGNORE;<U0093>
+<U0094> IGNORE;IGNORE;IGNORE;<U0094>
+<U0095> IGNORE;IGNORE;IGNORE;<U0095>
+<U0096> IGNORE;IGNORE;IGNORE;<U0096>
+<U0097> IGNORE;IGNORE;IGNORE;<U0097>
+<U0098> IGNORE;IGNORE;IGNORE;<U0098>
+<U0099> IGNORE;IGNORE;IGNORE;<U0099>
+<U009A> IGNORE;IGNORE;IGNORE;<U009A>
+<U009B> IGNORE;IGNORE;IGNORE;<U009B>
+<U009C> IGNORE;IGNORE;IGNORE;<U009C>
+<U009D> IGNORE;IGNORE;IGNORE;<U009D>
+<U009E> IGNORE;IGNORE;IGNORE;<U009E>
+<U009F> IGNORE;IGNORE;IGNORE;<U009F>
+<UE000> IGNORE;IGNORE;IGNORE;<UE000>
+<UE001> IGNORE;IGNORE;IGNORE;<UE001>
+<UE002> IGNORE;IGNORE;IGNORE;<UE002>
+<U0301> IGNORE;IGNORE;IGNORE;<U0301>
+<UE004> IGNORE;IGNORE;IGNORE;<UE004>
+<UE005> IGNORE;IGNORE;IGNORE;<UE005>
+<UE006> IGNORE;IGNORE;IGNORE;<UE006>
+<UE007> IGNORE;IGNORE;IGNORE;<UE007>
+<UE008> IGNORE;IGNORE;IGNORE;<UE008>
+<UE009> IGNORE;IGNORE;IGNORE;<UE009>
+<UE00A> IGNORE;IGNORE;IGNORE;<UE00A>
+<UE00B> IGNORE;IGNORE;IGNORE;<UE00B>
+<UE00C> IGNORE;IGNORE;IGNORE;<UE00C>
+<UE00D> IGNORE;IGNORE;IGNORE;<UE00D>
+<UE00E> IGNORE;IGNORE;IGNORE;<UE00E>
+<UE00F> IGNORE;IGNORE;IGNORE;<UE00F>
+<"=> IGNORE;IGNORE;IGNORE;<"=>
+<UE011> IGNORE;IGNORE;IGNORE;<UE011>
+<UE012> IGNORE;IGNORE;IGNORE;<UE012>
+<UE013> IGNORE;IGNORE;IGNORE;<UE013>
+<UE014> IGNORE;IGNORE;IGNORE;<UE014>
+<UE015> IGNORE;IGNORE;IGNORE;<UE015>
+<UE017> IGNORE;IGNORE;IGNORE;<UE017>
+<UE018> IGNORE;IGNORE;IGNORE;<UE018>
+<UE019> IGNORE;IGNORE;IGNORE;<UE019>
+UNDEFINED IGNORE;IGNORE;IGNORE
+
+<U0041> <U0041>;<NONE>;<CAPITAL>;IGNORE
+<U0061> <U0041>;<NONE>;<SMALL>;IGNORE
+<U00AA> <U0041>;<NONE>;<U00AA>;IGNORE
+<U00C0> <U0041>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E0> <U0041>;<GRAVE>;<SMALL>;IGNORE
+<U0200> <U0041>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0201> <U0041>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0102> <U0041>;<BREVE>;<CAPITAL>;IGNORE
+<U0103> <U0041>;<BREVE>;<SMALL>;IGNORE
+<U1EAE> <U0041>;<BREVE+ACUTE>;<CAPITAL>;IGNORE
+<U1EAF> <U0041>;<BREVE+ACUTE>;<SMALL>;IGNORE
+<U1EB0> <U0041>;<BREVE+GRAVE>;<CAPITAL>;IGNORE
+<U1EB1> <U0041>;<BREVE+GRAVE>;<SMALL>;IGNORE
+<U1EB2> <U0041>;<BREVE+HOOK>;<CAPITAL>;IGNORE
+<U1EB3> <U0041>;<BREVE+HOOK>;<SMALL>;IGNORE
+<U1EB4> <U0041>;<BREVE+TILDE>;<CAPITAL>;IGNORE
+<U1EB5> <U0041>;<BREVE+TILDE>;<SMALL>;IGNORE
+<U1EB6> <U0041>;<BREVE+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB7> <U0041>;<BREVE+DOT-BELOW>;<SMALL>;IGNORE
+<U0202> <U0041>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0203> <U0041>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00C2> <U0041>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00E2> <U0041>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EA4> <U0041>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EA5> <U0041>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EA6> <U0041>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EA7> <U0041>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EA8> <U0041>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EA9> <U0041>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EAA> <U0041>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EAB> <U0041>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EAC> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EAD> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01CD> <U0041>;<CARON>;<CAPITAL>;IGNORE
+<U01CE> <U0041>;<CARON>;<SMALL>;IGNORE
+<U1E00> <U0041>;<RING-BELOW>;<CAPITAL>;IGNORE
+<U1E01> <U0041>;<RING-BELOW>;<SMALL>;IGNORE
+<U01DE> <U0041>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01DF> <U0041>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U1EA2> <U0041>;<HOOK>;<CAPITAL>;IGNORE
+<U1EA3> <U0041>;<HOOK>;<SMALL>;IGNORE
+<U00C3> <U0041>;<TILDE>;<CAPITAL>;IGNORE
+<U00E3> <U0041>;<TILDE>;<SMALL>;IGNORE
+<U1EA0> <U0041>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EA1> <U0041>;<DOT-BELOW>;<SMALL>;IGNORE
+<U01E0> <U0041>;<MACRON+DOT>;<CAPITAL>;IGNORE
+<U01E1> <U0041>;<MACRON+DOT>;<SMALL>;IGNORE
+<a8>
+<U0042> <U0042>;<NONE>;<CAPITAL>;IGNORE
+<U0062> <U0042>;<NONE>;<SMALL>;IGNORE
+<U1E02> <U0042>;<DOT>;<CAPITAL>;IGNORE
+<U1E03> <U0042>;<DOT>;<SMALL>;IGNORE
+<U1E04> <U0042>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E05> <U0042>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E06> <U0042>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E07> <U0042>;<LINE-BELOW>;<SMALL>;IGNORE
+<b8>
+<U0043> <U0043>;<NONE>;<CAPITAL>;IGNORE
+<U0063> <U0043>;<NONE>;<SMALL>;IGNORE
+<U0108> <U0043>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0109> <U0043>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0187> <U0043>;<HOOK>;<CAPITAL>;IGNORE
+<U0188> <U0043>;<HOOK>;<SMALL>;IGNORE
+<U010A> <U0043>;<DOT>;<CAPITAL>;IGNORE
+<U010B> <U0043>;<DOT>;<SMALL>;IGNORE
+<U1E08> <U0043>;<CEDILLA+ACUTE>;<CAPITAL>;IGNORE
+<U1E09> <U0043>;<CEDILLA+ACUTE>;<SMALL>;IGNORE
+<c8>
+<U0044> <U0044>;<NONE>;<CAPITAL>;IGNORE
+<U0064> <U0044>;<NONE>;<SMALL>;IGNORE
+<U010E> <U0044>;<CARON>;<CAPITAL>;IGNORE
+<U010F> <U0044>;<CARON>;<SMALL>;IGNORE
+<U1E0A> <U0044>;<DOT>;<CAPITAL>;IGNORE
+<U1E0B> <U0044>;<DOT>;<SMALL>;IGNORE
+<U1E0C> <U0044>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E0D> <U0044>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E10> <U0044>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E11> <U0044>;<CEDILLA>;<SMALL>;IGNORE
+<U1E12> <U0044>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E13> <U0044>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E0E> <U0044>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E0F> <U0044>;<LINE-BELOW>;<SMALL>;IGNORE
+<d8>
+<U0045> <U0045>;<NONE>;<CAPITAL>;IGNORE
+<U0065> <U0045>;<NONE>;<SMALL>;IGNORE
+<U00C8> <U0045>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E8> <U0045>;<GRAVE>;<SMALL>;IGNORE
+<U0204> <U0045>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0205> <U0045>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0114> <U0045>;<BREVE>;<CAPITAL>;IGNORE
+<U0115> <U0045>;<BREVE>;<SMALL>;IGNORE
+<U0206> <U0045>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0207> <U0045>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CA> <U0045>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EA> <U0045>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EBE> <U0045>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EBF> <U0045>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EC0> <U0045>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EC1> <U0045>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EC2> <U0045>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EC3> <U0045>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EC4> <U0045>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EC5> <U0045>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EC6> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EC7> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U011A> <U0045>;<CARON>;<CAPITAL>;IGNORE
+<U011B> <U0045>;<CARON>;<SMALL>;IGNORE
+<U00CB> <U0045>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EB> <U0045>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EBA> <U0045>;<HOOK>;<CAPITAL>;IGNORE
+<U1EBB> <U0045>;<HOOK>;<SMALL>;IGNORE
+<U1EBC> <U0045>;<TILDE>;<CAPITAL>;IGNORE
+<U1EBD> <U0045>;<TILDE>;<SMALL>;IGNORE
+<U1E1A> <U0045>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E1B> <U0045>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0116> <U0045>;<DOT>;<CAPITAL>;IGNORE
+<U0117> <U0045>;<DOT>;<SMALL>;IGNORE
+<U1EB8> <U0045>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB9> <U0045>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E1C> <U0045>;<CEDILLA+BREVE>;<CAPITAL>;IGNORE
+<U1E1D> <U0045>;<CEDILLA+BREVE>;<SMALL>;IGNORE
+<U1E16> <U0045>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E17> <U0045>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E14> <U0045>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E15> <U0045>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U1E18> <U0045>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E19> <U0045>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<e8>
+<U0046> <U0046>;<NONE>;<CAPITAL>;IGNORE
+<U0066> <U0046>;<NONE>;<SMALL>;IGNORE
+<U0191> <U0046>;<HOOK>;<CAPITAL>;IGNORE
+<U0192> <U0046>;<HOOK>;<SMALL>;IGNORE
+<U1E1E> <U0046>;<DOT>;<CAPITAL>;IGNORE
+<U1E1F> <U0046>;<DOT>;<SMALL>;IGNORE
+<f8>
+<UFB00> "<U0046><U0046>";"<NONE><NONE>";"<UFB00><UFB00>";IGNORE
+<UFB01> "<U0046><U0049>";"<NONE><NONE>";"<UFB01><UFB01>";IGNORE
+<UFB02> "<U0046><U004C>";"<NONE><NONE>";"<UFB02><UFB02>";IGNORE
+<UFB03> "<U0046><U0046><U0049>";"<NONE><NONE><NONE>";"<UFB03><UFB03><UFB03>";IGNORE
+<UFB04> "<U0046><U0046><U004C>";"<NONE><NONE><NONE>";"<UFB04><UFB04><UFB04>";IGNORE
+<U0047> <U0047>;<NONE>;<CAPITAL>;IGNORE
+<U0067> <U0047>;<NONE>;<SMALL>;IGNORE
+<U01F4> <U0047>;<ACUTE>;<CAPITAL>;IGNORE
+<U01F5> <U0047>;<ACUTE>;<SMALL>;IGNORE
+<U011C> <U0047>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U011D> <U0047>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01E6> <U0047>;<CARON>;<CAPITAL>;IGNORE
+<U01E7> <U0047>;<CARON>;<SMALL>;IGNORE
+<U0120> <U0047>;<DOT>;<CAPITAL>;IGNORE
+<U0121> <U0047>;<DOT>;<SMALL>;IGNORE
+<U01E4> <U0047>;<STROKE>;<CAPITAL>;IGNORE
+<U01E5> <U0047>;<STROKE>;<SMALL>;IGNORE
+<U1E20> <U0047>;<MACRON>;<CAPITAL>;IGNORE
+<U1E21> <U0047>;<MACRON>;<SMALL>;IGNORE
+<g8>
+<U0048> <U0048>;<NONE>;<CAPITAL>;IGNORE
+<U0068> <U0048>;<NONE>;<SMALL>;IGNORE
+<U1E2A> <U0048>;<BREVE-BELOW>;<CAPITAL>;IGNORE
+<U1E2B> <U0048>;<BREVE-BELOW>;<SMALL>;IGNORE
+<U0124> <U0048>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0125> <U0048>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E26> <U0048>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E27> <U0048>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E22> <U0048>;<DOT>;<CAPITAL>;IGNORE
+<U1E23> <U0048>;<DOT>;<SMALL>;IGNORE
+<U1E24> <U0048>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E25> <U0048>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0126> <U0048>;<STROKE>;<CAPITAL>;IGNORE
+<U0127> <U0048>;<STROKE>;<SMALL>;IGNORE
+<U1E28> <U0048>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E29> <U0048>;<CEDILLA>;<SMALL>;IGNORE
+<h8>
+<U0069> <U0049>;<NONE>;<SMALL>;IGNORE
+<U00CC> <U0049>;<GRAVE>;<CAPITAL>;IGNORE
+<U00EC> <U0049>;<GRAVE>;<SMALL>;IGNORE
+<U0208> <U0049>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0209> <U0049>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U012C> <U0049>;<BREVE>;<CAPITAL>;IGNORE
+<U012D> <U0049>;<BREVE>;<SMALL>;IGNORE
+<U020A> <U0049>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020B> <U0049>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CE> <U0049>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EE> <U0049>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01CF> <U0049>;<CARON>;<CAPITAL>;IGNORE
+<U01D0> <U0049>;<CARON>;<SMALL>;IGNORE
+<U00CF> <U0049>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EF> <U0049>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E2E> <U0049>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U1E2F> <U0049>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U1EC8> <U0049>;<HOOK>;<CAPITAL>;IGNORE
+<U1EC9> <U0049>;<HOOK>;<SMALL>;IGNORE
+<U0128> <U0049>;<TILDE>;<CAPITAL>;IGNORE
+<U0129> <U0049>;<TILDE>;<SMALL>;IGNORE
+<U1E2C> <U0049>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E2D> <U0049>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U1ECA> <U0049>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECB> <U0049>;<DOT-BELOW>;<SMALL>;IGNORE
+<U012E> <U0049>;<OGONEK>;<CAPITAL>;IGNORE
+<U012F> <U0049>;<OGONEK>;<SMALL>;IGNORE
+<i8>
+<U0132> "<U0049><U004A>";"<U0132><U0132>";"<CAPITAL><CAPITAL>";IGNORE
+<U0133> "<U0049><U004A>";"<U0132><U0132>";"<SMALL><SMALL>";IGNORE
+<U004A> <U004A>;<NONE>;<CAPITAL>;IGNORE
+<U006A> <U004A>;<NONE>;<SMALL>;IGNORE
+<U0134> <U004A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0135> <U004A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<j8>
+<U004B> <U004B>;<NONE>;<CAPITAL>;IGNORE
+<U006B> <U004B>;<NONE>;<SMALL>;IGNORE
+<U1E30> <U004B>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E31> <U004B>;<ACUTE>;<SMALL>;IGNORE
+<U01E8> <U004B>;<CARON>;<CAPITAL>;IGNORE
+<U01E9> <U004B>;<CARON>;<SMALL>;IGNORE
+<U0198> <U004B>;<HOOK>;<CAPITAL>;IGNORE
+<U0199> <U004B>;<HOOK>;<SMALL>;IGNORE
+<U1E32> <U004B>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E33> <U004B>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E34> <U004B>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E35> <U004B>;<LINE-BELOW>;<SMALL>;IGNORE
+<k8>
+<U004C> <U004C>;<NONE>;<CAPITAL>;IGNORE
+<U006C> <U004C>;<NONE>;<SMALL>;IGNORE
+<U0139> <U004C>;<ACUTE>;<CAPITAL>;IGNORE
+<U013A> <U004C>;<ACUTE>;<SMALL>;IGNORE
+<U013D> <U004C>;<CARON>;<CAPITAL>;IGNORE
+<U013E> <U004C>;<CARON>;<SMALL>;IGNORE
+<U013F> <U004C>;<DOT>;<CAPITAL>;IGNORE
+<U0140> <U004C>;<DOT>;<SMALL>;IGNORE
+<U1E36> <U004C>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E37> <U004C>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E38> <U004C>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E39> <U004C>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E3C> <U004C>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E3D> <U004C>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E3A> <U004C>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E3B> <U004C>;<LINE-BELOW>;<SMALL>;IGNORE
+<l8>
+<U004D> <U004D>;<NONE>;<CAPITAL>;IGNORE
+<U006D> <U004D>;<NONE>;<SMALL>;IGNORE
+<U1E3E> <U004D>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E3F> <U004D>;<ACUTE>;<SMALL>;IGNORE
+<U1E40> <U004D>;<DOT>;<CAPITAL>;IGNORE
+<U1E41> <U004D>;<DOT>;<SMALL>;IGNORE
+<U1E42> <U004D>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E43> <U004D>;<DOT-BELOW>;<SMALL>;IGNORE
+<m8>
+<U004E> <U004E>;<NONE>;<CAPITAL>;IGNORE
+<U006E> <U004E>;<NONE>;<SMALL>;IGNORE
+<U0147> <U004E>;<CARON>;<CAPITAL>;IGNORE
+<U0148> <U004E>;<CARON>;<SMALL>;IGNORE
+<U1E44> <U004E>;<DOT>;<CAPITAL>;IGNORE
+<U1E45> <U004E>;<DOT>;<SMALL>;IGNORE
+<U1E46> <U004E>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E47> <U004E>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E4A> <U004E>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E4B> <U004E>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E48> <U004E>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E49> <U004E>;<LINE-BELOW>;<SMALL>;IGNORE
+<U0149> <U004E>;<PRECEDED-BY-APOSTROPHE>;<SMALL>;IGNORE
+<n8>
+<U004F> <U004F>;<NONE>;<CAPITAL>;IGNORE
+<U006F> <U004F>;<NONE>;<SMALL>;IGNORE
+<U00BA> <U004F>;<NONE>;<U00BA>;IGNORE
+<U00D2> <U004F>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F2> <U004F>;<GRAVE>;<SMALL>;IGNORE
+<U020C> <U004F>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U020D> <U004F>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U014E> <U004F>;<BREVE>;<CAPITAL>;IGNORE
+<U014F> <U004F>;<BREVE>;<SMALL>;IGNORE
+<U020E> <U004F>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020F> <U004F>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00D4> <U004F>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00F4> <U004F>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1ED0> <U004F>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1ED1> <U004F>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1ED2> <U004F>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1ED3> <U004F>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1ED4> <U004F>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1ED5> <U004F>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1ED6> <U004F>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1ED7> <U004F>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1ED8> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ED9> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01D1> <U004F>;<CARON>;<CAPITAL>;IGNORE
+<U01D2> <U004F>;<CARON>;<SMALL>;IGNORE
+<U1ECE> <U004F>;<HOOK>;<CAPITAL>;IGNORE
+<U1ECF> <U004F>;<HOOK>;<SMALL>;IGNORE
+<U1E4C> <U004F>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E4D> <U004F>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E4E> <U004F>;<TILDE+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E4F> <U004F>;<TILDE+DIAERESIS>;<SMALL>;IGNORE
+<U1ECC> <U004F>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECD> <U004F>;<DOT-BELOW>;<SMALL>;IGNORE
+<U01EA> <U004F>;<OGONEK>;<CAPITAL>;IGNORE
+<U01EB> <U004F>;<OGONEK>;<SMALL>;IGNORE
+<U01EC> <U004F>;<OGONEK+MACRON>;<CAPITAL>;IGNORE
+<U01ED> <U004F>;<OGONEK+MACRON>;<SMALL>;IGNORE
+<U1E52> <U004F>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E53> <U004F>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E50> <U004F>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E51> <U004F>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U01A0> <U004F>;<HORN>;<CAPITAL>;IGNORE
+<U01A1> <U004F>;<HORN>;<SMALL>;IGNORE
+<U1EDA> <U004F>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EDB> <U004F>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EDC> <U004F>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EDD> <U004F>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EDE> <U004F>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EDF> <U004F>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EE0> <U004F>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EE1> <U004F>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EE2> <U004F>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE3> <U004F>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<o8>
+<U0050> <U0050>;<NONE>;<CAPITAL>;IGNORE
+<U0070> <U0050>;<NONE>;<SMALL>;IGNORE
+<U1E54> <U0050>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E55> <U0050>;<ACUTE>;<SMALL>;IGNORE
+<U1E56> <U0050>;<DOT>;<CAPITAL>;IGNORE
+<U1E57> <U0050>;<DOT>;<SMALL>;IGNORE
+<p8>
+<U0051> <U0051>;<NONE>;<CAPITAL>;IGNORE
+<U0071> <U0051>;<NONE>;<SMALL>;IGNORE
+<q8>
+<U0052> <U0052>;<NONE>;<CAPITAL>;IGNORE
+<U0072> <U0052>;<NONE>;<SMALL>;IGNORE
+<U0154> <U0052>;<ACUTE>;<CAPITAL>;IGNORE
+<U0155> <U0052>;<ACUTE>;<SMALL>;IGNORE
+<U0210> <U0052>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0211> <U0052>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0212> <U0052>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0213> <U0052>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U0158> <U0052>;<CARON>;<CAPITAL>;IGNORE
+<U0159> <U0052>;<CARON>;<SMALL>;IGNORE
+<U1E58> <U0052>;<DOT>;<CAPITAL>;IGNORE
+<U1E59> <U0052>;<DOT>;<SMALL>;IGNORE
+<U1E5A> <U0052>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5B> <U0052>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E5C> <U0052>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5D> <U0052>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E5E> <U0052>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E5F> <U0052>;<LINE-BELOW>;<SMALL>;IGNORE
+<r8>
+<U0053> <U0053>;<NONE>;<CAPITAL>;IGNORE
+<U0073> <U0053>;<NONE>;<SMALL>;IGNORE
+<UFB06> "<U0053><U0054>";"<NONE><NONE>";"<UFB06><UFB06>";IGNORE
+<U1E64> <U0053>;<ACUTE+DOT>;<CAPITAL>;IGNORE
+<U1E65> <U0053>;<ACUTE+DOT>;<SMALL>;IGNORE
+<U015C> <U0053>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U015D> <U0053>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E66> <U0053>;<CARON+DOT>;<CAPITAL>;IGNORE
+<U1E67> <U0053>;<CARON+DOT>;<SMALL>;IGNORE
+<U1E60> <U0053>;<DOT>;<CAPITAL>;IGNORE
+<U1E61> <U0053>;<DOT>;<SMALL>;IGNORE
+<U1E62> <U0053>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E63> <U0053>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E68> <U0053>;<DOT+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E69> <U0053>;<DOT+DOT-BELOW>;<SMALL>;IGNORE
+<s8>
+<U017F> <U0053>;<U017F>;<SMALL>;IGNORE
+<U00DF> "<U0053><U0053>";"<NONE><NONE>";"<SMALL><U00DF>";IGNORE
+<UFB05> "<U0053><U0054>";"<NONE><NONE>";"<UFB05><UFB05>";IGNORE
+<U0054> <U0054>;<NONE>;<CAPITAL>;IGNORE
+<U0074> <U0054>;<NONE>;<SMALL>;IGNORE
+<U0164> <U0054>;<CARON>;<CAPITAL>;IGNORE
+<U0165> <U0054>;<CARON>;<SMALL>;IGNORE
+<U1E6A> <U0054>;<DOT>;<CAPITAL>;IGNORE
+<U1E6B> <U0054>;<DOT>;<SMALL>;IGNORE
+<U1E6C> <U0054>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E6D> <U0054>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0166> <U0054>;<STROKE>;<CAPITAL>;IGNORE
+<U0167> <U0054>;<STROKE>;<SMALL>;IGNORE
+<U0162> <U0054>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0163> <U0054>;<CEDILLA>;<SMALL>;IGNORE
+<U1E70> <U0054>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E71> <U0054>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E6E> <U0054>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E6F> <U0054>;<LINE-BELOW>;<SMALL>;IGNORE
+<t8>
+<U0055> <U0055>;<NONE>;<CAPITAL>;IGNORE
+<U0075> <U0055>;<NONE>;<SMALL>;IGNORE
+<U00D9> <U0055>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F9> <U0055>;<GRAVE>;<SMALL>;IGNORE
+<U0214> <U0055>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0215> <U0055>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U016C> <U0055>;<BREVE>;<CAPITAL>;IGNORE
+<U016D> <U0055>;<BREVE>;<SMALL>;IGNORE
+<U0216> <U0055>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0217> <U0055>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00DB> <U0055>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00FB> <U0055>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01D3> <U0055>;<CARON>;<CAPITAL>;IGNORE
+<U01D4> <U0055>;<CARON>;<SMALL>;IGNORE
+<U016E> <U0055>;<RING>;<CAPITAL>;IGNORE
+<U016F> <U0055>;<RING>;<SMALL>;IGNORE
+<U01D5> <U0055>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01D6> <U0055>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U01D7> <U0055>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U01D8> <U0055>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U01DB> <U0055>;<DIAERESIS+GRAVE>;<CAPITAL>;IGNORE
+<U01DC> <U0055>;<DIAERESIS+GRAVE>;<SMALL>;IGNORE
+<U01D9> <U0055>;<DIAERESIS+CARON>;<CAPITAL>;IGNORE
+<U01DA> <U0055>;<DIAERESIS+CARON>;<SMALL>;IGNORE
+<U1EE6> <U0055>;<HOOK>;<CAPITAL>;IGNORE
+<U1EE7> <U0055>;<HOOK>;<SMALL>;IGNORE
+<U0168> <U0055>;<TILDE>;<CAPITAL>;IGNORE
+<U0169> <U0055>;<TILDE>;<SMALL>;IGNORE
+<U1E78> <U0055>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E79> <U0055>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E74> <U0055>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E75> <U0055>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U1EE4> <U0055>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE5> <U0055>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0172> <U0055>;<OGONEK>;<CAPITAL>;IGNORE
+<U0173> <U0055>;<OGONEK>;<SMALL>;IGNORE
+<U1E7A> <U0055>;<MACRON+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E7B> <U0055>;<MACRON+DIAERESIS>;<SMALL>;IGNORE
+<U1E72> <U0055>;<MACRON+DIAERESIS-BELOW>;<CAPITAL>;IGNORE
+<U1E73> <U0055>;<MACRON+DIAERESIS-BELOW>;<SMALL>;IGNORE
+<U1E76> <U0055>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E77> <U0055>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U01AF> <U0055>;<HORN>;<CAPITAL>;IGNORE
+<U01B0> <U0055>;<HORN>;<SMALL>;IGNORE
+<U1EE8> <U0055>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EE9> <U0055>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EEA> <U0055>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EEB> <U0055>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EEC> <U0055>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EED> <U0055>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EEE> <U0055>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EEF> <U0055>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EF0> <U0055>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF1> <U0055>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<u8>
+<v8>
+<w8>
+<U0058> <U0058>;<NONE>;<CAPITAL>;IGNORE
+<U0078> <U0058>;<NONE>;<SMALL>;IGNORE
+<U1E8C> <U0058>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E8D> <U0058>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E8A> <U0058>;<DOT>;<CAPITAL>;IGNORE
+<U1E8B> <U0058>;<DOT>;<SMALL>;IGNORE
+<x8>
+<U1EF2> <U0059>;<GRAVE>;<CAPITAL>;IGNORE
+<U1EF3> <U0059>;<GRAVE>;<SMALL>;IGNORE
+<U0176> <U0059>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0177> <U0059>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0178> <U0059>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FF> <U0059>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EF6> <U0059>;<HOOK>;<CAPITAL>;IGNORE
+<U1EF7> <U0059>;<HOOK>;<SMALL>;IGNORE
+<U1EF8> <U0059>;<TILDE>;<CAPITAL>;IGNORE
+<U1EF9> <U0059>;<TILDE>;<SMALL>;IGNORE
+<U1E8E> <U0059>;<DOT>;<CAPITAL>;IGNORE
+<U1E8F> <U0059>;<DOT>;<SMALL>;IGNORE
+<U1EF4> <U0059>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF5> <U0059>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E90> <U005A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E91> <U005A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E92> <U005A>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E93> <U005A>;<DOT-BELOW>;<SMALL>;IGNORE
+<U01B5> <U005A>;<STROKE>;<CAPITAL>;IGNORE
+<U01B6> <U005A>;<STROKE>;<SMALL>;IGNORE
+<U1E94> <U005A>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E95> <U005A>;<LINE-BELOW>;<SMALL>;IGNORE
+<z8>
+<U0391> <U0391>;<CAPITAL>;<GREEK>;IGNORE
+<U0386> <U0391>;<CAPITAL>;<TONOS>;IGNORE
+<U03B1> <U0391>;<SMALL>;<GREEK>;IGNORE
+<U03AC> <U0391>;<SMALL>;<TONOS>;IGNORE
+<U0392> <U0392>;<CAPITAL>;<GREEK>;IGNORE
+<U03B2> <U0392>;<SMALL>;<GREEK>;IGNORE
+<U0393> <U0393>;<CAPITAL>;<GREEK>;IGNORE
+<U03B3> <U0393>;<SMALL>;<GREEK>;IGNORE
+<U0394> <U0394>;<CAPITAL>;<GREEK>;IGNORE
+<U03B4> <U0394>;<SMALL>;<GREEK>;IGNORE
+<U0395> <U0395>;<CAPITAL>;<GREEK>;IGNORE
+<U0388> <U0395>;<CAPITAL>;<TONOS>;IGNORE
+<U03B5> <U0395>;<SMALL>;<GREEK>;IGNORE
+<U03AD> <U0395>;<SMALL>;<TONOS>;IGNORE
+<U0396> <U0396>;<CAPITAL>;<GREEK>;IGNORE
+<U03B6> <U0396>;<SMALL>;<GREEK>;IGNORE
+<U0397> <U0397>;<CAPITAL>;<GREEK>;IGNORE
+<U0389> <U0397>;<CAPITAL>;<TONOS>;IGNORE
+<U03B7> <U0397>;<SMALL>;<GREEK>;IGNORE
+<U03AE> <U0397>;<SMALL>;<TONOS>;IGNORE
+<U0398> <U0398>;<CAPITAL>;<GREEK>;IGNORE
+<U03B8> <U0398>;<SMALL>;<GREEK>;IGNORE
+<U0399> <U0399>;<CAPITAL>;<GREEK>;IGNORE
+<U038A> <U0399>;<CAPITAL>;<TONOS>;IGNORE
+<U03AA> <U0399>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03B9> <U0399>;<SMALL>;<GREEK>;IGNORE
+<U03AF> <U0399>;<SMALL>;<TONOS>;IGNORE
+<U03CA> <U0399>;<SMALL>;<DIALYTICA>;IGNORE
+<U0390> <U0399>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U039A> <U039A>;<CAPITAL>;<GREEK>;IGNORE
+<U03BA> <U039A>;<SMALL>;<GREEK>;IGNORE
+<U039B> <U039B>;<CAPITAL>;<GREEK>;IGNORE
+<U03BB> <U039B>;<SMALL>;<GREEK>;IGNORE
+<U039C> <U039C>;<CAPITAL>;<GREEK>;IGNORE
+<U03BC> <U039C>;<SMALL>;<GREEK>;IGNORE
+<U039D> <U039D>;<CAPITAL>;<GREEK>;IGNORE
+<U03BD> <U039D>;<SMALL>;<GREEK>;IGNORE
+<U039E> <U039E>;<CAPITAL>;<GREEK>;IGNORE
+<U03BE> <U039E>;<SMALL>;<GREEK>;IGNORE
+<U039F> <U039F>;<CAPITAL>;<GREEK>;IGNORE
+<U038C> <U039F>;<CAPITAL>;<TONOS>;IGNORE
+<U03BF> <U039F>;<SMALL>;<GREEK>;IGNORE
+<U03CC> <U039F>;<SMALL>;<TONOS>;IGNORE
+<U03A0> <U03A0>;<CAPITAL>;<GREEK>;IGNORE
+<U03C0> <U03A0>;<SMALL>;<GREEK>;IGNORE
+<U03A1> <U03A1>;<CAPITAL>;<GREEK>;IGNORE
+<U03C1> <U03A1>;<SMALL>;<GREEK>;IGNORE
+<U03A3> <U03A3>;<CAPITAL>;<GREEK>;IGNORE
+<U03C3> <U03A3>;<SMALL>;<GREEK>;IGNORE
+<U03C2> <U03A3>;<SMALL>;<U03C2>;IGNORE
+<U03A4> <U03A4>;<CAPITAL>;<GREEK>;IGNORE
+<U03C4> <U03A4>;<SMALL>;<GREEK>;IGNORE
+<U03A5> <U03A5>;<CAPITAL>;<GREEK>;IGNORE
+<U038E> <U03A5>;<CAPITAL>;<TONOS>;IGNORE
+<U03AB> <U03A5>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03C5> <U03A5>;<SMALL>;<GREEK>;IGNORE
+<U03CD> <U03A5>;<SMALL>;<TONOS>;IGNORE
+<U03CB> <U03A5>;<SMALL>;<DIALYTICA>;IGNORE
+<U03B0> <U03A5>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U03A6> <U03A6>;<CAPITAL>;<GREEK>;IGNORE
+<U03C6> <U03A6>;<SMALL>;<GREEK>;IGNORE
+<U03A7> <U03A7>;<CAPITAL>;<GREEK>;IGNORE
+<U03C7> <U03A7>;<SMALL>;<GREEK>;IGNORE
+<U03A8> <U03A8>;<CAPITAL>;<GREEK>;IGNORE
+<U03C8> <U03A8>;<SMALL>;<GREEK>;IGNORE
+<U03A9> <U03A9>;<CAPITAL>;<GREEK>;IGNORE
+<U038F> <U03A9>;<CAPITAL>;<TONOS>;IGNORE
+<U03C9> <U03A9>;<SMALL>;<GREEK>;IGNORE
+<U03CE> <U03A9>;<SMALL>;<TONOS>;IGNORE
+<U0410> <U0410>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0430> <U0410>;<CYRILLIC>;<SMALL>;IGNORE
+<U0411> <U0411>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0431> <U0411>;<CYRILLIC>;<SMALL>;IGNORE
+<U0412> <U0412>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0432> <U0412>;<CYRILLIC>;<SMALL>;IGNORE
+<U0413> <U0413>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0433> <U0413>;<CYRILLIC>;<SMALL>;IGNORE
+<U0403> <U0403>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0453> <U0403>;<CYRILLIC>;<SMALL>;IGNORE
+<U0490> <U0490>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0491> <U0490>;<CYRILLIC>;<SMALL>;IGNORE
+<U0414> <U0414>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0434> <U0414>;<CYRILLIC>;<SMALL>;IGNORE
+<U0402> <U0402>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0452> <U0402>;<CYRILLIC>;<SMALL>;IGNORE
+<U0415> <U0415>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0435> <U0415>;<CYRILLIC>;<SMALL>;IGNORE
+<U0401> <U0401>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0451> <U0401>;<CYRILLIC>;<SMALL>;IGNORE
+<U0404> <U0404>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0454> <U0404>;<CYRILLIC>;<SMALL>;IGNORE
+<U0416> <U0416>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0436> <U0416>;<CYRILLIC>;<SMALL>;IGNORE
+<U0417> <U0417>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0437> <U0417>;<CYRILLIC>;<SMALL>;IGNORE
+<U0418> <U0418>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0438> <U0418>;<CYRILLIC>;<SMALL>;IGNORE
+<U0406> <U0406>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0456> <U0406>;<CYRILLIC>;<SMALL>;IGNORE
+<U0407> <U0407>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0457> <U0407>;<CYRILLIC>;<SMALL>;IGNORE
+<U0408> <U0408>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0458> <U0408>;<CYRILLIC>;<SMALL>;IGNORE
+<U0419> <U0419>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0439> <U0419>;<CYRILLIC>;<SMALL>;IGNORE
+<U041A> <U041A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043A> <U041A>;<CYRILLIC>;<SMALL>;IGNORE
+<U040C> <U040C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045C> <U040C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041B> <U041B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043B> <U041B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0409> <U0409>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0459> <U0409>;<CYRILLIC>;<SMALL>;IGNORE
+<U041C> <U041C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043C> <U041C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041D> <U041D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043D> <U041D>;<CYRILLIC>;<SMALL>;IGNORE
+<U040A> <U040A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045A> <U040A>;<CYRILLIC>;<SMALL>;IGNORE
+<U041E> <U041E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043E> <U041E>;<CYRILLIC>;<SMALL>;IGNORE
+<U041F> <U041F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043F> <U041F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0420> <U0420>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0440> <U0420>;<CYRILLIC>;<SMALL>;IGNORE
+<U0421> <U0421>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0441> <U0421>;<CYRILLIC>;<SMALL>;IGNORE
+<U0422> <U0422>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0442> <U0422>;<CYRILLIC>;<SMALL>;IGNORE
+<U040B> <U040B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045B> <U040B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0423> <U0423>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0443> <U0423>;<CYRILLIC>;<SMALL>;IGNORE
+<U040E> <U040E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045E> <U040E>;<CYRILLIC>;<SMALL>;IGNORE
+<U0424> <U0424>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0444> <U0424>;<CYRILLIC>;<SMALL>;IGNORE
+<U0425> <U0425>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0445> <U0425>;<CYRILLIC>;<SMALL>;IGNORE
+<U0426> <U0426>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0446> <U0426>;<CYRILLIC>;<SMALL>;IGNORE
+<U0405> <U0405>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0455> <U0405>;<CYRILLIC>;<SMALL>;IGNORE
+<U0427> <U0427>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0447> <U0427>;<CYRILLIC>;<SMALL>;IGNORE
+<U040F> <U040F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045F> <U040F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0428> <U0428>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0448> <U0428>;<CYRILLIC>;<SMALL>;IGNORE
+<U0429> <U0429>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0449> <U0429>;<CYRILLIC>;<SMALL>;IGNORE
+<U044A> <U044A>;<CYRILLIC>;<SMALL>;IGNORE
+<U042A> <U044A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042B> <U042B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044B> <U042B>;<CYRILLIC>;<SMALL>;IGNORE
+<U044C> <U044C>;<CYRILLIC>;<SMALL>;IGNORE
+<U042C> <U044C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042D> <U042D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044D> <U042D>;<CYRILLIC>;<SMALL>;IGNORE
+<U042E> <U042E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044E> <U042E>;<CYRILLIC>;<SMALL>;IGNORE
+<U042F> <U042F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044F> <U042F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0462> <U0462>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0463> <U0462>;<CYRILLIC>;<SMALL>;IGNORE
+<U046A> <U046A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U046B> <U046A>;<CYRILLIC>;<SMALL>;IGNORE
+<U0472> <U0472>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0473> <U0472>;<CYRILLIC>;<SMALL>;IGNORE
+<U0474> <U0474>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0475> <U0474>;<CYRILLIC>;<SMALL>;IGNORE
+<U0480> <U0480>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0481> <U0480>;<CYRILLIC>;<SMALL>;IGNORE
+<U05D0> <U05D0>;IGNORE;IGNORE;IGNORE
+<U05D1> <U05D1>;IGNORE;IGNORE;IGNORE
+<U05D2> <U05D2>;IGNORE;IGNORE;IGNORE
+<U05D3> <U05D3>;IGNORE;IGNORE;IGNORE
+<U05D4> <U05D4>;IGNORE;IGNORE;IGNORE
+<U05D5> <U05D5>;IGNORE;IGNORE;IGNORE
+<U05D6> <U05D6>;IGNORE;IGNORE;IGNORE
+<U05D7> <U05D7>;IGNORE;IGNORE;IGNORE
+<U05D8> <U05D8>;IGNORE;IGNORE;IGNORE
+<U05D9> <U05D9>;IGNORE;IGNORE;IGNORE
+<U05DA> <U05DA>;IGNORE;IGNORE;IGNORE
+<U05DB> <U05DB>;IGNORE;IGNORE;IGNORE
+<U05DC> <U05DC>;IGNORE;IGNORE;IGNORE
+<U05DD> <U05DD>;IGNORE;IGNORE;IGNORE
+<U05DE> <U05DE>;IGNORE;IGNORE;IGNORE
+<U05DF> <U05DF>;IGNORE;IGNORE;IGNORE
+<U05E0> <U05E0>;IGNORE;IGNORE;IGNORE
+<U05E1> <U05E1>;IGNORE;IGNORE;IGNORE
+<U05E2> <U05E2>;IGNORE;IGNORE;IGNORE
+<U05E3> <U05E3>;IGNORE;IGNORE;IGNORE
+<U05E4> <U05E4>;IGNORE;IGNORE;IGNORE
+<U05E5> <U05E5>;IGNORE;IGNORE;IGNORE
+<U05E6> <U05E6>;IGNORE;IGNORE;IGNORE
+<U05E7> <U05E7>;IGNORE;IGNORE;IGNORE
+<U05E8> <U05E8>;IGNORE;IGNORE;IGNORE
+<U05E9> <U05E9>;IGNORE;IGNORE;IGNORE
+<U05EA> <U05EA>;IGNORE;IGNORE;IGNORE
+
+% Arabic collating
+
+<U060C> IGNORE;IGNORE;IGNORE;<U060C>
+<U061B> IGNORE;IGNORE;IGNORE;<U061B>
+<U061F> IGNORE;IGNORE;IGNORE;<U061F>
+<U0640> IGNORE;IGNORE;IGNORE;<U0640>
+
+<U0621> <U0621>;<U0621>;IGNORE;IGNORE
+<U0622> <U0622>;<U0622>;IGNORE;IGNORE
+<UFE82> <U0622>;<UFE82>;IGNORE;IGNORE
+<U0623> <U0621>;<U0623>;IGNORE;IGNORE
+<UFE84> <U0621>;<UFE84>;IGNORE;IGNORE
+<U0624> <U0621>;<U0624>;IGNORE;IGNORE
+<U0625> <U0621>;<U0625>;IGNORE;IGNORE
+<UFE88> <U0621>;<UFE88>;IGNORE;IGNORE
+<U0626> <U0621>;<U0626>;IGNORE;IGNORE
+<U0670> <U0670>;<U0670>;IGNORE;IGNORE
+<U0627> <U0627>;<U0627>;IGNORE;IGNORE
+<UFE8D> <U0627>;<UFE8D>;IGNORE;IGNORE
+<UFE8E> <U0627>;<UFE8E>;IGNORE;IGNORE
+<UE016> <U0627>;<UE016>;IGNORE;IGNORE
+<U0628> <U0628>;<U0628>;IGNORE;IGNORE
+<UFE8F> <U0628>;<UFE8F>;IGNORE;IGNORE
+<UFE90> <U0628>;<UFE90>;IGNORE;IGNORE
+<UFE91> <U0628>;<UFE91>;IGNORE;IGNORE
+<UFE92> <U0628>;<UFE92>;IGNORE;IGNORE
+<U067E> <U067E>;<U067E>;IGNORE;IGNORE
+<U06A4> <U06A4>;<U06A4>;IGNORE;IGNORE
+<U0629> <U0629>;<U0629>;IGNORE;IGNORE
+<UFE93> <U0629>;<UFE93>;IGNORE;IGNORE
+<UFE94> <U0629>;<UFE94>;IGNORE;IGNORE
+<U062A> <U0629>;<U062A>;IGNORE;IGNORE
+<UFE95> <U0629>;<UFE95>;IGNORE;IGNORE
+<UFE96> <U0629>;<UFE96>;IGNORE;IGNORE
+<UFE97> <U0629>;<UFE97>;IGNORE;IGNORE
+<UFE98> <U0629>;<UFE98>;IGNORE;IGNORE
+<U062B> <U062B>;<U062B>;IGNORE;IGNORE
+<UFE99> <U062B>;<UFE99>;IGNORE;IGNORE
+<UFE9A> <U062B>;<UFE9A>;IGNORE;IGNORE
+<UFE9B> <U062B>;<UFE9B>;IGNORE;IGNORE
+<UFE9C> <U062B>;<UFE9C>;IGNORE;IGNORE
+<U062C> <U062C>;<U062C>;IGNORE;IGNORE
+<UFE9D> <U062C>;<UFE9D>;IGNORE;IGNORE
+<UFE9E> <U062C>;<UFE9E>;IGNORE;IGNORE
+<UFE9F> <U062C>;<UFE9F>;IGNORE;IGNORE
+<UFEA0> <U062C>;<UFEA0>;IGNORE;IGNORE
+<U062D> <U062D>;<U062D>;IGNORE;IGNORE
+<UFEA1> <U062D>;<UFEA1>;IGNORE;IGNORE
+<UFEA2> <U062D>;<UFEA2>;IGNORE;IGNORE
+<UFEA3> <U062D>;<UFEA3>;IGNORE;IGNORE
+<UFEA4> <U062D>;<UFEA4>;IGNORE;IGNORE
+<U062E> <U062E>;<U062E>;IGNORE;IGNORE
+<UFEA5> <U062E>;<UFEA5>;IGNORE;IGNORE
+<UFEA6> <U062E>;<UFEA6>;IGNORE;IGNORE
+<UFEA7> <U062E>;<UFEA7>;IGNORE;IGNORE
+<UFEA8> <U062E>;<UFEA8>;IGNORE;IGNORE
+<U062F> <U062F>;<U062F>;IGNORE;IGNORE
+<UFEA9> <U062F>;<UFEA9>;IGNORE;IGNORE
+<UFEAA> <U062F>;<UFEAA>;IGNORE;IGNORE
+<U0630> <U0630>;<U0630>;IGNORE;IGNORE
+<UFEAB> <U0630>;<UFEAB>;IGNORE;IGNORE
+<UFEAC> <U0630>;<UFEAC>;IGNORE;IGNORE
+<U0631> <U0631>;<U0631>;IGNORE;IGNORE
+<UFEAD> <U0631>;<UFEAD>;IGNORE;IGNORE
+<UFEAE> <U0631>;<UFEAE>;IGNORE;IGNORE
+<U0632> <U0632>;<U0632>;IGNORE;IGNORE
+<UFEAF> <U0632>;<UFEAF>;IGNORE;IGNORE
+<UFEB0> <U0632>;<UFEB0>;IGNORE;IGNORE
+<U0633> <U0633>;<U0633>;IGNORE;IGNORE
+<UFEB1> <U0633>;<UFEB1>;IGNORE;IGNORE
+<UFEB2> <U0633>;<UFEB2>;IGNORE;IGNORE
+<UFEB3> <U0633>;<UFEB3>;IGNORE;IGNORE
+<UFEB4> <U0633>;<UFEB4>;IGNORE;IGNORE
+<U0634> <U0634>;<U0634>;IGNORE;IGNORE
+<UFEB5> <U0634>;<UFEB5>;IGNORE;IGNORE
+<UFEB6> <U0634>;<UFEB6>;IGNORE;IGNORE
+<UFEB7> <U0634>;<UFEB7>;IGNORE;IGNORE
+<UFEB8> <U0634>;<UFEB8>;IGNORE;IGNORE
+<U0635> <U0635>;<U0635>;IGNORE;IGNORE
+<UFEB9> <U0635>;<UFEB9>;IGNORE;IGNORE
+<UFEBA> <U0635>;<UFEBA>;IGNORE;IGNORE
+<UFEBB> <U0635>;<UFEBB>;IGNORE;IGNORE
+<UFEBC> <U0635>;<UFEBC>;IGNORE;IGNORE
+<U0636> <U0636>;<U0636>;IGNORE;IGNORE
+<UFEBD> <U0636>;<UFEBD>;IGNORE;IGNORE
+<UFEBE> <U0636>;<UFEBE>;IGNORE;IGNORE
+<UFEBF> <U0636>;<UFEBF>;IGNORE;IGNORE
+<UFEC0> <U0636>;<UFEC0>;IGNORE;IGNORE
+<U0637> <U0637>;<U0637>;IGNORE;IGNORE
+<UFEC1> <U0637>;<UFEC1>;IGNORE;IGNORE
+<UFEC2> <U0637>;<UFEC2>;IGNORE;IGNORE
+<UFEC3> <U0637>;<UFEC3>;IGNORE;IGNORE
+<UFEC4> <U0637>;<UFEC4>;IGNORE;IGNORE
+<U0638> <U0638>;<U0638>;IGNORE;IGNORE
+<UFEC5> <U0638>;<UFEC5>;IGNORE;IGNORE
+<UFEC6> <U0638>;<UFEC6>;IGNORE;IGNORE
+<UFEC7> <U0638>;<UFEC7>;IGNORE;IGNORE
+<UFEC8> <U0638>;<UFEC8>;IGNORE;IGNORE
+<U0639> <U0639>;<U0639>;IGNORE;IGNORE
+<UFEC9> <U0639>;<UFEC9>;IGNORE;IGNORE
+<UFECA> <U0639>;<UFECA>;IGNORE;IGNORE
+<UFECB> <U0639>;<UFECB>;IGNORE;IGNORE
+<UFECC> <U0639>;<UFECC>;IGNORE;IGNORE
+<U063A> <U063A>;<U063A>;IGNORE;IGNORE
+<UFECD> <U063A>;<UFECD>;IGNORE;IGNORE
+<UFECE> <U063A>;<UFECE>;IGNORE;IGNORE
+<UFECF> <U063A>;<UFECF>;IGNORE;IGNORE
+<UFED0> <U063A>;<UFED0>;IGNORE;IGNORE
+<U0641> <U0641>;<U0641>;IGNORE;IGNORE
+<UFED1> <U0641>;<UFED1>;IGNORE;IGNORE
+<UFED2> <U0641>;<UFED2>;IGNORE;IGNORE
+<UFED3> <U0641>;<UFED3>;IGNORE;IGNORE
+<UFED4> <U0641>;<UFED4>;IGNORE;IGNORE
+<U0642> <U0642>;<U0642>;IGNORE;IGNORE
+<UFED5> <U0642>;<UFED5>;IGNORE;IGNORE
+<UFED6> <U0642>;<UFED6>;IGNORE;IGNORE
+<UFED7> <U0642>;<UFED7>;IGNORE;IGNORE
+<UFED8> <U0642>;<UFED8>;IGNORE;IGNORE
+<U0643> <U0643>;<U0643>;IGNORE;IGNORE
+<UFED9> <U0643>;<UFED9>;IGNORE;IGNORE
+<UFEDA> <U0643>;<UFEDA>;IGNORE;IGNORE
+<UFEDB> <U0643>;<UFEDB>;IGNORE;IGNORE
+<UFEDC> <U0643>;<UFEDC>;IGNORE;IGNORE
+<U0644> <U0644>;<U0644>;IGNORE;IGNORE
+<UFEDD> <U0644>;<UFEDD>;IGNORE;IGNORE
+<UFEDE> <U0644>;<UFEDE>;IGNORE;IGNORE
+<UFEDF> <U0644>;<UFEDF>;IGNORE;IGNORE
+<UFEE0> <U0644>;<UFEE0>;IGNORE;IGNORE
+<U0645> <U0645>;<U0645>;IGNORE;IGNORE
+<UFEE1> <U0645>;<UFEE1>;IGNORE;IGNORE
+<UFEE2> <U0645>;<UFEE2>;IGNORE;IGNORE
+<UFEE3> <U0645>;<UFEE3>;IGNORE;IGNORE
+<UFEE4> <U0645>;<UFEE4>;IGNORE;IGNORE
+<U0646> <U0646>;<U0646>;IGNORE;IGNORE
+<UFEE5> <U0646>;<UFEE5>;IGNORE;IGNORE
+<UFEE6> <U0646>;<UFEE6>;IGNORE;IGNORE
+<UFEE7> <U0646>;<UFEE7>;IGNORE;IGNORE
+<UFEE8> <U0646>;<UFEE8>;IGNORE;IGNORE
+<U0647> <U0647>;<U0647>;IGNORE;IGNORE
+<UFEE9> <U0647>;<UFEE9>;IGNORE;IGNORE
+<UFEEA> <U0647>;<UFEEA>;IGNORE;IGNORE
+<UFEEB> <U0647>;<UFEEB>;IGNORE;IGNORE
+<UFEEC> <U0647>;<UFEEC>;IGNORE;IGNORE
+<U0648> <U0648>;<U0648>;IGNORE;IGNORE
+<UFEED> <U0648>;<UFEED>;IGNORE;IGNORE
+<UFEEE> <U0648>;<UFEEE>;IGNORE;IGNORE
+<U0649> <U0649>;<U0649>;IGNORE;IGNORE
+<UFEEF> <U0649>;<UFEEF>;IGNORE;IGNORE
+<UFEF0> <U0649>;<UFEF0>;IGNORE;IGNORE
+<U064A> <U064A>;<U064A>;IGNORE;IGNORE
+<UFEF1> <U064A>;<UFEF1>;IGNORE;IGNORE
+<UFEF2> <U064A>;<UFEF2>;IGNORE;IGNORE
+<UFEF3> <U064A>;<UFEF3>;IGNORE;IGNORE
+<UFEF4> <U064A>;<UFEF4>;IGNORE;IGNORE
+
+<U064B> IGNORE;IGNORE;<U064B>;IGNORE
+<U064C> IGNORE;IGNORE;<U064C>;IGNORE
+<U064D> IGNORE;IGNORE;<U064D>;IGNORE
+<U064E> IGNORE;IGNORE;<U064E>;IGNORE
+<U064F> IGNORE;IGNORE;<U064F>;IGNORE
+<U0650> IGNORE;IGNORE;<U0650>;IGNORE
+<U0651> IGNORE;IGNORE;<U0651>;IGNORE
+<UFE7D> IGNORE;IGNORE;<UFE7D>;IGNORE
+<U0652> IGNORE;IGNORE;<U0652>;IGNORE
+
+<U0660> <U0030>;<U0660>;IGNORE;IGNORE
+<U0661> <U0031>;<U0661>;IGNORE;IGNORE
+<U0662> <U0032>;<U0662>;IGNORE;IGNORE
+<U0663> <U0033>;<U0663>;IGNORE;IGNORE
+<U0664> <U0034>;<U0664>;IGNORE;IGNORE
+<U0665> <U0035>;<U0665>;IGNORE;IGNORE
+<U0666> <U0036>;<U0666>;IGNORE;IGNORE
+<U0667> <U0037>;<U0667>;IGNORE;IGNORE
+<U0668> <U0038>;<U0668>;IGNORE;IGNORE
+<U0669> <U0039>;<U0669>;IGNORE;IGNORE
+
+<UFEF5> "<U0644><U0622>";"<U0644><U0622>";"<UFEF5><UFEF5>";IGNORE
+<UFEF6> "<U0644><U0622>";"<U0644><UFE82>";"<UFEF6><UFEF6>";IGNORE
+<UFEF7> "<U0644><U0623>";"<U0644><U0623>";"<UFEF7><UFEF7>";IGNORE
+<UFEF8> "<U0644><U0623>";"<U0644><UFE84>";"<UFEF8><UFEF8>";IGNORE
+<UFEF9> "<U0644><U0625>";"<U0644><U0625>";"<UFEF9><UFEF9>";IGNORE
+<UFEFA> "<U0644><U0625>";"<U0644><UFE88>";"<UFEFA><UFEFA>";IGNORE
+<UFEFB> "<U0644><U0627>";"<U0644><UFE8D>";"<UFEFB><UFEFB>";IGNORE
+<UFEFC> "<U0644><U0627>";"<U0644><UFE8E>";"<UFEFC><UFEFC>";IGNORE
+
+% katakana/hiragana sorting
+% base is katakana, as this is present in most charsets
+% normal before voiced before semi-voiced
+% small vocals before normal vocals
+% katakana before hiragana
+
+<U30A1> <U30A1>;<U30A1>;IGNORE;IGNORE
+<U3041> <U30A1>;<U3041>;IGNORE;IGNORE
+<U30A2> <U30A1>;<U30A2>;IGNORE;IGNORE
+<U3042> <U30A1>;<U3042>;IGNORE;IGNORE
+<U30A3> <U30A3>;<U30A3>;IGNORE;IGNORE
+<U3043> <U30A3>;<U3043>;IGNORE;IGNORE
+<U30A4> <U30A3>;<U30A4>;IGNORE;IGNORE
+<U3044> <U30A3>;<U3044>;IGNORE;IGNORE
+<U30A5> <U30A5>;<U30A5>;IGNORE;IGNORE
+<U3045> <U30A5>;<U3045>;IGNORE;IGNORE
+<U30A6> <U30A5>;<U30A6>;IGNORE;IGNORE
+<U3046> <U30A5>;<U3046>;IGNORE;IGNORE
+<U30F4> <U30A5>;<U30F4>;IGNORE;IGNORE
+<U30A7> <U30A7>;<U30A7>;IGNORE;IGNORE
+<U3047> <U30A7>;<U3047>;IGNORE;IGNORE
+<U30A8> <U30A7>;<U30A8>;IGNORE;IGNORE
+<U3048> <U30A7>;<U3048>;IGNORE;IGNORE
+<U30A9> <U30A9>;<U30A9>;IGNORE;IGNORE
+<U3049> <U30A9>;<U3049>;IGNORE;IGNORE
+<U30AA> <U30A9>;<U30AA>;IGNORE;IGNORE
+<U304A> <U30A9>;<U304A>;IGNORE;IGNORE
+<U30F5> <U30F5>;<U30F5>;IGNORE;IGNORE
+<U30AB> <U30F5>;<U30AB>;IGNORE;IGNORE
+<U304B> <U30F5>;<U304B>;IGNORE;IGNORE
+<U30AC> <U30F5>;<U30AC>;IGNORE;IGNORE
+<U304C> <U30F5>;<U304C>;IGNORE;IGNORE
+<U30AD> <U30AD>;<U30AD>;IGNORE;IGNORE
+<U304D> <U30AD>;<U304D>;IGNORE;IGNORE
+<U30AE> <U30AD>;<U30AE>;IGNORE;IGNORE
+<U304E> <U30AD>;<U304E>;IGNORE;IGNORE
+<U30AF> <U30AF>;<U30AF>;IGNORE;IGNORE
+<U304F> <U30AF>;<U304F>;IGNORE;IGNORE
+<U30B0> <U30AF>;<U30B0>;IGNORE;IGNORE
+<U3050> <U30AF>;<U3050>;IGNORE;IGNORE
+<U30F6> <U30F6>;<U30F6>;IGNORE;IGNORE
+<U30B1> <U30F6>;<U30B1>;IGNORE;IGNORE
+<U3051> <U30F6>;<U3051>;IGNORE;IGNORE
+<U30B2> <U30F6>;<U30B2>;IGNORE;IGNORE
+<U3052> <U30F6>;<U3052>;IGNORE;IGNORE
+<U30B3> <U30B3>;<U30B3>;IGNORE;IGNORE
+<U3053> <U30B3>;<U3053>;IGNORE;IGNORE
+<U30B4> <U30B3>;<U30B4>;IGNORE;IGNORE
+<U3054> <U30B3>;<U3054>;IGNORE;IGNORE
+<U30B5> <U30B5>;<U30B5>;IGNORE;IGNORE
+<U3055> <U30B5>;<U3055>;IGNORE;IGNORE
+<U30B6> <U30B5>;<U30B6>;IGNORE;IGNORE
+<U3056> <U30B5>;<U3056>;IGNORE;IGNORE
+<U30B7> <U30B7>;<U30B7>;IGNORE;IGNORE
+<U3057> <U30B7>;<U3057>;IGNORE;IGNORE
+<U30B8> <U30B7>;<U30B8>;IGNORE;IGNORE
+<U3058> <U30B7>;<U3058>;IGNORE;IGNORE
+<U30B9> <U30B9>;<U30B9>;IGNORE;IGNORE
+<U3059> <U30B9>;<U3059>;IGNORE;IGNORE
+<U30BA> <U30B9>;<U30BA>;IGNORE;IGNORE
+<U305A> <U30B9>;<U305A>;IGNORE;IGNORE
+<U30BB> <U30BB>;<U30BB>;IGNORE;IGNORE
+<U305B> <U30BB>;<U305B>;IGNORE;IGNORE
+<U30BC> <U30BB>;<U30BC>;IGNORE;IGNORE
+<U305C> <U30BB>;<U305C>;IGNORE;IGNORE
+<U30BD> <U30BD>;<U30BD>;IGNORE;IGNORE
+<U305D> <U30BD>;<U305D>;IGNORE;IGNORE
+<U30BE> <U30BD>;<U30BE>;IGNORE;IGNORE
+<U305E> <U30BD>;<U305E>;IGNORE;IGNORE
+<U30BF> <U30BF>;<U30BF>;IGNORE;IGNORE
+<U305F> <U30BF>;<U305F>;IGNORE;IGNORE
+<U30C0> <U30BF>;<U30C0>;IGNORE;IGNORE
+<U3060> <U30BF>;<U3060>;IGNORE;IGNORE
+<U30C1> <U30C1>;<U30C1>;IGNORE;IGNORE
+<U3061> <U30C1>;<U3061>;IGNORE;IGNORE
+<U30C2> <U30C1>;<U30C2>;IGNORE;IGNORE
+<U3062> <U30C1>;<U3062>;IGNORE;IGNORE
+<U30C3> <U30C3>;<U30C3>;IGNORE;IGNORE
+<U3063> <U30C3>;<U3063>;IGNORE;IGNORE
+<U30C4> <U30C3>;<U30C4>;IGNORE;IGNORE
+<U3064> <U30C3>;<U3064>;IGNORE;IGNORE
+<U30C5> <U30C3>;<U30C5>;IGNORE;IGNORE
+<U3065> <U30C3>;<U3065>;IGNORE;IGNORE
+<U30C6> <U30C6>;<U30C6>;IGNORE;IGNORE
+<U3066> <U30C6>;<U3066>;IGNORE;IGNORE
+<U30C7> <U30C6>;<U30C7>;IGNORE;IGNORE
+<U3067> <U30C6>;<U3067>;IGNORE;IGNORE
+<U30C8> <U30C8>;<U30C8>;IGNORE;IGNORE
+<U3068> <U30C8>;<U3068>;IGNORE;IGNORE
+<U30C9> <U30C8>;<U30C9>;IGNORE;IGNORE
+<U3069> <U30C8>;<U3069>;IGNORE;IGNORE
+<U30CA> <U30CA>;<U30CA>;IGNORE;IGNORE
+<U306A> <U30CA>;<U306A>;IGNORE;IGNORE
+<U30CB> <U30CB>;<U30CB>;IGNORE;IGNORE
+<U306B> <U30CB>;<U306B>;IGNORE;IGNORE
+<U30CC> <U30CC>;<U30CC>;IGNORE;IGNORE
+<U306C> <U30CC>;<U306C>;IGNORE;IGNORE
+<U30CD> <U30CD>;<U30CD>;IGNORE;IGNORE
+<U306D> <U30CD>;<U306D>;IGNORE;IGNORE
+<U30CE> <U30CE>;<U30CE>;IGNORE;IGNORE
+<U306E> <U30CE>;<U306E>;IGNORE;IGNORE
+<U30CF> <U30CF>;<U30CF>;IGNORE;IGNORE
+<U306F> <U30CF>;<U306F>;IGNORE;IGNORE
+<U30D0> <U30CF>;<U30D0>;IGNORE;IGNORE
+<U3070> <U30CF>;<U3070>;IGNORE;IGNORE
+<U30D1> <U30CF>;<U30D1>;IGNORE;IGNORE
+<U3071> <U30CF>;<U3071>;IGNORE;IGNORE
+<U30D2> <U30D2>;<U30D2>;IGNORE;IGNORE
+<U3072> <U30D2>;<U3072>;IGNORE;IGNORE
+<U30D3> <U30D2>;<U30D3>;IGNORE;IGNORE
+<U3073> <U30D2>;<U3073>;IGNORE;IGNORE
+<U30D4> <U30D2>;<U30D4>;IGNORE;IGNORE
+<U3074> <U30D2>;<U3074>;IGNORE;IGNORE
+<U30D5> <U30D5>;<U30D5>;IGNORE;IGNORE
+<U3075> <U30D5>;<U3075>;IGNORE;IGNORE
+<U30D6> <U30D5>;<U30D6>;IGNORE;IGNORE
+<U3076> <U30D5>;<U3076>;IGNORE;IGNORE
+<U30D7> <U30D5>;<U30D7>;IGNORE;IGNORE
+<U3077> <U30D5>;<U3077>;IGNORE;IGNORE
+<U30D8> <U30D8>;<U30D8>;IGNORE;IGNORE
+<U3078> <U30D8>;<U3078>;IGNORE;IGNORE
+<U30D9> <U30D8>;<U30D9>;IGNORE;IGNORE
+<U3079> <U30D8>;<U3079>;IGNORE;IGNORE
+<U30DA> <U30D8>;<U30DA>;IGNORE;IGNORE
+<U307A> <U30D8>;<U307A>;IGNORE;IGNORE
+<U30DB> <U30DB>;<U30DB>;IGNORE;IGNORE
+<U307B> <U30DB>;<U307B>;IGNORE;IGNORE
+<U30DC> <U30DB>;<U30DC>;IGNORE;IGNORE
+<U307C> <U30DB>;<U307C>;IGNORE;IGNORE
+<U30DD> <U30DB>;<U30DD>;IGNORE;IGNORE
+<U307D> <U30DB>;<U307D>;IGNORE;IGNORE
+<U30DE> <U30DE>;<U30DE>;IGNORE;IGNORE
+<U307E> <U30DE>;<U307E>;IGNORE;IGNORE
+<U30DF> <U30DF>;<U30DF>;IGNORE;IGNORE
+<U307F> <U30DF>;<U307F>;IGNORE;IGNORE
+<U30E0> <U30E0>;<U30E0>;IGNORE;IGNORE
+<U3080> <U30E0>;<U3080>;IGNORE;IGNORE
+<U30E1> <U30E1>;<U30E1>;IGNORE;IGNORE
+<U3081> <U30E1>;<U3081>;IGNORE;IGNORE
+<U30E2> <U30E2>;<U30E2>;IGNORE;IGNORE
+<U3082> <U30E2>;<U3082>;IGNORE;IGNORE
+<U30E3> <U30E3>;<U30E3>;IGNORE;IGNORE
+<U3083> <U30E3>;<U3083>;IGNORE;IGNORE
+<U30E4> <U30E3>;<U30E4>;IGNORE;IGNORE
+<U3084> <U30E3>;<U3084>;IGNORE;IGNORE
+<U30E5> <U30E5>;<U30E5>;IGNORE;IGNORE
+<U3085> <U30E5>;<U3085>;IGNORE;IGNORE
+<U30E6> <U30E5>;<U30E6>;IGNORE;IGNORE
+<U3086> <U30E5>;<U3086>;IGNORE;IGNORE
+<U30E7> <U30E7>;<U30E7>;IGNORE;IGNORE
+<U3087> <U30E7>;<U3087>;IGNORE;IGNORE
+<U30E8> <U30E7>;<U30E8>;IGNORE;IGNORE
+<U3088> <U30E7>;<U3088>;IGNORE;IGNORE
+<U30E9> <U30E9>;<U30E9>;IGNORE;IGNORE
+<U3089> <U30E9>;<U3089>;IGNORE;IGNORE
+<U30EA> <U30EA>;<U30EA>;IGNORE;IGNORE
+<U308A> <U30EA>;<U308A>;IGNORE;IGNORE
+<U30EB> <U30EB>;<U30EB>;IGNORE;IGNORE
+<U308B> <U30EB>;<U308B>;IGNORE;IGNORE
+<U30EC> <U30EC>;<U30EC>;IGNORE;IGNORE
+<U308C> <U30EC>;<U308C>;IGNORE;IGNORE
+<U30ED> <U30ED>;<U30ED>;IGNORE;IGNORE
+<U308D> <U30ED>;<U308D>;IGNORE;IGNORE
+<U30EE> <U30EE>;<U30EE>;IGNORE;IGNORE
+<U308E> <U30EE>;<U308E>;IGNORE;IGNORE
+<U30EF> <U30EE>;<U30EF>;IGNORE;IGNORE
+<U308F> <U30EE>;<U308F>;IGNORE;IGNORE
+<U30F0> <U30F0>;<U30F0>;IGNORE;IGNORE
+<U3090> <U30F0>;<U3090>;IGNORE;IGNORE
+<U30F1> <U30F1>;<U30F1>;IGNORE;IGNORE
+<U3091> <U30F1>;<U3091>;IGNORE;IGNORE
+<U30F2> <U30F2>;<U30F2>;IGNORE;IGNORE
+<U3092> <U30F2>;<U3092>;IGNORE;IGNORE
+<U30F3> <U30F3>;<U30F3>;IGNORE;IGNORE
+<U3093> <U30F3>;<U3093>;IGNORE;IGNORE
+
+order_end
+
diff --git a/ap/build/uClibc/extra/locale/collation/cs_CZ b/ap/build/uClibc/extra/locale/collation/cs_CZ
new file mode 100644
index 0000000..734f4a7
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/cs_CZ
@@ -0,0 +1,2162 @@
+
+% Base collation scheme: 1994-03-22
+
+% Ordering algorithm:
+% 1. Spaces and hyphen (but not soft
+% hyphen) before punctuation
+% characters, punctuation characters
+% before letters,
+% numbers after letters.
+% 2. Letters with diacritical marks are
+% members of equivalence classes
+% 3. A distinction is made with regards
+% to case as noted below.
+% 4. Special characters are ignored
+% when comparing letters, but then
+% they are considered
+% 5. The alphabets are sorted in order
+% of first appearance in ISO 10646:
+% Latin, Greek, Cyrillic, etc.
+%
+% According to Greek specifications,
+% the steps 2. and 3. above are reversed
+% for the Greek script
+
+% collating symbols
+
+% The collating symbol naming is
+% mostly taken from ISO 10646-1,
+% for example the case and accent
+% names are from this standard.
+
+collating-symbol <CAPITAL>
+collating-symbol <CAPITAL-SMALL>
+collating-symbol <SMALL-CAPITAL>
+collating-symbol <SMALL>
+
+% <CAPITAL-SMALL> and <SMALL-CAPITAL>
+% are for cases like Danish <U0041><U0061>
+% and Spanish <U0043><U0068> being treated
+% as one letter.
+
+% The <a8> ...... <z8> collating
+% symbols have defined weights as
+% the last character in a group of
+% Latin letters. They are used
+% to specify deltas by locales using
+% a locale as the default ordering
+% and by "replace-after" statements
+% specifying the changed placement
+% in an ordering of a character.
+
+collating-symbol <a8>
+collating-symbol <b8>
+collating-symbol <c8>
+collating-symbol <d8>
+collating-symbol <e8>
+collating-symbol <f8>
+collating-symbol <g8>
+collating-symbol <h8>
+collating-symbol <i8>
+collating-symbol <j8>
+collating-symbol <k8>
+collating-symbol <l8>
+collating-symbol <m8>
+collating-symbol <n8>
+collating-symbol <o8>
+collating-symbol <p8>
+collating-symbol <q8>
+collating-symbol <r8>
+collating-symbol <s8>
+collating-symbol <t8>
+collating-symbol <u8>
+collating-symbol <v8>
+collating-symbol <w8>
+collating-symbol <x8>
+collating-symbol <y8>
+collating-symbol <z8>
+
+collating-symbol <NONE>
+collating-symbol <ACUTE>
+collating-symbol <ACUTE+DOT>
+collating-symbol <GRAVE>
+collating-symbol <DOUBLE-GRAVE>
+collating-symbol <BREVE>
+collating-symbol <BREVE+ACUTE>
+collating-symbol <BREVE+GRAVE>
+collating-symbol <BREVE+MACRON>
+collating-symbol <BREVE+HOOK>
+collating-symbol <BREVE+TILDE>
+collating-symbol <BREVE+DOT-BELOW>
+collating-symbol <BREVE-BELOW>
+collating-symbol <INVERTED-BREVE>
+collating-symbol <CIRCUMFLEX>
+collating-symbol <CIRCUMFLEX+ACUTE>
+collating-symbol <CIRCUMFLEX+GRAVE>
+collating-symbol <CIRCUMFLEX+HOOK>
+collating-symbol <CIRCUMFLEX+TILDE>
+collating-symbol <CIRCUMFLEX+DOT-BELOW>
+collating-symbol <CARON>
+collating-symbol <CARON+DIAERESIS>
+collating-symbol <CARON+DOT>
+collating-symbol <RING>
+collating-symbol <RING+ACUTE>
+collating-symbol <RING-BELOW>
+collating-symbol <DIAERESIS>
+collating-symbol <DIAERESIS+MACRON>
+collating-symbol <DIAERESIS+ACUTE>
+collating-symbol <DIAERESIS+GRAVE>
+collating-symbol <DIAERESIS+CARON>
+collating-symbol <DOUBLE-ACUTE>
+collating-symbol <HOOK>
+collating-symbol <TILDE>
+collating-symbol <TILDE+ACUTE>
+collating-symbol <TILDE+DIAERESIS>
+collating-symbol <TILDE-BELOW>
+collating-symbol <DOT>
+collating-symbol <DOT-BELOW>
+collating-symbol <DOT+DOT-BELOW>
+collating-symbol <STROKE>
+collating-symbol <STROKE+ACUTE>
+collating-symbol <CEDILLA>
+collating-symbol <CEDILLA+ACUTE>
+collating-symbol <CEDILLA+GRAVE>
+collating-symbol <CEDILLA+BREVE>
+collating-symbol <OGONEK>
+collating-symbol <OGONEK+MACRON>
+collating-symbol <MACRON>
+collating-symbol <MACRON+ACUTE>
+collating-symbol <MACRON+GRAVE>
+collating-symbol <MACRON+DIAERESIS>
+collating-symbol <MACRON+DIAERESIS-BELOW>
+collating-symbol <MACRON+DOT>
+collating-symbol <MACRON+DOT-BELOW>
+collating-symbol <MACRON+CIRCUMFLEX>
+collating-symbol <LINE-BELOW>
+collating-symbol <HORN>
+collating-symbol <HORN+ACUTE>
+collating-symbol <HORN+GRAVE>
+collating-symbol <HORN+HOOK>
+collating-symbol <HORN+TILDE>
+collating-symbol <HORN+DOT-BELOW>
+collating-symbol <PRECEDED-BY-APOSTROPHE>
+collating-symbol <GREEK>
+collating-symbol <TONOS>
+collating-symbol <DIALYTICA>
+collating-symbol <DIALYTICA+TONOS>
+collating-symbol <CYRILLIC>
+collating-symbol <HIRAGANA>
+collating-symbol <KATAKANA>
+collating-symbol <SPECIAL>
+
+
+% Definice písmene ch
+
+collating-element <c-h> from "<U0063><U0068>"
+collating-element <C-h> from "<U0043><U0068>"
+collating-element <C-H> from "<U0043><U0048>"
+
+
+% letter;accent;case;specials
+
+%order_start forward;forward;forward;forward
+order_start forward;forward;forward;forward
+
+% <CAPITAL> or <SMALL> letters first:
+
+<CAPITAL>
+<CAPITAL-SMALL>
+<SMALL-CAPITAL>
+<SMALL>
+
+% Accents:
+% Poøadí akcentù: nahoøe, dole, vzadu, vpøedu, uvnitø nebo pøes písmeno
+% pokud toto nerozhodne zále¾í na poètu a tvaru
+
+<NONE>
+% nahoøe
+<DOT> % Teèka
+<MACRON> % Vodorovná èárka nahoøe
+<ACUTE> % Èárka ' (napø: á)
+<GRAVE> % Zpìtná èárka `
+<CIRCUMFLEX> % Støí¹ka ^ (napø: â)
+<CARON> % Háèek
+<TILDE> % Tilda (~)
+<BREVE> % Dolní pùlkrou¾ek (vypadá jako sjednocení)
+<INVERTED-BREVE>% Horní pùlkrou¾ek (vypadá jako prùnik)
+<RING> % Krou¾ek
+<HOOK> % netu¹ím jaké diakritické znaménko to je, pøedpokládám je nahoøe
+<HORN> % netu¹ím jaké diakritické znaménko to je, pøedpokládám je nahoøe
+
+<DIAERESIS> % Dvì teèky
+<ACUTE+DOT>
+<DOUBLE-ACUTE> % Dvì èárky
+<DOUBLE-GRAVE> % Dvì zpìtné èárky
+<TILDE+ACUTE>
+<BREVE+MACRON>
+<BREVE+ACUTE>
+<BREVE+GRAVE>
+<BREVE+TILDE>
+<BREVE+HOOK>
+<CIRCUMFLEX+ACUTE>
+<CIRCUMFLEX+GRAVE>
+<CIRCUMFLEX+TILDE>
+<CIRCUMFLEX+HOOK>
+<CARON+DOT>
+<RING+ACUTE>
+<MACRON+DOT>
+<MACRON+ACUTE>
+<MACRON+GRAVE>
+<MACRON+CIRCUMFLEX>
+<HORN+ACUTE>
+<HORN+GRAVE>
+<HORN+TILDE>
+<HORN+HOOK>
+<DIAERESIS+MACRON>
+<DIAERESIS+ACUTE>
+<DIAERESIS+GRAVE>
+<DIAERESIS+CARON>
+<MACRON+DIAERESIS>
+<TILDE+DIAERESIS>
+<CARON+DIAERESIS>
+
+% nahoøe a dole
+<DOT+DOT-BELOW> % Zde si nejsem jist jak je to mínìno, zda obì pod
+<MACRON+DOT-BELOW> % nebo pouze to druhé
+<BREVE+DOT-BELOW>
+<CIRCUMFLEX+DOT-BELOW>
+<CEDILLA+ACUTE>
+<CEDILLA+GRAVE>
+<CEDILLA+BREVE>
+<OGONEK+MACRON>
+<HORN+DOT-BELOW>
+<MACRON+DIAERESIS-BELOW>
+% nahoøe a uprostøed
+<STROKE+ACUTE>
+
+% dole
+<DOT-BELOW>
+<LINE-BELOW>
+<TILDE-BELOW>
+<BREVE-BELOW>
+<CEDILLA> % Zobáèek pod písmenem vypadá skoro jako s (º)
+<OGONEK> % Zobáèek pod písmenem obrácený k pøedchozímu (jako c)(ê)
+<RING-BELOW>
+% za
+% pøed
+<PRECEDED-BY-APOSTROPHE>
+% uprostøed
+<STROKE> % ©krtnutí písmene v prostøedku (polské ³)
+
+<GREEK>
+<TONOS>
+<DIALYTICA>
+<DIALYTICA+TONOS>
+<CYRILLIC>
+<HIRAGANA>
+<KATAKANA>
+<SPECIAL>
+
+<U00A0> <U00A0>;<U00A0>;<U00A0>;<U00A0>
+<U0020> IGNORE;IGNORE;IGNORE;<U0020>
+<U2002> IGNORE;IGNORE;IGNORE;<U2002>
+<U2003> IGNORE;IGNORE;IGNORE;<U2003>
+<U2004> IGNORE;IGNORE;IGNORE;<U2004>
+<U2005> IGNORE;IGNORE;IGNORE;<U2005>
+<U2006> IGNORE;IGNORE;IGNORE;<U2006>
+<U2009> IGNORE;IGNORE;IGNORE;<U2009>
+<U200A> IGNORE;IGNORE;IGNORE;<U200A>
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Zde jsou v¹echna latinská písmena s diakritikou
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+<U0041> <U0041>;<NONE>;<CAPITAL>;<U0041>
+<U0061> <U0041>;<NONE>;<SMALL>;<U0041>
+<U00AA> <U0041>;<NONE>;<U00AA>;<U0041>
+<U00C1> <U0041>;<ACUTE>;<CAPITAL>;<U0041>
+<U00E1> <U0041>;<ACUTE>;<SMALL>;<U0041>
+<U00C0> <U0041>;<GRAVE>;<CAPITAL>;<U0041>
+<U00E0> <U0041>;<GRAVE>;<SMALL>;<U0041>
+<U0200> <U0041>;<DOUBLE-GRAVE>;<CAPITAL>;<U0041>
+<U0201> <U0041>;<DOUBLE-GRAVE>;<SMALL>;<U0041>
+<U0102> <U0041>;<BREVE>;<CAPITAL>;<U0041>
+<U0103> <U0041>;<BREVE>;<SMALL>;<U0041>
+<U1EAE> <U0041>;<BREVE+ACUTE>;<CAPITAL>;<U0041>
+<U1EAF> <U0041>;<BREVE+ACUTE>;<SMALL>;<U0041>
+<U1EB0> <U0041>;<BREVE+GRAVE>;<CAPITAL>;<U0041>
+<U1EB1> <U0041>;<BREVE+GRAVE>;<SMALL>;<U0041>
+<U1EB2> <U0041>;<BREVE+HOOK>;<CAPITAL>;<U0041>
+<U1EB3> <U0041>;<BREVE+HOOK>;<SMALL>;<U0041>
+<U1EB4> <U0041>;<BREVE+TILDE>;<CAPITAL>;<U0041>
+<U1EB5> <U0041>;<BREVE+TILDE>;<SMALL>;<U0041>
+<U1EB6> <U0041>;<BREVE+DOT-BELOW>;<CAPITAL>;<U0041>
+<U1EB7> <U0041>;<BREVE+DOT-BELOW>;<SMALL>;<U0041>
+<U0202> <U0041>;<INVERTED-BREVE>;<CAPITAL>;<U0041>
+<U0203> <U0041>;<INVERTED-BREVE>;<SMALL>;<U0041>
+<U00C2> <U0041>;<CIRCUMFLEX>;<CAPITAL>;<U0041>
+<U00E2> <U0041>;<CIRCUMFLEX>;<SMALL>;<U0041>
+<U1EA4> <U0041>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;<U0041>
+<U1EA5> <U0041>;<CIRCUMFLEX+ACUTE>;<SMALL>;<U0041>
+<U1EA6> <U0041>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;<U0041>
+<U1EA7> <U0041>;<CIRCUMFLEX+GRAVE>;<SMALL>;<U0041>
+<U1EA8> <U0041>;<CIRCUMFLEX+HOOK>;<CAPITAL>;<U0041>
+<U1EA9> <U0041>;<CIRCUMFLEX+HOOK>;<SMALL>;<U0041>
+<U1EAA> <U0041>;<CIRCUMFLEX+TILDE>;<CAPITAL>;<U0041>
+<U1EAB> <U0041>;<CIRCUMFLEX+TILDE>;<SMALL>;<U0041>
+<U1EAC> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;<U0041>
+<U1EAD> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;<U0041>
+<U01CD> <U0041>;<CARON>;<CAPITAL>;<U0041>
+<U01CE> <U0041>;<CARON>;<SMALL>;<U0041>
+<U00C5> <U0041>;<RING>;<CAPITAL>;<U0041>
+<U00E5> <U0041>;<RING>;<SMALL>;<U0041>
+<U01FA> <U0041>;<RING+ACUTE>;<CAPITAL>;<U0041>
+<U01FB> <U0041>;<RING+ACUTE>;<SMALL>;<U0041>
+<U1E00> <U0041>;<RING-BELOW>;<CAPITAL>;<U0041>
+<U1E01> <U0041>;<RING-BELOW>;<SMALL>;<U0041>
+<U00C4> <U0041>;<DIAERESIS>;<CAPITAL>;<U0041>
+<U00E4> <U0041>;<DIAERESIS>;<SMALL>;<U0041>
+<U01DE> <U0041>;<DIAERESIS+MACRON>;<CAPITAL>;<U0041>
+<U01DF> <U0041>;<DIAERESIS+MACRON>;<SMALL>;<U0041>
+<U1EA2> <U0041>;<HOOK>;<CAPITAL>;<U0041>
+<U1EA3> <U0041>;<HOOK>;<SMALL>;<U0041>
+<U00C3> <U0041>;<TILDE>;<CAPITAL>;<U0041>
+<U00E3> <U0041>;<TILDE>;<SMALL>;<U0041>
+<U1EA0> <U0041>;<DOT-BELOW>;<CAPITAL>;<U0041>
+<U1EA1> <U0041>;<DOT-BELOW>;<SMALL>;<U0041>
+<U0104> <U0041>;<OGONEK>;<CAPITAL>;<U0041>
+<U0105> <U0041>;<OGONEK>;<SMALL>;<U0041>
+<U0100> <U0041>;<MACRON>;<CAPITAL>;<U0041>
+<U0101> <U0041>;<MACRON>;<SMALL>;<U0041>
+<U01E0> <U0041>;<MACRON+DOT>;<CAPITAL>;<U0041>
+<U01E1> <U0041>;<MACRON+DOT>;<SMALL>;<U0041>
+<a8>
+
+<U00C6> "<U0041><U0045>";"<U00C6><U00C6>";"<CAPITAL><CAPITAL>";"<U0041><U0045>"
+<U00E6> "<U0041><U0045>";"<U00C6><U00C6>";"<SMALL><SMALL>";"<U0041><U0045>"
+<U01FC> "<U0041><U0045>";"<U01FC><U01FC>";"<CAPITAL><CAPITAL>";"<U0041><U0045>"
+<U01FD> "<U0041><U0045>";"<U01FC><U01FC>";"<SMALL><SMALL>";"<U0041><U0045>"
+<U01E2> "<U0041><U0045>";"<U01E2><U01E2>";"<CAPITAL><CAPITAL>";"<U0041><U0045>"
+<U01E3> "<U0041><U0045>";"<U01E2><U01E2>";"<SMALL><SMALL>";"<U0041><U0045>"
+
+<U0042> <U0042>;<NONE>;<CAPITAL>;<U0042>
+<U0062> <U0042>;<NONE>;<SMALL>;<U0042>
+<U1E02> <U0042>;<DOT>;<CAPITAL>;<U0042>
+<U1E03> <U0042>;<DOT>;<SMALL>;<U0042>
+<U1E04> <U0042>;<DOT-BELOW>;<CAPITAL>;<U0042>
+<U1E05> <U0042>;<DOT-BELOW>;<SMALL>;<U0042>
+<U1E06> <U0042>;<LINE-BELOW>;<CAPITAL>;<U0042>
+<U1E07> <U0042>;<LINE-BELOW>;<SMALL>;<U0042>
+<b8>
+
+<U0043> <U0043>;<NONE>;<CAPITAL>;<U0043>
+<U0063> <U0043>;<NONE>;<SMALL>;<U0043>
+<U0106> <U0043>;<ACUTE>;<CAPITAL>;<U0043>
+<U0107> <U0043>;<ACUTE>;<SMALL>;<U0043>
+<U0108> <U0043>;<CIRCUMFLEX>;<CAPITAL>;<U0043>
+<U0109> <U0043>;<CIRCUMFLEX>;<SMALL>;<U0043>
+<U0187> <U0043>;<HOOK>;<CAPITAL>;<U0043>
+<U0188> <U0043>;<HOOK>;<SMALL>;<U0043>
+<U010A> <U0043>;<DOT>;<CAPITAL>;<U0043>
+<U010B> <U0043>;<DOT>;<SMALL>;<U0043>
+<U00C7> <U0043>;<CEDILLA>;<CAPITAL>;<U0043>
+<U00E7> <U0043>;<CEDILLA>;<SMALL>;<U0043>
+<U1E08> <U0043>;<CEDILLA+ACUTE>;<CAPITAL>;<U0043>
+<U1E09> <U0043>;<CEDILLA+ACUTE>;<SMALL>;<U0043>
+
+<U010C> <U010C>;<CARON>;<CAPITAL>;<U010C>
+<U010D> <U010C>;<CARON>;<SMALL>;<U010C>
+
+<c8>
+
+<U0044> <U0044>;<NONE>;<CAPITAL>;<U0044>
+<U0064> <U0044>;<NONE>;<SMALL>;<U0044>
+<U010E> <U0044>;<CARON>;<CAPITAL>;<U0044>
+<U010F> <U0044>;<CARON>;<SMALL>;<U0044>
+<U1E0A> <U0044>;<DOT>;<CAPITAL>;<U0044>
+<U1E0B> <U0044>;<DOT>;<SMALL>;<U0044>
+<U1E0C> <U0044>;<DOT-BELOW>;<CAPITAL>;<U0044>
+<U1E0D> <U0044>;<DOT-BELOW>;<SMALL>;<U0044>
+<U0110> <U0044>;<STROKE>;<CAPITAL>;<U0044>
+<U0111> <U0044>;<STROKE>;<SMALL>;<U0044>
+<U1E10> <U0044>;<CEDILLA>;<CAPITAL>;<U0044>
+<U1E11> <U0044>;<CEDILLA>;<SMALL>;<U0044>
+<U1E12> <U0044>;<MACRON+CIRCUMFLEX>;<CAPITAL>;<U0044>
+<U1E13> <U0044>;<MACRON+CIRCUMFLEX>;<SMALL>;<U0044>
+<U1E0E> <U0044>;<LINE-BELOW>;<CAPITAL>;<U0044>
+<U1E0F> <U0044>;<LINE-BELOW>;<SMALL>;<U0044>
+<d8>
+
+<U0045> <U0045>;<NONE>;<CAPITAL>;<U0045>
+<U0065> <U0045>;<NONE>;<SMALL>;<U0045>
+<U00C9> <U0045>;<ACUTE>;<CAPITAL>;<U0045>
+<U00E9> <U0045>;<ACUTE>;<SMALL>;<U0045>
+<U00C8> <U0045>;<GRAVE>;<CAPITAL>;<U0045>
+<U00E8> <U0045>;<GRAVE>;<SMALL>;<U0045>
+<U0204> <U0045>;<DOUBLE-GRAVE>;<CAPITAL>;<U0045>
+<U0205> <U0045>;<DOUBLE-GRAVE>;<SMALL>;<U0045>
+<U0114> <U0045>;<BREVE>;<CAPITAL>;<U0045>
+<U0115> <U0045>;<BREVE>;<SMALL>;<U0045>
+<U0206> <U0045>;<INVERTED-BREVE>;<CAPITAL>;<U0045>
+<U0207> <U0045>;<INVERTED-BREVE>;<SMALL>;<U0045>
+<U00CA> <U0045>;<CIRCUMFLEX>;<CAPITAL>;<U0045>
+<U00EA> <U0045>;<CIRCUMFLEX>;<SMALL>;<U0045>
+<U1EBE> <U0045>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;<U0045>
+<U1EBF> <U0045>;<CIRCUMFLEX+ACUTE>;<SMALL>;<U0045>
+<U1EC0> <U0045>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;<U0045>
+<U1EC1> <U0045>;<CIRCUMFLEX+GRAVE>;<SMALL>;<U0045>
+<U1EC2> <U0045>;<CIRCUMFLEX+HOOK>;<CAPITAL>;<U0045>
+<U1EC3> <U0045>;<CIRCUMFLEX+HOOK>;<SMALL>;<U0045>
+<U1EC4> <U0045>;<CIRCUMFLEX+TILDE>;<CAPITAL>;<U0045>
+<U1EC5> <U0045>;<CIRCUMFLEX+TILDE>;<SMALL>;<U0045>
+<U1EC6> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;<U0045>
+<U1EC7> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;<U0045>
+<U011A> <U0045>;<CARON>;<CAPITAL>;<U0045>
+<U011B> <U0045>;<CARON>;<SMALL>;<U0045>
+<U00CB> <U0045>;<DIAERESIS>;<CAPITAL>;<U0045>
+<U00EB> <U0045>;<DIAERESIS>;<SMALL>;<U0045>
+<U1EBA> <U0045>;<HOOK>;<CAPITAL>;<U0045>
+<U1EBB> <U0045>;<HOOK>;<SMALL>;<U0045>
+<U1EBC> <U0045>;<TILDE>;<CAPITAL>;<U0045>
+<U1EBD> <U0045>;<TILDE>;<SMALL>;<U0045>
+<U1E1A> <U0045>;<TILDE-BELOW>;<CAPITAL>;<U0045>
+<U1E1B> <U0045>;<TILDE-BELOW>;<SMALL>;<U0045>
+<U0116> <U0045>;<DOT>;<CAPITAL>;<U0045>
+<U0117> <U0045>;<DOT>;<SMALL>;<U0045>
+<U1EB8> <U0045>;<DOT-BELOW>;<CAPITAL>;<U0045>
+<U1EB9> <U0045>;<DOT-BELOW>;<SMALL>;<U0045>
+<U1E1C> <U0045>;<CEDILLA+BREVE>;<CAPITAL>;<U0045>
+<U1E1D> <U0045>;<CEDILLA+BREVE>;<SMALL>;<U0045>
+<U0118> <U0045>;<OGONEK>;<CAPITAL>;<U0045>
+<U0119> <U0045>;<OGONEK>;<SMALL>;<U0045>
+<U0112> <U0045>;<MACRON>;<CAPITAL>;<U0045>
+<U0113> <U0045>;<MACRON>;<SMALL>;<U0045>
+<U1E16> <U0045>;<MACRON+ACUTE>;<CAPITAL>;<U0045>
+<U1E17> <U0045>;<MACRON+ACUTE>;<SMALL>;<U0045>
+<U1E14> <U0045>;<MACRON+GRAVE>;<CAPITAL>;<U0045>
+<U1E15> <U0045>;<MACRON+GRAVE>;<SMALL>;<U0045>
+<U1E18> <U0045>;<MACRON+CIRCUMFLEX>;<CAPITAL>;<U0045>
+<U1E19> <U0045>;<MACRON+CIRCUMFLEX>;<SMALL>;<U0045>
+<e8>
+
+<U0046> <U0046>;<NONE>;<CAPITAL>;<U0046>
+<U0066> <U0046>;<NONE>;<SMALL>;<U0046>
+<U0191> <U0046>;<HOOK>;<CAPITAL>;<U0046>
+<U0192> <U0046>;<HOOK>;<SMALL>;<U0046>
+<U1E1E> <U0046>;<DOT>;<CAPITAL>;<U0046>
+<U1E1F> <U0046>;<DOT>;<SMALL>;<U0046>
+<f8>
+
+<UFB00> "<U0046><U0046>";"<NONE><NONE>";"<UFB00><UFB00>";"<U0046><U0046>"
+<UFB01> "<U0046><U0049>";"<NONE><NONE>";"<UFB01><UFB01>";"<U0046><U0049>"
+<UFB02> "<U0046><U004C>";"<NONE><NONE>";"<UFB02><UFB02>";"<U0046><U004C>"
+<UFB03> "<U0046><U0046><U0049>";"<NONE><NONE><NONE>";"<UFB03><UFB03><UFB03>";"<U0046><U0046><U0049>"
+<UFB04> "<U0046><U0046><U004C>";"<NONE><NONE><NONE>";"<UFB04><UFB04><UFB04>";"<U0046><U0046><U004C>"
+
+<U0047> <U0047>;<NONE>;<CAPITAL>;<U0047>
+<U0067> <U0047>;<NONE>;<SMALL>;<U0047>
+<U01F4> <U0047>;<ACUTE>;<CAPITAL>;<U0047>
+<U01F5> <U0047>;<ACUTE>;<SMALL>;<U0047>
+<U011E> <U0047>;<BREVE>;<CAPITAL>;<U0047>
+<U011F> <U0047>;<BREVE>;<SMALL>;<U0047>
+<U011C> <U0047>;<CIRCUMFLEX>;<CAPITAL>;<U0047>
+<U011D> <U0047>;<CIRCUMFLEX>;<SMALL>;<U0047>
+<U01E6> <U0047>;<CARON>;<CAPITAL>;<U0047>
+<U01E7> <U0047>;<CARON>;<SMALL>;<U0047>
+<U0120> <U0047>;<DOT>;<CAPITAL>;<U0047>
+<U0121> <U0047>;<DOT>;<SMALL>;<U0047>
+<U01E4> <U0047>;<STROKE>;<CAPITAL>;<U0047>
+<U01E5> <U0047>;<STROKE>;<SMALL>;<U0047>
+<U0122> <U0047>;<CEDILLA>;<CAPITAL>;<U0047>
+<U0123> <U0047>;<CEDILLA>;<SMALL>;<U0047>
+<U1E20> <U0047>;<MACRON>;<CAPITAL>;<U0047>
+<U1E21> <U0047>;<MACRON>;<SMALL>;<U0047>
+<g8>
+
+<U0048> <U0048>;<NONE>;<CAPITAL>;<U0048>
+<U0068> <U0048>;<NONE>;<SMALL>;<U0048>
+<U1E2A> <U0048>;<BREVE-BELOW>;<CAPITAL>;<U0048>
+<U1E2B> <U0048>;<BREVE-BELOW>;<SMALL>;<U0048>
+<U0124> <U0048>;<CIRCUMFLEX>;<CAPITAL>;<U0048>
+<U0125> <U0048>;<CIRCUMFLEX>;<SMALL>;<U0048>
+<U1E26> <U0048>;<DIAERESIS>;<CAPITAL>;<U0048>
+<U1E27> <U0048>;<DIAERESIS>;<SMALL>;<U0048>
+<U1E22> <U0048>;<DOT>;<CAPITAL>;<U0048>
+<U1E23> <U0048>;<DOT>;<SMALL>;<U0048>
+<U1E24> <U0048>;<DOT-BELOW>;<CAPITAL>;<U0048>
+<U1E25> <U0048>;<DOT-BELOW>;<SMALL>;<U0048>
+<U0126> <U0048>;<STROKE>;<CAPITAL>;<U0048>
+<U0127> <U0048>;<STROKE>;<SMALL>;<U0048>
+<U1E28> <U0048>;<CEDILLA>;<CAPITAL>;<U0048>
+<U1E29> <U0048>;<CEDILLA>;<SMALL>;<U0048>
+<h8>
+
+<C-H> <C-H>;<NONE>;<CAPITAL>;<C-H>
+<C-h> <C-H>;<NONE>;<CAPITAL-SMALL>;<C-H>
+<c-h> <C-H>;<NONE>;<SMALL>;<C-H>
+
+<U0049> <U0049>;<NONE>;<CAPITAL>;<U0049>
+<U0069> <U0049>;<NONE>;<SMALL>;<U0049>
+<U00CD> <U0049>;<ACUTE>;<CAPITAL>;<U0049>
+<U00ED> <U0049>;<ACUTE>;<SMALL>;<U0049>
+<U00CC> <U0049>;<GRAVE>;<CAPITAL>;<U0049>
+<U00EC> <U0049>;<GRAVE>;<SMALL>;<U0049>
+<U0208> <U0049>;<DOUBLE-GRAVE>;<CAPITAL>;<U0049>
+<U0209> <U0049>;<DOUBLE-GRAVE>;<SMALL>;<U0049>
+<U012C> <U0049>;<BREVE>;<CAPITAL>;<U0049>
+<U012D> <U0049>;<BREVE>;<SMALL>;<U0049>
+<U020A> <U0049>;<INVERTED-BREVE>;<CAPITAL>;<U0049>
+<U020B> <U0049>;<INVERTED-BREVE>;<SMALL>;<U0049>
+<U00CE> <U0049>;<CIRCUMFLEX>;<CAPITAL>;<U0049>
+<U00EE> <U0049>;<CIRCUMFLEX>;<SMALL>;<U0049>
+<U01CF> <U0049>;<CARON>;<CAPITAL>;<U0049>
+<U01D0> <U0049>;<CARON>;<SMALL>;<U0049>
+<U00CF> <U0049>;<DIAERESIS>;<CAPITAL>;<U0049>
+<U00EF> <U0049>;<DIAERESIS>;<SMALL>;<U0049>
+<U1E2E> <U0049>;<DIAERESIS+ACUTE>;<CAPITAL>;<U0049>
+<U1E2F> <U0049>;<DIAERESIS+ACUTE>;<SMALL>;<U0049>
+<U1EC8> <U0049>;<HOOK>;<CAPITAL>;<U0049>
+<U1EC9> <U0049>;<HOOK>;<SMALL>;<U0049>
+<U0128> <U0049>;<TILDE>;<CAPITAL>;<U0049>
+<U0129> <U0049>;<TILDE>;<SMALL>;<U0049>
+<U1E2C> <U0049>;<TILDE-BELOW>;<CAPITAL>;<U0049>
+<U1E2D> <U0049>;<TILDE-BELOW>;<SMALL>;<U0049>
+<U0130> <U0049>;<DOT>;<CAPITAL>;<U0049>
+<U0131> <U0049>;<DOT>;<SMALL>;<U0049>
+<U1ECA> <U0049>;<DOT-BELOW>;<CAPITAL>;<U0049>
+<U1ECB> <U0049>;<DOT-BELOW>;<SMALL>;<U0049>
+<U012E> <U0049>;<OGONEK>;<CAPITAL>;<U0049>
+<U012F> <U0049>;<OGONEK>;<SMALL>;<U0049>
+<U012A> <U0049>;<MACRON>;<CAPITAL>;<U0049>
+<U012B> <U0049>;<MACRON>;<SMALL>;<U0049>
+<i8>
+
+<U0132> "<U0049><U004A>";"<U0132><U0132>";"<CAPITAL><CAPITAL>";"<U0049><U004A>"
+<U0133> "<U0049><U004A>";"<U0132><U0132>";"<SMALL><SMALL>";"<U0049><U004A>"
+
+<U004A> <U004A>;<NONE>;<CAPITAL>;<U004A>
+<U006A> <U004A>;<NONE>;<SMALL>;<U004A>
+<U0134> <U004A>;<CIRCUMFLEX>;<CAPITAL>;<U004A>
+<U0135> <U004A>;<CIRCUMFLEX>;<SMALL>;<U004A>
+<j8>
+
+<U004B> <U004B>;<NONE>;<CAPITAL>;<U004B>
+<U006B> <U004B>;<NONE>;<SMALL>;<U004B>
+<U1E30> <U004B>;<ACUTE>;<CAPITAL>;<U004B>
+<U1E31> <U004B>;<ACUTE>;<SMALL>;<U004B>
+<U01E8> <U004B>;<CARON>;<CAPITAL>;<U004B>
+<U01E9> <U004B>;<CARON>;<SMALL>;<U004B>
+<U0198> <U004B>;<HOOK>;<CAPITAL>;<U004B>
+<U0199> <U004B>;<HOOK>;<SMALL>;<U004B>
+<U1E32> <U004B>;<DOT-BELOW>;<CAPITAL>;<U004B>
+<U1E33> <U004B>;<DOT-BELOW>;<SMALL>;<U004B>
+<U0136> <U004B>;<CEDILLA>;<CAPITAL>;<U004B>
+<U0137> <U004B>;<CEDILLA>;<SMALL>;<U004B>
+<U1E34> <U004B>;<LINE-BELOW>;<CAPITAL>;<U004B>
+<U1E35> <U004B>;<LINE-BELOW>;<SMALL>;<U004B>
+<k8>
+<U0138> <U004B>;<U0138>;<SMALL>;<U004B>
+
+<U004C> <U004C>;<NONE>;<CAPITAL>;<U004C>
+<U006C> <U004C>;<NONE>;<SMALL>;<U004C>
+<U0139> <U004C>;<ACUTE>;<CAPITAL>;<U004C>
+<U013A> <U004C>;<ACUTE>;<SMALL>;<U004C>
+<U013D> <U004C>;<CARON>;<CAPITAL>;<U004C>
+<U013E> <U004C>;<CARON>;<SMALL>;<U004C>
+<U013F> <U004C>;<DOT>;<CAPITAL>;<U004C>
+<U0140> <U004C>;<DOT>;<SMALL>;<U004C>
+<U1E36> <U004C>;<DOT-BELOW>;<CAPITAL>;<U004C>
+<U1E37> <U004C>;<DOT-BELOW>;<SMALL>;<U004C>
+<U0141> <U004C>;<STROKE>;<CAPITAL>;<U004C>
+<U0142> <U004C>;<STROKE>;<SMALL>;<U004C>
+<U013B> <U004C>;<CEDILLA>;<CAPITAL>;<U004C>
+<U013C> <U004C>;<CEDILLA>;<SMALL>;<U004C>
+<U1E38> <U004C>;<MACRON+DOT-BELOW>;<CAPITAL>;<U004C>
+<U1E39> <U004C>;<MACRON+DOT-BELOW>;<SMALL>;<U004C>
+<U1E3C> <U004C>;<MACRON+CIRCUMFLEX>;<CAPITAL>;<U004C>
+<U1E3D> <U004C>;<MACRON+CIRCUMFLEX>;<SMALL>;<U004C>
+<U1E3A> <U004C>;<LINE-BELOW>;<CAPITAL>;<U004C>
+<U1E3B> <U004C>;<LINE-BELOW>;<SMALL>;<U004C>
+<l8>
+
+<U004D> <U004D>;<NONE>;<CAPITAL>;<U004D>
+<U006D> <U004D>;<NONE>;<SMALL>;<U004D>
+<U1E3E> <U004D>;<ACUTE>;<CAPITAL>;<U004D>
+<U1E3F> <U004D>;<ACUTE>;<SMALL>;<U004D>
+<U1E40> <U004D>;<DOT>;<CAPITAL>;<U004D>
+<U1E41> <U004D>;<DOT>;<SMALL>;<U004D>
+<U1E42> <U004D>;<DOT-BELOW>;<CAPITAL>;<U004D>
+<U1E43> <U004D>;<DOT-BELOW>;<SMALL>;<U004D>
+<m8>
+
+<U004E> <U004E>;<NONE>;<CAPITAL>;<U004E>
+<U006E> <U004E>;<NONE>;<SMALL>;<U004E>
+<U0143> <U004E>;<ACUTE>;<CAPITAL>;<U004E>
+<U0144> <U004E>;<ACUTE>;<SMALL>;<U004E>
+<U0147> <U004E>;<CARON>;<CAPITAL>;<U004E>
+<U0148> <U004E>;<CARON>;<SMALL>;<U004E>
+<U00D1> <U004E>;<TILDE>;<CAPITAL>;<U004E>
+<U00F1> <U004E>;<TILDE>;<SMALL>;<U004E>
+<U1E44> <U004E>;<DOT>;<CAPITAL>;<U004E>
+<U1E45> <U004E>;<DOT>;<SMALL>;<U004E>
+<U1E46> <U004E>;<DOT-BELOW>;<CAPITAL>;<U004E>
+<U1E47> <U004E>;<DOT-BELOW>;<SMALL>;<U004E>
+<U0145> <U004E>;<CEDILLA>;<CAPITAL>;<U004E>
+<U0146> <U004E>;<CEDILLA>;<SMALL>;<U004E>
+<U1E4A> <U004E>;<MACRON+CIRCUMFLEX>;<CAPITAL>;<U004E>
+<U1E4B> <U004E>;<MACRON+CIRCUMFLEX>;<SMALL>;<U004E>
+<U1E48> <U004E>;<LINE-BELOW>;<CAPITAL>;<U004E>
+<U1E49> <U004E>;<LINE-BELOW>;<SMALL>;<U004E>
+<U0149> <U004E>;<PRECEDED-BY-APOSTROPHE>;<SMALL>;<U004E>
+<n8>
+
+<U014A> "<U004E><U0047>";"<U014A><U014A>";"<CAPITAL><CAPITAL>";"<U004E><U0047>"
+<U014B> "<U004E><U0047>";"<U014A><U014A>";"<SMALL><SMALL>";"<U004E><U0047>"
+
+<U004F> <U004F>;<NONE>;<CAPITAL>;<U004F>
+<U006F> <U004F>;<NONE>;<SMALL>;<U004F>
+<U00BA> <U004F>;<NONE>;<U00BA>;<U004F>
+<U00D3> <U004F>;<ACUTE>;<CAPITAL>;<U004F>
+<U00F3> <U004F>;<ACUTE>;<SMALL>;<U004F>
+<U00D2> <U004F>;<GRAVE>;<CAPITAL>;<U004F>
+<U00F2> <U004F>;<GRAVE>;<SMALL>;<U004F>
+<U020C> <U004F>;<DOUBLE-GRAVE>;<CAPITAL>;<U004F>
+<U020D> <U004F>;<DOUBLE-GRAVE>;<SMALL>;<U004F>
+<U014E> <U004F>;<BREVE>;<CAPITAL>;<U004F>
+<U014F> <U004F>;<BREVE>;<SMALL>;<U004F>
+<U020E> <U004F>;<INVERTED-BREVE>;<CAPITAL>;<U004F>
+<U020F> <U004F>;<INVERTED-BREVE>;<SMALL>;<U004F>
+<U00D4> <U004F>;<CIRCUMFLEX>;<CAPITAL>;<U004F>
+<U00F4> <U004F>;<CIRCUMFLEX>;<SMALL>;<U004F>
+<U1ED0> <U004F>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;<U004F>
+<U1ED1> <U004F>;<CIRCUMFLEX+ACUTE>;<SMALL>;<U004F>
+<U1ED2> <U004F>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;<U004F>
+<U1ED3> <U004F>;<CIRCUMFLEX+GRAVE>;<SMALL>;<U004F>
+<U1ED4> <U004F>;<CIRCUMFLEX+HOOK>;<CAPITAL>;<U004F>
+<U1ED5> <U004F>;<CIRCUMFLEX+HOOK>;<SMALL>;<U004F>
+<U1ED6> <U004F>;<CIRCUMFLEX+TILDE>;<CAPITAL>;<U004F>
+<U1ED7> <U004F>;<CIRCUMFLEX+TILDE>;<SMALL>;<U004F>
+<U1ED8> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;<U004F>
+<U1ED9> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;<U004F>
+<U01D1> <U004F>;<CARON>;<CAPITAL>;<U004F>
+<U01D2> <U004F>;<CARON>;<SMALL>;<U004F>
+<U00D6> <U004F>;<DIAERESIS>;<CAPITAL>;<U004F>
+<U00F6> <U004F>;<DIAERESIS>;<SMALL>;<U004F>
+<U0150> <U004F>;<DOUBLE-ACUTE>;<CAPITAL>;<U004F>
+<U0151> <U004F>;<DOUBLE-ACUTE>;<SMALL>;<U004F>
+<U1ECE> <U004F>;<HOOK>;<CAPITAL>;<U004F>
+<U1ECF> <U004F>;<HOOK>;<SMALL>;<U004F>
+<U00D5> <U004F>;<TILDE>;<CAPITAL>;<U004F>
+<U00F5> <U004F>;<TILDE>;<SMALL>;<U004F>
+<U1E4C> <U004F>;<TILDE+ACUTE>;<CAPITAL>;<U004F>
+<U1E4D> <U004F>;<TILDE+ACUTE>;<SMALL>;<U004F>
+<U1E4E> <U004F>;<TILDE+DIAERESIS>;<CAPITAL>;<U004F>
+<U1E4F> <U004F>;<TILDE+DIAERESIS>;<SMALL>;<U004F>
+<U1ECC> <U004F>;<DOT-BELOW>;<CAPITAL>;<U004F>
+<U1ECD> <U004F>;<DOT-BELOW>;<SMALL>;<U004F>
+<U00D8> <U004F>;<STROKE>;<CAPITAL>;<U004F>
+<U00F8> <U004F>;<STROKE>;<SMALL>;<U004F>
+<U01FE> <U004F>;<STROKE+ACUTE>;<CAPITAL>;<U004F>
+<U01FF> <U004F>;<STROKE+ACUTE>;<SMALL>;<U004F>
+<U01EA> <U004F>;<OGONEK>;<CAPITAL>;<U004F>
+<U01EB> <U004F>;<OGONEK>;<SMALL>;<U004F>
+<U01EC> <U004F>;<OGONEK+MACRON>;<CAPITAL>;<U004F>
+<U01ED> <U004F>;<OGONEK+MACRON>;<SMALL>;<U004F>
+<U014C> <U004F>;<MACRON>;<CAPITAL>;<U004F>
+<U014D> <U004F>;<MACRON>;<SMALL>;<U004F>
+<U1E52> <U004F>;<MACRON+ACUTE>;<CAPITAL>;<U004F>
+<U1E53> <U004F>;<MACRON+ACUTE>;<SMALL>;<U004F>
+<U1E50> <U004F>;<MACRON+GRAVE>;<CAPITAL>;<U004F>
+<U1E51> <U004F>;<MACRON+GRAVE>;<SMALL>;<U004F>
+<U01A0> <U004F>;<HORN>;<CAPITAL>;<U004F>
+<U01A1> <U004F>;<HORN>;<SMALL>;<U004F>
+<U1EDA> <U004F>;<HORN+ACUTE>;<CAPITAL>;<U004F>
+<U1EDB> <U004F>;<HORN+ACUTE>;<SMALL>;<U004F>
+<U1EDC> <U004F>;<HORN+GRAVE>;<CAPITAL>;<U004F>
+<U1EDD> <U004F>;<HORN+GRAVE>;<SMALL>;<U004F>
+<U1EDE> <U004F>;<HORN+HOOK>;<CAPITAL>;<U004F>
+<U1EDF> <U004F>;<HORN+HOOK>;<SMALL>;<U004F>
+<U1EE0> <U004F>;<HORN+TILDE>;<CAPITAL>;<U004F>
+<U1EE1> <U004F>;<HORN+TILDE>;<SMALL>;<U004F>
+<U1EE2> <U004F>;<HORN+DOT-BELOW>;<CAPITAL>;<U004F>
+<U1EE3> <U004F>;<HORN+DOT-BELOW>;<SMALL>;<U004F>
+<o8>
+
+<U0152> "<U004F><U0045>";"<U0152><U0152>";"<CAPITAL><CAPITAL>";"<U004F><U0045>"
+<U0153> "<U004F><U0045>";"<U0152><U0152>";"<SMALL><SMALL>";"<U004F><U0045>"
+
+<U0050> <U0050>;<NONE>;<CAPITAL>;<U0050>
+<U0070> <U0050>;<NONE>;<SMALL>;<U0050>
+<U1E54> <U0050>;<ACUTE>;<CAPITAL>;<U0050>
+<U1E55> <U0050>;<ACUTE>;<SMALL>;<U0050>
+<U1E56> <U0050>;<DOT>;<CAPITAL>;<U0050>
+<U1E57> <U0050>;<DOT>;<SMALL>;<U0050>
+<p8>
+
+<U0051> <U0051>;<NONE>;<CAPITAL>;<U0051>
+<U0071> <U0051>;<NONE>;<SMALL>;<U0051>
+<q8>
+
+<U0052> <U0052>;<NONE>;<CAPITAL>;<U0052>
+<U0072> <U0052>;<NONE>;<SMALL>;<U0052>
+<U0154> <U0052>;<ACUTE>;<CAPITAL>;<U0052>
+<U0155> <U0052>;<ACUTE>;<SMALL>;<U0052>
+<U0210> <U0052>;<DOUBLE-GRAVE>;<CAPITAL>;<U0052>
+<U0211> <U0052>;<DOUBLE-GRAVE>;<SMALL>;<U0052>
+<U0212> <U0052>;<INVERTED-BREVE>;<CAPITAL>;<U0052>
+<U0213> <U0052>;<INVERTED-BREVE>;<SMALL>;<U0052>
+<U1E58> <U0052>;<DOT>;<CAPITAL>;<U0052>
+<U1E59> <U0052>;<DOT>;<SMALL>;<U0052>
+<U1E5A> <U0052>;<DOT-BELOW>;<CAPITAL>;<U0052>
+<U1E5B> <U0052>;<DOT-BELOW>;<SMALL>;<U0052>
+<U0156> <U0052>;<CEDILLA>;<CAPITAL>;<U0052>
+<U0157> <U0052>;<CEDILLA>;<SMALL>;<U0052>
+<U1E5C> <U0052>;<MACRON+DOT-BELOW>;<CAPITAL>;<U0052>
+<U1E5D> <U0052>;<MACRON+DOT-BELOW>;<SMALL>;<U0052>
+<U1E5E> <U0052>;<LINE-BELOW>;<CAPITAL>;<U0052>
+<U1E5F> <U0052>;<LINE-BELOW>;<SMALL>;<U0052>
+
+<U0158> <U0158>;<CARON>;<CAPITAL>;<U0158>
+<U0159> <U0158>;<CARON>;<SMALL>;<U0158>
+<r8>
+
+<U0053> <U0053>;<NONE>;<CAPITAL>;<U0053>
+<U0073> <U0053>;<NONE>;<SMALL>;<U0053>
+<UFB06> "<U0053><U0054>";"<NONE><NONE>";"<UFB06><UFB06>";"<U0053><U0054>"
+<U015A> <U0053>;<ACUTE>;<CAPITAL>;<U0053>
+<U015B> <U0053>;<ACUTE>;<SMALL>;<U0053>
+<U1E64> <U0053>;<ACUTE+DOT>;<CAPITAL>;<U0053>
+<U1E65> <U0053>;<ACUTE+DOT>;<SMALL>;<U0053>
+<U015C> <U0053>;<CIRCUMFLEX>;<CAPITAL>;<U0053>
+<U015D> <U0053>;<CIRCUMFLEX>;<SMALL>;<U0053>
+<U1E60> <U0053>;<DOT>;<CAPITAL>;<U0053>
+<U1E61> <U0053>;<DOT>;<SMALL>;<U0053>
+<U1E62> <U0053>;<DOT-BELOW>;<CAPITAL>;<U0053>
+<U1E63> <U0053>;<DOT-BELOW>;<SMALL>;<U0053>
+<U1E68> <U0053>;<DOT+DOT-BELOW>;<CAPITAL>;<U0053>
+<U1E69> <U0053>;<DOT+DOT-BELOW>;<SMALL>;<U0053>
+<U015E> <U0053>;<CEDILLA>;<CAPITAL>;<U0053>
+<U015F> <U0053>;<CEDILLA>;<SMALL>;<U0053>
+
+<U0160> <U0160>;<CARON>;<CAPITAL>;<U0160>
+<U0161> <U0160>;<CARON>;<SMALL>;<U0160>
+<U1E66> <U0160>;<CARON+DOT>;<CAPITAL>;<U0160>
+<U1E67> <U0160>;<CARON+DOT>;<SMALL>;<U0160>
+<s8>
+
+<U017F> <U0053>;<U017F>;<SMALL>;<U0053>
+<U00DF> "<U0053><U0053>";"<NONE><NONE>";"<SMALL><U00DF>";"<U0053><U0053>"
+<UFB05> "<U0053><U0054>";"<NONE><NONE>";"<UFB05><UFB05>";IGNORE
+
+<U0054> <U0054>;<NONE>;<CAPITAL>;<U0054>
+<U0074> <U0054>;<NONE>;<SMALL>;<U0054>
+<U0164> <U0054>;<CARON>;<CAPITAL>;<U0054>
+<U0165> <U0054>;<CARON>;<SMALL>;<U0054>
+<U1E6A> <U0054>;<DOT>;<CAPITAL>;<U0054>
+<U1E6B> <U0054>;<DOT>;<SMALL>;<U0054>
+<U1E6C> <U0054>;<DOT-BELOW>;<CAPITAL>;<U0054>
+<U1E6D> <U0054>;<DOT-BELOW>;<SMALL>;<U0054>
+<U0166> <U0054>;<STROKE>;<CAPITAL>;<U0054>
+<U0167> <U0054>;<STROKE>;<SMALL>;<U0054>
+<U0162> <U0054>;<CEDILLA>;<CAPITAL>;<U0054>
+<U0163> <U0054>;<CEDILLA>;<SMALL>;<U0054>
+<U1E70> <U0054>;<MACRON+CIRCUMFLEX>;<CAPITAL>;<U0054>
+<U1E71> <U0054>;<MACRON+CIRCUMFLEX>;<SMALL>;<U0054>
+<U1E6E> <U0054>;<LINE-BELOW>;<CAPITAL>;<U0054>
+<U1E6F> <U0054>;<LINE-BELOW>;<SMALL>;<U0054>
+<t8>
+
+<U00DE> "<U0054><U0048>";"<U00DE><U00DE>";"<CAPITAL><CAPITAL>";"<U0054><U0048>"
+<U00FE> "<U0054><U0048>";"<U00DE><U00DE>";"<SMALL><SMALL>";"<U0054><U0048>"
+
+<U0055> <U0055>;<NONE>;<CAPITAL>;<U0055>
+<U0075> <U0055>;<NONE>;<SMALL>;<U0055>
+<U00DA> <U0055>;<ACUTE>;<CAPITAL>;<U0055>
+<U00FA> <U0055>;<ACUTE>;<SMALL>;<U0055>
+<U00D9> <U0055>;<GRAVE>;<CAPITAL>;<U0055>
+<U00F9> <U0055>;<GRAVE>;<SMALL>;<U0055>
+<U0214> <U0055>;<DOUBLE-GRAVE>;<CAPITAL>;<U0055>
+<U0215> <U0055>;<DOUBLE-GRAVE>;<SMALL>;<U0055>
+<U016C> <U0055>;<BREVE>;<CAPITAL>;<U0055>
+<U016D> <U0055>;<BREVE>;<SMALL>;<U0055>
+<U0216> <U0055>;<INVERTED-BREVE>;<CAPITAL>;<U0055>
+<U0217> <U0055>;<INVERTED-BREVE>;<SMALL>;<U0055>
+<U00DB> <U0055>;<CIRCUMFLEX>;<CAPITAL>;<U0055>
+<U00FB> <U0055>;<CIRCUMFLEX>;<SMALL>;<U0055>
+<U01D3> <U0055>;<CARON>;<CAPITAL>;<U0055>
+<U01D4> <U0055>;<CARON>;<SMALL>;<U0055>
+<U016E> <U0055>;<RING>;<CAPITAL>;<U0055>
+<U016F> <U0055>;<RING>;<SMALL>;<U0055>
+<U00DC> <U0055>;<DIAERESIS>;<CAPITAL>;<U0055>
+<U00FC> <U0055>;<DIAERESIS>;<SMALL>;<U0055>
+<U01D5> <U0055>;<DIAERESIS+MACRON>;<CAPITAL>;<U0055>
+<U01D6> <U0055>;<DIAERESIS+MACRON>;<SMALL>;<U0055>
+<U01D7> <U0055>;<DIAERESIS+ACUTE>;<CAPITAL>;<U0055>
+<U01D8> <U0055>;<DIAERESIS+ACUTE>;<SMALL>;<U0055>
+<U01DB> <U0055>;<DIAERESIS+GRAVE>;<CAPITAL>;<U0055>
+<U01DC> <U0055>;<DIAERESIS+GRAVE>;<SMALL>;<U0055>
+<U01D9> <U0055>;<DIAERESIS+CARON>;<CAPITAL>;<U0055>
+<U01DA> <U0055>;<DIAERESIS+CARON>;<SMALL>;<U0055>
+<U0170> <U0055>;<DOUBLE-ACUTE>;<CAPITAL>;<U0055>
+<U0171> <U0055>;<DOUBLE-ACUTE>;<SMALL>;<U0055>
+<U1EE6> <U0055>;<HOOK>;<CAPITAL>;<U0055>
+<U1EE7> <U0055>;<HOOK>;<SMALL>;<U0055>
+<U0168> <U0055>;<TILDE>;<CAPITAL>;<U0055>
+<U0169> <U0055>;<TILDE>;<SMALL>;<U0055>
+<U1E78> <U0055>;<TILDE+ACUTE>;<CAPITAL>;<U0055>
+<U1E79> <U0055>;<TILDE+ACUTE>;<SMALL>;<U0055>
+<U1E74> <U0055>;<TILDE-BELOW>;<CAPITAL>;<U0055>
+<U1E75> <U0055>;<TILDE-BELOW>;<SMALL>;<U0055>
+<U1EE4> <U0055>;<DOT-BELOW>;<CAPITAL>;<U0055>
+<U1EE5> <U0055>;<DOT-BELOW>;<SMALL>;<U0055>
+<U0172> <U0055>;<OGONEK>;<CAPITAL>;<U0055>
+<U0173> <U0055>;<OGONEK>;<SMALL>;<U0055>
+<U016A> <U0055>;<MACRON>;<CAPITAL>;<U0055>
+<U016B> <U0055>;<MACRON>;<SMALL>;<U0055>
+<U1E7A> <U0055>;<MACRON+DIAERESIS>;<CAPITAL>;<U0055>
+<U1E7B> <U0055>;<MACRON+DIAERESIS>;<SMALL>;<U0055>
+<U1E72> <U0055>;<MACRON+DIAERESIS-BELOW>;<CAPITAL>;<U0055>
+<U1E73> <U0055>;<MACRON+DIAERESIS-BELOW>;<SMALL>;<U0055>
+<U1E76> <U0055>;<MACRON+CIRCUMFLEX>;<CAPITAL>;<U0055>
+<U1E77> <U0055>;<MACRON+CIRCUMFLEX>;<SMALL>;<U0055>
+<U01AF> <U0055>;<HORN>;<CAPITAL>;<U0055>
+<U01B0> <U0055>;<HORN>;<SMALL>;<U0055>
+<U1EE8> <U0055>;<HORN+ACUTE>;<CAPITAL>;<U0055>
+<U1EE9> <U0055>;<HORN+ACUTE>;<SMALL>;<U0055>
+<U1EEA> <U0055>;<HORN+GRAVE>;<CAPITAL>;<U0055>
+<U1EEB> <U0055>;<HORN+GRAVE>;<SMALL>;<U0055>
+<U1EEC> <U0055>;<HORN+HOOK>;<CAPITAL>;<U0055>
+<U1EED> <U0055>;<HORN+HOOK>;<SMALL>;<U0055>
+<U1EEE> <U0055>;<HORN+TILDE>;<CAPITAL>;<U0055>
+<U1EEF> <U0055>;<HORN+TILDE>;<SMALL>;<U0055>
+<U1EF0> <U0055>;<HORN+DOT-BELOW>;<CAPITAL>;<U0055>
+<U1EF1> <U0055>;<HORN+DOT-BELOW>;<SMALL>;<U0055>
+<u8>
+
+<U0056> <U0056>;<NONE>;<CAPITAL>;<U0056>
+<U0076> <U0056>;<NONE>;<SMALL>;<U0056>
+<U1E7C> <U0056>;<TILDE>;<CAPITAL>;<U0056>
+<U1E7D> <U0056>;<TILDE>;<SMALL>;<U0056>
+<U1E7E> <U0056>;<DOT-BELOW>;<CAPITAL>;<U0056>
+<U1E7F> <U0056>;<DOT-BELOW>;<SMALL>;<U0056>
+<v8>
+
+<U0057> <U0057>;<NONE>;<CAPITAL>;<U0057>
+<U0077> <U0057>;<NONE>;<SMALL>;<U0057>
+<U1E82> <U0057>;<ACUTE>;<CAPITAL>;<U0057>
+<U1E83> <U0057>;<ACUTE>;<SMALL>;<U0057>
+<U1E80> <U0057>;<GRAVE>;<CAPITAL>;<U0057>
+<U1E81> <U0057>;<GRAVE>;<SMALL>;<U0057>
+<U0174> <U0057>;<CIRCUMFLEX>;<CAPITAL>;<U0057>
+<U0175> <U0057>;<CIRCUMFLEX>;<SMALL>;<U0057>
+<U1E84> <U0057>;<DIAERESIS>;<CAPITAL>;<U0057>
+<U1E85> <U0057>;<DIAERESIS>;<SMALL>;<U0057>
+<U1E86> <U0057>;<DOT>;<CAPITAL>;<U0057>
+<U1E87> <U0057>;<DOT>;<SMALL>;<U0057>
+<U1E88> <U0057>;<DOT-BELOW>;<CAPITAL>;<U0057>
+<U1E89> <U0057>;<DOT-BELOW>;<SMALL>;<U0057>
+<w8>
+
+<U0058> <U0058>;<NONE>;<CAPITAL>;<U0058>
+<U0078> <U0058>;<NONE>;<SMALL>;<U0058>
+<U1E8C> <U0058>;<DIAERESIS>;<CAPITAL>;<U0058>
+<U1E8D> <U0058>;<DIAERESIS>;<SMALL>;<U0058>
+<U1E8A> <U0058>;<DOT>;<CAPITAL>;<U0058>
+<U1E8B> <U0058>;<DOT>;<SMALL>;<U0058>
+<x8>
+
+<U0059> <U0059>;<NONE>;<CAPITAL>;<U0059>
+<U0079> <U0059>;<NONE>;<SMALL>;<U0059>
+<U00DD> <U0059>;<ACUTE>;<CAPITAL>;<U0059>
+<U00FD> <U0059>;<ACUTE>;<SMALL>;<U0059>
+<U1EF2> <U0059>;<GRAVE>;<CAPITAL>;<U0059>
+<U1EF3> <U0059>;<GRAVE>;<SMALL>;<U0059>
+<U0176> <U0059>;<CIRCUMFLEX>;<CAPITAL>;<U0059>
+<U0177> <U0059>;<CIRCUMFLEX>;<SMALL>;<U0059>
+<U0178> <U0059>;<DIAERESIS>;<CAPITAL>;<U0059>
+<U00FF> <U0059>;<DIAERESIS>;<SMALL>;<U0059>
+<U1EF6> <U0059>;<HOOK>;<CAPITAL>;<U0059>
+<U1EF7> <U0059>;<HOOK>;<SMALL>;<U0059>
+<U1EF8> <U0059>;<TILDE>;<CAPITAL>;<U0059>
+<U1EF9> <U0059>;<TILDE>;<SMALL>;<U0059>
+<U1E8E> <U0059>;<DOT>;<CAPITAL>;<U0059>
+<U1E8F> <U0059>;<DOT>;<SMALL>;<U0059>
+<U1EF4> <U0059>;<DOT-BELOW>;<CAPITAL>;<U0059>
+<U1EF5> <U0059>;<DOT-BELOW>;<SMALL>;<U0059>
+<y8>
+
+<U005A> <U005A>;<NONE>;<CAPITAL>;<U005A>
+<U007A> <U005A>;<NONE>;<SMALL>;<U005A>
+<U0179> <U005A>;<ACUTE>;<CAPITAL>;<U005A>
+<U017A> <U005A>;<ACUTE>;<SMALL>;<U005A>
+<U1E90> <U005A>;<CIRCUMFLEX>;<CAPITAL>;<U005A>
+<U1E91> <U005A>;<CIRCUMFLEX>;<SMALL>;<U005A>
+<U017B> <U005A>;<DOT>;<CAPITAL>;<U005A>
+<U017C> <U005A>;<DOT>;<SMALL>;<U005A>
+<U1E92> <U005A>;<DOT-BELOW>;<CAPITAL>;<U005A>
+<U1E93> <U005A>;<DOT-BELOW>;<SMALL>;<U005A>
+<U01B5> <U005A>;<STROKE>;<CAPITAL>;<U005A>
+<U01B6> <U005A>;<STROKE>;<SMALL>;<U005A>
+<U1E94> <U005A>;<LINE-BELOW>;<CAPITAL>;<U005A>
+<U1E95> <U005A>;<LINE-BELOW>;<SMALL>;<U005A>
+<z8>
+
+<U017D> <U017D>;<CARON>;<CAPITAL>;<U017D>
+<U017E> <U017D>;<CARON>;<SMALL>;<U017D>
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Èíslice
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+<U0030> <U0030>;<U0030>;IGNORE;<U0030>
+<U2070> <U0030>;<U2070>;IGNORE;<U0030>
+<U215B> <U0030>;<U215B>;IGNORE;<U0030>
+<U00BC> <U0030>;<U00BC>;IGNORE;<U0030>
+<U215C> <U0030>;<U215C>;IGNORE;<U0030>
+<U00BD> <U0030>;<U00BD>;IGNORE;<U0030>
+<U215D> <U0030>;<U215D>;IGNORE;<U0030>
+<U00BE> <U0030>;<U00BE>;IGNORE;<U0030>
+<U215E> <U0030>;<U215E>;IGNORE;<U0030>
+<U0031> <U0031>;<U0031>;IGNORE;<U0031>
+<U0032> <U0032>;<U0032>;IGNORE;<U0032>
+<U0033> <U0033>;<U0033>;IGNORE;<U0033>
+<U0034> <U0034>;<U0034>;IGNORE;<U0034>
+<U0035> <U0035>;<U0035>;IGNORE;<U0035>
+<U0036> <U0036>;<U0036>;IGNORE;<U0036>
+<U0037> <U0037>;<U0037>;IGNORE;<U0037>
+<U0038> <U0038>;<U0038>;IGNORE;<U0038>
+<U0039> <U0039>;<U0039>;IGNORE;<U0039>
+<U00B9> <U0031>;<U00B9>;IGNORE;<U0031>
+<U00B2> <U0032>;<U00B2>;IGNORE;<U0032>
+<U00B3> <U0033>;<U00B3>;IGNORE;<U0033>
+<U2074> <U0034>;<U2074>;IGNORE;<U0034>
+<U2075> <U0035>;<U2075>;IGNORE;<U0035>
+<U2076> <U0036>;<U2076>;IGNORE;<U0036>
+<U2077> <U0037>;<U2077>;IGNORE;<U0037>
+<U2078> <U0038>;<U2078>;IGNORE;<U0038>
+<U2079> <U0039>;<U2079>;IGNORE;<U0039>
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% V¹echny speciální znaky (sna¾il jsem se to seøadit podle normy, ale moc se
+% mi nedaøilo)
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+<U0009> IGNORE;IGNORE;IGNORE;<U0009>
+<U000B> IGNORE;IGNORE;IGNORE;<U000B>
+<U000D> IGNORE;IGNORE;IGNORE;<U000D>
+<U000A> IGNORE;IGNORE;IGNORE;<U000A>
+<U000C> IGNORE;IGNORE;IGNORE;<U000C>
+
+% znaménka
+<U002E> IGNORE;IGNORE;IGNORE;<U002E>
+<U002C> IGNORE;IGNORE;IGNORE;<U002C>
+<U003B> IGNORE;IGNORE;IGNORE;<U003B>
+<U003F> IGNORE;IGNORE;IGNORE;<U003F>
+<U00BF> IGNORE;IGNORE;IGNORE;<U00BF>
+<U0021> IGNORE;IGNORE;IGNORE;<U0021>
+<U00A1> IGNORE;IGNORE;IGNORE;<U00A1>
+<U003A> IGNORE;IGNORE;IGNORE;<U003A>
+% Uvozovky
+<U0022> IGNORE;IGNORE;IGNORE;<U0022>
+<U0027> IGNORE;IGNORE;IGNORE;<U0027>
+<U0060> IGNORE;IGNORE;IGNORE;<U0060>
+<U201A> IGNORE;IGNORE;IGNORE;<U201A>
+<U201E> IGNORE;IGNORE;IGNORE;<U201E>
+<U201F> IGNORE;IGNORE;IGNORE;<U201F>
+<U201C> IGNORE;IGNORE;IGNORE;<U201C>
+<U201D> IGNORE;IGNORE;IGNORE;<U201D>
+<U201B> IGNORE;IGNORE;IGNORE;<U201B>
+<U2018> IGNORE;IGNORE;IGNORE;<U2018>
+<U2019> IGNORE;IGNORE;IGNORE;<U2019>
+
+<U002D> IGNORE;IGNORE;IGNORE;<U002D>
+<U207B> IGNORE;IGNORE;IGNORE;<U207B>
+<U00AD> IGNORE;IGNORE;IGNORE;<U00AD>
+<U2010> IGNORE;IGNORE;IGNORE;<U2010>
+<U2212> IGNORE;IGNORE;IGNORE;<U2212>
+<U2013> IGNORE;IGNORE;IGNORE;<U2013>
+<U2014> IGNORE;IGNORE;IGNORE;<U2014>
+<U2015> IGNORE;IGNORE;IGNORE;<U2015>
+<U00A6> IGNORE;IGNORE;IGNORE;<U00A6>
+<U007C> IGNORE;IGNORE;IGNORE;<U007C>
+<U002F> IGNORE;IGNORE;IGNORE;<U002F>
+<U005C> IGNORE;IGNORE;IGNORE;<U005C>
+<U0028> IGNORE;IGNORE;IGNORE;<U0028>
+<U207D> IGNORE;IGNORE;IGNORE;<U207D>
+<U0029> IGNORE;IGNORE;IGNORE;<U0029>
+<U207E> IGNORE;IGNORE;IGNORE;<U207E>
+<U005B> IGNORE;IGNORE;IGNORE;<U005B>
+<U005D> IGNORE;IGNORE;IGNORE;<U005D>
+<U003C> IGNORE;IGNORE;IGNORE;<U003C>
+<U2039> IGNORE;IGNORE;IGNORE;<U003C>
+<U003E> IGNORE;IGNORE;IGNORE;<U003E>
+<U203A> IGNORE;IGNORE;IGNORE;<U003E>
+<U007B> IGNORE;IGNORE;IGNORE;<U007B>
+<U007D> IGNORE;IGNORE;IGNORE;<U007D>
+
+% ustálené znaèky
+<U0026> IGNORE;IGNORE;IGNORE;<U0026>
+<U00A3> IGNORE;IGNORE;IGNORE;<U00A3>
+<U00A7> IGNORE;IGNORE;IGNORE;<U00A7>
+<U0025> IGNORE;IGNORE;IGNORE;<U0025>
+<U0024> IGNORE;IGNORE;IGNORE;<U0024>
+<U00AE> IGNORE;IGNORE;IGNORE;<U00AE>
+<U00A9> IGNORE;IGNORE;IGNORE;<U00A9>
+<U00B6> IGNORE;IGNORE;IGNORE;<U00B6>
+<U0040> IGNORE;IGNORE;IGNORE;<U0040>
+<U00A2> IGNORE;IGNORE;IGNORE;<U00A2>
+<U00A5> IGNORE;IGNORE;IGNORE;<U00A5>
+<U00B5> IGNORE;IGNORE;IGNORE;<U00B5>
+<U20A3> IGNORE;IGNORE;IGNORE;<U20A3>
+<U20A4> IGNORE;IGNORE;IGNORE;<U20A4>
+<U20A7> IGNORE;IGNORE;IGNORE;<U20A7>
+<U20A9> IGNORE;IGNORE;IGNORE;<U20A9>
+<U2116> IGNORE;IGNORE;IGNORE;<U2116>
+<U2117> IGNORE;IGNORE;IGNORE;<U2117>
+<U2120> IGNORE;IGNORE;IGNORE;<U2120>
+<U2122> IGNORE;IGNORE;IGNORE;<U2122>
+<U2126> IGNORE;IGNORE;IGNORE;<U2126>
+<U212B> IGNORE;IGNORE;IGNORE;<U212B>
+
+% grafické znaèky a obrazce lineární
+<U005F> IGNORE;IGNORE;IGNORE;<U005F>
+<U003D> IGNORE;IGNORE;IGNORE;<U003D>
+<U005E> IGNORE;IGNORE;IGNORE;<U005E>
+<U2310> IGNORE;IGNORE;IGNORE;<U2310>
+<U00AC> IGNORE;IGNORE;IGNORE;<U00AC>
+<U2016> IGNORE;IGNORE;IGNORE;<U2016>
+<U2017> IGNORE;IGNORE;IGNORE;<U2017>
+<U2261> IGNORE;IGNORE;IGNORE;<U2261>
+<U00AB> IGNORE;IGNORE;IGNORE;<U00AB>
+<U00BB> IGNORE;IGNORE;IGNORE;<U00BB>
+<U00F7> IGNORE;IGNORE;IGNORE;<U00F7>
+<U221A> IGNORE;IGNORE;IGNORE;<U221A>
+<U002B> IGNORE;IGNORE;IGNORE;<U002B>
+<U207A> IGNORE;IGNORE;IGNORE;<U207A>
+<U00D7> IGNORE;IGNORE;IGNORE;<U00D7>
+<U002A> IGNORE;IGNORE;IGNORE;<U002A>
+<U2217> IGNORE;IGNORE;IGNORE;<U2217>
+<U00B1> IGNORE;IGNORE;IGNORE;<U00B1>
+<U2260> IGNORE;IGNORE;IGNORE;<U2260>
+<U2264> IGNORE;IGNORE;IGNORE;<U2264>
+<U2265> IGNORE;IGNORE;IGNORE;<U2265>
+<U0023> IGNORE;IGNORE;IGNORE;<U0023>
+<U007E> IGNORE;IGNORE;IGNORE;<U007E>
+<U02DC> IGNORE;IGNORE;IGNORE;<U02DC>
+<UE005> IGNORE;IGNORE;IGNORE;<UE005>
+<U224C> IGNORE;IGNORE;IGNORE;<U224C>
+<U223C> IGNORE;IGNORE;IGNORE;<U223C>
+<U2243> IGNORE;IGNORE;IGNORE;<U2243>
+<U2245> IGNORE;IGNORE;IGNORE;<U2245>
+<U2248> IGNORE;IGNORE;IGNORE;<U2248>
+
+% grafické znaèky a obrazce plo¹né
+<U00B0> IGNORE;IGNORE;IGNORE;<U00B0>
+<U2103> IGNORE;IGNORE;IGNORE;<U2103>
+<U2109> IGNORE;IGNORE;IGNORE;<U2109>
+<U00A4> IGNORE;IGNORE;IGNORE;<U00A4>
+
+% Akcenty, nevím kam je zaøadit (nìkteré jsou brány jako uvozovky)
+<U02D9> IGNORE;IGNORE;IGNORE;<U02D9>
+<U00AF> IGNORE;IGNORE;IGNORE;<U203E>
+<U203E> IGNORE;IGNORE;IGNORE;<U203E>
+<U00B4> IGNORE;IGNORE;IGNORE;<U00B4>
+%<U0060> IGNORE;IGNORE;IGNORE;<U0060> % pøemístìn do uvozovek
+%<U005E> IGNORE;IGNORE;IGNORE;<U005E> % pøemístìn do obrazcù lineárních
+<U02C7> IGNORE;IGNORE;IGNORE;<U02C7>
+% tilda
+<U02D8> IGNORE;IGNORE;IGNORE;<U02D8>
+<U00B8> IGNORE;IGNORE;IGNORE;<U00B8>
+<U02DB> IGNORE;IGNORE;IGNORE;<U02DB>
+<U02DA> IGNORE;IGNORE;IGNORE;<U02DA>
+<U00A8> IGNORE;IGNORE;IGNORE;<U00A8>
+<U02DD> IGNORE;IGNORE;IGNORE;<U02DD>
+<U00B7> IGNORE;IGNORE;IGNORE;<U00B7>
+
+% Neseøazeno
+<U0374> IGNORE;IGNORE;IGNORE;<U0374>
+<U0375> IGNORE;IGNORE;IGNORE;<U0375>
+<U037A> IGNORE;IGNORE;IGNORE;<U037A>
+<U037E> IGNORE;IGNORE;IGNORE;<U037E>
+<U0384> IGNORE;IGNORE;IGNORE;<U0384>
+<U0385> IGNORE;IGNORE;IGNORE;<U0385>
+<U0387> IGNORE;IGNORE;IGNORE;<U0387>
+<U03D0> IGNORE;IGNORE;IGNORE;<U03D0>
+<U1FBF> IGNORE;IGNORE;IGNORE;<U1FBF>
+<U1FC0> IGNORE;IGNORE;IGNORE;<U1FC0>
+<U1FC1> IGNORE;IGNORE;IGNORE;<U1FC1>
+<U1FCD> IGNORE;IGNORE;IGNORE;<U1FCD>
+<U1FCE> IGNORE;IGNORE;IGNORE;<U1FCE>
+<U1FCF> IGNORE;IGNORE;IGNORE;<U1FCF>
+<U1FDD> IGNORE;IGNORE;IGNORE;<U1FDD>
+<U1FDE> IGNORE;IGNORE;IGNORE;<U1FDE>
+<U1FDF> IGNORE;IGNORE;IGNORE;<U1FDF>
+<U1FED> IGNORE;IGNORE;IGNORE;<U1FED>
+<U1FEF> IGNORE;IGNORE;IGNORE;<U1FEF>
+<U1FFE> IGNORE;IGNORE;IGNORE;<U1FFE>
+<U200E> IGNORE;IGNORE;IGNORE;<U200E>
+<U200F> IGNORE;IGNORE;IGNORE;<U200F>
+<U2020> IGNORE;IGNORE;IGNORE;<U2020>
+<U2021> IGNORE;IGNORE;IGNORE;<U2021>
+<U2219> IGNORE;IGNORE;IGNORE;<U2219>
+<U2025> IGNORE;IGNORE;IGNORE;<U2025>
+<U2026> IGNORE;IGNORE;IGNORE;<U2026>
+<U2030> IGNORE;IGNORE;IGNORE;<U2030>
+<U2032> IGNORE;IGNORE;IGNORE;<U2032>
+<U2033> IGNORE;IGNORE;IGNORE;<U2033>
+<U2034> IGNORE;IGNORE;IGNORE;<U2034>
+<U2035> IGNORE;IGNORE;IGNORE;<U2035>
+<U2036> IGNORE;IGNORE;IGNORE;<U2036>
+<U2037> IGNORE;IGNORE;IGNORE;<U2037>
+<U2038> IGNORE;IGNORE;IGNORE;<U2038>
+<U203B> IGNORE;IGNORE;IGNORE;<U203B>
+<U203C> IGNORE;IGNORE;IGNORE;<U203C>
+<U207C> IGNORE;IGNORE;IGNORE;<U207C>
+<U2080> IGNORE;IGNORE;IGNORE;<U2080>
+<U2081> IGNORE;IGNORE;IGNORE;<U2081>
+<U2082> IGNORE;IGNORE;IGNORE;<U2082>
+<U2083> IGNORE;IGNORE;IGNORE;<U2083>
+<U2084> IGNORE;IGNORE;IGNORE;<U2084>
+<U2085> IGNORE;IGNORE;IGNORE;<U2085>
+<U2086> IGNORE;IGNORE;IGNORE;<U2086>
+<U2087> IGNORE;IGNORE;IGNORE;<U2087>
+<U2088> IGNORE;IGNORE;IGNORE;<U2088>
+<U2089> IGNORE;IGNORE;IGNORE;<U2089>
+<U208A> IGNORE;IGNORE;IGNORE;<U208A>
+<U208B> IGNORE;IGNORE;IGNORE;<U208B>
+<U208C> IGNORE;IGNORE;IGNORE;<U208C>
+<U208D> IGNORE;IGNORE;IGNORE;<U208D>
+<U208E> IGNORE;IGNORE;IGNORE;<U208E>
+<U2105> IGNORE;IGNORE;IGNORE;<U2105>
+<U211E> IGNORE;IGNORE;IGNORE;<U211E>
+<U2153> IGNORE;IGNORE;IGNORE;<U2153>
+<U2154> IGNORE;IGNORE;IGNORE;<U2154>
+<U2155> IGNORE;IGNORE;IGNORE;<U2155>
+<U2156> IGNORE;IGNORE;IGNORE;<U2156>
+<U2157> IGNORE;IGNORE;IGNORE;<U2157>
+<U2158> IGNORE;IGNORE;IGNORE;<U2158>
+<U2159> IGNORE;IGNORE;IGNORE;<U2159>
+<U215A> IGNORE;IGNORE;IGNORE;<U215A>
+<U2160> IGNORE;IGNORE;IGNORE;<U2160>
+<U2161> IGNORE;IGNORE;IGNORE;<U2161>
+<U2162> IGNORE;IGNORE;IGNORE;<U2162>
+<U2163> IGNORE;IGNORE;IGNORE;<U2163>
+<U2164> IGNORE;IGNORE;IGNORE;<U2164>
+<U2165> IGNORE;IGNORE;IGNORE;<U2165>
+<U2166> IGNORE;IGNORE;IGNORE;<U2166>
+<U2167> IGNORE;IGNORE;IGNORE;<U2167>
+<U2168> IGNORE;IGNORE;IGNORE;<U2168>
+<U2169> IGNORE;IGNORE;IGNORE;<U2169>
+<U216A> IGNORE;IGNORE;IGNORE;<U216A>
+<U216B> IGNORE;IGNORE;IGNORE;<U216B>
+<U216C> IGNORE;IGNORE;IGNORE;<U216C>
+<U216D> IGNORE;IGNORE;IGNORE;<U216D>
+<U216E> IGNORE;IGNORE;IGNORE;<U216E>
+<U216F> IGNORE;IGNORE;IGNORE;<U216F>
+<U2170> IGNORE;IGNORE;IGNORE;<U2170>
+<U2171> IGNORE;IGNORE;IGNORE;<U2171>
+<U2172> IGNORE;IGNORE;IGNORE;<U2172>
+<U2173> IGNORE;IGNORE;IGNORE;<U2173>
+<U2174> IGNORE;IGNORE;IGNORE;<U2174>
+<U2175> IGNORE;IGNORE;IGNORE;<U2175>
+<U2176> IGNORE;IGNORE;IGNORE;<U2176>
+<U2177> IGNORE;IGNORE;IGNORE;<U2177>
+<U2178> IGNORE;IGNORE;IGNORE;<U2178>
+<U2179> IGNORE;IGNORE;IGNORE;<U2179>
+<U217A> IGNORE;IGNORE;IGNORE;<U217A>
+<U217B> IGNORE;IGNORE;IGNORE;<U217B>
+<U217C> IGNORE;IGNORE;IGNORE;<U217C>
+<U217D> IGNORE;IGNORE;IGNORE;<U217D>
+<U217E> IGNORE;IGNORE;IGNORE;<U217E>
+<U217F> IGNORE;IGNORE;IGNORE;<U217F>
+<U2180> IGNORE;IGNORE;IGNORE;<U2180>
+<U2181> IGNORE;IGNORE;IGNORE;<U2181>
+<U2182> IGNORE;IGNORE;IGNORE;<U2182>
+<U2191> IGNORE;IGNORE;IGNORE;<U2191>
+<U2193> IGNORE;IGNORE;IGNORE;<U2193>
+<U2194> IGNORE;IGNORE;IGNORE;<U2194>
+<U2195> IGNORE;IGNORE;IGNORE;<U2195>
+<U2196> IGNORE;IGNORE;IGNORE;<U2196>
+<U2197> IGNORE;IGNORE;IGNORE;<U2197>
+<U2198> IGNORE;IGNORE;IGNORE;<U2198>
+<U2199> IGNORE;IGNORE;IGNORE;<U2199>
+<U21A8> IGNORE;IGNORE;IGNORE;<U21A8>
+<U21C0> IGNORE;IGNORE;IGNORE;<U21C0>
+<U21D0> IGNORE;IGNORE;IGNORE;<U21D0>
+<U21D2> IGNORE;IGNORE;IGNORE;<U21D2>
+<U21D4> IGNORE;IGNORE;IGNORE;<U21D4>
+<U2200> IGNORE;IGNORE;IGNORE;<U2200>
+<U2202> IGNORE;IGNORE;IGNORE;<U2202>
+<U2203> IGNORE;IGNORE;IGNORE;<U2203>
+<U2205> IGNORE;IGNORE;IGNORE;<U2205>
+<U2206> IGNORE;IGNORE;IGNORE;<U2206>
+<U2207> IGNORE;IGNORE;IGNORE;<U2207>
+<U2208> IGNORE;IGNORE;IGNORE;<U2208>
+<U220B> IGNORE;IGNORE;IGNORE;<U220B>
+<U220F> IGNORE;IGNORE;IGNORE;<U220F>
+<U2211> IGNORE;IGNORE;IGNORE;<U2211>
+<U2213> IGNORE;IGNORE;IGNORE;<U2213>
+<U2214> IGNORE;IGNORE;IGNORE;<U2214>
+<U2044> IGNORE;IGNORE;IGNORE;<U2044>
+<U2218> IGNORE;IGNORE;IGNORE;<U2218>
+<U2022> IGNORE;IGNORE;IGNORE;<U2022>
+<U221D> IGNORE;IGNORE;IGNORE;<U221D>
+<U221E> IGNORE;IGNORE;IGNORE;<U221E>
+<U221F> IGNORE;IGNORE;IGNORE;<U221F>
+<U2220> IGNORE;IGNORE;IGNORE;<U2220>
+<U2225> IGNORE;IGNORE;IGNORE;<U2225>
+<U2227> IGNORE;IGNORE;IGNORE;<U2227>
+<U2228> IGNORE;IGNORE;IGNORE;<U2228>
+<U2229> IGNORE;IGNORE;IGNORE;<U2229>
+<U222A> IGNORE;IGNORE;IGNORE;<U222A>
+<U222B> IGNORE;IGNORE;IGNORE;<U222B>
+<U222C> IGNORE;IGNORE;IGNORE;<U222C>
+<U222E> IGNORE;IGNORE;IGNORE;<U222E>
+<U2234> IGNORE;IGNORE;IGNORE;<U2234>
+<U2235> IGNORE;IGNORE;IGNORE;<U2235>
+<U2236> IGNORE;IGNORE;IGNORE;<U2236>
+<U2237> IGNORE;IGNORE;IGNORE;<U2237>
+<U223E> IGNORE;IGNORE;IGNORE;<U223E>
+<U2253> IGNORE;IGNORE;IGNORE;<U2253>
+<U226A> IGNORE;IGNORE;IGNORE;<U226A>
+<U226B> IGNORE;IGNORE;IGNORE;<U226B>
+<U226E> IGNORE;IGNORE;IGNORE;<U226E>
+<U226F> IGNORE;IGNORE;IGNORE;<U226F>
+<U2282> IGNORE;IGNORE;IGNORE;<U2282>
+<U2283> IGNORE;IGNORE;IGNORE;<U2283>
+<U2286> IGNORE;IGNORE;IGNORE;<U2286>
+<U2287> IGNORE;IGNORE;IGNORE;<U2287>
+<U2299> IGNORE;IGNORE;IGNORE;<U2299>
+<U229A> IGNORE;IGNORE;IGNORE;<U229A>
+<U22A5> IGNORE;IGNORE;IGNORE;<U22A5>
+<U22C5> IGNORE;IGNORE;IGNORE;<U22C5>
+<U22EE> IGNORE;IGNORE;IGNORE;<U22EE>
+<U2302> IGNORE;IGNORE;IGNORE;<U2302>
+<U2308> IGNORE;IGNORE;IGNORE;<U2308>
+<U2309> IGNORE;IGNORE;IGNORE;<U2309>
+<U230A> IGNORE;IGNORE;IGNORE;<U230A>
+<U230B> IGNORE;IGNORE;IGNORE;<U230B>
+<U2312> IGNORE;IGNORE;IGNORE;<U2312>
+<U2315> IGNORE;IGNORE;IGNORE;<U2315>
+<U2320> IGNORE;IGNORE;IGNORE;<U2320>
+<U2321> IGNORE;IGNORE;IGNORE;<U2321>
+<U2423> IGNORE;IGNORE;IGNORE;<U2423>
+<U2440> IGNORE;IGNORE;IGNORE;<U2440>
+<U2441> IGNORE;IGNORE;IGNORE;<U2441>
+<U2442> IGNORE;IGNORE;IGNORE;<U2442>
+<U2443> IGNORE;IGNORE;IGNORE;<U2443>
+<U2446> IGNORE;IGNORE;IGNORE;<U2446>
+<U2447> IGNORE;IGNORE;IGNORE;<U2447>
+<U2448> IGNORE;IGNORE;IGNORE;<U2448>
+<U2449> IGNORE;IGNORE;IGNORE;<U2449>
+<U2460> IGNORE;IGNORE;IGNORE;<U2460>
+<U2461> IGNORE;IGNORE;IGNORE;<U2461>
+<U2462> IGNORE;IGNORE;IGNORE;<U2462>
+<U2463> IGNORE;IGNORE;IGNORE;<U2463>
+<U2464> IGNORE;IGNORE;IGNORE;<U2464>
+<U2465> IGNORE;IGNORE;IGNORE;<U2465>
+<U2466> IGNORE;IGNORE;IGNORE;<U2466>
+<U2467> IGNORE;IGNORE;IGNORE;<U2467>
+<U2468> IGNORE;IGNORE;IGNORE;<U2468>
+<U2469> IGNORE;IGNORE;IGNORE;<U2469>
+<U246A> IGNORE;IGNORE;IGNORE;<U246A>
+<U246B> IGNORE;IGNORE;IGNORE;<U246B>
+<U246C> IGNORE;IGNORE;IGNORE;<U246C>
+<U246D> IGNORE;IGNORE;IGNORE;<U246D>
+<U246E> IGNORE;IGNORE;IGNORE;<U246E>
+<U246F> IGNORE;IGNORE;IGNORE;<U246F>
+<U2470> IGNORE;IGNORE;IGNORE;<U2470>
+<U2471> IGNORE;IGNORE;IGNORE;<U2471>
+<U2472> IGNORE;IGNORE;IGNORE;<U2472>
+<U2473> IGNORE;IGNORE;IGNORE;<U2473>
+<U2474> IGNORE;IGNORE;IGNORE;<U2474>
+<U2475> IGNORE;IGNORE;IGNORE;<U2475>
+<U2476> IGNORE;IGNORE;IGNORE;<U2476>
+<U2477> IGNORE;IGNORE;IGNORE;<U2477>
+<U2478> IGNORE;IGNORE;IGNORE;<U2478>
+<U2479> IGNORE;IGNORE;IGNORE;<U2479>
+<U247A> IGNORE;IGNORE;IGNORE;<U247A>
+<U247B> IGNORE;IGNORE;IGNORE;<U247B>
+<U247C> IGNORE;IGNORE;IGNORE;<U247C>
+<U247D> IGNORE;IGNORE;IGNORE;<U247D>
+<U247E> IGNORE;IGNORE;IGNORE;<U247E>
+<U247F> IGNORE;IGNORE;IGNORE;<U247F>
+<U2480> IGNORE;IGNORE;IGNORE;<U2480>
+<U2481> IGNORE;IGNORE;IGNORE;<U2481>
+<U2482> IGNORE;IGNORE;IGNORE;<U2482>
+<U2483> IGNORE;IGNORE;IGNORE;<U2483>
+<U2484> IGNORE;IGNORE;IGNORE;<U2484>
+<U2485> IGNORE;IGNORE;IGNORE;<U2485>
+<U2486> IGNORE;IGNORE;IGNORE;<U2486>
+<U2487> IGNORE;IGNORE;IGNORE;<U2487>
+<U2488> IGNORE;IGNORE;IGNORE;<U2488>
+<U2489> IGNORE;IGNORE;IGNORE;<U2489>
+<U248A> IGNORE;IGNORE;IGNORE;<U248A>
+<U248B> IGNORE;IGNORE;IGNORE;<U248B>
+<U248C> IGNORE;IGNORE;IGNORE;<U248C>
+<U248D> IGNORE;IGNORE;IGNORE;<U248D>
+<U248E> IGNORE;IGNORE;IGNORE;<U248E>
+<U248F> IGNORE;IGNORE;IGNORE;<U248F>
+<U2490> IGNORE;IGNORE;IGNORE;<U2490>
+<U2491> IGNORE;IGNORE;IGNORE;<U2491>
+<U2492> IGNORE;IGNORE;IGNORE;<U2492>
+<U2493> IGNORE;IGNORE;IGNORE;<U2493>
+<U2494> IGNORE;IGNORE;IGNORE;<U2494>
+<U2495> IGNORE;IGNORE;IGNORE;<U2495>
+<U2496> IGNORE;IGNORE;IGNORE;<U2496>
+<U2497> IGNORE;IGNORE;IGNORE;<U2497>
+<U2498> IGNORE;IGNORE;IGNORE;<U2498>
+<U2499> IGNORE;IGNORE;IGNORE;<U2499>
+<U249A> IGNORE;IGNORE;IGNORE;<U249A>
+<U249B> IGNORE;IGNORE;IGNORE;<U249B>
+<U24EA> IGNORE;IGNORE;IGNORE;<U24EA>
+<U2500> IGNORE;IGNORE;IGNORE;<U2500>
+<U2550> IGNORE;IGNORE;IGNORE;<U2550>
+<U2502> IGNORE;IGNORE;IGNORE;<U2502>
+<U2551> IGNORE;IGNORE;IGNORE;<U2551>
+<U2504> IGNORE;IGNORE;IGNORE;<U2504>
+<U2505> IGNORE;IGNORE;IGNORE;<U2505>
+<U2506> IGNORE;IGNORE;IGNORE;<U2506>
+<U2507> IGNORE;IGNORE;IGNORE;<U2507>
+<U2508> IGNORE;IGNORE;IGNORE;<U2508>
+<U2509> IGNORE;IGNORE;IGNORE;<U2509>
+<U250A> IGNORE;IGNORE;IGNORE;<U250A>
+<U250B> IGNORE;IGNORE;IGNORE;<U250B>
+<U250C> IGNORE;IGNORE;IGNORE;<U250C>
+<U2552> IGNORE;IGNORE;IGNORE;<U2552>
+<U2553> IGNORE;IGNORE;IGNORE;<U2553>
+<U2554> IGNORE;IGNORE;IGNORE;<U2554>
+<U2510> IGNORE;IGNORE;IGNORE;<U2510>
+<U2555> IGNORE;IGNORE;IGNORE;<U2555>
+<U2556> IGNORE;IGNORE;IGNORE;<U2556>
+<U2557> IGNORE;IGNORE;IGNORE;<U2557>
+<U2514> IGNORE;IGNORE;IGNORE;<U2514>
+<U2558> IGNORE;IGNORE;IGNORE;<U2558>
+<U2559> IGNORE;IGNORE;IGNORE;<U2559>
+<U255A> IGNORE;IGNORE;IGNORE;<U255A>
+<U2518> IGNORE;IGNORE;IGNORE;<U2518>
+<U255B> IGNORE;IGNORE;IGNORE;<U255B>
+<U255C> IGNORE;IGNORE;IGNORE;<U255C>
+<U255D> IGNORE;IGNORE;IGNORE;<U255D>
+<U251C> IGNORE;IGNORE;IGNORE;<U251C>
+<U255E> IGNORE;IGNORE;IGNORE;<U255E>
+<U251E> IGNORE;IGNORE;IGNORE;<U251E>
+<U251F> IGNORE;IGNORE;IGNORE;<U251F>
+<U255F> IGNORE;IGNORE;IGNORE;<U255F>
+<U2521> IGNORE;IGNORE;IGNORE;<U2521>
+<U2522> IGNORE;IGNORE;IGNORE;<U2522>
+<U2560> IGNORE;IGNORE;IGNORE;<U2560>
+<U2524> IGNORE;IGNORE;IGNORE;<U2524>
+<U2561> IGNORE;IGNORE;IGNORE;<U2561>
+<U2526> IGNORE;IGNORE;IGNORE;<U2526>
+<U2527> IGNORE;IGNORE;IGNORE;<U2527>
+<U2562> IGNORE;IGNORE;IGNORE;<U2562>
+<U2529> IGNORE;IGNORE;IGNORE;<U2529>
+<U252A> IGNORE;IGNORE;IGNORE;<U252A>
+<U2563> IGNORE;IGNORE;IGNORE;<U2563>
+<U252C> IGNORE;IGNORE;IGNORE;<U252C>
+<U252D> IGNORE;IGNORE;IGNORE;<U252D>
+<U252E> IGNORE;IGNORE;IGNORE;<U252E>
+<U2564> IGNORE;IGNORE;IGNORE;<U2564>
+<U2565> IGNORE;IGNORE;IGNORE;<U2565>
+<U2531> IGNORE;IGNORE;IGNORE;<U2531>
+<U2532> IGNORE;IGNORE;IGNORE;<U2532>
+<U2566> IGNORE;IGNORE;IGNORE;<U2566>
+<U2534> IGNORE;IGNORE;IGNORE;<U2534>
+<U2535> IGNORE;IGNORE;IGNORE;<U2535>
+<U2536> IGNORE;IGNORE;IGNORE;<U2536>
+<U2567> IGNORE;IGNORE;IGNORE;<U2567>
+<U2568> IGNORE;IGNORE;IGNORE;<U2568>
+<U2539> IGNORE;IGNORE;IGNORE;<U2539>
+<U253A> IGNORE;IGNORE;IGNORE;<U253A>
+<U2569> IGNORE;IGNORE;IGNORE;<U2569>
+<U253C> IGNORE;IGNORE;IGNORE;<U253C>
+<U253D> IGNORE;IGNORE;IGNORE;<U253D>
+<U253E> IGNORE;IGNORE;IGNORE;<U253E>
+<U256A> IGNORE;IGNORE;IGNORE;<U256A>
+<U2540> IGNORE;IGNORE;IGNORE;<U2540>
+<U2541> IGNORE;IGNORE;IGNORE;<U2541>
+<U256B> IGNORE;IGNORE;IGNORE;<U256B>
+<U2543> IGNORE;IGNORE;IGNORE;<U2543>
+<U2544> IGNORE;IGNORE;IGNORE;<U2544>
+<U2545> IGNORE;IGNORE;IGNORE;<U2545>
+<U2546> IGNORE;IGNORE;IGNORE;<U2546>
+<U2547> IGNORE;IGNORE;IGNORE;<U2547>
+<U2548> IGNORE;IGNORE;IGNORE;<U2548>
+<U2549> IGNORE;IGNORE;IGNORE;<U2549>
+<U254A> IGNORE;IGNORE;IGNORE;<U254A>
+<U256C> IGNORE;IGNORE;IGNORE;<U256C>
+<U2571> IGNORE;IGNORE;IGNORE;<U2571>
+<U2572> IGNORE;IGNORE;IGNORE;<U2572>
+<U2580> IGNORE;IGNORE;IGNORE;<U2580>
+<U2584> IGNORE;IGNORE;IGNORE;<U2584>
+<U2588> IGNORE;IGNORE;IGNORE;<U2588>
+<U258C> IGNORE;IGNORE;IGNORE;<U258C>
+<U2590> IGNORE;IGNORE;IGNORE;<U2590>
+<U2591> IGNORE;IGNORE;IGNORE;<U2591>
+<U2592> IGNORE;IGNORE;IGNORE;<U2592>
+<U2593> IGNORE;IGNORE;IGNORE;<U2593>
+<U25A0> IGNORE;IGNORE;IGNORE;<U25A0>
+<U25A1> IGNORE;IGNORE;IGNORE;<U25A1>
+<U25A2> IGNORE;IGNORE;IGNORE;<U25A2>
+<U25A3> IGNORE;IGNORE;IGNORE;<U25A3>
+<U25A4> IGNORE;IGNORE;IGNORE;<U25A4>
+<U25A5> IGNORE;IGNORE;IGNORE;<U25A5>
+<U25A6> IGNORE;IGNORE;IGNORE;<U25A6>
+<U25A7> IGNORE;IGNORE;IGNORE;<U25A7>
+<U25A8> IGNORE;IGNORE;IGNORE;<U25A8>
+<U25A9> IGNORE;IGNORE;IGNORE;<U25A9>
+<U25AA> IGNORE;IGNORE;IGNORE;<U25AA>
+<U25AC> IGNORE;IGNORE;IGNORE;<U25AC>
+<U25AD> IGNORE;IGNORE;IGNORE;<U25AD>
+<U25B2> IGNORE;IGNORE;IGNORE;<U25B2>
+<U25B3> IGNORE;IGNORE;IGNORE;<U25B3>
+<U25B7> IGNORE;IGNORE;IGNORE;<U25B7>
+<U25BA> IGNORE;IGNORE;IGNORE;<U25BA>
+<U25BC> IGNORE;IGNORE;IGNORE;<U25BC>
+<U25BD> IGNORE;IGNORE;IGNORE;<U25BD>
+<U25C1> IGNORE;IGNORE;IGNORE;<U25C1>
+<U25C4> IGNORE;IGNORE;IGNORE;<U25C4>
+<U25C6> IGNORE;IGNORE;IGNORE;<U25C6>
+<U25C7> IGNORE;IGNORE;IGNORE;<U25C7>
+<U25CA> IGNORE;IGNORE;IGNORE;<U25CA>
+<U25CB> IGNORE;IGNORE;IGNORE;<U25CB>
+<U25CE> IGNORE;IGNORE;IGNORE;<U25CE>
+<U25CF> IGNORE;IGNORE;IGNORE;<U25CF>
+<U25D0> IGNORE;IGNORE;IGNORE;<U25D0>
+<U25D1> IGNORE;IGNORE;IGNORE;<U25D1>
+<U25D8> IGNORE;IGNORE;IGNORE;<U25D8>
+<U25D9> IGNORE;IGNORE;IGNORE;<U25D9>
+<U25E2> IGNORE;IGNORE;IGNORE;<U25E2>
+<U25E3> IGNORE;IGNORE;IGNORE;<U25E3>
+<U25EF> IGNORE;IGNORE;IGNORE;<U25EF>
+<U2605> IGNORE;IGNORE;IGNORE;<U2605>
+<U2606> IGNORE;IGNORE;IGNORE;<U2606>
+<U260E> IGNORE;IGNORE;IGNORE;<U260E>
+<U260F> IGNORE;IGNORE;IGNORE;<U260F>
+<U261C> IGNORE;IGNORE;IGNORE;<U261C>
+<U261E> IGNORE;IGNORE;IGNORE;<U261E>
+<U263A> IGNORE;IGNORE;IGNORE;<U263A>
+<U263B> IGNORE;IGNORE;IGNORE;<U263B>
+<U263C> IGNORE;IGNORE;IGNORE;<U263C>
+<U2640> IGNORE;IGNORE;IGNORE;<U2640>
+<U2642> IGNORE;IGNORE;IGNORE;<U2642>
+<U2660> IGNORE;IGNORE;IGNORE;<U2660>
+<U2661> IGNORE;IGNORE;IGNORE;<U2661>
+<U2662> IGNORE;IGNORE;IGNORE;<U2662>
+<U2663> IGNORE;IGNORE;IGNORE;<U2663>
+<U2664> IGNORE;IGNORE;IGNORE;<U2664>
+<U2665> IGNORE;IGNORE;IGNORE;<U2665>
+<U2666> IGNORE;IGNORE;IGNORE;<U2666>
+<U2667> IGNORE;IGNORE;IGNORE;<U2667>
+<U2669> IGNORE;IGNORE;IGNORE;<U2669>
+<U266A> IGNORE;IGNORE;IGNORE;<U266A>
+<U266B> IGNORE;IGNORE;IGNORE;<U266B>
+<U266C> IGNORE;IGNORE;IGNORE;<U266C>
+<U266D> IGNORE;IGNORE;IGNORE;<U266D>
+<U266E> IGNORE;IGNORE;IGNORE;<U266E>
+<U266F> IGNORE;IGNORE;IGNORE;<U266F>
+<U2713> IGNORE;IGNORE;IGNORE;<U2713>
+<U2717> IGNORE;IGNORE;IGNORE;<U2717>
+<U2720> IGNORE;IGNORE;IGNORE;<U2720>
+<U3000> IGNORE;IGNORE;IGNORE;<U3000>
+<U3001> IGNORE;IGNORE;IGNORE;<U3001>
+<U3002> IGNORE;IGNORE;IGNORE;<U3002>
+<U3003> IGNORE;IGNORE;IGNORE;<U3003>
+<U3004> IGNORE;IGNORE;IGNORE;<U3004>
+<U3005> IGNORE;IGNORE;IGNORE;<U3005>
+<U3006> IGNORE;IGNORE;IGNORE;<U3006>
+<U3007> IGNORE;IGNORE;IGNORE;<U3007>
+<U300A> IGNORE;IGNORE;IGNORE;<U300A>
+<U300B> IGNORE;IGNORE;IGNORE;<U300B>
+<U300C> IGNORE;IGNORE;IGNORE;<U300C>
+<U300D> IGNORE;IGNORE;IGNORE;<U300D>
+<U300E> IGNORE;IGNORE;IGNORE;<U300E>
+<U300F> IGNORE;IGNORE;IGNORE;<U300F>
+<U3010> IGNORE;IGNORE;IGNORE;<U3010>
+<U3011> IGNORE;IGNORE;IGNORE;<U3011>
+<U3012> IGNORE;IGNORE;IGNORE;<U3012>
+<U3013> IGNORE;IGNORE;IGNORE;<U3013>
+<U3014> IGNORE;IGNORE;IGNORE;<U3014>
+<U3015> IGNORE;IGNORE;IGNORE;<U3015>
+<U3016> IGNORE;IGNORE;IGNORE;<U3016>
+<U3017> IGNORE;IGNORE;IGNORE;<U3017>
+<U301C> IGNORE;IGNORE;IGNORE;<U301C>
+<U3020> IGNORE;IGNORE;IGNORE;<U3020>
+<U309B> IGNORE;IGNORE;IGNORE;<U309B>
+<U309C> IGNORE;IGNORE;IGNORE;<U309C>
+<U309D> IGNORE;IGNORE;IGNORE;<U309D>
+<U309E> IGNORE;IGNORE;IGNORE;<U309E>
+<U30FB> IGNORE;IGNORE;IGNORE;<U30FB>
+<U30FC> IGNORE;IGNORE;IGNORE;<U30FC>
+<U30FD> IGNORE;IGNORE;IGNORE;<U30FD>
+<U30FE> IGNORE;IGNORE;IGNORE;<U30FE>
+<U321C> IGNORE;IGNORE;IGNORE;<U321C>
+<U3220> IGNORE;IGNORE;IGNORE;<U3220>
+<U3221> IGNORE;IGNORE;IGNORE;<U3221>
+<U3222> IGNORE;IGNORE;IGNORE;<U3222>
+<U3223> IGNORE;IGNORE;IGNORE;<U3223>
+<U3224> IGNORE;IGNORE;IGNORE;<U3224>
+<U3225> IGNORE;IGNORE;IGNORE;<U3225>
+<U3226> IGNORE;IGNORE;IGNORE;<U3226>
+<U3227> IGNORE;IGNORE;IGNORE;<U3227>
+<U3228> IGNORE;IGNORE;IGNORE;<U3228>
+<U3229> IGNORE;IGNORE;IGNORE;<U3229>
+<U327F> IGNORE;IGNORE;IGNORE;<U327F>
+<U33C2> IGNORE;IGNORE;IGNORE;<U33C2>
+<U33D8> IGNORE;IGNORE;IGNORE;<U33D8>
+<U0000> IGNORE;IGNORE;IGNORE;<U0000>
+<U0001> IGNORE;IGNORE;IGNORE;<U0001>
+<U0002> IGNORE;IGNORE;IGNORE;<U0002>
+<U0003> IGNORE;IGNORE;IGNORE;<U0003>
+<U0004> IGNORE;IGNORE;IGNORE;<U0004>
+<U0005> IGNORE;IGNORE;IGNORE;<U0005>
+<U0006> IGNORE;IGNORE;IGNORE;<U0006>
+<U0007> IGNORE;IGNORE;IGNORE;<U0007>
+<U0008> IGNORE;IGNORE;IGNORE;<U0008>
+<U000E> IGNORE;IGNORE;IGNORE;<U000E>
+<U000F> IGNORE;IGNORE;IGNORE;<U000F>
+<U0010> IGNORE;IGNORE;IGNORE;<U0010>
+<U0011> IGNORE;IGNORE;IGNORE;<U0011>
+<U0012> IGNORE;IGNORE;IGNORE;<U0012>
+<U0013> IGNORE;IGNORE;IGNORE;<U0013>
+<U0014> IGNORE;IGNORE;IGNORE;<U0014>
+<U0015> IGNORE;IGNORE;IGNORE;<U0015>
+<U0016> IGNORE;IGNORE;IGNORE;<U0016>
+<U0017> IGNORE;IGNORE;IGNORE;<U0017>
+<U0018> IGNORE;IGNORE;IGNORE;<U0018>
+<U0019> IGNORE;IGNORE;IGNORE;<U0019>
+<U001A> IGNORE;IGNORE;IGNORE;<U001A>
+<U001B> IGNORE;IGNORE;IGNORE;<U001B>
+<U001C> IGNORE;IGNORE;IGNORE;<U001C>
+<U001D> IGNORE;IGNORE;IGNORE;<U001D>
+<U001E> IGNORE;IGNORE;IGNORE;<U001E>
+<U001F> IGNORE;IGNORE;IGNORE;<U001F>
+<U007F> IGNORE;IGNORE;IGNORE;<U007F>
+<U0080> IGNORE;IGNORE;IGNORE;<U0080>
+<U0081> IGNORE;IGNORE;IGNORE;<U0081>
+<U0082> IGNORE;IGNORE;IGNORE;<U0082>
+<U0083> IGNORE;IGNORE;IGNORE;<U0083>
+<U0084> IGNORE;IGNORE;IGNORE;<U0084>
+<U0085> IGNORE;IGNORE;IGNORE;<U0085>
+<U0086> IGNORE;IGNORE;IGNORE;<U0086>
+<U0087> IGNORE;IGNORE;IGNORE;<U0087>
+<U0088> IGNORE;IGNORE;IGNORE;<U0088>
+<U0089> IGNORE;IGNORE;IGNORE;<U0089>
+<U008A> IGNORE;IGNORE;IGNORE;<U008A>
+<U008B> IGNORE;IGNORE;IGNORE;<U008B>
+<U008C> IGNORE;IGNORE;IGNORE;<U008C>
+<U008D> IGNORE;IGNORE;IGNORE;<U008D>
+<U008E> IGNORE;IGNORE;IGNORE;<U008E>
+<U008F> IGNORE;IGNORE;IGNORE;<U008F>
+<U0090> IGNORE;IGNORE;IGNORE;<U0090>
+<U0091> IGNORE;IGNORE;IGNORE;<U0091>
+<U0092> IGNORE;IGNORE;IGNORE;<U0092>
+<U0093> IGNORE;IGNORE;IGNORE;<U0093>
+<U0094> IGNORE;IGNORE;IGNORE;<U0094>
+<U0095> IGNORE;IGNORE;IGNORE;<U0095>
+<U0096> IGNORE;IGNORE;IGNORE;<U0096>
+<U0097> IGNORE;IGNORE;IGNORE;<U0097>
+<U0098> IGNORE;IGNORE;IGNORE;<U0098>
+<U0099> IGNORE;IGNORE;IGNORE;<U0099>
+<U009A> IGNORE;IGNORE;IGNORE;<U009A>
+<U009B> IGNORE;IGNORE;IGNORE;<U009B>
+<U009C> IGNORE;IGNORE;IGNORE;<U009C>
+<U009D> IGNORE;IGNORE;IGNORE;<U009D>
+<U009E> IGNORE;IGNORE;IGNORE;<U009E>
+<U009F> IGNORE;IGNORE;IGNORE;<U009F>
+<UE000> IGNORE;IGNORE;IGNORE;<UE000>
+<UE001> IGNORE;IGNORE;IGNORE;<UE001>
+<UE002> IGNORE;IGNORE;IGNORE;<UE002>
+<U0301> IGNORE;IGNORE;IGNORE;<U0301>
+<UE004> IGNORE;IGNORE;IGNORE;<UE004>
+<UE006> IGNORE;IGNORE;IGNORE;<UE006>
+<UE007> IGNORE;IGNORE;IGNORE;<UE007>
+<UE008> IGNORE;IGNORE;IGNORE;<UE008>
+<UE009> IGNORE;IGNORE;IGNORE;<UE009>
+<UE00A> IGNORE;IGNORE;IGNORE;<UE00A>
+<UE00B> IGNORE;IGNORE;IGNORE;<UE00B>
+<UE00C> IGNORE;IGNORE;IGNORE;<UE00C>
+<UE00D> IGNORE;IGNORE;IGNORE;<UE00D>
+<UE00E> IGNORE;IGNORE;IGNORE;<UE00E>
+<UE00F> IGNORE;IGNORE;IGNORE;<UE00F>
+<UE010> IGNORE;IGNORE;IGNORE;<UE010>
+<UE011> IGNORE;IGNORE;IGNORE;<UE011>
+<UE012> IGNORE;IGNORE;IGNORE;<UE012>
+<UE013> IGNORE;IGNORE;IGNORE;<UE013>
+<UE014> IGNORE;IGNORE;IGNORE;<UE014>
+<UE015> IGNORE;IGNORE;IGNORE;<UE015>
+<UE017> IGNORE;IGNORE;IGNORE;<UE017>
+<UE018> IGNORE;IGNORE;IGNORE;<UE018>
+<UE019> IGNORE;IGNORE;IGNORE;<UE019>
+UNDEFINED IGNORE;IGNORE;IGNORE;IGNORE
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Zbytek vìcí z unikodu
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+<U0391> <U0391>;<CAPITAL>;<GREEK>;<U0391>
+<U0386> <U0391>;<CAPITAL>;<TONOS>;<U0391>
+<U03B1> <U0391>;<SMALL>;<GREEK>;<U0391>
+<U03AC> <U0391>;<SMALL>;<TONOS>;<U0391>
+<U0392> <U0392>;<CAPITAL>;<GREEK>;<U0392>
+<U03B2> <U0392>;<SMALL>;<GREEK>;<U0392>
+<U0393> <U0393>;<CAPITAL>;<GREEK>;<U0393>
+<U03B3> <U0393>;<SMALL>;<GREEK>;<U0393>
+<U0394> <U0394>;<CAPITAL>;<GREEK>;<U0394>
+<U03B4> <U0394>;<SMALL>;<GREEK>;<U0394>
+<U0395> <U0395>;<CAPITAL>;<GREEK>;<U0395>
+<U0388> <U0395>;<CAPITAL>;<TONOS>;<U0395>
+<U03B5> <U0395>;<SMALL>;<GREEK>;<U0395>
+<U03AD> <U0395>;<SMALL>;<TONOS>;<U0395>
+<U0396> <U0396>;<CAPITAL>;<GREEK>;<U0396>
+<U03B6> <U0396>;<SMALL>;<GREEK>;<U0396>
+<U0397> <U0397>;<CAPITAL>;<GREEK>;<U0397>
+<U0389> <U0397>;<CAPITAL>;<TONOS>;<U0397>
+<U03B7> <U0397>;<SMALL>;<GREEK>;<U0397>
+<U03AE> <U0397>;<SMALL>;<TONOS>;<U0397>
+<U0398> <U0398>;<CAPITAL>;<GREEK>;<U0398>
+<U03B8> <U0398>;<SMALL>;<GREEK>;<U0398>
+<U0399> <U0399>;<CAPITAL>;<GREEK>;<U0399>
+<U038A> <U0399>;<CAPITAL>;<TONOS>;<U0399>
+<U03AA> <U0399>;<CAPITAL>;<DIALYTICA>;<U0399>
+<U03B9> <U0399>;<SMALL>;<GREEK>;<U0399>
+<U03AF> <U0399>;<SMALL>;<TONOS>;<U0399>
+<U03CA> <U0399>;<SMALL>;<DIALYTICA>;<U0399>
+<U0390> <U0399>;<SMALL>;<DIALYTICA+TONOS>;<U0399>
+<U039A> <U039A>;<CAPITAL>;<GREEK>;<U039A>
+<U03BA> <U039A>;<SMALL>;<GREEK>;<U039A>
+<U039B> <U039B>;<CAPITAL>;<GREEK>;<U039B>
+<U03BB> <U039B>;<SMALL>;<GREEK>;<U039B>
+<U039C> <U039C>;<CAPITAL>;<GREEK>;<U039C>
+<U03BC> <U039C>;<SMALL>;<GREEK>;<U039C>
+<U039D> <U039D>;<CAPITAL>;<GREEK>;<U039D>
+<U03BD> <U039D>;<SMALL>;<GREEK>;<U039D>
+<U039E> <U039E>;<CAPITAL>;<GREEK>;<U039E>
+<U03BE> <U039E>;<SMALL>;<GREEK>;<U039E>
+<U039F> <U039F>;<CAPITAL>;<GREEK>;<U039F>
+<U038C> <U039F>;<CAPITAL>;<TONOS>;<U039F>
+<U03BF> <U039F>;<SMALL>;<GREEK>;<U039F>
+<U03CC> <U039F>;<SMALL>;<TONOS>;<U039F>
+<U03A0> <U03A0>;<CAPITAL>;<GREEK>;<U03A0>
+<U03C0> <U03A0>;<SMALL>;<GREEK>;<U03A0>
+<U03A1> <U03A1>;<CAPITAL>;<GREEK>;<U03A1>
+<U03C1> <U03A1>;<SMALL>;<GREEK>;<U03A1>
+<U03A3> <U03A3>;<CAPITAL>;<GREEK>;<U03A3>
+<U03C3> <U03A3>;<SMALL>;<GREEK>;<U03A3>
+<U03C2> <U03A3>;<SMALL>;<U03C2>;<U03A3>
+<U03A4> <U03A4>;<CAPITAL>;<GREEK>;<U03A4>
+<U03C4> <U03A4>;<SMALL>;<GREEK>;<U03A4>
+<U03A5> <U03A5>;<CAPITAL>;<GREEK>;<U03A5>
+<U038E> <U03A5>;<CAPITAL>;<TONOS>;<U03A5>
+<U03AB> <U03A5>;<CAPITAL>;<DIALYTICA>;<U03A5>
+<U03C5> <U03A5>;<SMALL>;<GREEK>;<U03A5>
+<U03CD> <U03A5>;<SMALL>;<TONOS>;<U03A5>
+<U03CB> <U03A5>;<SMALL>;<DIALYTICA>;<U03A5>
+<U03B0> <U03A5>;<SMALL>;<DIALYTICA+TONOS>;<U03A5>
+<U03A6> <U03A6>;<CAPITAL>;<GREEK>;<U03A6>
+<U03C6> <U03A6>;<SMALL>;<GREEK>;<U03A6>
+<U03A7> <U03A7>;<CAPITAL>;<GREEK>;<U03A7>
+<U03C7> <U03A7>;<SMALL>;<GREEK>;<U03A7>
+<U03A8> <U03A8>;<CAPITAL>;<GREEK>;<U03A8>
+<U03C8> <U03A8>;<SMALL>;<GREEK>;<U03A8>
+<U03A9> <U03A9>;<CAPITAL>;<GREEK>;<U03A9>
+<U038F> <U03A9>;<CAPITAL>;<TONOS>;<U03A9>
+<U03C9> <U03A9>;<SMALL>;<GREEK>;<U03A9>
+<U03CE> <U03A9>;<SMALL>;<TONOS>;<U03A9>
+<U0410> <U0410>;<CYRILLIC>;<CAPITAL>;<U0410>
+<U0430> <U0410>;<CYRILLIC>;<SMALL>;<U0410>
+<U0411> <U0411>;<CYRILLIC>;<CAPITAL>;<U0411>
+<U0431> <U0411>;<CYRILLIC>;<SMALL>;<U0411>
+<U0412> <U0412>;<CYRILLIC>;<CAPITAL>;<U0412>
+<U0432> <U0412>;<CYRILLIC>;<SMALL>;<U0412>
+<U0413> <U0413>;<CYRILLIC>;<CAPITAL>;<U0413>
+<U0433> <U0413>;<CYRILLIC>;<SMALL>;<U0413>
+<U0403> <U0403>;<CYRILLIC>;<CAPITAL>;<U0403>
+<U0453> <U0403>;<CYRILLIC>;<SMALL>;<U0403>
+<U0490> <U0490>;<CYRILLIC>;<CAPITAL>;<U0490>
+<U0491> <U0490>;<CYRILLIC>;<SMALL>;<U0490>
+<U0414> <U0414>;<CYRILLIC>;<CAPITAL>;<U0414>
+<U0434> <U0414>;<CYRILLIC>;<SMALL>;<U0414>
+<U0402> <U0402>;<CYRILLIC>;<CAPITAL>;<U0402>
+<U0452> <U0402>;<CYRILLIC>;<SMALL>;<U0402>
+<U0415> <U0415>;<CYRILLIC>;<CAPITAL>;<U0415>
+<U0435> <U0415>;<CYRILLIC>;<SMALL>;<U0415>
+<U0401> <U0401>;<CYRILLIC>;<CAPITAL>;<U0401>
+<U0451> <U0401>;<CYRILLIC>;<SMALL>;<U0401>
+<U0404> <U0404>;<CYRILLIC>;<CAPITAL>;<U0404>
+<U0454> <U0404>;<CYRILLIC>;<SMALL>;<U0404>
+<U0416> <U0416>;<CYRILLIC>;<CAPITAL>;<U0416>
+<U0436> <U0416>;<CYRILLIC>;<SMALL>;<U0416>
+<U0417> <U0417>;<CYRILLIC>;<CAPITAL>;<U0417>
+<U0437> <U0417>;<CYRILLIC>;<SMALL>;<U0417>
+<U0418> <U0418>;<CYRILLIC>;<CAPITAL>;<U0418>
+<U0438> <U0418>;<CYRILLIC>;<SMALL>;<U0418>
+<U0406> <U0406>;<CYRILLIC>;<CAPITAL>;<U0406>
+<U0456> <U0406>;<CYRILLIC>;<SMALL>;<U0406>
+<U0407> <U0407>;<CYRILLIC>;<CAPITAL>;<U0407>
+<U0457> <U0407>;<CYRILLIC>;<SMALL>;<U0407>
+<U0408> <U0408>;<CYRILLIC>;<CAPITAL>;<U0408>
+<U0458> <U0408>;<CYRILLIC>;<SMALL>;<U0408>
+<U0419> <U0419>;<CYRILLIC>;<CAPITAL>;<U0419>
+<U0439> <U0419>;<CYRILLIC>;<SMALL>;<U0419>
+<U041A> <U041A>;<CYRILLIC>;<CAPITAL>;<U041A>
+<U043A> <U041A>;<CYRILLIC>;<SMALL>;<U041A>
+<U040C> <U040C>;<CYRILLIC>;<CAPITAL>;<U040C>
+<U045C> <U040C>;<CYRILLIC>;<SMALL>;<U040C>
+<U041B> <U041B>;<CYRILLIC>;<CAPITAL>;<U041B>
+<U043B> <U041B>;<CYRILLIC>;<SMALL>;<U041B>
+<U0409> <U0409>;<CYRILLIC>;<CAPITAL>;<U0409>
+<U0459> <U0409>;<CYRILLIC>;<SMALL>;<U0409>
+<U041C> <U041C>;<CYRILLIC>;<CAPITAL>;<U041C>
+<U043C> <U041C>;<CYRILLIC>;<SMALL>;<U041C>
+<U041D> <U041D>;<CYRILLIC>;<CAPITAL>;<U041D>
+<U043D> <U041D>;<CYRILLIC>;<SMALL>;<U041D>
+<U040A> <U040A>;<CYRILLIC>;<CAPITAL>;<U040A>
+<U045A> <U040A>;<CYRILLIC>;<SMALL>;<U040A>
+<U041E> <U041E>;<CYRILLIC>;<CAPITAL>;<U041E>
+<U043E> <U041E>;<CYRILLIC>;<SMALL>;<U041E>
+<U041F> <U041F>;<CYRILLIC>;<CAPITAL>;<U041F>
+<U043F> <U041F>;<CYRILLIC>;<SMALL>;<U041F>
+<U0420> <U0420>;<CYRILLIC>;<CAPITAL>;<U0420>
+<U0440> <U0420>;<CYRILLIC>;<SMALL>;<U0420>
+<U0421> <U0421>;<CYRILLIC>;<CAPITAL>;<U0421>
+<U0441> <U0421>;<CYRILLIC>;<SMALL>;<U0421>
+<U0422> <U0422>;<CYRILLIC>;<CAPITAL>;<U0422>
+<U0442> <U0422>;<CYRILLIC>;<SMALL>;<U0422>
+<U040B> <U040B>;<CYRILLIC>;<CAPITAL>;<U040B>
+<U045B> <U040B>;<CYRILLIC>;<SMALL>;<U040B>
+<U0423> <U0423>;<CYRILLIC>;<CAPITAL>;<U0423>
+<U0443> <U0423>;<CYRILLIC>;<SMALL>;<U0423>
+<U040E> <U040E>;<CYRILLIC>;<CAPITAL>;<U040E>
+<U045E> <U040E>;<CYRILLIC>;<SMALL>;<U040E>
+<U0424> <U0424>;<CYRILLIC>;<CAPITAL>;<U0424>
+<U0444> <U0424>;<CYRILLIC>;<SMALL>;<U0424>
+<U0425> <U0425>;<CYRILLIC>;<CAPITAL>;<U0425>
+<U0445> <U0425>;<CYRILLIC>;<SMALL>;<U0425>
+<U0426> <U0426>;<CYRILLIC>;<CAPITAL>;<U0426>
+<U0446> <U0426>;<CYRILLIC>;<SMALL>;<U0426>
+<U0405> <U0405>;<CYRILLIC>;<CAPITAL>;<U0405>
+<U0455> <U0405>;<CYRILLIC>;<SMALL>;<U0405>
+<U0427> <U0427>;<CYRILLIC>;<CAPITAL>;<U0427>
+<U0447> <U0427>;<CYRILLIC>;<SMALL>;<U0427>
+<U040F> <U040F>;<CYRILLIC>;<CAPITAL>;<U040F>
+<U045F> <U040F>;<CYRILLIC>;<SMALL>;<U040F>
+<U0428> <U0428>;<CYRILLIC>;<CAPITAL>;<U0428>
+<U0448> <U0428>;<CYRILLIC>;<SMALL>;<U0428>
+<U0429> <U0429>;<CYRILLIC>;<CAPITAL>;<U0429>
+<U0449> <U0429>;<CYRILLIC>;<SMALL>;<U0429>
+<U044A> <U044A>;<CYRILLIC>;<SMALL>;<U044A>
+<U042A> <U044A>;<CYRILLIC>;<CAPITAL>;<U044A>
+<U042B> <U042B>;<CYRILLIC>;<CAPITAL>;<U042B>
+<U044B> <U042B>;<CYRILLIC>;<SMALL>;<U042B>
+<U044C> <U044C>;<CYRILLIC>;<SMALL>;<U044C>
+<U042C> <U044C>;<CYRILLIC>;<CAPITAL>;<U044C>
+<U042D> <U042D>;<CYRILLIC>;<CAPITAL>;<U042D>
+<U044D> <U042D>;<CYRILLIC>;<SMALL>;<U042D>
+<U042E> <U042E>;<CYRILLIC>;<CAPITAL>;<U042E>
+<U044E> <U042E>;<CYRILLIC>;<SMALL>;<U042E>
+<U042F> <U042F>;<CYRILLIC>;<CAPITAL>;<U042F>
+<U044F> <U042F>;<CYRILLIC>;<SMALL>;<U042F>
+<U0462> <U0462>;<CYRILLIC>;<CAPITAL>;<U0462>
+<U0463> <U0462>;<CYRILLIC>;<SMALL>;<U0462>
+<U046A> <U046A>;<CYRILLIC>;<CAPITAL>;<U046A>
+<U046B> <U046A>;<CYRILLIC>;<SMALL>;<U046A>
+<U0472> <U0472>;<CYRILLIC>;<CAPITAL>;<U0472>
+<U0473> <U0472>;<CYRILLIC>;<SMALL>;<U0472>
+<U0474> <U0474>;<CYRILLIC>;<CAPITAL>;<U0474>
+<U0475> <U0474>;<CYRILLIC>;<SMALL>;<U0474>
+<U0480> <U0480>;<CYRILLIC>;<CAPITAL>;<U0480>
+<U0481> <U0480>;<CYRILLIC>;<SMALL>;<U0480>
+<U05D0> <U05D0>;IGNORE;IGNORE;<U05D0>
+<U05D1> <U05D1>;IGNORE;IGNORE;<U05D1>
+<U05D2> <U05D2>;IGNORE;IGNORE;<U05D2>
+<U05D3> <U05D3>;IGNORE;IGNORE;<U05D3>
+<U05D4> <U05D4>;IGNORE;IGNORE;<U05D4>
+<U05D5> <U05D5>;IGNORE;IGNORE;<U05D5>
+<U05D6> <U05D6>;IGNORE;IGNORE;<U05D6>
+<U05D7> <U05D7>;IGNORE;IGNORE;<U05D7>
+<U05D8> <U05D8>;IGNORE;IGNORE;<U05D8>
+<U05D9> <U05D9>;IGNORE;IGNORE;<U05D9>
+<U05DA> <U05DA>;IGNORE;IGNORE;<U05DA>
+<U05DB> <U05DB>;IGNORE;IGNORE;<U05DB>
+<U05DC> <U05DC>;IGNORE;IGNORE;<U05DC>
+<U05DD> <U05DD>;IGNORE;IGNORE;<U05DD>
+<U05DE> <U05DE>;IGNORE;IGNORE;<U05DE>
+<U05DF> <U05DF>;IGNORE;IGNORE;<U05DF>
+<U05E0> <U05E0>;IGNORE;IGNORE;<U05E0>
+<U05E1> <U05E1>;IGNORE;IGNORE;<U05E1>
+<U05E2> <U05E2>;IGNORE;IGNORE;<U05E2>
+<U05E3> <U05E3>;IGNORE;IGNORE;<U05E3>
+<U05E4> <U05E4>;IGNORE;IGNORE;<U05E4>
+<U05E5> <U05E5>;IGNORE;IGNORE;<U05E5>
+<U05E6> <U05E6>;IGNORE;IGNORE;<U05E6>
+<U05E7> <U05E7>;IGNORE;IGNORE;<U05E7>
+<U05E8> <U05E8>;IGNORE;IGNORE;<U05E8>
+<U05E9> <U05E9>;IGNORE;IGNORE;<U05E9>
+<U05EA> <U05EA>;IGNORE;IGNORE;<U05EA>
+
+% Arabic collating
+
+<U060C> IGNORE;IGNORE;IGNORE;<U060C>
+<U061B> IGNORE;IGNORE;IGNORE;<U061B>
+<U061F> IGNORE;IGNORE;IGNORE;<U061F>
+<U0640> IGNORE;IGNORE;IGNORE;<U0640>
+
+<U0621> <U0621>;<U0621>;IGNORE;<U0621>
+<U0622> <U0622>;<U0622>;IGNORE;<U0622>
+<UFE82> <U0622>;<UFE82>;IGNORE;<U0622>
+<U0623> <U0621>;<U0623>;IGNORE;<U0621>
+<UFE84> <U0621>;<UFE84>;IGNORE;<U0621>
+<U0624> <U0621>;<U0624>;IGNORE;<U0621>
+<U0625> <U0621>;<U0625>;IGNORE;<U0621>
+<UFE88> <U0621>;<UFE88>;IGNORE;<U0621>
+<U0626> <U0621>;<U0626>;IGNORE;<U0621>
+<U0670> <U0670>;<U0670>;IGNORE;<U0670>
+<U0627> <U0627>;<U0627>;IGNORE;<U0627>
+<UFE8D> <U0627>;<UFE8D>;IGNORE;<U0627>
+<UFE8E> <U0627>;<UFE8E>;IGNORE;<U0627>
+<UE016> <U0627>;<UE016>;IGNORE;<U0627>
+<U0628> <U0628>;<U0628>;IGNORE;<U0628>
+<UFE8F> <U0628>;<UFE8F>;IGNORE;<U0628>
+<UFE90> <U0628>;<UFE90>;IGNORE;<U0628>
+<UFE91> <U0628>;<UFE91>;IGNORE;<U0628>
+<UFE92> <U0628>;<UFE92>;IGNORE;<U0628>
+<U067E> <U067E>;<U067E>;IGNORE;<U067E>
+<U06A4> <U06A4>;<U06A4>;IGNORE;<U06A4>
+<U0629> <U0629>;<U0629>;IGNORE;<U0629>
+<UFE93> <U0629>;<UFE93>;IGNORE;<U0629>
+<UFE94> <U0629>;<UFE94>;IGNORE;<U0629>
+<U062A> <U0629>;<U062A>;IGNORE;<U0629>
+<UFE95> <U0629>;<UFE95>;IGNORE;<U0629>
+<UFE96> <U0629>;<UFE96>;IGNORE;<U0629>
+<UFE97> <U0629>;<UFE97>;IGNORE;<U0629>
+<UFE98> <U0629>;<UFE98>;IGNORE;<U0629>
+<U062B> <U062B>;<U062B>;IGNORE;<U062B>
+<UFE99> <U062B>;<UFE99>;IGNORE;<U062B>
+<UFE9A> <U062B>;<UFE9A>;IGNORE;<U062B>
+<UFE9B> <U062B>;<UFE9B>;IGNORE;<U062B>
+<UFE9C> <U062B>;<UFE9C>;IGNORE;<U062B>
+<U062C> <U062C>;<U062C>;IGNORE;<U062C>
+<UFE9D> <U062C>;<UFE9D>;IGNORE;<U062C>
+<UFE9E> <U062C>;<UFE9E>;IGNORE;<U062C>
+<UFE9F> <U062C>;<UFE9F>;IGNORE;<U062C>
+<UFEA0> <U062C>;<UFEA0>;IGNORE;<U062C>
+<U062D> <U062D>;<U062D>;IGNORE;<U062D>
+<UFEA1> <U062D>;<UFEA1>;IGNORE;<U062D>
+<UFEA2> <U062D>;<UFEA2>;IGNORE;<U062D>
+<UFEA3> <U062D>;<UFEA3>;IGNORE;<U062D>
+<UFEA4> <U062D>;<UFEA4>;IGNORE;<U062D>
+<U062E> <U062E>;<U062E>;IGNORE;<U062E>
+<UFEA5> <U062E>;<UFEA5>;IGNORE;<U062E>
+<UFEA6> <U062E>;<UFEA6>;IGNORE;<U062E>
+<UFEA7> <U062E>;<UFEA7>;IGNORE;<U062E>
+<UFEA8> <U062E>;<UFEA8>;IGNORE;<U062E>
+<U062F> <U062F>;<U062F>;IGNORE;<U062F>
+<UFEA9> <U062F>;<UFEA9>;IGNORE;<U062F>
+<UFEAA> <U062F>;<UFEAA>;IGNORE;<U062F>
+<U0630> <U0630>;<U0630>;IGNORE;<U0630>
+<UFEAB> <U0630>;<UFEAB>;IGNORE;<U0630>
+<UFEAC> <U0630>;<UFEAC>;IGNORE;<U0630>
+<U0631> <U0631>;<U0631>;IGNORE;<U0631>
+<UFEAD> <U0631>;<UFEAD>;IGNORE;<U0631>
+<UFEAE> <U0631>;<UFEAE>;IGNORE;<U0631>
+<U0632> <U0632>;<U0632>;IGNORE;<U0632>
+<UFEAF> <U0632>;<UFEAF>;IGNORE;<U0632>
+<UFEB0> <U0632>;<UFEB0>;IGNORE;<U0632>
+<U0633> <U0633>;<U0633>;IGNORE;<U0633>
+<UFEB1> <U0633>;<UFEB1>;IGNORE;<U0633>
+<UFEB2> <U0633>;<UFEB2>;IGNORE;<U0633>
+<UFEB3> <U0633>;<UFEB3>;IGNORE;<U0633>
+<UFEB4> <U0633>;<UFEB4>;IGNORE;<U0633>
+<U0634> <U0634>;<U0634>;IGNORE;<U0634>
+<UFEB5> <U0634>;<UFEB5>;IGNORE;<U0634>
+<UFEB6> <U0634>;<UFEB6>;IGNORE;<U0634>
+<UFEB7> <U0634>;<UFEB7>;IGNORE;<U0634>
+<UFEB8> <U0634>;<UFEB8>;IGNORE;<U0634>
+<U0635> <U0635>;<U0635>;IGNORE;<U0635>
+<UFEB9> <U0635>;<UFEB9>;IGNORE;<U0635>
+<UFEBA> <U0635>;<UFEBA>;IGNORE;<U0635>
+<UFEBB> <U0635>;<UFEBB>;IGNORE;<U0635>
+<UFEBC> <U0635>;<UFEBC>;IGNORE;<U0635>
+<U0636> <U0636>;<U0636>;IGNORE;<U0636>
+<UFEBD> <U0636>;<UFEBD>;IGNORE;<U0636>
+<UFEBE> <U0636>;<UFEBE>;IGNORE;<U0636>
+<UFEBF> <U0636>;<UFEBF>;IGNORE;<U0636>
+<UFEC0> <U0636>;<UFEC0>;IGNORE;<U0636>
+<U0637> <U0637>;<U0637>;IGNORE;<U0637>
+<UFEC1> <U0637>;<UFEC1>;IGNORE;<U0637>
+<UFEC2> <U0637>;<UFEC2>;IGNORE;<U0637>
+<UFEC3> <U0637>;<UFEC3>;IGNORE;<U0637>
+<UFEC4> <U0637>;<UFEC4>;IGNORE;<U0637>
+<U0638> <U0638>;<U0638>;IGNORE;<U0638>
+<UFEC5> <U0638>;<UFEC5>;IGNORE;<U0638>
+<UFEC6> <U0638>;<UFEC6>;IGNORE;<U0638>
+<UFEC7> <U0638>;<UFEC7>;IGNORE;<U0638>
+<UFEC8> <U0638>;<UFEC8>;IGNORE;<U0638>
+<U0639> <U0639>;<U0639>;IGNORE;<U0639>
+<UFEC9> <U0639>;<UFEC9>;IGNORE;<U0639>
+<UFECA> <U0639>;<UFECA>;IGNORE;<U0639>
+<UFECB> <U0639>;<UFECB>;IGNORE;<U0639>
+<UFECC> <U0639>;<UFECC>;IGNORE;<U0639>
+<U063A> <U063A>;<U063A>;IGNORE;<U063A>
+<UFECD> <U063A>;<UFECD>;IGNORE;<U063A>
+<UFECE> <U063A>;<UFECE>;IGNORE;<U063A>
+<UFECF> <U063A>;<UFECF>;IGNORE;<U063A>
+<UFED0> <U063A>;<UFED0>;IGNORE;<U063A>
+<U0641> <U0641>;<U0641>;IGNORE;<U0641>
+<UFED1> <U0641>;<UFED1>;IGNORE;<U0641>
+<UFED2> <U0641>;<UFED2>;IGNORE;<U0641>
+<UFED3> <U0641>;<UFED3>;IGNORE;<U0641>
+<UFED4> <U0641>;<UFED4>;IGNORE;<U0641>
+<U0642> <U0642>;<U0642>;IGNORE;<U0642>
+<UFED5> <U0642>;<UFED5>;IGNORE;<U0642>
+<UFED6> <U0642>;<UFED6>;IGNORE;<U0642>
+<UFED7> <U0642>;<UFED7>;IGNORE;<U0642>
+<UFED8> <U0642>;<UFED8>;IGNORE;<U0642>
+<U0643> <U0643>;<U0643>;IGNORE;<U0643>
+<UFED9> <U0643>;<UFED9>;IGNORE;<U0643>
+<UFEDA> <U0643>;<UFEDA>;IGNORE;<U0643>
+<UFEDB> <U0643>;<UFEDB>;IGNORE;<U0643>
+<UFEDC> <U0643>;<UFEDC>;IGNORE;<U0643>
+<U0644> <U0644>;<U0644>;IGNORE;<U0644>
+<UFEDD> <U0644>;<UFEDD>;IGNORE;<U0644>
+<UFEDE> <U0644>;<UFEDE>;IGNORE;<U0644>
+<UFEDF> <U0644>;<UFEDF>;IGNORE;<U0644>
+<UFEE0> <U0644>;<UFEE0>;IGNORE;<U0644>
+<U0645> <U0645>;<U0645>;IGNORE;<U0645>
+<UFEE1> <U0645>;<UFEE1>;IGNORE;<U0645>
+<UFEE2> <U0645>;<UFEE2>;IGNORE;<U0645>
+<UFEE3> <U0645>;<UFEE3>;IGNORE;<U0645>
+<UFEE4> <U0645>;<UFEE4>;IGNORE;<U0645>
+<U0646> <U0646>;<U0646>;IGNORE;<U0646>
+<UFEE5> <U0646>;<UFEE5>;IGNORE;<U0646>
+<UFEE6> <U0646>;<UFEE6>;IGNORE;<U0646>
+<UFEE7> <U0646>;<UFEE7>;IGNORE;<U0646>
+<UFEE8> <U0646>;<UFEE8>;IGNORE;<U0646>
+<U0647> <U0647>;<U0647>;IGNORE;<U0647>
+<UFEE9> <U0647>;<UFEE9>;IGNORE;<U0647>
+<UFEEA> <U0647>;<UFEEA>;IGNORE;<U0647>
+<UFEEB> <U0647>;<UFEEB>;IGNORE;<U0647>
+<UFEEC> <U0647>;<UFEEC>;IGNORE;<U0647>
+<U0648> <U0648>;<U0648>;IGNORE;<U0648>
+<UFEED> <U0648>;<UFEED>;IGNORE;<U0648>
+<UFEEE> <U0648>;<UFEEE>;IGNORE;<U0648>
+<U0649> <U0649>;<U0649>;IGNORE;<U0649>
+<UFEEF> <U0649>;<UFEEF>;IGNORE;<U0649>
+<UFEF0> <U0649>;<UFEF0>;IGNORE;<U0649>
+<U064A> <U064A>;<U064A>;IGNORE;<U064A>
+<UFEF1> <U064A>;<UFEF1>;IGNORE;<U064A>
+<UFEF2> <U064A>;<UFEF2>;IGNORE;<U064A>
+<UFEF3> <U064A>;<UFEF3>;IGNORE;<U064A>
+<UFEF4> <U064A>;<UFEF4>;IGNORE;<U064A>
+
+<U064B> IGNORE;IGNORE;<U064B>;<U064B>
+<U064C> IGNORE;IGNORE;<U064C>;<U064C>
+<U064D> IGNORE;IGNORE;<U064D>;<U064D>
+<U064E> IGNORE;IGNORE;<U064E>;<U064E>
+<U064F> IGNORE;IGNORE;<U064F>;<U064F>
+<U0650> IGNORE;IGNORE;<U0650>;<U0650>
+<U0651> IGNORE;IGNORE;<U0651>;<U0651>
+<UFE7D> IGNORE;IGNORE;<UFE7D>;<UFE7D>
+<U0652> IGNORE;IGNORE;<U0652>;<U0652>
+
+<U0660> <U0030>;<U0660>;IGNORE;<U0030>
+<U0661> <U0031>;<U0661>;IGNORE;<U0031>
+<U0662> <U0032>;<U0662>;IGNORE;<U0032>
+<U0663> <U0033>;<U0663>;IGNORE;<U0033>
+<U0664> <U0034>;<U0664>;IGNORE;<U0034>
+<U0665> <U0035>;<U0665>;IGNORE;<U0035>
+<U0666> <U0036>;<U0666>;IGNORE;<U0036>
+<U0667> <U0037>;<U0667>;IGNORE;<U0037>
+<U0668> <U0038>;<U0668>;IGNORE;<U0038>
+<U0669> <U0039>;<U0669>;IGNORE;<U0039>
+
+<UFEF5> "<U0644><U0622>";"<U0644><U0622>";"<UFEF5><UFEF5>";"<U0644><U0622>"
+<UFEF6> "<U0644><U0622>";"<U0644><UFE82>";"<UFEF6><UFEF6>";"<U0644><U0622>"
+<UFEF7> "<U0644><U0623>";"<U0644><U0623>";"<UFEF7><UFEF7>";"<U0644><U0623>"
+<UFEF8> "<U0644><U0623>";"<U0644><UFE84>";"<UFEF8><UFEF8>";"<U0644><U0623>"
+<UFEF9> "<U0644><U0625>";"<U0644><U0625>";"<UFEF9><UFEF9>";"<U0644><U0625>"
+<UFEFA> "<U0644><U0625>";"<U0644><UFE88>";"<UFEFA><UFEFA>";"<U0644><U0625>"
+<UFEFB> "<U0644><U0627>";"<U0644><UFE8D>";"<UFEFB><UFEFB>";"<U0644><U0627>"
+<UFEFC> "<U0644><U0627>";"<U0644><UFE8E>";"<UFEFC><UFEFC>";"<U0644><U0627>"
+
+% katakana/hiragana sorting
+% base is katakana, as this is present in most charsets
+% normal before voiced before semi-voiced
+% small vocals before normal vocals
+% katakana before hiragana
+
+<U30A1> <U30A1>;<U30A1>;IGNORE;<U30A1>
+<U3041> <U30A1>;<U3041>;IGNORE;<U30A1>
+<U30A2> <U30A1>;<U30A2>;IGNORE;<U30A1>
+<U3042> <U30A1>;<U3042>;IGNORE;<U30A1>
+<U30A3> <U30A3>;<U30A3>;IGNORE;<U30A3>
+<U3043> <U30A3>;<U3043>;IGNORE;<U30A3>
+<U30A4> <U30A3>;<U30A4>;IGNORE;<U30A3>
+<U3044> <U30A3>;<U3044>;IGNORE;<U30A3>
+<U30A5> <U30A5>;<U30A5>;IGNORE;<U30A5>
+<U3045> <U30A5>;<U3045>;IGNORE;<U30A5>
+<U30A6> <U30A5>;<U30A6>;IGNORE;<U30A5>
+<U3046> <U30A5>;<U3046>;IGNORE;<U30A5>
+<U30F4> <U30A5>;<U30F4>;IGNORE;<U30A5>
+<U30A7> <U30A7>;<U30A7>;IGNORE;<U30A7>
+<U3047> <U30A7>;<U3047>;IGNORE;<U30A7>
+<U30A8> <U30A7>;<U30A8>;IGNORE;<U30A7>
+<U3048> <U30A7>;<U3048>;IGNORE;<U30A7>
+<U30A9> <U30A9>;<U30A9>;IGNORE;<U30A9>
+<U3049> <U30A9>;<U3049>;IGNORE;<U30A9>
+<U30AA> <U30A9>;<U30AA>;IGNORE;<U30A9>
+<U304A> <U30A9>;<U304A>;IGNORE;<U30A9>
+<U30F5> <U30F5>;<U30F5>;IGNORE;<U30F5>
+<U30AB> <U30F5>;<U30AB>;IGNORE;<U30F5>
+<U304B> <U30F5>;<U304B>;IGNORE;<U30F5>
+<U30AC> <U30F5>;<U30AC>;IGNORE;<U30F5>
+<U304C> <U30F5>;<U304C>;IGNORE;<U30F5>
+<U30AD> <U30AD>;<U30AD>;IGNORE;<U30AD>
+<U304D> <U30AD>;<U304D>;IGNORE;<U30AD>
+<U30AE> <U30AD>;<U30AE>;IGNORE;<U30AD>
+<U304E> <U30AD>;<U304E>;IGNORE;<U30AD>
+<U30AF> <U30AF>;<U30AF>;IGNORE;<U30AF>
+<U304F> <U30AF>;<U304F>;IGNORE;<U30AF>
+<U30B0> <U30AF>;<U30B0>;IGNORE;<U30AF>
+<U3050> <U30AF>;<U3050>;IGNORE;<U30AF>
+<U30F6> <U30F6>;<U30F6>;IGNORE;<U30F6>
+<U30B1> <U30F6>;<U30B1>;IGNORE;<U30F6>
+<U3051> <U30F6>;<U3051>;IGNORE;<U30F6>
+<U30B2> <U30F6>;<U30B2>;IGNORE;<U30F6>
+<U3052> <U30F6>;<U3052>;IGNORE;<U30F6>
+<U30B3> <U30B3>;<U30B3>;IGNORE;<U30B3>
+<U3053> <U30B3>;<U3053>;IGNORE;<U30B3>
+<U30B4> <U30B3>;<U30B4>;IGNORE;<U30B3>
+<U3054> <U30B3>;<U3054>;IGNORE;<U30B3>
+<U30B5> <U30B5>;<U30B5>;IGNORE;<U30B5>
+<U3055> <U30B5>;<U3055>;IGNORE;<U30B5>
+<U30B6> <U30B5>;<U30B6>;IGNORE;<U30B5>
+<U3056> <U30B5>;<U3056>;IGNORE;<U30B5>
+<U30B7> <U30B7>;<U30B7>;IGNORE;<U30B7>
+<U3057> <U30B7>;<U3057>;IGNORE;<U30B7>
+<U30B8> <U30B7>;<U30B8>;IGNORE;<U30B7>
+<U3058> <U30B7>;<U3058>;IGNORE;<U30B7>
+<U30B9> <U30B9>;<U30B9>;IGNORE;<U30B9>
+<U3059> <U30B9>;<U3059>;IGNORE;<U30B9>
+<U30BA> <U30B9>;<U30BA>;IGNORE;<U30B9>
+<U305A> <U30B9>;<U305A>;IGNORE;<U30B9>
+<U30BB> <U30BB>;<U30BB>;IGNORE;<U30BB>
+<U305B> <U30BB>;<U305B>;IGNORE;<U30BB>
+<U30BC> <U30BB>;<U30BC>;IGNORE;<U30BB>
+<U305C> <U30BB>;<U305C>;IGNORE;<U30BB>
+<U30BD> <U30BD>;<U30BD>;IGNORE;<U30BD>
+<U305D> <U30BD>;<U305D>;IGNORE;<U30BD>
+<U30BE> <U30BD>;<U30BE>;IGNORE;<U30BD>
+<U305E> <U30BD>;<U305E>;IGNORE;<U30BD>
+<U30BF> <U30BF>;<U30BF>;IGNORE;<U30BF>
+<U305F> <U30BF>;<U305F>;IGNORE;<U30BF>
+<U30C0> <U30BF>;<U30C0>;IGNORE;<U30BF>
+<U3060> <U30BF>;<U3060>;IGNORE;<U30BF>
+<U30C1> <U30C1>;<U30C1>;IGNORE;<U30C1>
+<U3061> <U30C1>;<U3061>;IGNORE;<U30C1>
+<U30C2> <U30C1>;<U30C2>;IGNORE;<U30C1>
+<U3062> <U30C1>;<U3062>;IGNORE;<U30C1>
+<U30C3> <U30C3>;<U30C3>;IGNORE;<U30C3>
+<U3063> <U30C3>;<U3063>;IGNORE;<U30C3>
+<U30C4> <U30C3>;<U30C4>;IGNORE;<U30C3>
+<U3064> <U30C3>;<U3064>;IGNORE;<U30C3>
+<U30C5> <U30C3>;<U30C5>;IGNORE;<U30C3>
+<U3065> <U30C3>;<U3065>;IGNORE;<U30C3>
+<U30C6> <U30C6>;<U30C6>;IGNORE;<U30C6>
+<U3066> <U30C6>;<U3066>;IGNORE;<U30C6>
+<U30C7> <U30C6>;<U30C7>;IGNORE;<U30C6>
+<U3067> <U30C6>;<U3067>;IGNORE;<U30C6>
+<U30C8> <U30C8>;<U30C8>;IGNORE;<U30C8>
+<U3068> <U30C8>;<U3068>;IGNORE;<U30C8>
+<U30C9> <U30C8>;<U30C9>;IGNORE;<U30C8>
+<U3069> <U30C8>;<U3069>;IGNORE;<U30C8>
+<U30CA> <U30CA>;<U30CA>;IGNORE;<U30CA>
+<U306A> <U30CA>;<U306A>;IGNORE;<U30CA>
+<U30CB> <U30CB>;<U30CB>;IGNORE;<U30CB>
+<U306B> <U30CB>;<U306B>;IGNORE;<U30CB>
+<U30CC> <U30CC>;<U30CC>;IGNORE;<U30CC>
+<U306C> <U30CC>;<U306C>;IGNORE;<U30CC>
+<U30CD> <U30CD>;<U30CD>;IGNORE;<U30CD>
+<U306D> <U30CD>;<U306D>;IGNORE;<U30CD>
+<U30CE> <U30CE>;<U30CE>;IGNORE;<U30CE>
+<U306E> <U30CE>;<U306E>;IGNORE;<U30CE>
+<U30CF> <U30CF>;<U30CF>;IGNORE;<U30CF>
+<U306F> <U30CF>;<U306F>;IGNORE;<U30CF>
+<U30D0> <U30CF>;<U30D0>;IGNORE;<U30CF>
+<U3070> <U30CF>;<U3070>;IGNORE;<U30CF>
+<U30D1> <U30CF>;<U30D1>;IGNORE;<U30CF>
+<U3071> <U30CF>;<U3071>;IGNORE;<U30CF>
+<U30D2> <U30D2>;<U30D2>;IGNORE;<U30D2>
+<U3072> <U30D2>;<U3072>;IGNORE;<U30D2>
+<U30D3> <U30D2>;<U30D3>;IGNORE;<U30D2>
+<U3073> <U30D2>;<U3073>;IGNORE;<U30D2>
+<U30D4> <U30D2>;<U30D4>;IGNORE;<U30D2>
+<U3074> <U30D2>;<U3074>;IGNORE;<U30D2>
+<U30D5> <U30D5>;<U30D5>;IGNORE;<U30D5>
+<U3075> <U30D5>;<U3075>;IGNORE;<U30D5>
+<U30D6> <U30D5>;<U30D6>;IGNORE;<U30D5>
+<U3076> <U30D5>;<U3076>;IGNORE;<U30D5>
+<U30D7> <U30D5>;<U30D7>;IGNORE;<U30D5>
+<U3077> <U30D5>;<U3077>;IGNORE;<U30D5>
+<U30D8> <U30D8>;<U30D8>;IGNORE;<U30D8>
+<U3078> <U30D8>;<U3078>;IGNORE;<U30D8>
+<U30D9> <U30D8>;<U30D9>;IGNORE;<U30D8>
+<U3079> <U30D8>;<U3079>;IGNORE;<U30D8>
+<U30DA> <U30D8>;<U30DA>;IGNORE;<U30D8>
+<U307A> <U30D8>;<U307A>;IGNORE;<U30D8>
+<U30DB> <U30DB>;<U30DB>;IGNORE;<U30DB>
+<U307B> <U30DB>;<U307B>;IGNORE;<U30DB>
+<U30DC> <U30DB>;<U30DC>;IGNORE;<U30DB>
+<U307C> <U30DB>;<U307C>;IGNORE;<U30DB>
+<U30DD> <U30DB>;<U30DD>;IGNORE;<U30DB>
+<U307D> <U30DB>;<U307D>;IGNORE;<U30DB>
+<U30DE> <U30DE>;<U30DE>;IGNORE;<U30DE>
+<U307E> <U30DE>;<U307E>;IGNORE;<U30DE>
+<U30DF> <U30DF>;<U30DF>;IGNORE;<U30DF>
+<U307F> <U30DF>;<U307F>;IGNORE;<U30DF>
+<U30E0> <U30E0>;<U30E0>;IGNORE;<U30E0>
+<U3080> <U30E0>;<U3080>;IGNORE;<U30E0>
+<U30E1> <U30E1>;<U30E1>;IGNORE;<U30E1>
+<U3081> <U30E1>;<U3081>;IGNORE;<U30E1>
+<U30E2> <U30E2>;<U30E2>;IGNORE;<U30E2>
+<U3082> <U30E2>;<U3082>;IGNORE;<U30E2>
+<U30E3> <U30E3>;<U30E3>;IGNORE;<U30E3>
+<U3083> <U30E3>;<U3083>;IGNORE;<U30E3>
+<U30E4> <U30E3>;<U30E4>;IGNORE;<U30E3>
+<U3084> <U30E3>;<U3084>;IGNORE;<U30E3>
+<U30E5> <U30E5>;<U30E5>;IGNORE;<U30E5>
+<U3085> <U30E5>;<U3085>;IGNORE;<U30E5>
+<U30E6> <U30E5>;<U30E6>;IGNORE;<U30E5>
+<U3086> <U30E5>;<U3086>;IGNORE;<U30E5>
+<U30E7> <U30E7>;<U30E7>;IGNORE;<U30E7>
+<U3087> <U30E7>;<U3087>;IGNORE;<U30E7>
+<U30E8> <U30E7>;<U30E8>;IGNORE;<U30E7>
+<U3088> <U30E7>;<U3088>;IGNORE;<U30E7>
+<U30E9> <U30E9>;<U30E9>;IGNORE;<U30E9>
+<U3089> <U30E9>;<U3089>;IGNORE;<U30E9>
+<U30EA> <U30EA>;<U30EA>;IGNORE;<U30EA>
+<U308A> <U30EA>;<U308A>;IGNORE;<U30EA>
+<U30EB> <U30EB>;<U30EB>;IGNORE;<U30EB>
+<U308B> <U30EB>;<U308B>;IGNORE;<U30EB>
+<U30EC> <U30EC>;<U30EC>;IGNORE;<U30EC>
+<U308C> <U30EC>;<U308C>;IGNORE;<U30EC>
+<U30ED> <U30ED>;<U30ED>;IGNORE;<U30ED>
+<U308D> <U30ED>;<U308D>;IGNORE;<U30ED>
+<U30EE> <U30EE>;<U30EE>;IGNORE;<U30EE>
+<U308E> <U30EE>;<U308E>;IGNORE;<U30EE>
+<U30EF> <U30EE>;<U30EF>;IGNORE;<U30EE>
+<U308F> <U30EE>;<U308F>;IGNORE;<U30EE>
+<U30F0> <U30F0>;<U30F0>;IGNORE;<U30F0>
+<U3090> <U30F0>;<U3090>;IGNORE;<U30F0>
+<U30F1> <U30F1>;<U30F1>;IGNORE;<U30F1>
+<U3091> <U30F1>;<U3091>;IGNORE;<U30F1>
+<U30F2> <U30F2>;<U30F2>;IGNORE;<U30F2>
+<U3092> <U30F2>;<U3092>;IGNORE;<U30F2>
+<U30F3> <U30F3>;<U30F3>;IGNORE;<U30F3>
+<U3093> <U30F3>;<U3093>;IGNORE;<U30F3>
+
+order_end
+
diff --git a/ap/build/uClibc/extra/locale/collation/cy_GB b/ap/build/uClibc/extra/locale/collation/cy_GB
new file mode 100644
index 0000000..6cda676
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/cy_GB
@@ -0,0 +1,136 @@
+copy "iso14651_t1"
+
+% Welsh sorting order is:
+% a b c ch d dd e f ff g ng h i l ll m n o p ph r rh s t th u w y
+
+collating-symbol <c-h-cy>
+collating-element <C-H> from "<U0043><U0048>"
+collating-element <c-h> from "<U0063><U0068>"
+collating-element <C-h> from "<U0043><U0068>"
+collating-element <c-H> from "<U0063><U0048>"
+
+collating-symbol <d-d-cy>
+collating-element <D-D> from "<U0044><U0044>"
+collating-element <d-d> from "<U0064><U0064>"
+collating-element <D-d> from "<U0044><U0064>"
+collating-element <d-D> from "<U0064><U0044>"
+
+collating-symbol <f-f-cy>
+collating-element <F-F> from "<U0046><U0046>"
+collating-element <f-f> from "<U0066><U0066>"
+collating-element <F-f> from "<U0046><U0066>"
+collating-element <f-F> from "<U0066><U0046>"
+
+collating-symbol <n-g-cy>
+collating-element <N-G> from "<U004E><U0047>"
+collating-element <n-g> from "<U006E><U0067>"
+collating-element <N-g> from "<U004E><U0067>"
+collating-element <n-G> from "<U006E><U0047>"
+
+collating-symbol <l-l-cy>
+collating-element <L-L> from "<U004C><U004C>"
+collating-element <l-l> from "<U006C><U006C>"
+collating-element <L-l> from "<U004C><U006C>"
+collating-element <l-L> from "<U006C><U004C>"
+
+collating-symbol <p-h-cy>
+collating-element <P-H> from "<U0050><U0048>"
+collating-element <p-h> from "<U0070><U0068>"
+collating-element <P-h> from "<U0050><U0068>"
+collating-element <p-H> from "<U0070><U0048>"
+
+collating-symbol <r-h-cy>
+collating-element <R-H> from "<U0052><U0048>"
+collating-element <r-h> from "<U0072><U0068>"
+collating-element <R-h> from "<U0052><U0068>"
+collating-element <r-H> from "<U0072><U0048>"
+
+collating-symbol <t-h-cy>
+collating-element <T-H> from "<U0054><U0048>"
+collating-element <t-h> from "<U0074><U0068>"
+collating-element <T-h> from "<U0054><U0068>"
+collating-element <t-H> from "<U0074><U0048>"
+
+collating-symbol <CAP-MIN>
+collating-symbol <MIN-CAP>
+
+reorder-after <MIN>
+<MIN-CAP>
+reorder-after <CAP>
+<CAP-MIN>
+
+reorder-after <c>
+<c-h-cy>
+<d>
+<d-d-cy>
+reorder-after <f>
+<f-f-cy>
+<g>
+<n-g-cy>
+reorder-after <l>
+<l-l-cy>
+reorder-after <p>
+<p-h-cy>
+reorder-after <r>
+<r-h-cy>
+reorder-after <t>
+<t-h-cy>
+
+reorder-after <U0063>
+<c-h> <c-h-cy>;<PCT>;<MIN>;IGNORE
+<c-H> <c-h-cy>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U0043>
+<C-H> <c-h-cy>;<PCT>;<CAP>;IGNORE
+<C-h> <c-h-cy>;<PCT>;<CAP-MIN>;IGNORE
+
+reorder-after <U0064>
+<d-d> <d-d-cy>;<PCT>;<MIN>;IGNORE
+<d-D> <d-d-cy>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U0044>
+<D-D> <d-d-cy>;<PCT>;<CAP>;IGNORE
+<D-d> <d-d-cy>;<PCT>;<CAP-MIN>;IGNORE
+
+reorder-after <U0066>
+<f-f> <f-f-cy>;<PCT>;<MIN>;IGNORE
+<f-F> <f-f-cy>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U0046>
+<F-F> <f-f-cy>;<PCT>;<CAP>;IGNORE
+<F-f> <f-f-cy>;<PCT>;<CAP-MIN>;IGNORE
+
+reorder-after <U0067>
+<n-g> <n-g-cy>;<PCT>;<MIN>;IGNORE
+<n-G> <n-g-cy>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U0047>
+<N-G> <n-g-cy>;<PCT>;<CAP>;IGNORE
+<N-g> <n-g-cy>;<PCT>;<CAP-MIN>;IGNORE
+
+reorder-after <U006C>
+<l-l> <l-l-cy>;<PCT>;<MIN>;IGNORE
+<l-L> <l-l-cy>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U004C>
+<L-L> <l-l-cy>;<PCT>;<CAP>;IGNORE
+<L-l> <l-l-cy>;<PCT>;<CAP-MIN>;IGNORE
+
+reorder-after <U0070>
+<p-h> <p-h-cy>;<PCT>;<MIN>;IGNORE
+<p-H> <p-h-cy>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U0050>
+<P-H> <p-h-cy>;<PCT>;<CAP>;IGNORE
+<P-h> <p-h-cy>;<PCT>;<CAP-MIN>;IGNORE
+
+reorder-after <U0072>
+<r-h> <r-h-cy>;<PCT>;<MIN>;IGNORE
+<r-H> <r-h-cy>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U0052>
+<R-H> <r-h-cy>;<PCT>;<CAP>;IGNORE
+<R-h> <r-h-cy>;<PCT>;<CAP-MIN>;IGNORE
+
+reorder-after <U0074>
+<t-h> <t-h-cy>;<PCT>;<MIN>;IGNORE
+<t-H> <t-h-cy>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U0054>
+<T-H> <t-h-cy>;<PCT>;<CAP>;IGNORE
+<T-h> <t-h-cy>;<PCT>;<CAP-MIN>;IGNORE
+
+reorder-end
+
diff --git a/ap/build/uClibc/extra/locale/collation/da_DK b/ap/build/uClibc/extra/locale/collation/da_DK
new file mode 100644
index 0000000..83ea9da
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/da_DK
@@ -0,0 +1,2075 @@
+collating-element <A-A> from "<U0041><U0041>"
+collating-element <A-a> from "<U0041><U0061>"
+collating-element <a-A> from "<U0061><U0041>"
+collating-element <a-a> from "<U0061><U0061>"
+
+% Base collation scheme: 1994-03-22
+
+% Ordering algorithm:
+% 1. Spaces and hyphen (but not soft
+% hyphen) before punctuation
+% characters, punctuation characters
+% before numbers,
+% numbers before letters.
+% 2. Letters with diacritical marks are
+% members of equivalence classes
+% 3. A distinction is made with regards
+% to case as noted below.
+% 4. Special characters are ignored
+% when comparing letters, but then
+% they are considered
+% 5. The alphabets are sorted in order
+% of first appearance in ISO 10646:
+% Latin, Greek, Cyrillic, etc.
+%
+% According to Greek specifications,
+% the steps 2. and 3. above are reversed
+% for the Greek script
+
+% collating symbols
+
+% The collating symbol naming is
+% mostly taken from ISO 10646-1,
+% for example the case and accent
+% names are from this standard.
+
+collating-symbol <CAPITAL>
+collating-symbol <CAPITAL-SMALL>
+collating-symbol <SMALL-CAPITAL>
+collating-symbol <SMALL>
+
+% <CAPITAL-SMALL> and <SMALL-CAPITAL>
+% are for cases like Danish <U0041><U0061>
+% and Spanish <U0043><U0068> being treated
+% as one letter.
+
+% The <a8> ...... <z8> collating
+% symbols have defined weights as
+% the last character in a group of
+% Latin letters. They are used
+% to specify deltas by locales using
+% a locale as the default ordering
+% and by "replace-after" statements
+% specifying the changed placement
+% in an ordering of a character.
+
+collating-symbol <a8>
+collating-symbol <b8>
+collating-symbol <c8>
+collating-symbol <d8>
+collating-symbol <e8>
+collating-symbol <f8>
+collating-symbol <g8>
+collating-symbol <h8>
+collating-symbol <i8>
+collating-symbol <j8>
+collating-symbol <k8>
+collating-symbol <l8>
+collating-symbol <m8>
+collating-symbol <n8>
+collating-symbol <o8>
+collating-symbol <p8>
+collating-symbol <q8>
+collating-symbol <r8>
+collating-symbol <s8>
+collating-symbol <t8>
+collating-symbol <u8>
+collating-symbol <v8>
+collating-symbol <w8>
+collating-symbol <x8>
+collating-symbol <y8>
+collating-symbol <z8>
+
+collating-symbol <NONE>
+collating-symbol <ACUTE>
+collating-symbol <ACUTE+DOT>
+collating-symbol <GRAVE>
+collating-symbol <DOUBLE-GRAVE>
+collating-symbol <BREVE>
+collating-symbol <BREVE+ACUTE>
+collating-symbol <BREVE+GRAVE>
+collating-symbol <BREVE+MACRON>
+collating-symbol <BREVE+HOOK>
+collating-symbol <BREVE+TILDE>
+collating-symbol <BREVE+DOT-BELOW>
+collating-symbol <BREVE-BELOW>
+collating-symbol <INVERTED-BREVE>
+collating-symbol <CIRCUMFLEX>
+collating-symbol <CIRCUMFLEX+ACUTE>
+collating-symbol <CIRCUMFLEX+GRAVE>
+collating-symbol <CIRCUMFLEX+HOOK>
+collating-symbol <CIRCUMFLEX+TILDE>
+collating-symbol <CIRCUMFLEX+DOT-BELOW>
+collating-symbol <CARON>
+collating-symbol <CARON+DIAERESIS>
+collating-symbol <CARON+DOT>
+collating-symbol <RING>
+collating-symbol <RING+ACUTE>
+collating-symbol <RING-BELOW>
+collating-symbol <DIAERESIS>
+collating-symbol <DIAERESIS+MACRON>
+collating-symbol <DIAERESIS+ACUTE>
+collating-symbol <DIAERESIS+GRAVE>
+collating-symbol <DIAERESIS+CARON>
+collating-symbol <DOUBLE-ACUTE>
+collating-symbol <HOOK>
+collating-symbol <TILDE>
+collating-symbol <TILDE+ACUTE>
+collating-symbol <TILDE+DIAERESIS>
+collating-symbol <TILDE-BELOW>
+collating-symbol <DOT>
+collating-symbol <DOT-BELOW>
+collating-symbol <DOT+DOT-BELOW>
+collating-symbol <STROKE>
+collating-symbol <STROKE+ACUTE>
+collating-symbol <CEDILLA>
+collating-symbol <CEDILLA+ACUTE>
+collating-symbol <CEDILLA+GRAVE>
+collating-symbol <CEDILLA+BREVE>
+collating-symbol <OGONEK>
+collating-symbol <OGONEK+MACRON>
+collating-symbol <MACRON>
+collating-symbol <MACRON+ACUTE>
+collating-symbol <MACRON+GRAVE>
+collating-symbol <MACRON+DIAERESIS>
+collating-symbol <MACRON+DIAERESIS-BELOW>
+collating-symbol <MACRON+DOT>
+collating-symbol <MACRON+DOT-BELOW>
+collating-symbol <MACRON+CIRCUMFLEX>
+collating-symbol <LINE-BELOW>
+collating-symbol <HORN>
+collating-symbol <HORN+ACUTE>
+collating-symbol <HORN+GRAVE>
+collating-symbol <HORN+HOOK>
+collating-symbol <HORN+TILDE>
+collating-symbol <HORN+DOT-BELOW>
+collating-symbol <PRECEDED-BY-APOSTROPHE>
+collating-symbol <GREEK>
+collating-symbol <TONOS>
+collating-symbol <DIALYTICA>
+collating-symbol <DIALYTICA+TONOS>
+collating-symbol <CYRILLIC>
+collating-symbol <HIRAGANA>
+collating-symbol <KATAKANA>
+collating-symbol <SPECIAL>
+
+% letter;accent;case;specials
+
+order_start forward;backward;forward;position
+
+% <CAPITAL> or <SMALL> letters first:
+
+<CAPITAL>
+<CAPITAL-SMALL>
+<SMALL-CAPITAL>
+<SMALL>
+
+% Accents:
+
+<NONE>
+<ACUTE>
+<ACUTE+DOT>
+<GRAVE>
+<DOUBLE-GRAVE>
+<BREVE>
+<BREVE+ACUTE>
+<BREVE+GRAVE>
+<BREVE+MACRON>
+<BREVE+HOOK>
+<BREVE+TILDE>
+<BREVE+DOT-BELOW>
+<BREVE-BELOW>
+<INVERTED-BREVE>
+<CIRCUMFLEX>
+<CIRCUMFLEX+ACUTE>
+<CIRCUMFLEX+GRAVE>
+<CIRCUMFLEX+HOOK>
+<CIRCUMFLEX+TILDE>
+<CIRCUMFLEX+DOT-BELOW>
+<CARON>
+<CARON+DIAERESIS>
+<CARON+DOT>
+<RING>
+<RING+ACUTE>
+<RING-BELOW>
+<DIAERESIS>
+<DIAERESIS+MACRON>
+<DIAERESIS+ACUTE>
+<DIAERESIS+GRAVE>
+<DIAERESIS+CARON>
+<DOUBLE-ACUTE>
+<HOOK>
+<TILDE>
+<TILDE+ACUTE>
+<TILDE+DIAERESIS>
+<TILDE-BELOW>
+<DOT>
+<DOT-BELOW>
+<DOT+DOT-BELOW>
+<STROKE>
+<STROKE+ACUTE>
+<CEDILLA>
+<CEDILLA+ACUTE>
+<CEDILLA+GRAVE>
+<CEDILLA+BREVE>
+<OGONEK>
+<OGONEK+MACRON>
+<MACRON>
+<MACRON+ACUTE>
+<MACRON+GRAVE>
+<MACRON+DIAERESIS>
+<MACRON+DIAERESIS-BELOW>
+<MACRON+DOT>
+<MACRON+DOT-BELOW>
+<MACRON+CIRCUMFLEX>
+<LINE-BELOW>
+<HORN>
+<HORN+ACUTE>
+<HORN+GRAVE>
+<HORN+HOOK>
+<HORN+TILDE>
+<HORN+DOT-BELOW>
+<PRECEDED-BY-APOSTROPHE>
+<GREEK>
+<TONOS>
+<DIALYTICA>
+<DIALYTICA+TONOS>
+<CYRILLIC>
+<HIRAGANA>
+<KATAKANA>
+<SPECIAL>
+
+<U00A0> <U00A0>;<U00A0>;<U00A0>;IGNORE
+<U0020> <U0020>;<U0020>;IGNORE;IGNORE
+<U002D> <U0020>;<U002D>;IGNORE;IGNORE
+<U002F> <U0020>;<U002F>;IGNORE;IGNORE
+<U0009> IGNORE;IGNORE;IGNORE;<U0009>
+<U000B> IGNORE;IGNORE;IGNORE;<U000B>
+<U000D> IGNORE;IGNORE;IGNORE;<U000D>
+<U000A> IGNORE;IGNORE;IGNORE;<U000A>
+<U000C> IGNORE;IGNORE;IGNORE;<U000C>
+<U005F> IGNORE;IGNORE;IGNORE;<U005F>
+<U00AF> IGNORE;IGNORE;IGNORE;<U00AF>
+<U00AD> IGNORE;IGNORE;IGNORE;<U00AD>
+<U002C> IGNORE;IGNORE;IGNORE;<U002C>
+<U003B> IGNORE;IGNORE;IGNORE;<U003B>
+<U003A> IGNORE;IGNORE;IGNORE;<U003A>
+<U0021> IGNORE;IGNORE;IGNORE;<U0021>
+<U00A1> IGNORE;IGNORE;IGNORE;<U00A1>
+<U003F> IGNORE;IGNORE;IGNORE;<U003F>
+<U00BF> IGNORE;IGNORE;IGNORE;<U00BF>
+<U002E> IGNORE;IGNORE;IGNORE;<U002E>
+<U00B4> IGNORE;IGNORE;IGNORE;<U00B4>
+<U0060> IGNORE;IGNORE;IGNORE;<U0060>
+<U005E> IGNORE;IGNORE;IGNORE;<U005E>
+<U00A8> IGNORE;IGNORE;IGNORE;<U00A8>
+<U007E> IGNORE;IGNORE;IGNORE;<U007E>
+<U00B7> IGNORE;IGNORE;IGNORE;<U00B7>
+<U00B8> IGNORE;IGNORE;IGNORE;<U00B8>
+<U0027> IGNORE;IGNORE;IGNORE;<U0027>
+<U2018> IGNORE;IGNORE;IGNORE;<U2018>
+<U2019> IGNORE;IGNORE;IGNORE;<U2019>
+<U0022> IGNORE;IGNORE;IGNORE;<U0022>
+<U201C> IGNORE;IGNORE;IGNORE;<U201C>
+<U201D> IGNORE;IGNORE;IGNORE;<U201D>
+<U00AB> IGNORE;IGNORE;IGNORE;<U00AB>
+<U00BB> IGNORE;IGNORE;IGNORE;<U00BB>
+<U0028> IGNORE;IGNORE;IGNORE;<U0028>
+<U207D> IGNORE;IGNORE;IGNORE;<U207D>
+<U0029> IGNORE;IGNORE;IGNORE;<U0029>
+<U207E> IGNORE;IGNORE;IGNORE;<U207E>
+<U005B> IGNORE;IGNORE;IGNORE;<U005B>
+<U005D> IGNORE;IGNORE;IGNORE;<U005D>
+<U007B> IGNORE;IGNORE;IGNORE;<U007B>
+<U007D> IGNORE;IGNORE;IGNORE;<U007D>
+<U00A7> IGNORE;IGNORE;IGNORE;<U00A7>
+<U00B6> IGNORE;IGNORE;IGNORE;<U00B6>
+<U00A9> IGNORE;IGNORE;IGNORE;<U00A9>
+<U00AE> IGNORE;IGNORE;IGNORE;<U00AE>
+<U0040> IGNORE;IGNORE;IGNORE;<U0040>
+<U00A4> IGNORE;IGNORE;IGNORE;<U00A4>
+<U00A2> IGNORE;IGNORE;IGNORE;<U00A2>
+<U0024> IGNORE;IGNORE;IGNORE;<U0024>
+<U00A3> IGNORE;IGNORE;IGNORE;<U00A3>
+<U00A5> IGNORE;IGNORE;IGNORE;<U00A5>
+<U002A> IGNORE;IGNORE;IGNORE;<U002A>
+<U005C> IGNORE;IGNORE;IGNORE;<U005C>
+<U0026> IGNORE;IGNORE;IGNORE;<U0026>
+<U0023> IGNORE;IGNORE;IGNORE;<U0023>
+<U0025> IGNORE;IGNORE;IGNORE;<U0025>
+<U207B> IGNORE;IGNORE;IGNORE;<U207B>
+<U002B> IGNORE;IGNORE;IGNORE;<U002B>
+<U207A> IGNORE;IGNORE;IGNORE;<U207A>
+<U00B1> IGNORE;IGNORE;IGNORE;<U00B1>
+<U00F7> IGNORE;IGNORE;IGNORE;<U00F7>
+<U00D7> IGNORE;IGNORE;IGNORE;<U00D7>
+<U2260> IGNORE;IGNORE;IGNORE;<U2260>
+<U003C> IGNORE;IGNORE;IGNORE;<U003C>
+<U2264> IGNORE;IGNORE;IGNORE;<U2264>
+<U003D> IGNORE;IGNORE;IGNORE;<U003D>
+<U2265> IGNORE;IGNORE;IGNORE;<U2265>
+<U003E> IGNORE;IGNORE;IGNORE;<U003E>
+<U00AC> IGNORE;IGNORE;IGNORE;<U00AC>
+<U007C> IGNORE;IGNORE;IGNORE;<U007C>
+<U00A6> IGNORE;IGNORE;IGNORE;<U00A6>
+<U00B0> IGNORE;IGNORE;IGNORE;<U00B0>
+<U00B5> IGNORE;IGNORE;IGNORE;<U00B5>
+<U02C7> IGNORE;IGNORE;IGNORE;<U02C7>
+<U02D8> IGNORE;IGNORE;IGNORE;<U02D8>
+<U02D9> IGNORE;IGNORE;IGNORE;<U02D9>
+<U02DA> IGNORE;IGNORE;IGNORE;<U02DA>
+<U02DB> IGNORE;IGNORE;IGNORE;<U02DB>
+<U02DC> IGNORE;IGNORE;IGNORE;<U02DC>
+<U02DD> IGNORE;IGNORE;IGNORE;<U02DD>
+<U0374> IGNORE;IGNORE;IGNORE;<U0374>
+<U0375> IGNORE;IGNORE;IGNORE;<U0375>
+<U037A> IGNORE;IGNORE;IGNORE;<U037A>
+<U037E> IGNORE;IGNORE;IGNORE;<U037E>
+<U0384> IGNORE;IGNORE;IGNORE;<U0384>
+<U0385> IGNORE;IGNORE;IGNORE;<U0385>
+<U0387> IGNORE;IGNORE;IGNORE;<U0387>
+<U03D0> IGNORE;IGNORE;IGNORE;<U03D0>
+<U1FBF> IGNORE;IGNORE;IGNORE;<U1FBF>
+<U1FC0> IGNORE;IGNORE;IGNORE;<U1FC0>
+<U1FC1> IGNORE;IGNORE;IGNORE;<U1FC1>
+<U1FCD> IGNORE;IGNORE;IGNORE;<U1FCD>
+<U1FCE> IGNORE;IGNORE;IGNORE;<U1FCE>
+<U1FCF> IGNORE;IGNORE;IGNORE;<U1FCF>
+<U1FDD> IGNORE;IGNORE;IGNORE;<U1FDD>
+<U1FDE> IGNORE;IGNORE;IGNORE;<U1FDE>
+<U1FDF> IGNORE;IGNORE;IGNORE;<U1FDF>
+<U1FED> IGNORE;IGNORE;IGNORE;<U1FED>
+<U1FEF> IGNORE;IGNORE;IGNORE;<U1FEF>
+<U1FFE> IGNORE;IGNORE;IGNORE;<U1FFE>
+<U2002> IGNORE;IGNORE;IGNORE;<U2002>
+<U2003> IGNORE;IGNORE;IGNORE;<U2003>
+<U2004> IGNORE;IGNORE;IGNORE;<U2004>
+<U2005> IGNORE;IGNORE;IGNORE;<U2005>
+<U2006> IGNORE;IGNORE;IGNORE;<U2006>
+<U200E> IGNORE;IGNORE;IGNORE;<U200E>
+<U200F> IGNORE;IGNORE;IGNORE;<U200F>
+<U2009> IGNORE;IGNORE;IGNORE;<U2009>
+<U200A> IGNORE;IGNORE;IGNORE;<U200A>
+<U2010> IGNORE;IGNORE;IGNORE;<U2010>
+<U2013> IGNORE;IGNORE;IGNORE;<U2013>
+<U2014> IGNORE;IGNORE;IGNORE;<U2014>
+<U2015> IGNORE;IGNORE;IGNORE;<U2015>
+<U2016> IGNORE;IGNORE;IGNORE;<U2016>
+<U2017> IGNORE;IGNORE;IGNORE;<U2017>
+<U201A> IGNORE;IGNORE;IGNORE;<U201A>
+<U201B> IGNORE;IGNORE;IGNORE;<U201B>
+<U201E> IGNORE;IGNORE;IGNORE;<U201E>
+<U201F> IGNORE;IGNORE;IGNORE;<U201F>
+<U2020> IGNORE;IGNORE;IGNORE;<U2020>
+<U2021> IGNORE;IGNORE;IGNORE;<U2021>
+<U2219> IGNORE;IGNORE;IGNORE;<U2219>
+<U2025> IGNORE;IGNORE;IGNORE;<U2025>
+<U2026> IGNORE;IGNORE;IGNORE;<U2026>
+<U2030> IGNORE;IGNORE;IGNORE;<U2030>
+<U2032> IGNORE;IGNORE;IGNORE;<U2032>
+<U2033> IGNORE;IGNORE;IGNORE;<U2033>
+<U2034> IGNORE;IGNORE;IGNORE;<U2034>
+<U2035> IGNORE;IGNORE;IGNORE;<U2035>
+<U2036> IGNORE;IGNORE;IGNORE;<U2036>
+<U2037> IGNORE;IGNORE;IGNORE;<U2037>
+<U2038> IGNORE;IGNORE;IGNORE;<U2038>
+<U2039> IGNORE;IGNORE;IGNORE;<U2039>
+<U203A> IGNORE;IGNORE;IGNORE;<U203A>
+<U203B> IGNORE;IGNORE;IGNORE;<U203B>
+<U203C> IGNORE;IGNORE;IGNORE;<U203C>
+<U203E> IGNORE;IGNORE;IGNORE;<U203E>
+<U207C> IGNORE;IGNORE;IGNORE;<U207C>
+<U2080> IGNORE;IGNORE;IGNORE;<U2080>
+<U2081> IGNORE;IGNORE;IGNORE;<U2081>
+<U2082> IGNORE;IGNORE;IGNORE;<U2082>
+<U2083> IGNORE;IGNORE;IGNORE;<U2083>
+<U2084> IGNORE;IGNORE;IGNORE;<U2084>
+<U2085> IGNORE;IGNORE;IGNORE;<U2085>
+<U2086> IGNORE;IGNORE;IGNORE;<U2086>
+<U2087> IGNORE;IGNORE;IGNORE;<U2087>
+<U2088> IGNORE;IGNORE;IGNORE;<U2088>
+<U2089> IGNORE;IGNORE;IGNORE;<U2089>
+<U208A> IGNORE;IGNORE;IGNORE;<U208A>
+<U208B> IGNORE;IGNORE;IGNORE;<U208B>
+<U208C> IGNORE;IGNORE;IGNORE;<U208C>
+<U208D> IGNORE;IGNORE;IGNORE;<U208D>
+<U208E> IGNORE;IGNORE;IGNORE;<U208E>
+<U20A3> IGNORE;IGNORE;IGNORE;<U20A3>
+<U20A4> IGNORE;IGNORE;IGNORE;<U20A4>
+<U20A7> IGNORE;IGNORE;IGNORE;<U20A7>
+<U20A9> IGNORE;IGNORE;IGNORE;<U20A9>
+<U2103> IGNORE;IGNORE;IGNORE;<U2103>
+<U2105> IGNORE;IGNORE;IGNORE;<U2105>
+<U2109> IGNORE;IGNORE;IGNORE;<U2109>
+<U2116> IGNORE;IGNORE;IGNORE;<U2116>
+<U2117> IGNORE;IGNORE;IGNORE;<U2117>
+<U211E> IGNORE;IGNORE;IGNORE;<U211E>
+<U2120> IGNORE;IGNORE;IGNORE;<U2120>
+<U2122> IGNORE;IGNORE;IGNORE;<U2122>
+<U2126> IGNORE;IGNORE;IGNORE;<U2126>
+<U212B> IGNORE;IGNORE;IGNORE;<U212B>
+<U2153> IGNORE;IGNORE;IGNORE;<U2153>
+<U2154> IGNORE;IGNORE;IGNORE;<U2154>
+<U2155> IGNORE;IGNORE;IGNORE;<U2155>
+<U2156> IGNORE;IGNORE;IGNORE;<U2156>
+<U2157> IGNORE;IGNORE;IGNORE;<U2157>
+<U2158> IGNORE;IGNORE;IGNORE;<U2158>
+<U2159> IGNORE;IGNORE;IGNORE;<U2159>
+<U215A> IGNORE;IGNORE;IGNORE;<U215A>
+<U2160> IGNORE;IGNORE;IGNORE;<U2160>
+<U2161> IGNORE;IGNORE;IGNORE;<U2161>
+<U2162> IGNORE;IGNORE;IGNORE;<U2162>
+<U2163> IGNORE;IGNORE;IGNORE;<U2163>
+<U2164> IGNORE;IGNORE;IGNORE;<U2164>
+<U2165> IGNORE;IGNORE;IGNORE;<U2165>
+<U2166> IGNORE;IGNORE;IGNORE;<U2166>
+<U2167> IGNORE;IGNORE;IGNORE;<U2167>
+<U2168> IGNORE;IGNORE;IGNORE;<U2168>
+<U2169> IGNORE;IGNORE;IGNORE;<U2169>
+<U216A> IGNORE;IGNORE;IGNORE;<U216A>
+<U216B> IGNORE;IGNORE;IGNORE;<U216B>
+<U216C> IGNORE;IGNORE;IGNORE;<U216C>
+<U216D> IGNORE;IGNORE;IGNORE;<U216D>
+<U216E> IGNORE;IGNORE;IGNORE;<U216E>
+<U216F> IGNORE;IGNORE;IGNORE;<U216F>
+<U2170> IGNORE;IGNORE;IGNORE;<U2170>
+<U2171> IGNORE;IGNORE;IGNORE;<U2171>
+<U2172> IGNORE;IGNORE;IGNORE;<U2172>
+<U2173> IGNORE;IGNORE;IGNORE;<U2173>
+<U2174> IGNORE;IGNORE;IGNORE;<U2174>
+<U2175> IGNORE;IGNORE;IGNORE;<U2175>
+<U2176> IGNORE;IGNORE;IGNORE;<U2176>
+<U2177> IGNORE;IGNORE;IGNORE;<U2177>
+<U2178> IGNORE;IGNORE;IGNORE;<U2178>
+<U2179> IGNORE;IGNORE;IGNORE;<U2179>
+<U217A> IGNORE;IGNORE;IGNORE;<U217A>
+<U217B> IGNORE;IGNORE;IGNORE;<U217B>
+<U217C> IGNORE;IGNORE;IGNORE;<U217C>
+<U217D> IGNORE;IGNORE;IGNORE;<U217D>
+<U217E> IGNORE;IGNORE;IGNORE;<U217E>
+<U217F> IGNORE;IGNORE;IGNORE;<U217F>
+<U2180> IGNORE;IGNORE;IGNORE;<U2180>
+<U2181> IGNORE;IGNORE;IGNORE;<U2181>
+<U2182> IGNORE;IGNORE;IGNORE;<U2182>
+<U2191> IGNORE;IGNORE;IGNORE;<U2191>
+<U2193> IGNORE;IGNORE;IGNORE;<U2193>
+<U2194> IGNORE;IGNORE;IGNORE;<U2194>
+<U2195> IGNORE;IGNORE;IGNORE;<U2195>
+<U2196> IGNORE;IGNORE;IGNORE;<U2196>
+<U2197> IGNORE;IGNORE;IGNORE;<U2197>
+<U2198> IGNORE;IGNORE;IGNORE;<U2198>
+<U2199> IGNORE;IGNORE;IGNORE;<U2199>
+<U21A8> IGNORE;IGNORE;IGNORE;<U21A8>
+<U21C0> IGNORE;IGNORE;IGNORE;<U21C0>
+<U21D0> IGNORE;IGNORE;IGNORE;<U21D0>
+<U21D2> IGNORE;IGNORE;IGNORE;<U21D2>
+<U21D4> IGNORE;IGNORE;IGNORE;<U21D4>
+<U2200> IGNORE;IGNORE;IGNORE;<U2200>
+<U2202> IGNORE;IGNORE;IGNORE;<U2202>
+<U2203> IGNORE;IGNORE;IGNORE;<U2203>
+<U2205> IGNORE;IGNORE;IGNORE;<U2205>
+<U2206> IGNORE;IGNORE;IGNORE;<U2206>
+<U2207> IGNORE;IGNORE;IGNORE;<U2207>
+<U2208> IGNORE;IGNORE;IGNORE;<U2208>
+<U220B> IGNORE;IGNORE;IGNORE;<U220B>
+<U220F> IGNORE;IGNORE;IGNORE;<U220F>
+<U2211> IGNORE;IGNORE;IGNORE;<U2211>
+<U2212> IGNORE;IGNORE;IGNORE;<U2212>
+<U2213> IGNORE;IGNORE;IGNORE;<U2213>
+<U2214> IGNORE;IGNORE;IGNORE;<U2214>
+<U2044> IGNORE;IGNORE;IGNORE;<U2044>
+<U2217> IGNORE;IGNORE;IGNORE;<U2217>
+<U2218> IGNORE;IGNORE;IGNORE;<U2218>
+<U2022> IGNORE;IGNORE;IGNORE;<U2022>
+<U221A> IGNORE;IGNORE;IGNORE;<U221A>
+<U221D> IGNORE;IGNORE;IGNORE;<U221D>
+<U221E> IGNORE;IGNORE;IGNORE;<U221E>
+<U221F> IGNORE;IGNORE;IGNORE;<U221F>
+<U2220> IGNORE;IGNORE;IGNORE;<U2220>
+<U2225> IGNORE;IGNORE;IGNORE;<U2225>
+<U2227> IGNORE;IGNORE;IGNORE;<U2227>
+<U2228> IGNORE;IGNORE;IGNORE;<U2228>
+<U2229> IGNORE;IGNORE;IGNORE;<U2229>
+<U222A> IGNORE;IGNORE;IGNORE;<U222A>
+<U222B> IGNORE;IGNORE;IGNORE;<U222B>
+<U222C> IGNORE;IGNORE;IGNORE;<U222C>
+<U222E> IGNORE;IGNORE;IGNORE;<U222E>
+<U2234> IGNORE;IGNORE;IGNORE;<U2234>
+<U2235> IGNORE;IGNORE;IGNORE;<U2235>
+<U2236> IGNORE;IGNORE;IGNORE;<U2236>
+<U2237> IGNORE;IGNORE;IGNORE;<U2237>
+<U223C> IGNORE;IGNORE;IGNORE;<U223C>
+<U223E> IGNORE;IGNORE;IGNORE;<U223E>
+<U2243> IGNORE;IGNORE;IGNORE;<U2243>
+<U2245> IGNORE;IGNORE;IGNORE;<U2245>
+<U2248> IGNORE;IGNORE;IGNORE;<U2248>
+<U224C> IGNORE;IGNORE;IGNORE;<U224C>
+<U2253> IGNORE;IGNORE;IGNORE;<U2253>
+<U2261> IGNORE;IGNORE;IGNORE;<U2261>
+<U226A> IGNORE;IGNORE;IGNORE;<U226A>
+<U226B> IGNORE;IGNORE;IGNORE;<U226B>
+<U226E> IGNORE;IGNORE;IGNORE;<U226E>
+<U226F> IGNORE;IGNORE;IGNORE;<U226F>
+<U2282> IGNORE;IGNORE;IGNORE;<U2282>
+<U2283> IGNORE;IGNORE;IGNORE;<U2283>
+<U2286> IGNORE;IGNORE;IGNORE;<U2286>
+<U2287> IGNORE;IGNORE;IGNORE;<U2287>
+<U2299> IGNORE;IGNORE;IGNORE;<U2299>
+<U229A> IGNORE;IGNORE;IGNORE;<U229A>
+<U22A5> IGNORE;IGNORE;IGNORE;<U22A5>
+<U22C5> IGNORE;IGNORE;IGNORE;<U22C5>
+<U22EE> IGNORE;IGNORE;IGNORE;<U22EE>
+<U2302> IGNORE;IGNORE;IGNORE;<U2302>
+<U2308> IGNORE;IGNORE;IGNORE;<U2308>
+<U2309> IGNORE;IGNORE;IGNORE;<U2309>
+<U230A> IGNORE;IGNORE;IGNORE;<U230A>
+<U230B> IGNORE;IGNORE;IGNORE;<U230B>
+<U2310> IGNORE;IGNORE;IGNORE;<U2310>
+<U2312> IGNORE;IGNORE;IGNORE;<U2312>
+<U2315> IGNORE;IGNORE;IGNORE;<U2315>
+<U2320> IGNORE;IGNORE;IGNORE;<U2320>
+<U2321> IGNORE;IGNORE;IGNORE;<U2321>
+<U2423> IGNORE;IGNORE;IGNORE;<U2423>
+<U2440> IGNORE;IGNORE;IGNORE;<U2440>
+<U2441> IGNORE;IGNORE;IGNORE;<U2441>
+<U2442> IGNORE;IGNORE;IGNORE;<U2442>
+<U2443> IGNORE;IGNORE;IGNORE;<U2443>
+<U2446> IGNORE;IGNORE;IGNORE;<U2446>
+<U2447> IGNORE;IGNORE;IGNORE;<U2447>
+<U2448> IGNORE;IGNORE;IGNORE;<U2448>
+<U2449> IGNORE;IGNORE;IGNORE;<U2449>
+<U2460> IGNORE;IGNORE;IGNORE;<U2460>
+<U2461> IGNORE;IGNORE;IGNORE;<U2461>
+<U2462> IGNORE;IGNORE;IGNORE;<U2462>
+<U2463> IGNORE;IGNORE;IGNORE;<U2463>
+<U2464> IGNORE;IGNORE;IGNORE;<U2464>
+<U2465> IGNORE;IGNORE;IGNORE;<U2465>
+<U2466> IGNORE;IGNORE;IGNORE;<U2466>
+<U2467> IGNORE;IGNORE;IGNORE;<U2467>
+<U2468> IGNORE;IGNORE;IGNORE;<U2468>
+<U2469> IGNORE;IGNORE;IGNORE;<U2469>
+<U246A> IGNORE;IGNORE;IGNORE;<U246A>
+<U246B> IGNORE;IGNORE;IGNORE;<U246B>
+<U246C> IGNORE;IGNORE;IGNORE;<U246C>
+<U246D> IGNORE;IGNORE;IGNORE;<U246D>
+<U246E> IGNORE;IGNORE;IGNORE;<U246E>
+<U246F> IGNORE;IGNORE;IGNORE;<U246F>
+<U2470> IGNORE;IGNORE;IGNORE;<U2470>
+<U2471> IGNORE;IGNORE;IGNORE;<U2471>
+<U2472> IGNORE;IGNORE;IGNORE;<U2472>
+<U2473> IGNORE;IGNORE;IGNORE;<U2473>
+<U2474> IGNORE;IGNORE;IGNORE;<U2474>
+<U2475> IGNORE;IGNORE;IGNORE;<U2475>
+<U2476> IGNORE;IGNORE;IGNORE;<U2476>
+<U2477> IGNORE;IGNORE;IGNORE;<U2477>
+<U2478> IGNORE;IGNORE;IGNORE;<U2478>
+<U2479> IGNORE;IGNORE;IGNORE;<U2479>
+<U247A> IGNORE;IGNORE;IGNORE;<U247A>
+<U247B> IGNORE;IGNORE;IGNORE;<U247B>
+<U247C> IGNORE;IGNORE;IGNORE;<U247C>
+<U247D> IGNORE;IGNORE;IGNORE;<U247D>
+<U247E> IGNORE;IGNORE;IGNORE;<U247E>
+<U247F> IGNORE;IGNORE;IGNORE;<U247F>
+<U2480> IGNORE;IGNORE;IGNORE;<U2480>
+<U2481> IGNORE;IGNORE;IGNORE;<U2481>
+<U2482> IGNORE;IGNORE;IGNORE;<U2482>
+<U2483> IGNORE;IGNORE;IGNORE;<U2483>
+<U2484> IGNORE;IGNORE;IGNORE;<U2484>
+<U2485> IGNORE;IGNORE;IGNORE;<U2485>
+<U2486> IGNORE;IGNORE;IGNORE;<U2486>
+<U2487> IGNORE;IGNORE;IGNORE;<U2487>
+<U2488> IGNORE;IGNORE;IGNORE;<U2488>
+<U2489> IGNORE;IGNORE;IGNORE;<U2489>
+<U248A> IGNORE;IGNORE;IGNORE;<U248A>
+<U248B> IGNORE;IGNORE;IGNORE;<U248B>
+<U248C> IGNORE;IGNORE;IGNORE;<U248C>
+<U248D> IGNORE;IGNORE;IGNORE;<U248D>
+<U248E> IGNORE;IGNORE;IGNORE;<U248E>
+<U248F> IGNORE;IGNORE;IGNORE;<U248F>
+<U2490> IGNORE;IGNORE;IGNORE;<U2490>
+<U2491> IGNORE;IGNORE;IGNORE;<U2491>
+<U2492> IGNORE;IGNORE;IGNORE;<U2492>
+<U2493> IGNORE;IGNORE;IGNORE;<U2493>
+<U2494> IGNORE;IGNORE;IGNORE;<U2494>
+<U2495> IGNORE;IGNORE;IGNORE;<U2495>
+<U2496> IGNORE;IGNORE;IGNORE;<U2496>
+<U2497> IGNORE;IGNORE;IGNORE;<U2497>
+<U2498> IGNORE;IGNORE;IGNORE;<U2498>
+<U2499> IGNORE;IGNORE;IGNORE;<U2499>
+<U249A> IGNORE;IGNORE;IGNORE;<U249A>
+<U249B> IGNORE;IGNORE;IGNORE;<U249B>
+<U24EA> IGNORE;IGNORE;IGNORE;<U24EA>
+<U2500> IGNORE;IGNORE;IGNORE;<U2500>
+<U2550> IGNORE;IGNORE;IGNORE;<U2550>
+<U2502> IGNORE;IGNORE;IGNORE;<U2502>
+<U2551> IGNORE;IGNORE;IGNORE;<U2551>
+<U2504> IGNORE;IGNORE;IGNORE;<U2504>
+<U2505> IGNORE;IGNORE;IGNORE;<U2505>
+<U2506> IGNORE;IGNORE;IGNORE;<U2506>
+<U2507> IGNORE;IGNORE;IGNORE;<U2507>
+<U2508> IGNORE;IGNORE;IGNORE;<U2508>
+<U2509> IGNORE;IGNORE;IGNORE;<U2509>
+<U250A> IGNORE;IGNORE;IGNORE;<U250A>
+<U250B> IGNORE;IGNORE;IGNORE;<U250B>
+<U250C> IGNORE;IGNORE;IGNORE;<U250C>
+<U2552> IGNORE;IGNORE;IGNORE;<U2552>
+<U2553> IGNORE;IGNORE;IGNORE;<U2553>
+<U2554> IGNORE;IGNORE;IGNORE;<U2554>
+<U2510> IGNORE;IGNORE;IGNORE;<U2510>
+<U2555> IGNORE;IGNORE;IGNORE;<U2555>
+<U2556> IGNORE;IGNORE;IGNORE;<U2556>
+<U2557> IGNORE;IGNORE;IGNORE;<U2557>
+<U2514> IGNORE;IGNORE;IGNORE;<U2514>
+<U2558> IGNORE;IGNORE;IGNORE;<U2558>
+<U2559> IGNORE;IGNORE;IGNORE;<U2559>
+<U255A> IGNORE;IGNORE;IGNORE;<U255A>
+<U2518> IGNORE;IGNORE;IGNORE;<U2518>
+<U255B> IGNORE;IGNORE;IGNORE;<U255B>
+<U255C> IGNORE;IGNORE;IGNORE;<U255C>
+<U255D> IGNORE;IGNORE;IGNORE;<U255D>
+<U251C> IGNORE;IGNORE;IGNORE;<U251C>
+<U255E> IGNORE;IGNORE;IGNORE;<U255E>
+<U251E> IGNORE;IGNORE;IGNORE;<U251E>
+<U251F> IGNORE;IGNORE;IGNORE;<U251F>
+<U255F> IGNORE;IGNORE;IGNORE;<U255F>
+<U2521> IGNORE;IGNORE;IGNORE;<U2521>
+<U2522> IGNORE;IGNORE;IGNORE;<U2522>
+<U2560> IGNORE;IGNORE;IGNORE;<U2560>
+<U2524> IGNORE;IGNORE;IGNORE;<U2524>
+<U2561> IGNORE;IGNORE;IGNORE;<U2561>
+<U2526> IGNORE;IGNORE;IGNORE;<U2526>
+<U2527> IGNORE;IGNORE;IGNORE;<U2527>
+<U2562> IGNORE;IGNORE;IGNORE;<U2562>
+<U2529> IGNORE;IGNORE;IGNORE;<U2529>
+<U252A> IGNORE;IGNORE;IGNORE;<U252A>
+<U2563> IGNORE;IGNORE;IGNORE;<U2563>
+<U252C> IGNORE;IGNORE;IGNORE;<U252C>
+<U252D> IGNORE;IGNORE;IGNORE;<U252D>
+<U252E> IGNORE;IGNORE;IGNORE;<U252E>
+<U2564> IGNORE;IGNORE;IGNORE;<U2564>
+<U2565> IGNORE;IGNORE;IGNORE;<U2565>
+<U2531> IGNORE;IGNORE;IGNORE;<U2531>
+<U2532> IGNORE;IGNORE;IGNORE;<U2532>
+<U2566> IGNORE;IGNORE;IGNORE;<U2566>
+<U2534> IGNORE;IGNORE;IGNORE;<U2534>
+<U2535> IGNORE;IGNORE;IGNORE;<U2535>
+<U2536> IGNORE;IGNORE;IGNORE;<U2536>
+<U2567> IGNORE;IGNORE;IGNORE;<U2567>
+<U2568> IGNORE;IGNORE;IGNORE;<U2568>
+<U2539> IGNORE;IGNORE;IGNORE;<U2539>
+<U253A> IGNORE;IGNORE;IGNORE;<U253A>
+<U2569> IGNORE;IGNORE;IGNORE;<U2569>
+<U253C> IGNORE;IGNORE;IGNORE;<U253C>
+<U253D> IGNORE;IGNORE;IGNORE;<U253D>
+<U253E> IGNORE;IGNORE;IGNORE;<U253E>
+<U256A> IGNORE;IGNORE;IGNORE;<U256A>
+<U2540> IGNORE;IGNORE;IGNORE;<U2540>
+<U2541> IGNORE;IGNORE;IGNORE;<U2541>
+<U256B> IGNORE;IGNORE;IGNORE;<U256B>
+<U2543> IGNORE;IGNORE;IGNORE;<U2543>
+<U2544> IGNORE;IGNORE;IGNORE;<U2544>
+<U2545> IGNORE;IGNORE;IGNORE;<U2545>
+<U2546> IGNORE;IGNORE;IGNORE;<U2546>
+<U2547> IGNORE;IGNORE;IGNORE;<U2547>
+<U2548> IGNORE;IGNORE;IGNORE;<U2548>
+<U2549> IGNORE;IGNORE;IGNORE;<U2549>
+<U254A> IGNORE;IGNORE;IGNORE;<U254A>
+<U256C> IGNORE;IGNORE;IGNORE;<U256C>
+<U2571> IGNORE;IGNORE;IGNORE;<U2571>
+<U2572> IGNORE;IGNORE;IGNORE;<U2572>
+<U2580> IGNORE;IGNORE;IGNORE;<U2580>
+<U2584> IGNORE;IGNORE;IGNORE;<U2584>
+<U2588> IGNORE;IGNORE;IGNORE;<U2588>
+<U258C> IGNORE;IGNORE;IGNORE;<U258C>
+<U2590> IGNORE;IGNORE;IGNORE;<U2590>
+<U2591> IGNORE;IGNORE;IGNORE;<U2591>
+<U2592> IGNORE;IGNORE;IGNORE;<U2592>
+<U2593> IGNORE;IGNORE;IGNORE;<U2593>
+<U25A0> IGNORE;IGNORE;IGNORE;<U25A0>
+<U25A1> IGNORE;IGNORE;IGNORE;<U25A1>
+<U25A2> IGNORE;IGNORE;IGNORE;<U25A2>
+<U25A3> IGNORE;IGNORE;IGNORE;<U25A3>
+<U25A4> IGNORE;IGNORE;IGNORE;<U25A4>
+<U25A5> IGNORE;IGNORE;IGNORE;<U25A5>
+<U25A6> IGNORE;IGNORE;IGNORE;<U25A6>
+<U25A7> IGNORE;IGNORE;IGNORE;<U25A7>
+<U25A8> IGNORE;IGNORE;IGNORE;<U25A8>
+<U25A9> IGNORE;IGNORE;IGNORE;<U25A9>
+<U25AA> IGNORE;IGNORE;IGNORE;<U25AA>
+<U25AC> IGNORE;IGNORE;IGNORE;<U25AC>
+<U25AD> IGNORE;IGNORE;IGNORE;<U25AD>
+<U25B2> IGNORE;IGNORE;IGNORE;<U25B2>
+<U25B3> IGNORE;IGNORE;IGNORE;<U25B3>
+<U25B7> IGNORE;IGNORE;IGNORE;<U25B7>
+<U25BA> IGNORE;IGNORE;IGNORE;<U25BA>
+<U25BC> IGNORE;IGNORE;IGNORE;<U25BC>
+<U25BD> IGNORE;IGNORE;IGNORE;<U25BD>
+<U25C1> IGNORE;IGNORE;IGNORE;<U25C1>
+<U25C4> IGNORE;IGNORE;IGNORE;<U25C4>
+<U25C6> IGNORE;IGNORE;IGNORE;<U25C6>
+<U25C7> IGNORE;IGNORE;IGNORE;<U25C7>
+<U25CA> IGNORE;IGNORE;IGNORE;<U25CA>
+<U25CB> IGNORE;IGNORE;IGNORE;<U25CB>
+<U25CE> IGNORE;IGNORE;IGNORE;<U25CE>
+<U25CF> IGNORE;IGNORE;IGNORE;<U25CF>
+<U25D0> IGNORE;IGNORE;IGNORE;<U25D0>
+<U25D1> IGNORE;IGNORE;IGNORE;<U25D1>
+<U25D8> IGNORE;IGNORE;IGNORE;<U25D8>
+<U25D9> IGNORE;IGNORE;IGNORE;<U25D9>
+<U25E2> IGNORE;IGNORE;IGNORE;<U25E2>
+<U25E3> IGNORE;IGNORE;IGNORE;<U25E3>
+<U25EF> IGNORE;IGNORE;IGNORE;<U25EF>
+<U2605> IGNORE;IGNORE;IGNORE;<U2605>
+<U2606> IGNORE;IGNORE;IGNORE;<U2606>
+<U260E> IGNORE;IGNORE;IGNORE;<U260E>
+<U260F> IGNORE;IGNORE;IGNORE;<U260F>
+<U261C> IGNORE;IGNORE;IGNORE;<U261C>
+<U261E> IGNORE;IGNORE;IGNORE;<U261E>
+<U263A> IGNORE;IGNORE;IGNORE;<U263A>
+<U263B> IGNORE;IGNORE;IGNORE;<U263B>
+<U263C> IGNORE;IGNORE;IGNORE;<U263C>
+<U2640> IGNORE;IGNORE;IGNORE;<U2640>
+<U2642> IGNORE;IGNORE;IGNORE;<U2642>
+<U2660> IGNORE;IGNORE;IGNORE;<U2660>
+<U2661> IGNORE;IGNORE;IGNORE;<U2661>
+<U2662> IGNORE;IGNORE;IGNORE;<U2662>
+<U2663> IGNORE;IGNORE;IGNORE;<U2663>
+<U2664> IGNORE;IGNORE;IGNORE;<U2664>
+<U2665> IGNORE;IGNORE;IGNORE;<U2665>
+<U2666> IGNORE;IGNORE;IGNORE;<U2666>
+<U2667> IGNORE;IGNORE;IGNORE;<U2667>
+<U2669> IGNORE;IGNORE;IGNORE;<U2669>
+<U266A> IGNORE;IGNORE;IGNORE;<U266A>
+<U266B> IGNORE;IGNORE;IGNORE;<U266B>
+<U266C> IGNORE;IGNORE;IGNORE;<U266C>
+<U266D> IGNORE;IGNORE;IGNORE;<U266D>
+<U266E> IGNORE;IGNORE;IGNORE;<U266E>
+<U266F> IGNORE;IGNORE;IGNORE;<U266F>
+<U2713> IGNORE;IGNORE;IGNORE;<U2713>
+<U2717> IGNORE;IGNORE;IGNORE;<U2717>
+<U2720> IGNORE;IGNORE;IGNORE;<U2720>
+<U3000> IGNORE;IGNORE;IGNORE;<U3000>
+<U3001> IGNORE;IGNORE;IGNORE;<U3001>
+<U3002> IGNORE;IGNORE;IGNORE;<U3002>
+<U3003> IGNORE;IGNORE;IGNORE;<U3003>
+<U3004> IGNORE;IGNORE;IGNORE;<U3004>
+<U3005> IGNORE;IGNORE;IGNORE;<U3005>
+<U3006> IGNORE;IGNORE;IGNORE;<U3006>
+<U3007> IGNORE;IGNORE;IGNORE;<U3007>
+<U300A> IGNORE;IGNORE;IGNORE;<U300A>
+<U300B> IGNORE;IGNORE;IGNORE;<U300B>
+<U300C> IGNORE;IGNORE;IGNORE;<U300C>
+<U300D> IGNORE;IGNORE;IGNORE;<U300D>
+<U300E> IGNORE;IGNORE;IGNORE;<U300E>
+<U300F> IGNORE;IGNORE;IGNORE;<U300F>
+<U3010> IGNORE;IGNORE;IGNORE;<U3010>
+<U3011> IGNORE;IGNORE;IGNORE;<U3011>
+<U3012> IGNORE;IGNORE;IGNORE;<U3012>
+<U3013> IGNORE;IGNORE;IGNORE;<U3013>
+<U3014> IGNORE;IGNORE;IGNORE;<U3014>
+<U3015> IGNORE;IGNORE;IGNORE;<U3015>
+<U3016> IGNORE;IGNORE;IGNORE;<U3016>
+<U3017> IGNORE;IGNORE;IGNORE;<U3017>
+<U301C> IGNORE;IGNORE;IGNORE;<U301C>
+<U3020> IGNORE;IGNORE;IGNORE;<U3020>
+<U309B> IGNORE;IGNORE;IGNORE;<U309B>
+<U309C> IGNORE;IGNORE;IGNORE;<U309C>
+<U309D> IGNORE;IGNORE;IGNORE;<U309D>
+<U309E> IGNORE;IGNORE;IGNORE;<U309E>
+<U30FB> IGNORE;IGNORE;IGNORE;<U30FB>
+<U30FC> IGNORE;IGNORE;IGNORE;<U30FC>
+<U30FD> IGNORE;IGNORE;IGNORE;<U30FD>
+<U30FE> IGNORE;IGNORE;IGNORE;<U30FE>
+<U321C> IGNORE;IGNORE;IGNORE;<U321C>
+<U3220> IGNORE;IGNORE;IGNORE;<U3220>
+<U3221> IGNORE;IGNORE;IGNORE;<U3221>
+<U3222> IGNORE;IGNORE;IGNORE;<U3222>
+<U3223> IGNORE;IGNORE;IGNORE;<U3223>
+<U3224> IGNORE;IGNORE;IGNORE;<U3224>
+<U3225> IGNORE;IGNORE;IGNORE;<U3225>
+<U3226> IGNORE;IGNORE;IGNORE;<U3226>
+<U3227> IGNORE;IGNORE;IGNORE;<U3227>
+<U3228> IGNORE;IGNORE;IGNORE;<U3228>
+<U3229> IGNORE;IGNORE;IGNORE;<U3229>
+<U327F> IGNORE;IGNORE;IGNORE;<U327F>
+<U33C2> IGNORE;IGNORE;IGNORE;<U33C2>
+<U33D8> IGNORE;IGNORE;IGNORE;<U33D8>
+<U0000> IGNORE;IGNORE;IGNORE;<U0000>
+<U0001> IGNORE;IGNORE;IGNORE;<U0001>
+<U0002> IGNORE;IGNORE;IGNORE;<U0002>
+<U0003> IGNORE;IGNORE;IGNORE;<U0003>
+<U0004> IGNORE;IGNORE;IGNORE;<U0004>
+<U0005> IGNORE;IGNORE;IGNORE;<U0005>
+<U0006> IGNORE;IGNORE;IGNORE;<U0006>
+<U0007> IGNORE;IGNORE;IGNORE;<U0007>
+<U0008> IGNORE;IGNORE;IGNORE;<U0008>
+<U000E> IGNORE;IGNORE;IGNORE;<U000E>
+<U000F> IGNORE;IGNORE;IGNORE;<U000F>
+<U0010> IGNORE;IGNORE;IGNORE;<U0010>
+<U0011> IGNORE;IGNORE;IGNORE;<U0011>
+<U0012> IGNORE;IGNORE;IGNORE;<U0012>
+<U0013> IGNORE;IGNORE;IGNORE;<U0013>
+<U0014> IGNORE;IGNORE;IGNORE;<U0014>
+<U0015> IGNORE;IGNORE;IGNORE;<U0015>
+<U0016> IGNORE;IGNORE;IGNORE;<U0016>
+<U0017> IGNORE;IGNORE;IGNORE;<U0017>
+<U0018> IGNORE;IGNORE;IGNORE;<U0018>
+<U0019> IGNORE;IGNORE;IGNORE;<U0019>
+<U001A> IGNORE;IGNORE;IGNORE;<U001A>
+<U001B> IGNORE;IGNORE;IGNORE;<U001B>
+<U001C> IGNORE;IGNORE;IGNORE;<U001C>
+<U001D> IGNORE;IGNORE;IGNORE;<U001D>
+<U001E> IGNORE;IGNORE;IGNORE;<U001E>
+<U001F> IGNORE;IGNORE;IGNORE;<U001F>
+<U007F> IGNORE;IGNORE;IGNORE;<U007F>
+<U0080> IGNORE;IGNORE;IGNORE;<U0080>
+<U0081> IGNORE;IGNORE;IGNORE;<U0081>
+<U0082> IGNORE;IGNORE;IGNORE;<U0082>
+<U0083> IGNORE;IGNORE;IGNORE;<U0083>
+<U0084> IGNORE;IGNORE;IGNORE;<U0084>
+<U0085> IGNORE;IGNORE;IGNORE;<U0085>
+<U0086> IGNORE;IGNORE;IGNORE;<U0086>
+<U0087> IGNORE;IGNORE;IGNORE;<U0087>
+<U0088> IGNORE;IGNORE;IGNORE;<U0088>
+<U0089> IGNORE;IGNORE;IGNORE;<U0089>
+<U008A> IGNORE;IGNORE;IGNORE;<U008A>
+<U008B> IGNORE;IGNORE;IGNORE;<U008B>
+<U008C> IGNORE;IGNORE;IGNORE;<U008C>
+<U008D> IGNORE;IGNORE;IGNORE;<U008D>
+<U008E> IGNORE;IGNORE;IGNORE;<U008E>
+<U008F> IGNORE;IGNORE;IGNORE;<U008F>
+<U0090> IGNORE;IGNORE;IGNORE;<U0090>
+<U0091> IGNORE;IGNORE;IGNORE;<U0091>
+<U0092> IGNORE;IGNORE;IGNORE;<U0092>
+<U0093> IGNORE;IGNORE;IGNORE;<U0093>
+<U0094> IGNORE;IGNORE;IGNORE;<U0094>
+<U0095> IGNORE;IGNORE;IGNORE;<U0095>
+<U0096> IGNORE;IGNORE;IGNORE;<U0096>
+<U0097> IGNORE;IGNORE;IGNORE;<U0097>
+<U0098> IGNORE;IGNORE;IGNORE;<U0098>
+<U0099> IGNORE;IGNORE;IGNORE;<U0099>
+<U009A> IGNORE;IGNORE;IGNORE;<U009A>
+<U009B> IGNORE;IGNORE;IGNORE;<U009B>
+<U009C> IGNORE;IGNORE;IGNORE;<U009C>
+<U009D> IGNORE;IGNORE;IGNORE;<U009D>
+<U009E> IGNORE;IGNORE;IGNORE;<U009E>
+<U009F> IGNORE;IGNORE;IGNORE;<U009F>
+<UE000> IGNORE;IGNORE;IGNORE;<UE000>
+<UE001> IGNORE;IGNORE;IGNORE;<UE001>
+<UE002> IGNORE;IGNORE;IGNORE;<UE002>
+<U0301> IGNORE;IGNORE;IGNORE;<U0301>
+<UE004> IGNORE;IGNORE;IGNORE;<UE004>
+<UE005> IGNORE;IGNORE;IGNORE;<UE005>
+<UE006> IGNORE;IGNORE;IGNORE;<UE006>
+<UE007> IGNORE;IGNORE;IGNORE;<UE007>
+<UE008> IGNORE;IGNORE;IGNORE;<UE008>
+<UE009> IGNORE;IGNORE;IGNORE;<UE009>
+<UE00A> IGNORE;IGNORE;IGNORE;<UE00A>
+<UE00B> IGNORE;IGNORE;IGNORE;<UE00B>
+<UE00C> IGNORE;IGNORE;IGNORE;<UE00C>
+<UE00D> IGNORE;IGNORE;IGNORE;<UE00D>
+<UE00E> IGNORE;IGNORE;IGNORE;<UE00E>
+<UE00F> IGNORE;IGNORE;IGNORE;<UE00F>
+<"=> IGNORE;IGNORE;IGNORE;<"=>
+<UE011> IGNORE;IGNORE;IGNORE;<UE011>
+<UE012> IGNORE;IGNORE;IGNORE;<UE012>
+<UE013> IGNORE;IGNORE;IGNORE;<UE013>
+<UE014> IGNORE;IGNORE;IGNORE;<UE014>
+<UE015> IGNORE;IGNORE;IGNORE;<UE015>
+<UE017> IGNORE;IGNORE;IGNORE;<UE017>
+<UE018> IGNORE;IGNORE;IGNORE;<UE018>
+<UE019> IGNORE;IGNORE;IGNORE;<UE019>
+UNDEFINED IGNORE;IGNORE;IGNORE
+
+<U0030> <U0030>;<U0030>;IGNORE;IGNORE
+<U2070> <U0030>;<U2070>;IGNORE;IGNORE
+<U215B> <U0030>;<U215B>;IGNORE;IGNORE
+<U00BC> <U0030>;<U00BC>;IGNORE;IGNORE
+<U215C> <U0030>;<U215C>;IGNORE;IGNORE
+<U00BD> <U0030>;<U00BD>;IGNORE;IGNORE
+<U215D> <U0030>;<U215D>;IGNORE;IGNORE
+<U00BE> <U0030>;<U00BE>;IGNORE;IGNORE
+<U215E> <U0030>;<U215E>;IGNORE;IGNORE
+<U0031> <U0031>;<U0031>;IGNORE;IGNORE
+<U0032> <U0032>;<U0032>;IGNORE;IGNORE
+<U0033> <U0033>;<U0033>;IGNORE;IGNORE
+<U0034> <U0034>;<U0034>;IGNORE;IGNORE
+<U0035> <U0035>;<U0035>;IGNORE;IGNORE
+<U0036> <U0036>;<U0036>;IGNORE;IGNORE
+<U0037> <U0037>;<U0037>;IGNORE;IGNORE
+<U0038> <U0038>;<U0038>;IGNORE;IGNORE
+<U0039> <U0039>;<U0039>;IGNORE;IGNORE
+<U00B9> <U0031>;<U00B9>;IGNORE;IGNORE
+<U00B2> <U0032>;<U00B2>;IGNORE;IGNORE
+<U00B3> <U0033>;<U00B3>;IGNORE;IGNORE
+<U2074> <U0034>;<U2074>;IGNORE;IGNORE
+<U2075> <U0035>;<U2075>;IGNORE;IGNORE
+<U2076> <U0036>;<U2076>;IGNORE;IGNORE
+<U2077> <U0037>;<U2077>;IGNORE;IGNORE
+<U2078> <U0038>;<U2078>;IGNORE;IGNORE
+<U2079> <U0039>;<U2079>;IGNORE;IGNORE
+<U0041> <U0041>;<NONE>;<CAPITAL>;IGNORE
+<U0061> <U0041>;<NONE>;<SMALL>;IGNORE
+<U00AA> <U0041>;<NONE>;<U00AA>;IGNORE
+<U00C1> <U0041>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E1> <U0041>;<ACUTE>;<SMALL>;IGNORE
+<U00C0> <U0041>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E0> <U0041>;<GRAVE>;<SMALL>;IGNORE
+<U0200> <U0041>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0201> <U0041>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0102> <U0041>;<BREVE>;<CAPITAL>;IGNORE
+<U0103> <U0041>;<BREVE>;<SMALL>;IGNORE
+<U1EAE> <U0041>;<BREVE+ACUTE>;<CAPITAL>;IGNORE
+<U1EAF> <U0041>;<BREVE+ACUTE>;<SMALL>;IGNORE
+<U1EB0> <U0041>;<BREVE+GRAVE>;<CAPITAL>;IGNORE
+<U1EB1> <U0041>;<BREVE+GRAVE>;<SMALL>;IGNORE
+<U1EB2> <U0041>;<BREVE+HOOK>;<CAPITAL>;IGNORE
+<U1EB3> <U0041>;<BREVE+HOOK>;<SMALL>;IGNORE
+<U1EB4> <U0041>;<BREVE+TILDE>;<CAPITAL>;IGNORE
+<U1EB5> <U0041>;<BREVE+TILDE>;<SMALL>;IGNORE
+<U1EB6> <U0041>;<BREVE+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB7> <U0041>;<BREVE+DOT-BELOW>;<SMALL>;IGNORE
+<U0202> <U0041>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0203> <U0041>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00C2> <U0041>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00E2> <U0041>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EA4> <U0041>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EA5> <U0041>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EA6> <U0041>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EA7> <U0041>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EA8> <U0041>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EA9> <U0041>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EAA> <U0041>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EAB> <U0041>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EAC> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EAD> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01CD> <U0041>;<CARON>;<CAPITAL>;IGNORE
+<U01CE> <U0041>;<CARON>;<SMALL>;IGNORE
+<U1E00> <U0041>;<RING-BELOW>;<CAPITAL>;IGNORE
+<U1E01> <U0041>;<RING-BELOW>;<SMALL>;IGNORE
+<U01DE> <U0041>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01DF> <U0041>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U1EA2> <U0041>;<HOOK>;<CAPITAL>;IGNORE
+<U1EA3> <U0041>;<HOOK>;<SMALL>;IGNORE
+<U00C3> <U0041>;<TILDE>;<CAPITAL>;IGNORE
+<U00E3> <U0041>;<TILDE>;<SMALL>;IGNORE
+<U1EA0> <U0041>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EA1> <U0041>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0104> <U0041>;<OGONEK>;<CAPITAL>;IGNORE
+<U0105> <U0041>;<OGONEK>;<SMALL>;IGNORE
+<U0100> <U0041>;<MACRON>;<CAPITAL>;IGNORE
+<U0101> <U0041>;<MACRON>;<SMALL>;IGNORE
+<U01E0> <U0041>;<MACRON+DOT>;<CAPITAL>;IGNORE
+<U01E1> <U0041>;<MACRON+DOT>;<SMALL>;IGNORE
+<a8>
+<U0042> <U0042>;<NONE>;<CAPITAL>;IGNORE
+<U0062> <U0042>;<NONE>;<SMALL>;IGNORE
+<U1E02> <U0042>;<DOT>;<CAPITAL>;IGNORE
+<U1E03> <U0042>;<DOT>;<SMALL>;IGNORE
+<U1E04> <U0042>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E05> <U0042>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E06> <U0042>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E07> <U0042>;<LINE-BELOW>;<SMALL>;IGNORE
+<b8>
+<U0043> <U0043>;<NONE>;<CAPITAL>;IGNORE
+<U0063> <U0043>;<NONE>;<SMALL>;IGNORE
+<U0106> <U0043>;<ACUTE>;<CAPITAL>;IGNORE
+<U0107> <U0043>;<ACUTE>;<SMALL>;IGNORE
+<U0108> <U0043>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0109> <U0043>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U010C> <U0043>;<CARON>;<CAPITAL>;IGNORE
+<U010D> <U0043>;<CARON>;<SMALL>;IGNORE
+<U0187> <U0043>;<HOOK>;<CAPITAL>;IGNORE
+<U0188> <U0043>;<HOOK>;<SMALL>;IGNORE
+<U010A> <U0043>;<DOT>;<CAPITAL>;IGNORE
+<U010B> <U0043>;<DOT>;<SMALL>;IGNORE
+<U00C7> <U0043>;<CEDILLA>;<CAPITAL>;IGNORE
+<U00E7> <U0043>;<CEDILLA>;<SMALL>;IGNORE
+<U1E08> <U0043>;<CEDILLA+ACUTE>;<CAPITAL>;IGNORE
+<U1E09> <U0043>;<CEDILLA+ACUTE>;<SMALL>;IGNORE
+<c8>
+<U0044> <U0044>;<NONE>;<CAPITAL>;IGNORE
+<U0064> <U0044>;<NONE>;<SMALL>;IGNORE
+<U010E> <U0044>;<CARON>;<CAPITAL>;IGNORE
+<U010F> <U0044>;<CARON>;<SMALL>;IGNORE
+<U1E0A> <U0044>;<DOT>;<CAPITAL>;IGNORE
+<U1E0B> <U0044>;<DOT>;<SMALL>;IGNORE
+<U1E0C> <U0044>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E0D> <U0044>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0110> <U0044>;<STROKE>;<CAPITAL>;IGNORE
+<U0111> <U0044>;<STROKE>;<SMALL>;IGNORE
+<U1E10> <U0044>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E11> <U0044>;<CEDILLA>;<SMALL>;IGNORE
+<U1E12> <U0044>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E13> <U0044>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E0E> <U0044>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E0F> <U0044>;<LINE-BELOW>;<SMALL>;IGNORE
+<d8>
+<U00D0> <U0044>;<U00D0>;<CAPITAL>;IGNORE
+<U00F0> <U0044>;<U00D0>;<SMALL>;IGNORE
+<U0045> <U0045>;<NONE>;<CAPITAL>;IGNORE
+<U0065> <U0045>;<NONE>;<SMALL>;IGNORE
+<U00C9> <U0045>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E9> <U0045>;<ACUTE>;<SMALL>;IGNORE
+<U00C8> <U0045>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E8> <U0045>;<GRAVE>;<SMALL>;IGNORE
+<U0204> <U0045>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0205> <U0045>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0114> <U0045>;<BREVE>;<CAPITAL>;IGNORE
+<U0115> <U0045>;<BREVE>;<SMALL>;IGNORE
+<U0206> <U0045>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0207> <U0045>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CA> <U0045>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EA> <U0045>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EBE> <U0045>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EBF> <U0045>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EC0> <U0045>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EC1> <U0045>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EC2> <U0045>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EC3> <U0045>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EC4> <U0045>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EC5> <U0045>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EC6> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EC7> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U011A> <U0045>;<CARON>;<CAPITAL>;IGNORE
+<U011B> <U0045>;<CARON>;<SMALL>;IGNORE
+<U00CB> <U0045>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EB> <U0045>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EBA> <U0045>;<HOOK>;<CAPITAL>;IGNORE
+<U1EBB> <U0045>;<HOOK>;<SMALL>;IGNORE
+<U1EBC> <U0045>;<TILDE>;<CAPITAL>;IGNORE
+<U1EBD> <U0045>;<TILDE>;<SMALL>;IGNORE
+<U1E1A> <U0045>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E1B> <U0045>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0116> <U0045>;<DOT>;<CAPITAL>;IGNORE
+<U0117> <U0045>;<DOT>;<SMALL>;IGNORE
+<U1EB8> <U0045>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB9> <U0045>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E1C> <U0045>;<CEDILLA+BREVE>;<CAPITAL>;IGNORE
+<U1E1D> <U0045>;<CEDILLA+BREVE>;<SMALL>;IGNORE
+<U0118> <U0045>;<OGONEK>;<CAPITAL>;IGNORE
+<U0119> <U0045>;<OGONEK>;<SMALL>;IGNORE
+<U0112> <U0045>;<MACRON>;<CAPITAL>;IGNORE
+<U0113> <U0045>;<MACRON>;<SMALL>;IGNORE
+<U1E16> <U0045>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E17> <U0045>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E14> <U0045>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E15> <U0045>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U1E18> <U0045>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E19> <U0045>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<e8>
+<U0046> <U0046>;<NONE>;<CAPITAL>;IGNORE
+<U0066> <U0046>;<NONE>;<SMALL>;IGNORE
+<U0191> <U0046>;<HOOK>;<CAPITAL>;IGNORE
+<U0192> <U0046>;<HOOK>;<SMALL>;IGNORE
+<U1E1E> <U0046>;<DOT>;<CAPITAL>;IGNORE
+<U1E1F> <U0046>;<DOT>;<SMALL>;IGNORE
+<f8>
+<UFB00> "<U0046><U0046>";"<NONE><NONE>";"<UFB00><UFB00>";IGNORE
+<UFB01> "<U0046><U0049>";"<NONE><NONE>";"<UFB01><UFB01>";IGNORE
+<UFB02> "<U0046><U004C>";"<NONE><NONE>";"<UFB02><UFB02>";IGNORE
+<UFB03> "<U0046><U0046><U0049>";"<NONE><NONE><NONE>";"<UFB03><UFB03><UFB03>";IGNORE
+<UFB04> "<U0046><U0046><U004C>";"<NONE><NONE><NONE>";"<UFB04><UFB04><UFB04>";IGNORE
+<U0047> <U0047>;<NONE>;<CAPITAL>;IGNORE
+<U0067> <U0047>;<NONE>;<SMALL>;IGNORE
+<U01F4> <U0047>;<ACUTE>;<CAPITAL>;IGNORE
+<U01F5> <U0047>;<ACUTE>;<SMALL>;IGNORE
+<U011E> <U0047>;<BREVE>;<CAPITAL>;IGNORE
+<U011F> <U0047>;<BREVE>;<SMALL>;IGNORE
+<U011C> <U0047>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U011D> <U0047>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01E6> <U0047>;<CARON>;<CAPITAL>;IGNORE
+<U01E7> <U0047>;<CARON>;<SMALL>;IGNORE
+<U0120> <U0047>;<DOT>;<CAPITAL>;IGNORE
+<U0121> <U0047>;<DOT>;<SMALL>;IGNORE
+<U01E4> <U0047>;<STROKE>;<CAPITAL>;IGNORE
+<U01E5> <U0047>;<STROKE>;<SMALL>;IGNORE
+<U0122> <U0047>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0123> <U0047>;<CEDILLA>;<SMALL>;IGNORE
+<U1E20> <U0047>;<MACRON>;<CAPITAL>;IGNORE
+<U1E21> <U0047>;<MACRON>;<SMALL>;IGNORE
+<g8>
+<U0048> <U0048>;<NONE>;<CAPITAL>;IGNORE
+<U0068> <U0048>;<NONE>;<SMALL>;IGNORE
+<U1E2A> <U0048>;<BREVE-BELOW>;<CAPITAL>;IGNORE
+<U1E2B> <U0048>;<BREVE-BELOW>;<SMALL>;IGNORE
+<U0124> <U0048>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0125> <U0048>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E26> <U0048>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E27> <U0048>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E22> <U0048>;<DOT>;<CAPITAL>;IGNORE
+<U1E23> <U0048>;<DOT>;<SMALL>;IGNORE
+<U1E24> <U0048>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E25> <U0048>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0126> <U0048>;<STROKE>;<CAPITAL>;IGNORE
+<U0127> <U0048>;<STROKE>;<SMALL>;IGNORE
+<U1E28> <U0048>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E29> <U0048>;<CEDILLA>;<SMALL>;IGNORE
+<h8>
+<U0049> <U0049>;<NONE>;<CAPITAL>;IGNORE
+<U0069> <U0049>;<NONE>;<SMALL>;IGNORE
+<U00CD> <U0049>;<ACUTE>;<CAPITAL>;IGNORE
+<U00ED> <U0049>;<ACUTE>;<SMALL>;IGNORE
+<U00CC> <U0049>;<GRAVE>;<CAPITAL>;IGNORE
+<U00EC> <U0049>;<GRAVE>;<SMALL>;IGNORE
+<U0208> <U0049>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0209> <U0049>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U012C> <U0049>;<BREVE>;<CAPITAL>;IGNORE
+<U012D> <U0049>;<BREVE>;<SMALL>;IGNORE
+<U020A> <U0049>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020B> <U0049>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CE> <U0049>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EE> <U0049>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01CF> <U0049>;<CARON>;<CAPITAL>;IGNORE
+<U01D0> <U0049>;<CARON>;<SMALL>;IGNORE
+<U00CF> <U0049>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EF> <U0049>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E2E> <U0049>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U1E2F> <U0049>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U1EC8> <U0049>;<HOOK>;<CAPITAL>;IGNORE
+<U1EC9> <U0049>;<HOOK>;<SMALL>;IGNORE
+<U0128> <U0049>;<TILDE>;<CAPITAL>;IGNORE
+<U0129> <U0049>;<TILDE>;<SMALL>;IGNORE
+<U1E2C> <U0049>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E2D> <U0049>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0130> <U0049>;<DOT>;<CAPITAL>;IGNORE
+<U0131> <U0049>;<DOT>;<SMALL>;IGNORE
+<U1ECA> <U0049>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECB> <U0049>;<DOT-BELOW>;<SMALL>;IGNORE
+<U012E> <U0049>;<OGONEK>;<CAPITAL>;IGNORE
+<U012F> <U0049>;<OGONEK>;<SMALL>;IGNORE
+<U012A> <U0049>;<MACRON>;<CAPITAL>;IGNORE
+<U012B> <U0049>;<MACRON>;<SMALL>;IGNORE
+<i8>
+<U0132> "<U0049><U004A>";"<U0132><U0132>";"<CAPITAL><CAPITAL>";IGNORE
+<U0133> "<U0049><U004A>";"<U0132><U0132>";"<SMALL><SMALL>";IGNORE
+<U004A> <U004A>;<NONE>;<CAPITAL>;IGNORE
+<U006A> <U004A>;<NONE>;<SMALL>;IGNORE
+<U0134> <U004A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0135> <U004A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<j8>
+<U004B> <U004B>;<NONE>;<CAPITAL>;IGNORE
+<U006B> <U004B>;<NONE>;<SMALL>;IGNORE
+<U1E30> <U004B>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E31> <U004B>;<ACUTE>;<SMALL>;IGNORE
+<U01E8> <U004B>;<CARON>;<CAPITAL>;IGNORE
+<U01E9> <U004B>;<CARON>;<SMALL>;IGNORE
+<U0198> <U004B>;<HOOK>;<CAPITAL>;IGNORE
+<U0199> <U004B>;<HOOK>;<SMALL>;IGNORE
+<U1E32> <U004B>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E33> <U004B>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0136> <U004B>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0137> <U004B>;<CEDILLA>;<SMALL>;IGNORE
+<U1E34> <U004B>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E35> <U004B>;<LINE-BELOW>;<SMALL>;IGNORE
+<k8>
+<U004C> <U004C>;<NONE>;<CAPITAL>;IGNORE
+<U006C> <U004C>;<NONE>;<SMALL>;IGNORE
+<U0139> <U004C>;<ACUTE>;<CAPITAL>;IGNORE
+<U013A> <U004C>;<ACUTE>;<SMALL>;IGNORE
+<U013D> <U004C>;<CARON>;<CAPITAL>;IGNORE
+<U013E> <U004C>;<CARON>;<SMALL>;IGNORE
+<U013F> <U004C>;<DOT>;<CAPITAL>;IGNORE
+<U0140> <U004C>;<DOT>;<SMALL>;IGNORE
+<U1E36> <U004C>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E37> <U004C>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0141> <U004C>;<STROKE>;<CAPITAL>;IGNORE
+<U0142> <U004C>;<STROKE>;<SMALL>;IGNORE
+<U013B> <U004C>;<CEDILLA>;<CAPITAL>;IGNORE
+<U013C> <U004C>;<CEDILLA>;<SMALL>;IGNORE
+<U1E38> <U004C>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E39> <U004C>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E3C> <U004C>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E3D> <U004C>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E3A> <U004C>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E3B> <U004C>;<LINE-BELOW>;<SMALL>;IGNORE
+<l8>
+<U004D> <U004D>;<NONE>;<CAPITAL>;IGNORE
+<U006D> <U004D>;<NONE>;<SMALL>;IGNORE
+<U1E3E> <U004D>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E3F> <U004D>;<ACUTE>;<SMALL>;IGNORE
+<U1E40> <U004D>;<DOT>;<CAPITAL>;IGNORE
+<U1E41> <U004D>;<DOT>;<SMALL>;IGNORE
+<U1E42> <U004D>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E43> <U004D>;<DOT-BELOW>;<SMALL>;IGNORE
+<m8>
+<U004E> <U004E>;<NONE>;<CAPITAL>;IGNORE
+<U006E> <U004E>;<NONE>;<SMALL>;IGNORE
+<U0143> <U004E>;<ACUTE>;<CAPITAL>;IGNORE
+<U0144> <U004E>;<ACUTE>;<SMALL>;IGNORE
+<U0147> <U004E>;<CARON>;<CAPITAL>;IGNORE
+<U0148> <U004E>;<CARON>;<SMALL>;IGNORE
+<U00D1> <U004E>;<TILDE>;<CAPITAL>;IGNORE
+<U00F1> <U004E>;<TILDE>;<SMALL>;IGNORE
+<U1E44> <U004E>;<DOT>;<CAPITAL>;IGNORE
+<U1E45> <U004E>;<DOT>;<SMALL>;IGNORE
+<U1E46> <U004E>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E47> <U004E>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0145> <U004E>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0146> <U004E>;<CEDILLA>;<SMALL>;IGNORE
+<U1E4A> <U004E>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E4B> <U004E>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E48> <U004E>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E49> <U004E>;<LINE-BELOW>;<SMALL>;IGNORE
+<U0149> <U004E>;<PRECEDED-BY-APOSTROPHE>;<SMALL>;IGNORE
+<n8>
+<U014A> "<U004E><U0047>";"<U014A><U014A>";"<CAPITAL><CAPITAL>";IGNORE
+<U014B> "<U004E><U0047>";"<U014A><U014A>";"<SMALL><SMALL>";IGNORE
+<U004F> <U004F>;<NONE>;<CAPITAL>;IGNORE
+<U006F> <U004F>;<NONE>;<SMALL>;IGNORE
+<U00BA> <U004F>;<NONE>;<U00BA>;IGNORE
+<U00D3> <U004F>;<ACUTE>;<CAPITAL>;IGNORE
+<U00F3> <U004F>;<ACUTE>;<SMALL>;IGNORE
+<U00D2> <U004F>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F2> <U004F>;<GRAVE>;<SMALL>;IGNORE
+<U020C> <U004F>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U020D> <U004F>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U014E> <U004F>;<BREVE>;<CAPITAL>;IGNORE
+<U014F> <U004F>;<BREVE>;<SMALL>;IGNORE
+<U020E> <U004F>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020F> <U004F>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00D4> <U004F>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00F4> <U004F>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1ED0> <U004F>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1ED1> <U004F>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1ED2> <U004F>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1ED3> <U004F>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1ED4> <U004F>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1ED5> <U004F>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1ED6> <U004F>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1ED7> <U004F>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1ED8> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ED9> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01D1> <U004F>;<CARON>;<CAPITAL>;IGNORE
+<U01D2> <U004F>;<CARON>;<SMALL>;IGNORE
+<U1ECE> <U004F>;<HOOK>;<CAPITAL>;IGNORE
+<U1ECF> <U004F>;<HOOK>;<SMALL>;IGNORE
+<U00D5> <U004F>;<TILDE>;<CAPITAL>;IGNORE
+<U00F5> <U004F>;<TILDE>;<SMALL>;IGNORE
+<U1E4C> <U004F>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E4D> <U004F>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E4E> <U004F>;<TILDE+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E4F> <U004F>;<TILDE+DIAERESIS>;<SMALL>;IGNORE
+<U1ECC> <U004F>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECD> <U004F>;<DOT-BELOW>;<SMALL>;IGNORE
+<U01EA> <U004F>;<OGONEK>;<CAPITAL>;IGNORE
+<U01EB> <U004F>;<OGONEK>;<SMALL>;IGNORE
+<U01EC> <U004F>;<OGONEK+MACRON>;<CAPITAL>;IGNORE
+<U01ED> <U004F>;<OGONEK+MACRON>;<SMALL>;IGNORE
+<U014C> <U004F>;<MACRON>;<CAPITAL>;IGNORE
+<U014D> <U004F>;<MACRON>;<SMALL>;IGNORE
+<U1E52> <U004F>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E53> <U004F>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E50> <U004F>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E51> <U004F>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U01A0> <U004F>;<HORN>;<CAPITAL>;IGNORE
+<U01A1> <U004F>;<HORN>;<SMALL>;IGNORE
+<U1EDA> <U004F>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EDB> <U004F>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EDC> <U004F>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EDD> <U004F>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EDE> <U004F>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EDF> <U004F>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EE0> <U004F>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EE1> <U004F>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EE2> <U004F>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE3> <U004F>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<o8>
+<U0152> "<U004F><U0045>";"<U0152><U0152>";"<CAPITAL><CAPITAL>";IGNORE
+<U0153> "<U004F><U0045>";"<U0152><U0152>";"<SMALL><SMALL>";IGNORE
+<U0050> <U0050>;<NONE>;<CAPITAL>;IGNORE
+<U0070> <U0050>;<NONE>;<SMALL>;IGNORE
+<U1E54> <U0050>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E55> <U0050>;<ACUTE>;<SMALL>;IGNORE
+<U1E56> <U0050>;<DOT>;<CAPITAL>;IGNORE
+<U1E57> <U0050>;<DOT>;<SMALL>;IGNORE
+<p8>
+<U0051> <U0051>;<NONE>;<CAPITAL>;IGNORE
+<U0071> <U0051>;<NONE>;<SMALL>;IGNORE
+<q8>
+<U0138> <U0051>;<SPECIAL>;<SMALL>;IGNORE
+<U0052> <U0052>;<NONE>;<CAPITAL>;IGNORE
+<U0072> <U0052>;<NONE>;<SMALL>;IGNORE
+<U0154> <U0052>;<ACUTE>;<CAPITAL>;IGNORE
+<U0155> <U0052>;<ACUTE>;<SMALL>;IGNORE
+<U0210> <U0052>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0211> <U0052>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0212> <U0052>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0213> <U0052>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U0158> <U0052>;<CARON>;<CAPITAL>;IGNORE
+<U0159> <U0052>;<CARON>;<SMALL>;IGNORE
+<U1E58> <U0052>;<DOT>;<CAPITAL>;IGNORE
+<U1E59> <U0052>;<DOT>;<SMALL>;IGNORE
+<U1E5A> <U0052>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5B> <U0052>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0156> <U0052>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0157> <U0052>;<CEDILLA>;<SMALL>;IGNORE
+<U1E5C> <U0052>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5D> <U0052>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E5E> <U0052>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E5F> <U0052>;<LINE-BELOW>;<SMALL>;IGNORE
+<r8>
+<U0053> <U0053>;<NONE>;<CAPITAL>;IGNORE
+<U0073> <U0053>;<NONE>;<SMALL>;IGNORE
+<UFB06> "<U0053><U0054>";"<NONE><NONE>";"<UFB06><UFB06>";IGNORE
+<U015A> <U0053>;<ACUTE>;<CAPITAL>;IGNORE
+<U015B> <U0053>;<ACUTE>;<SMALL>;IGNORE
+<U1E64> <U0053>;<ACUTE+DOT>;<CAPITAL>;IGNORE
+<U1E65> <U0053>;<ACUTE+DOT>;<SMALL>;IGNORE
+<U015C> <U0053>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U015D> <U0053>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0160> <U0053>;<CARON>;<CAPITAL>;IGNORE
+<U0161> <U0053>;<CARON>;<SMALL>;IGNORE
+<U1E66> <U0053>;<CARON+DOT>;<CAPITAL>;IGNORE
+<U1E67> <U0053>;<CARON+DOT>;<SMALL>;IGNORE
+<U1E60> <U0053>;<DOT>;<CAPITAL>;IGNORE
+<U1E61> <U0053>;<DOT>;<SMALL>;IGNORE
+<U1E62> <U0053>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E63> <U0053>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E68> <U0053>;<DOT+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E69> <U0053>;<DOT+DOT-BELOW>;<SMALL>;IGNORE
+<U015E> <U0053>;<CEDILLA>;<CAPITAL>;IGNORE
+<U015F> <U0053>;<CEDILLA>;<SMALL>;IGNORE
+<s8>
+<U017F> <U0053>;<U017F>;<SMALL>;IGNORE
+<U00DF> "<U0053><U0053>";"<NONE><NONE>";"<SMALL><U00DF>";IGNORE
+<UFB05> "<U0053><U0054>";"<NONE><NONE>";"<UFB05><UFB05>";IGNORE
+<U0054> <U0054>;<NONE>;<CAPITAL>;IGNORE
+<U0074> <U0054>;<NONE>;<SMALL>;IGNORE
+<U0164> <U0054>;<CARON>;<CAPITAL>;IGNORE
+<U0165> <U0054>;<CARON>;<SMALL>;IGNORE
+<U1E6A> <U0054>;<DOT>;<CAPITAL>;IGNORE
+<U1E6B> <U0054>;<DOT>;<SMALL>;IGNORE
+<U1E6C> <U0054>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E6D> <U0054>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0166> <U0054>;<STROKE>;<CAPITAL>;IGNORE
+<U0167> <U0054>;<STROKE>;<SMALL>;IGNORE
+<U0162> <U0054>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0163> <U0054>;<CEDILLA>;<SMALL>;IGNORE
+<U1E70> <U0054>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E71> <U0054>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E6E> <U0054>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E6F> <U0054>;<LINE-BELOW>;<SMALL>;IGNORE
+<t8>
+<U00DE> "<U0054><U0048>";"<U00DE><U00DE>";"<CAPITAL><CAPITAL>";IGNORE
+<U00FE> "<U0054><U0048>";"<U00DE><U00DE>";"<SMALL><SMALL>";IGNORE
+<U0055> <U0055>;<NONE>;<CAPITAL>;IGNORE
+<U0075> <U0055>;<NONE>;<SMALL>;IGNORE
+<U00DA> <U0055>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FA> <U0055>;<ACUTE>;<SMALL>;IGNORE
+<U00D9> <U0055>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F9> <U0055>;<GRAVE>;<SMALL>;IGNORE
+<U0214> <U0055>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0215> <U0055>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U016C> <U0055>;<BREVE>;<CAPITAL>;IGNORE
+<U016D> <U0055>;<BREVE>;<SMALL>;IGNORE
+<U0216> <U0055>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0217> <U0055>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00DB> <U0055>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00FB> <U0055>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01D3> <U0055>;<CARON>;<CAPITAL>;IGNORE
+<U01D4> <U0055>;<CARON>;<SMALL>;IGNORE
+<U016E> <U0055>;<RING>;<CAPITAL>;IGNORE
+<U016F> <U0055>;<RING>;<SMALL>;IGNORE
+<U01D5> <U0055>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01D6> <U0055>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U01D7> <U0055>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U01D8> <U0055>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U01DB> <U0055>;<DIAERESIS+GRAVE>;<CAPITAL>;IGNORE
+<U01DC> <U0055>;<DIAERESIS+GRAVE>;<SMALL>;IGNORE
+<U01D9> <U0055>;<DIAERESIS+CARON>;<CAPITAL>;IGNORE
+<U01DA> <U0055>;<DIAERESIS+CARON>;<SMALL>;IGNORE
+<U1EE6> <U0055>;<HOOK>;<CAPITAL>;IGNORE
+<U1EE7> <U0055>;<HOOK>;<SMALL>;IGNORE
+<U0168> <U0055>;<TILDE>;<CAPITAL>;IGNORE
+<U0169> <U0055>;<TILDE>;<SMALL>;IGNORE
+<U1E78> <U0055>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E79> <U0055>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E74> <U0055>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E75> <U0055>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U1EE4> <U0055>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE5> <U0055>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0172> <U0055>;<OGONEK>;<CAPITAL>;IGNORE
+<U0173> <U0055>;<OGONEK>;<SMALL>;IGNORE
+<U016A> <U0055>;<MACRON>;<CAPITAL>;IGNORE
+<U016B> <U0055>;<MACRON>;<SMALL>;IGNORE
+<U1E7A> <U0055>;<MACRON+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E7B> <U0055>;<MACRON+DIAERESIS>;<SMALL>;IGNORE
+<U1E72> <U0055>;<MACRON+DIAERESIS-BELOW>;<CAPITAL>;IGNORE
+<U1E73> <U0055>;<MACRON+DIAERESIS-BELOW>;<SMALL>;IGNORE
+<U1E76> <U0055>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E77> <U0055>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U01AF> <U0055>;<HORN>;<CAPITAL>;IGNORE
+<U01B0> <U0055>;<HORN>;<SMALL>;IGNORE
+<U1EE8> <U0055>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EE9> <U0055>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EEA> <U0055>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EEB> <U0055>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EEC> <U0055>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EED> <U0055>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EEE> <U0055>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EEF> <U0055>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EF0> <U0055>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF1> <U0055>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<u8>
+<U0056> <U0056>;<NONE>;<CAPITAL>;IGNORE
+<U0076> <U0056>;<NONE>;<SMALL>;IGNORE
+<U1E7C> <U0056>;<TILDE>;<CAPITAL>;IGNORE
+<U1E7D> <U0056>;<TILDE>;<SMALL>;IGNORE
+<U1E7E> <U0056>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E7F> <U0056>;<DOT-BELOW>;<SMALL>;IGNORE
+<v8>
+<U0057> <U0057>;<NONE>;<CAPITAL>;IGNORE
+<U0077> <U0057>;<NONE>;<SMALL>;IGNORE
+<U1E82> <U0057>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E83> <U0057>;<ACUTE>;<SMALL>;IGNORE
+<U1E80> <U0057>;<GRAVE>;<CAPITAL>;IGNORE
+<U1E81> <U0057>;<GRAVE>;<SMALL>;IGNORE
+<U0174> <U0057>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0175> <U0057>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E84> <U0057>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E85> <U0057>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E86> <U0057>;<DOT>;<CAPITAL>;IGNORE
+<U1E87> <U0057>;<DOT>;<SMALL>;IGNORE
+<U1E88> <U0057>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E89> <U0057>;<DOT-BELOW>;<SMALL>;IGNORE
+<w8>
+<U0058> <U0058>;<NONE>;<CAPITAL>;IGNORE
+<U0078> <U0058>;<NONE>;<SMALL>;IGNORE
+<U1E8C> <U0058>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E8D> <U0058>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E8A> <U0058>;<DOT>;<CAPITAL>;IGNORE
+<U1E8B> <U0058>;<DOT>;<SMALL>;IGNORE
+<x8>
+<U0059> <U0059>;<NONE>;<CAPITAL>;IGNORE
+<U0079> <U0059>;<NONE>;<SMALL>;IGNORE
+<U00DD> <U0059>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FD> <U0059>;<ACUTE>;<SMALL>;IGNORE
+<U1EF2> <U0059>;<GRAVE>;<CAPITAL>;IGNORE
+<U1EF3> <U0059>;<GRAVE>;<SMALL>;IGNORE
+<U0176> <U0059>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0177> <U0059>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0178> <U0059>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FF> <U0059>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EF6> <U0059>;<HOOK>;<CAPITAL>;IGNORE
+<U1EF7> <U0059>;<HOOK>;<SMALL>;IGNORE
+<U1EF8> <U0059>;<TILDE>;<CAPITAL>;IGNORE
+<U1EF9> <U0059>;<TILDE>;<SMALL>;IGNORE
+<U1E8E> <U0059>;<DOT>;<CAPITAL>;IGNORE
+<U1E8F> <U0059>;<DOT>;<SMALL>;IGNORE
+<U1EF4> <U0059>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF5> <U0059>;<DOT-BELOW>;<SMALL>;IGNORE
+<y8>
+% <U00DC> and <U0170> are treated as <U0059> in Danish
+<U00DC> <U0059>;<U00DC>;<CAPITAL>;IGNORE
+<U00FC> <U0059>;<U00DC>;<SMALL>;IGNORE
+<U0170> <U0059>;<U0170>;<CAPITAL>;IGNORE
+<U0171> <U0059>;<U0170>;<SMALL>;IGNORE
+<U005A> <U005A>;<NONE>;<CAPITAL>;IGNORE
+<U007A> <U005A>;<NONE>;<SMALL>;IGNORE
+<U0179> <U005A>;<ACUTE>;<CAPITAL>;IGNORE
+<U017A> <U005A>;<ACUTE>;<SMALL>;IGNORE
+<U1E90> <U005A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E91> <U005A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U017D> <U005A>;<CARON>;<CAPITAL>;IGNORE
+<U017E> <U005A>;<CARON>;<SMALL>;IGNORE
+<U017B> <U005A>;<DOT>;<CAPITAL>;IGNORE
+<U017C> <U005A>;<DOT>;<SMALL>;IGNORE
+<U1E92> <U005A>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E93> <U005A>;<DOT-BELOW>;<SMALL>;IGNORE
+<U01B5> <U005A>;<STROKE>;<CAPITAL>;IGNORE
+<U01B6> <U005A>;<STROKE>;<SMALL>;IGNORE
+<U1E94> <U005A>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E95> <U005A>;<LINE-BELOW>;<SMALL>;IGNORE
+<z8>
+% <U00C6> is a separate letter in Danish
+<U00C6> <U00C6>;<NONE>;<CAPITAL>;IGNORE
+<U00E6> <U00C6>;<NONE>;<SMALL>;IGNORE
+<U01FC> <U00C6>;<ACUTE>;<CAPITAL>;IGNORE
+<U01FD> <U00C6>;<ACUTE>;<SMALL>;IGNORE
+<U01E2> <U00C6>;<MACRON>;<CAPITAL>;IGNORE
+<U01E3> <U00C6>;<MACRON>;<SMALL>;IGNORE
+<U00C4> <U00C6>;<SPECIAL>;<CAPITAL>;IGNORE
+<U00E4> <U00C6>;<SPECIAL>;<SMALL>;IGNORE
+% <U00D8> is a separate letter in Danish
+<U00D8> <U00D8>;<NONE>;<CAPITAL>;IGNORE
+<U00F8> <U00D8>;<NONE>;<SMALL>;IGNORE
+<U01FE> <U00D8>;<ACUTE>;<CAPITAL>;IGNORE
+<U01FF> <U00D8>;<ACUTE>;<SMALL>;IGNORE
+<U00D6> <U00D8>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00F6> <U00D8>;<DIAERESIS>;<SMALL>;IGNORE
+<U0150> <U00D8>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0151> <U00D8>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+% <U00C5> is a separate letter in Danish
+<U00C5> <U00C5>;<NONE>;<CAPITAL>;IGNORE
+<U00E5> <U00C5>;<NONE>;<SMALL>;IGNORE
+<A-A> <U00C5>;<A-A>;<CAPITAL>;IGNORE
+<A-a> <U00C5>;<A-A>;<CAPITAL-SMALL>;IGNORE
+<a-A> <U00C5>;<A-A>;<SMALL-CAPITAL>;IGNORE
+<a-a> <U00C5>;<A-A>;<SMALL>;IGNORE
+<U01FA> <U00C5>;<U01FA>;<CAPITAL>;IGNORE
+<U01FB> <U00C5>;<U01FA>;<SMALL>;IGNORE
+<U0391> <U0391>;<CAPITAL>;<GREEK>;IGNORE
+<U0386> <U0391>;<CAPITAL>;<TONOS>;IGNORE
+<U03B1> <U0391>;<SMALL>;<GREEK>;IGNORE
+<U03AC> <U0391>;<SMALL>;<TONOS>;IGNORE
+<U0392> <U0392>;<CAPITAL>;<GREEK>;IGNORE
+<U03B2> <U0392>;<SMALL>;<GREEK>;IGNORE
+<U0393> <U0393>;<CAPITAL>;<GREEK>;IGNORE
+<U03B3> <U0393>;<SMALL>;<GREEK>;IGNORE
+<U0394> <U0394>;<CAPITAL>;<GREEK>;IGNORE
+<U03B4> <U0394>;<SMALL>;<GREEK>;IGNORE
+<U0395> <U0395>;<CAPITAL>;<GREEK>;IGNORE
+<U0388> <U0395>;<CAPITAL>;<TONOS>;IGNORE
+<U03B5> <U0395>;<SMALL>;<GREEK>;IGNORE
+<U03AD> <U0395>;<SMALL>;<TONOS>;IGNORE
+<U0396> <U0396>;<CAPITAL>;<GREEK>;IGNORE
+<U03B6> <U0396>;<SMALL>;<GREEK>;IGNORE
+<U0397> <U0397>;<CAPITAL>;<GREEK>;IGNORE
+<U0389> <U0397>;<CAPITAL>;<TONOS>;IGNORE
+<U03B7> <U0397>;<SMALL>;<GREEK>;IGNORE
+<U03AE> <U0397>;<SMALL>;<TONOS>;IGNORE
+<U0398> <U0398>;<CAPITAL>;<GREEK>;IGNORE
+<U03B8> <U0398>;<SMALL>;<GREEK>;IGNORE
+<U0399> <U0399>;<CAPITAL>;<GREEK>;IGNORE
+<U038A> <U0399>;<CAPITAL>;<TONOS>;IGNORE
+<U03AA> <U0399>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03B9> <U0399>;<SMALL>;<GREEK>;IGNORE
+<U03AF> <U0399>;<SMALL>;<TONOS>;IGNORE
+<U03CA> <U0399>;<SMALL>;<DIALYTICA>;IGNORE
+<U0390> <U0399>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U039A> <U039A>;<CAPITAL>;<GREEK>;IGNORE
+<U03BA> <U039A>;<SMALL>;<GREEK>;IGNORE
+<U039B> <U039B>;<CAPITAL>;<GREEK>;IGNORE
+<U03BB> <U039B>;<SMALL>;<GREEK>;IGNORE
+<U039C> <U039C>;<CAPITAL>;<GREEK>;IGNORE
+<U03BC> <U039C>;<SMALL>;<GREEK>;IGNORE
+<U039D> <U039D>;<CAPITAL>;<GREEK>;IGNORE
+<U03BD> <U039D>;<SMALL>;<GREEK>;IGNORE
+<U039E> <U039E>;<CAPITAL>;<GREEK>;IGNORE
+<U03BE> <U039E>;<SMALL>;<GREEK>;IGNORE
+<U039F> <U039F>;<CAPITAL>;<GREEK>;IGNORE
+<U038C> <U039F>;<CAPITAL>;<TONOS>;IGNORE
+<U03BF> <U039F>;<SMALL>;<GREEK>;IGNORE
+<U03CC> <U039F>;<SMALL>;<TONOS>;IGNORE
+<U03A0> <U03A0>;<CAPITAL>;<GREEK>;IGNORE
+<U03C0> <U03A0>;<SMALL>;<GREEK>;IGNORE
+<U03A1> <U03A1>;<CAPITAL>;<GREEK>;IGNORE
+<U03C1> <U03A1>;<SMALL>;<GREEK>;IGNORE
+<U03A3> <U03A3>;<CAPITAL>;<GREEK>;IGNORE
+<U03C3> <U03A3>;<SMALL>;<GREEK>;IGNORE
+<U03C2> <U03A3>;<SMALL>;<U03C2>;IGNORE
+<U03A4> <U03A4>;<CAPITAL>;<GREEK>;IGNORE
+<U03C4> <U03A4>;<SMALL>;<GREEK>;IGNORE
+<U03A5> <U03A5>;<CAPITAL>;<GREEK>;IGNORE
+<U038E> <U03A5>;<CAPITAL>;<TONOS>;IGNORE
+<U03AB> <U03A5>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03C5> <U03A5>;<SMALL>;<GREEK>;IGNORE
+<U03CD> <U03A5>;<SMALL>;<TONOS>;IGNORE
+<U03CB> <U03A5>;<SMALL>;<DIALYTICA>;IGNORE
+<U03B0> <U03A5>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U03A6> <U03A6>;<CAPITAL>;<GREEK>;IGNORE
+<U03C6> <U03A6>;<SMALL>;<GREEK>;IGNORE
+<U03A7> <U03A7>;<CAPITAL>;<GREEK>;IGNORE
+<U03C7> <U03A7>;<SMALL>;<GREEK>;IGNORE
+<U03A8> <U03A8>;<CAPITAL>;<GREEK>;IGNORE
+<U03C8> <U03A8>;<SMALL>;<GREEK>;IGNORE
+<U03A9> <U03A9>;<CAPITAL>;<GREEK>;IGNORE
+<U038F> <U03A9>;<CAPITAL>;<TONOS>;IGNORE
+<U03C9> <U03A9>;<SMALL>;<GREEK>;IGNORE
+<U03CE> <U03A9>;<SMALL>;<TONOS>;IGNORE
+<U0410> <U0410>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0430> <U0410>;<CYRILLIC>;<SMALL>;IGNORE
+<U0411> <U0411>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0431> <U0411>;<CYRILLIC>;<SMALL>;IGNORE
+<U0412> <U0412>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0432> <U0412>;<CYRILLIC>;<SMALL>;IGNORE
+<U0413> <U0413>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0433> <U0413>;<CYRILLIC>;<SMALL>;IGNORE
+<U0403> <U0403>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0453> <U0403>;<CYRILLIC>;<SMALL>;IGNORE
+<U0490> <U0490>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0491> <U0490>;<CYRILLIC>;<SMALL>;IGNORE
+<U0414> <U0414>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0434> <U0414>;<CYRILLIC>;<SMALL>;IGNORE
+<U0402> <U0402>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0452> <U0402>;<CYRILLIC>;<SMALL>;IGNORE
+<U0415> <U0415>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0435> <U0415>;<CYRILLIC>;<SMALL>;IGNORE
+<U0401> <U0401>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0451> <U0401>;<CYRILLIC>;<SMALL>;IGNORE
+<U0404> <U0404>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0454> <U0404>;<CYRILLIC>;<SMALL>;IGNORE
+<U0416> <U0416>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0436> <U0416>;<CYRILLIC>;<SMALL>;IGNORE
+<U0417> <U0417>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0437> <U0417>;<CYRILLIC>;<SMALL>;IGNORE
+<U0418> <U0418>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0438> <U0418>;<CYRILLIC>;<SMALL>;IGNORE
+<U0406> <U0406>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0456> <U0406>;<CYRILLIC>;<SMALL>;IGNORE
+<U0407> <U0407>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0457> <U0407>;<CYRILLIC>;<SMALL>;IGNORE
+<U0408> <U0408>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0458> <U0408>;<CYRILLIC>;<SMALL>;IGNORE
+<U0419> <U0419>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0439> <U0419>;<CYRILLIC>;<SMALL>;IGNORE
+<U041A> <U041A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043A> <U041A>;<CYRILLIC>;<SMALL>;IGNORE
+<U040C> <U040C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045C> <U040C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041B> <U041B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043B> <U041B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0409> <U0409>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0459> <U0409>;<CYRILLIC>;<SMALL>;IGNORE
+<U041C> <U041C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043C> <U041C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041D> <U041D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043D> <U041D>;<CYRILLIC>;<SMALL>;IGNORE
+<U040A> <U040A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045A> <U040A>;<CYRILLIC>;<SMALL>;IGNORE
+<U041E> <U041E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043E> <U041E>;<CYRILLIC>;<SMALL>;IGNORE
+<U041F> <U041F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043F> <U041F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0420> <U0420>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0440> <U0420>;<CYRILLIC>;<SMALL>;IGNORE
+<U0421> <U0421>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0441> <U0421>;<CYRILLIC>;<SMALL>;IGNORE
+<U0422> <U0422>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0442> <U0422>;<CYRILLIC>;<SMALL>;IGNORE
+<U040B> <U040B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045B> <U040B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0423> <U0423>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0443> <U0423>;<CYRILLIC>;<SMALL>;IGNORE
+<U040E> <U040E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045E> <U040E>;<CYRILLIC>;<SMALL>;IGNORE
+<U0424> <U0424>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0444> <U0424>;<CYRILLIC>;<SMALL>;IGNORE
+<U0425> <U0425>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0445> <U0425>;<CYRILLIC>;<SMALL>;IGNORE
+<U0426> <U0426>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0446> <U0426>;<CYRILLIC>;<SMALL>;IGNORE
+<U0405> <U0405>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0455> <U0405>;<CYRILLIC>;<SMALL>;IGNORE
+<U0427> <U0427>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0447> <U0427>;<CYRILLIC>;<SMALL>;IGNORE
+<U040F> <U040F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045F> <U040F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0428> <U0428>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0448> <U0428>;<CYRILLIC>;<SMALL>;IGNORE
+<U0429> <U0429>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0449> <U0429>;<CYRILLIC>;<SMALL>;IGNORE
+<U044A> <U044A>;<CYRILLIC>;<SMALL>;IGNORE
+<U042A> <U044A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042B> <U042B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044B> <U042B>;<CYRILLIC>;<SMALL>;IGNORE
+<U044C> <U044C>;<CYRILLIC>;<SMALL>;IGNORE
+<U042C> <U044C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042D> <U042D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044D> <U042D>;<CYRILLIC>;<SMALL>;IGNORE
+<U042E> <U042E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044E> <U042E>;<CYRILLIC>;<SMALL>;IGNORE
+<U042F> <U042F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044F> <U042F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0462> <U0462>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0463> <U0462>;<CYRILLIC>;<SMALL>;IGNORE
+<U046A> <U046A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U046B> <U046A>;<CYRILLIC>;<SMALL>;IGNORE
+<U0472> <U0472>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0473> <U0472>;<CYRILLIC>;<SMALL>;IGNORE
+<U0474> <U0474>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0475> <U0474>;<CYRILLIC>;<SMALL>;IGNORE
+<U0480> <U0480>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0481> <U0480>;<CYRILLIC>;<SMALL>;IGNORE
+<U05D0> <U05D0>;IGNORE;IGNORE;IGNORE
+<U05D1> <U05D1>;IGNORE;IGNORE;IGNORE
+<U05D2> <U05D2>;IGNORE;IGNORE;IGNORE
+<U05D3> <U05D3>;IGNORE;IGNORE;IGNORE
+<U05D4> <U05D4>;IGNORE;IGNORE;IGNORE
+<U05D5> <U05D5>;IGNORE;IGNORE;IGNORE
+<U05D6> <U05D6>;IGNORE;IGNORE;IGNORE
+<U05D7> <U05D7>;IGNORE;IGNORE;IGNORE
+<U05D8> <U05D8>;IGNORE;IGNORE;IGNORE
+<U05D9> <U05D9>;IGNORE;IGNORE;IGNORE
+<U05DA> <U05DA>;IGNORE;IGNORE;IGNORE
+<U05DB> <U05DB>;IGNORE;IGNORE;IGNORE
+<U05DC> <U05DC>;IGNORE;IGNORE;IGNORE
+<U05DD> <U05DD>;IGNORE;IGNORE;IGNORE
+<U05DE> <U05DE>;IGNORE;IGNORE;IGNORE
+<U05DF> <U05DF>;IGNORE;IGNORE;IGNORE
+<U05E0> <U05E0>;IGNORE;IGNORE;IGNORE
+<U05E1> <U05E1>;IGNORE;IGNORE;IGNORE
+<U05E2> <U05E2>;IGNORE;IGNORE;IGNORE
+<U05E3> <U05E3>;IGNORE;IGNORE;IGNORE
+<U05E4> <U05E4>;IGNORE;IGNORE;IGNORE
+<U05E5> <U05E5>;IGNORE;IGNORE;IGNORE
+<U05E6> <U05E6>;IGNORE;IGNORE;IGNORE
+<U05E7> <U05E7>;IGNORE;IGNORE;IGNORE
+<U05E8> <U05E8>;IGNORE;IGNORE;IGNORE
+<U05E9> <U05E9>;IGNORE;IGNORE;IGNORE
+<U05EA> <U05EA>;IGNORE;IGNORE;IGNORE
+
+% Arabic collating
+
+<U060C> IGNORE;IGNORE;IGNORE;<U060C>
+<U061B> IGNORE;IGNORE;IGNORE;<U061B>
+<U061F> IGNORE;IGNORE;IGNORE;<U061F>
+<U0640> IGNORE;IGNORE;IGNORE;<U0640>
+
+<U0621> <U0621>;<U0621>;IGNORE;IGNORE
+<U0622> <U0622>;<U0622>;IGNORE;IGNORE
+<UFE82> <U0622>;<UFE82>;IGNORE;IGNORE
+<U0623> <U0621>;<U0623>;IGNORE;IGNORE
+<UFE84> <U0621>;<UFE84>;IGNORE;IGNORE
+<U0624> <U0621>;<U0624>;IGNORE;IGNORE
+<U0625> <U0621>;<U0625>;IGNORE;IGNORE
+<UFE88> <U0621>;<UFE88>;IGNORE;IGNORE
+<U0626> <U0621>;<U0626>;IGNORE;IGNORE
+<U0670> <U0670>;<U0670>;IGNORE;IGNORE
+<U0627> <U0627>;<U0627>;IGNORE;IGNORE
+<UFE8D> <U0627>;<UFE8D>;IGNORE;IGNORE
+<UFE8E> <U0627>;<UFE8E>;IGNORE;IGNORE
+<UE016> <U0627>;<UE016>;IGNORE;IGNORE
+<U0628> <U0628>;<U0628>;IGNORE;IGNORE
+<UFE8F> <U0628>;<UFE8F>;IGNORE;IGNORE
+<UFE90> <U0628>;<UFE90>;IGNORE;IGNORE
+<UFE91> <U0628>;<UFE91>;IGNORE;IGNORE
+<UFE92> <U0628>;<UFE92>;IGNORE;IGNORE
+<U067E> <U067E>;<U067E>;IGNORE;IGNORE
+<U06A4> <U06A4>;<U06A4>;IGNORE;IGNORE
+<U0629> <U0629>;<U0629>;IGNORE;IGNORE
+<UFE93> <U0629>;<UFE93>;IGNORE;IGNORE
+<UFE94> <U0629>;<UFE94>;IGNORE;IGNORE
+<U062A> <U0629>;<U062A>;IGNORE;IGNORE
+<UFE95> <U0629>;<UFE95>;IGNORE;IGNORE
+<UFE96> <U0629>;<UFE96>;IGNORE;IGNORE
+<UFE97> <U0629>;<UFE97>;IGNORE;IGNORE
+<UFE98> <U0629>;<UFE98>;IGNORE;IGNORE
+<U062B> <U062B>;<U062B>;IGNORE;IGNORE
+<UFE99> <U062B>;<UFE99>;IGNORE;IGNORE
+<UFE9A> <U062B>;<UFE9A>;IGNORE;IGNORE
+<UFE9B> <U062B>;<UFE9B>;IGNORE;IGNORE
+<UFE9C> <U062B>;<UFE9C>;IGNORE;IGNORE
+<U062C> <U062C>;<U062C>;IGNORE;IGNORE
+<UFE9D> <U062C>;<UFE9D>;IGNORE;IGNORE
+<UFE9E> <U062C>;<UFE9E>;IGNORE;IGNORE
+<UFE9F> <U062C>;<UFE9F>;IGNORE;IGNORE
+<UFEA0> <U062C>;<UFEA0>;IGNORE;IGNORE
+<U062D> <U062D>;<U062D>;IGNORE;IGNORE
+<UFEA1> <U062D>;<UFEA1>;IGNORE;IGNORE
+<UFEA2> <U062D>;<UFEA2>;IGNORE;IGNORE
+<UFEA3> <U062D>;<UFEA3>;IGNORE;IGNORE
+<UFEA4> <U062D>;<UFEA4>;IGNORE;IGNORE
+<U062E> <U062E>;<U062E>;IGNORE;IGNORE
+<UFEA5> <U062E>;<UFEA5>;IGNORE;IGNORE
+<UFEA6> <U062E>;<UFEA6>;IGNORE;IGNORE
+<UFEA7> <U062E>;<UFEA7>;IGNORE;IGNORE
+<UFEA8> <U062E>;<UFEA8>;IGNORE;IGNORE
+<U062F> <U062F>;<U062F>;IGNORE;IGNORE
+<UFEA9> <U062F>;<UFEA9>;IGNORE;IGNORE
+<UFEAA> <U062F>;<UFEAA>;IGNORE;IGNORE
+<U0630> <U0630>;<U0630>;IGNORE;IGNORE
+<UFEAB> <U0630>;<UFEAB>;IGNORE;IGNORE
+<UFEAC> <U0630>;<UFEAC>;IGNORE;IGNORE
+<U0631> <U0631>;<U0631>;IGNORE;IGNORE
+<UFEAD> <U0631>;<UFEAD>;IGNORE;IGNORE
+<UFEAE> <U0631>;<UFEAE>;IGNORE;IGNORE
+<U0632> <U0632>;<U0632>;IGNORE;IGNORE
+<UFEAF> <U0632>;<UFEAF>;IGNORE;IGNORE
+<UFEB0> <U0632>;<UFEB0>;IGNORE;IGNORE
+<U0633> <U0633>;<U0633>;IGNORE;IGNORE
+<UFEB1> <U0633>;<UFEB1>;IGNORE;IGNORE
+<UFEB2> <U0633>;<UFEB2>;IGNORE;IGNORE
+<UFEB3> <U0633>;<UFEB3>;IGNORE;IGNORE
+<UFEB4> <U0633>;<UFEB4>;IGNORE;IGNORE
+<U0634> <U0634>;<U0634>;IGNORE;IGNORE
+<UFEB5> <U0634>;<UFEB5>;IGNORE;IGNORE
+<UFEB6> <U0634>;<UFEB6>;IGNORE;IGNORE
+<UFEB7> <U0634>;<UFEB7>;IGNORE;IGNORE
+<UFEB8> <U0634>;<UFEB8>;IGNORE;IGNORE
+<U0635> <U0635>;<U0635>;IGNORE;IGNORE
+<UFEB9> <U0635>;<UFEB9>;IGNORE;IGNORE
+<UFEBA> <U0635>;<UFEBA>;IGNORE;IGNORE
+<UFEBB> <U0635>;<UFEBB>;IGNORE;IGNORE
+<UFEBC> <U0635>;<UFEBC>;IGNORE;IGNORE
+<U0636> <U0636>;<U0636>;IGNORE;IGNORE
+<UFEBD> <U0636>;<UFEBD>;IGNORE;IGNORE
+<UFEBE> <U0636>;<UFEBE>;IGNORE;IGNORE
+<UFEBF> <U0636>;<UFEBF>;IGNORE;IGNORE
+<UFEC0> <U0636>;<UFEC0>;IGNORE;IGNORE
+<U0637> <U0637>;<U0637>;IGNORE;IGNORE
+<UFEC1> <U0637>;<UFEC1>;IGNORE;IGNORE
+<UFEC2> <U0637>;<UFEC2>;IGNORE;IGNORE
+<UFEC3> <U0637>;<UFEC3>;IGNORE;IGNORE
+<UFEC4> <U0637>;<UFEC4>;IGNORE;IGNORE
+<U0638> <U0638>;<U0638>;IGNORE;IGNORE
+<UFEC5> <U0638>;<UFEC5>;IGNORE;IGNORE
+<UFEC6> <U0638>;<UFEC6>;IGNORE;IGNORE
+<UFEC7> <U0638>;<UFEC7>;IGNORE;IGNORE
+<UFEC8> <U0638>;<UFEC8>;IGNORE;IGNORE
+<U0639> <U0639>;<U0639>;IGNORE;IGNORE
+<UFEC9> <U0639>;<UFEC9>;IGNORE;IGNORE
+<UFECA> <U0639>;<UFECA>;IGNORE;IGNORE
+<UFECB> <U0639>;<UFECB>;IGNORE;IGNORE
+<UFECC> <U0639>;<UFECC>;IGNORE;IGNORE
+<U063A> <U063A>;<U063A>;IGNORE;IGNORE
+<UFECD> <U063A>;<UFECD>;IGNORE;IGNORE
+<UFECE> <U063A>;<UFECE>;IGNORE;IGNORE
+<UFECF> <U063A>;<UFECF>;IGNORE;IGNORE
+<UFED0> <U063A>;<UFED0>;IGNORE;IGNORE
+<U0641> <U0641>;<U0641>;IGNORE;IGNORE
+<UFED1> <U0641>;<UFED1>;IGNORE;IGNORE
+<UFED2> <U0641>;<UFED2>;IGNORE;IGNORE
+<UFED3> <U0641>;<UFED3>;IGNORE;IGNORE
+<UFED4> <U0641>;<UFED4>;IGNORE;IGNORE
+<U0642> <U0642>;<U0642>;IGNORE;IGNORE
+<UFED5> <U0642>;<UFED5>;IGNORE;IGNORE
+<UFED6> <U0642>;<UFED6>;IGNORE;IGNORE
+<UFED7> <U0642>;<UFED7>;IGNORE;IGNORE
+<UFED8> <U0642>;<UFED8>;IGNORE;IGNORE
+<U0643> <U0643>;<U0643>;IGNORE;IGNORE
+<UFED9> <U0643>;<UFED9>;IGNORE;IGNORE
+<UFEDA> <U0643>;<UFEDA>;IGNORE;IGNORE
+<UFEDB> <U0643>;<UFEDB>;IGNORE;IGNORE
+<UFEDC> <U0643>;<UFEDC>;IGNORE;IGNORE
+<U0644> <U0644>;<U0644>;IGNORE;IGNORE
+<UFEDD> <U0644>;<UFEDD>;IGNORE;IGNORE
+<UFEDE> <U0644>;<UFEDE>;IGNORE;IGNORE
+<UFEDF> <U0644>;<UFEDF>;IGNORE;IGNORE
+<UFEE0> <U0644>;<UFEE0>;IGNORE;IGNORE
+<U0645> <U0645>;<U0645>;IGNORE;IGNORE
+<UFEE1> <U0645>;<UFEE1>;IGNORE;IGNORE
+<UFEE2> <U0645>;<UFEE2>;IGNORE;IGNORE
+<UFEE3> <U0645>;<UFEE3>;IGNORE;IGNORE
+<UFEE4> <U0645>;<UFEE4>;IGNORE;IGNORE
+<U0646> <U0646>;<U0646>;IGNORE;IGNORE
+<UFEE5> <U0646>;<UFEE5>;IGNORE;IGNORE
+<UFEE6> <U0646>;<UFEE6>;IGNORE;IGNORE
+<UFEE7> <U0646>;<UFEE7>;IGNORE;IGNORE
+<UFEE8> <U0646>;<UFEE8>;IGNORE;IGNORE
+<U0647> <U0647>;<U0647>;IGNORE;IGNORE
+<UFEE9> <U0647>;<UFEE9>;IGNORE;IGNORE
+<UFEEA> <U0647>;<UFEEA>;IGNORE;IGNORE
+<UFEEB> <U0647>;<UFEEB>;IGNORE;IGNORE
+<UFEEC> <U0647>;<UFEEC>;IGNORE;IGNORE
+<U0648> <U0648>;<U0648>;IGNORE;IGNORE
+<UFEED> <U0648>;<UFEED>;IGNORE;IGNORE
+<UFEEE> <U0648>;<UFEEE>;IGNORE;IGNORE
+<U0649> <U0649>;<U0649>;IGNORE;IGNORE
+<UFEEF> <U0649>;<UFEEF>;IGNORE;IGNORE
+<UFEF0> <U0649>;<UFEF0>;IGNORE;IGNORE
+<U064A> <U064A>;<U064A>;IGNORE;IGNORE
+<UFEF1> <U064A>;<UFEF1>;IGNORE;IGNORE
+<UFEF2> <U064A>;<UFEF2>;IGNORE;IGNORE
+<UFEF3> <U064A>;<UFEF3>;IGNORE;IGNORE
+<UFEF4> <U064A>;<UFEF4>;IGNORE;IGNORE
+
+<U064B> IGNORE;IGNORE;<U064B>;IGNORE
+<U064C> IGNORE;IGNORE;<U064C>;IGNORE
+<U064D> IGNORE;IGNORE;<U064D>;IGNORE
+<U064E> IGNORE;IGNORE;<U064E>;IGNORE
+<U064F> IGNORE;IGNORE;<U064F>;IGNORE
+<U0650> IGNORE;IGNORE;<U0650>;IGNORE
+<U0651> IGNORE;IGNORE;<U0651>;IGNORE
+<UFE7D> IGNORE;IGNORE;<UFE7D>;IGNORE
+<U0652> IGNORE;IGNORE;<U0652>;IGNORE
+
+<U0660> <U0030>;<U0660>;IGNORE;IGNORE
+<U0661> <U0031>;<U0661>;IGNORE;IGNORE
+<U0662> <U0032>;<U0662>;IGNORE;IGNORE
+<U0663> <U0033>;<U0663>;IGNORE;IGNORE
+<U0664> <U0034>;<U0664>;IGNORE;IGNORE
+<U0665> <U0035>;<U0665>;IGNORE;IGNORE
+<U0666> <U0036>;<U0666>;IGNORE;IGNORE
+<U0667> <U0037>;<U0667>;IGNORE;IGNORE
+<U0668> <U0038>;<U0668>;IGNORE;IGNORE
+<U0669> <U0039>;<U0669>;IGNORE;IGNORE
+
+<UFEF5> "<U0644><U0622>";"<U0644><U0622>";"<UFEF5><UFEF5>";IGNORE
+<UFEF6> "<U0644><U0622>";"<U0644><UFE82>";"<UFEF6><UFEF6>";IGNORE
+<UFEF7> "<U0644><U0623>";"<U0644><U0623>";"<UFEF7><UFEF7>";IGNORE
+<UFEF8> "<U0644><U0623>";"<U0644><UFE84>";"<UFEF8><UFEF8>";IGNORE
+<UFEF9> "<U0644><U0625>";"<U0644><U0625>";"<UFEF9><UFEF9>";IGNORE
+<UFEFA> "<U0644><U0625>";"<U0644><UFE88>";"<UFEFA><UFEFA>";IGNORE
+<UFEFB> "<U0644><U0627>";"<U0644><UFE8D>";"<UFEFB><UFEFB>";IGNORE
+<UFEFC> "<U0644><U0627>";"<U0644><UFE8E>";"<UFEFC><UFEFC>";IGNORE
+
+% katakana/hiragana sorting
+% base is katakana, as this is present in most charsets
+% normal before voiced before semi-voiced
+% small vocals before normal vocals
+% katakana before hiragana
+
+<U30A1> <U30A1>;<U30A1>;IGNORE;IGNORE
+<U3041> <U30A1>;<U3041>;IGNORE;IGNORE
+<U30A2> <U30A1>;<U30A2>;IGNORE;IGNORE
+<U3042> <U30A1>;<U3042>;IGNORE;IGNORE
+<U30A3> <U30A3>;<U30A3>;IGNORE;IGNORE
+<U3043> <U30A3>;<U3043>;IGNORE;IGNORE
+<U30A4> <U30A3>;<U30A4>;IGNORE;IGNORE
+<U3044> <U30A3>;<U3044>;IGNORE;IGNORE
+<U30A5> <U30A5>;<U30A5>;IGNORE;IGNORE
+<U3045> <U30A5>;<U3045>;IGNORE;IGNORE
+<U30A6> <U30A5>;<U30A6>;IGNORE;IGNORE
+<U3046> <U30A5>;<U3046>;IGNORE;IGNORE
+<U30F4> <U30A5>;<U30F4>;IGNORE;IGNORE
+<U30A7> <U30A7>;<U30A7>;IGNORE;IGNORE
+<U3047> <U30A7>;<U3047>;IGNORE;IGNORE
+<U30A8> <U30A7>;<U30A8>;IGNORE;IGNORE
+<U3048> <U30A7>;<U3048>;IGNORE;IGNORE
+<U30A9> <U30A9>;<U30A9>;IGNORE;IGNORE
+<U3049> <U30A9>;<U3049>;IGNORE;IGNORE
+<U30AA> <U30A9>;<U30AA>;IGNORE;IGNORE
+<U304A> <U30A9>;<U304A>;IGNORE;IGNORE
+<U30F5> <U30F5>;<U30F5>;IGNORE;IGNORE
+<U30AB> <U30F5>;<U30AB>;IGNORE;IGNORE
+<U304B> <U30F5>;<U304B>;IGNORE;IGNORE
+<U30AC> <U30F5>;<U30AC>;IGNORE;IGNORE
+<U304C> <U30F5>;<U304C>;IGNORE;IGNORE
+<U30AD> <U30AD>;<U30AD>;IGNORE;IGNORE
+<U304D> <U30AD>;<U304D>;IGNORE;IGNORE
+<U30AE> <U30AD>;<U30AE>;IGNORE;IGNORE
+<U304E> <U30AD>;<U304E>;IGNORE;IGNORE
+<U30AF> <U30AF>;<U30AF>;IGNORE;IGNORE
+<U304F> <U30AF>;<U304F>;IGNORE;IGNORE
+<U30B0> <U30AF>;<U30B0>;IGNORE;IGNORE
+<U3050> <U30AF>;<U3050>;IGNORE;IGNORE
+<U30F6> <U30F6>;<U30F6>;IGNORE;IGNORE
+<U30B1> <U30F6>;<U30B1>;IGNORE;IGNORE
+<U3051> <U30F6>;<U3051>;IGNORE;IGNORE
+<U30B2> <U30F6>;<U30B2>;IGNORE;IGNORE
+<U3052> <U30F6>;<U3052>;IGNORE;IGNORE
+<U30B3> <U30B3>;<U30B3>;IGNORE;IGNORE
+<U3053> <U30B3>;<U3053>;IGNORE;IGNORE
+<U30B4> <U30B3>;<U30B4>;IGNORE;IGNORE
+<U3054> <U30B3>;<U3054>;IGNORE;IGNORE
+<U30B5> <U30B5>;<U30B5>;IGNORE;IGNORE
+<U3055> <U30B5>;<U3055>;IGNORE;IGNORE
+<U30B6> <U30B5>;<U30B6>;IGNORE;IGNORE
+<U3056> <U30B5>;<U3056>;IGNORE;IGNORE
+<U30B7> <U30B7>;<U30B7>;IGNORE;IGNORE
+<U3057> <U30B7>;<U3057>;IGNORE;IGNORE
+<U30B8> <U30B7>;<U30B8>;IGNORE;IGNORE
+<U3058> <U30B7>;<U3058>;IGNORE;IGNORE
+<U30B9> <U30B9>;<U30B9>;IGNORE;IGNORE
+<U3059> <U30B9>;<U3059>;IGNORE;IGNORE
+<U30BA> <U30B9>;<U30BA>;IGNORE;IGNORE
+<U305A> <U30B9>;<U305A>;IGNORE;IGNORE
+<U30BB> <U30BB>;<U30BB>;IGNORE;IGNORE
+<U305B> <U30BB>;<U305B>;IGNORE;IGNORE
+<U30BC> <U30BB>;<U30BC>;IGNORE;IGNORE
+<U305C> <U30BB>;<U305C>;IGNORE;IGNORE
+<U30BD> <U30BD>;<U30BD>;IGNORE;IGNORE
+<U305D> <U30BD>;<U305D>;IGNORE;IGNORE
+<U30BE> <U30BD>;<U30BE>;IGNORE;IGNORE
+<U305E> <U30BD>;<U305E>;IGNORE;IGNORE
+<U30BF> <U30BF>;<U30BF>;IGNORE;IGNORE
+<U305F> <U30BF>;<U305F>;IGNORE;IGNORE
+<U30C0> <U30BF>;<U30C0>;IGNORE;IGNORE
+<U3060> <U30BF>;<U3060>;IGNORE;IGNORE
+<U30C1> <U30C1>;<U30C1>;IGNORE;IGNORE
+<U3061> <U30C1>;<U3061>;IGNORE;IGNORE
+<U30C2> <U30C1>;<U30C2>;IGNORE;IGNORE
+<U3062> <U30C1>;<U3062>;IGNORE;IGNORE
+<U30C3> <U30C3>;<U30C3>;IGNORE;IGNORE
+<U3063> <U30C3>;<U3063>;IGNORE;IGNORE
+<U30C4> <U30C3>;<U30C4>;IGNORE;IGNORE
+<U3064> <U30C3>;<U3064>;IGNORE;IGNORE
+<U30C5> <U30C3>;<U30C5>;IGNORE;IGNORE
+<U3065> <U30C3>;<U3065>;IGNORE;IGNORE
+<U30C6> <U30C6>;<U30C6>;IGNORE;IGNORE
+<U3066> <U30C6>;<U3066>;IGNORE;IGNORE
+<U30C7> <U30C6>;<U30C7>;IGNORE;IGNORE
+<U3067> <U30C6>;<U3067>;IGNORE;IGNORE
+<U30C8> <U30C8>;<U30C8>;IGNORE;IGNORE
+<U3068> <U30C8>;<U3068>;IGNORE;IGNORE
+<U30C9> <U30C8>;<U30C9>;IGNORE;IGNORE
+<U3069> <U30C8>;<U3069>;IGNORE;IGNORE
+<U30CA> <U30CA>;<U30CA>;IGNORE;IGNORE
+<U306A> <U30CA>;<U306A>;IGNORE;IGNORE
+<U30CB> <U30CB>;<U30CB>;IGNORE;IGNORE
+<U306B> <U30CB>;<U306B>;IGNORE;IGNORE
+<U30CC> <U30CC>;<U30CC>;IGNORE;IGNORE
+<U306C> <U30CC>;<U306C>;IGNORE;IGNORE
+<U30CD> <U30CD>;<U30CD>;IGNORE;IGNORE
+<U306D> <U30CD>;<U306D>;IGNORE;IGNORE
+<U30CE> <U30CE>;<U30CE>;IGNORE;IGNORE
+<U306E> <U30CE>;<U306E>;IGNORE;IGNORE
+<U30CF> <U30CF>;<U30CF>;IGNORE;IGNORE
+<U306F> <U30CF>;<U306F>;IGNORE;IGNORE
+<U30D0> <U30CF>;<U30D0>;IGNORE;IGNORE
+<U3070> <U30CF>;<U3070>;IGNORE;IGNORE
+<U30D1> <U30CF>;<U30D1>;IGNORE;IGNORE
+<U3071> <U30CF>;<U3071>;IGNORE;IGNORE
+<U30D2> <U30D2>;<U30D2>;IGNORE;IGNORE
+<U3072> <U30D2>;<U3072>;IGNORE;IGNORE
+<U30D3> <U30D2>;<U30D3>;IGNORE;IGNORE
+<U3073> <U30D2>;<U3073>;IGNORE;IGNORE
+<U30D4> <U30D2>;<U30D4>;IGNORE;IGNORE
+<U3074> <U30D2>;<U3074>;IGNORE;IGNORE
+<U30D5> <U30D5>;<U30D5>;IGNORE;IGNORE
+<U3075> <U30D5>;<U3075>;IGNORE;IGNORE
+<U30D6> <U30D5>;<U30D6>;IGNORE;IGNORE
+<U3076> <U30D5>;<U3076>;IGNORE;IGNORE
+<U30D7> <U30D5>;<U30D7>;IGNORE;IGNORE
+<U3077> <U30D5>;<U3077>;IGNORE;IGNORE
+<U30D8> <U30D8>;<U30D8>;IGNORE;IGNORE
+<U3078> <U30D8>;<U3078>;IGNORE;IGNORE
+<U30D9> <U30D8>;<U30D9>;IGNORE;IGNORE
+<U3079> <U30D8>;<U3079>;IGNORE;IGNORE
+<U30DA> <U30D8>;<U30DA>;IGNORE;IGNORE
+<U307A> <U30D8>;<U307A>;IGNORE;IGNORE
+<U30DB> <U30DB>;<U30DB>;IGNORE;IGNORE
+<U307B> <U30DB>;<U307B>;IGNORE;IGNORE
+<U30DC> <U30DB>;<U30DC>;IGNORE;IGNORE
+<U307C> <U30DB>;<U307C>;IGNORE;IGNORE
+<U30DD> <U30DB>;<U30DD>;IGNORE;IGNORE
+<U307D> <U30DB>;<U307D>;IGNORE;IGNORE
+<U30DE> <U30DE>;<U30DE>;IGNORE;IGNORE
+<U307E> <U30DE>;<U307E>;IGNORE;IGNORE
+<U30DF> <U30DF>;<U30DF>;IGNORE;IGNORE
+<U307F> <U30DF>;<U307F>;IGNORE;IGNORE
+<U30E0> <U30E0>;<U30E0>;IGNORE;IGNORE
+<U3080> <U30E0>;<U3080>;IGNORE;IGNORE
+<U30E1> <U30E1>;<U30E1>;IGNORE;IGNORE
+<U3081> <U30E1>;<U3081>;IGNORE;IGNORE
+<U30E2> <U30E2>;<U30E2>;IGNORE;IGNORE
+<U3082> <U30E2>;<U3082>;IGNORE;IGNORE
+<U30E3> <U30E3>;<U30E3>;IGNORE;IGNORE
+<U3083> <U30E3>;<U3083>;IGNORE;IGNORE
+<U30E4> <U30E3>;<U30E4>;IGNORE;IGNORE
+<U3084> <U30E3>;<U3084>;IGNORE;IGNORE
+<U30E5> <U30E5>;<U30E5>;IGNORE;IGNORE
+<U3085> <U30E5>;<U3085>;IGNORE;IGNORE
+<U30E6> <U30E5>;<U30E6>;IGNORE;IGNORE
+<U3086> <U30E5>;<U3086>;IGNORE;IGNORE
+<U30E7> <U30E7>;<U30E7>;IGNORE;IGNORE
+<U3087> <U30E7>;<U3087>;IGNORE;IGNORE
+<U30E8> <U30E7>;<U30E8>;IGNORE;IGNORE
+<U3088> <U30E7>;<U3088>;IGNORE;IGNORE
+<U30E9> <U30E9>;<U30E9>;IGNORE;IGNORE
+<U3089> <U30E9>;<U3089>;IGNORE;IGNORE
+<U30EA> <U30EA>;<U30EA>;IGNORE;IGNORE
+<U308A> <U30EA>;<U308A>;IGNORE;IGNORE
+<U30EB> <U30EB>;<U30EB>;IGNORE;IGNORE
+<U308B> <U30EB>;<U308B>;IGNORE;IGNORE
+<U30EC> <U30EC>;<U30EC>;IGNORE;IGNORE
+<U308C> <U30EC>;<U308C>;IGNORE;IGNORE
+<U30ED> <U30ED>;<U30ED>;IGNORE;IGNORE
+<U308D> <U30ED>;<U308D>;IGNORE;IGNORE
+<U30EE> <U30EE>;<U30EE>;IGNORE;IGNORE
+<U308E> <U30EE>;<U308E>;IGNORE;IGNORE
+<U30EF> <U30EE>;<U30EF>;IGNORE;IGNORE
+<U308F> <U30EE>;<U308F>;IGNORE;IGNORE
+<U30F0> <U30F0>;<U30F0>;IGNORE;IGNORE
+<U3090> <U30F0>;<U3090>;IGNORE;IGNORE
+<U30F1> <U30F1>;<U30F1>;IGNORE;IGNORE
+<U3091> <U30F1>;<U3091>;IGNORE;IGNORE
+<U30F2> <U30F2>;<U30F2>;IGNORE;IGNORE
+<U3092> <U30F2>;<U3092>;IGNORE;IGNORE
+<U30F3> <U30F3>;<U30F3>;IGNORE;IGNORE
+<U3093> <U30F3>;<U3093>;IGNORE;IGNORE
+
+order_end
+
diff --git a/ap/build/uClibc/extra/locale/collation/de_AT b/ap/build/uClibc/extra/locale/collation/de_AT
new file mode 100644
index 0000000..5314a57
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/de_AT
@@ -0,0 +1,2 @@
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/de_BE b/ap/build/uClibc/extra/locale/collation/de_BE
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/de_BE
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/de_CH b/ap/build/uClibc/extra/locale/collation/de_CH
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/de_CH
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/de_DE b/ap/build/uClibc/extra/locale/collation/de_DE
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/de_DE
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/de_LU b/ap/build/uClibc/extra/locale/collation/de_LU
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/de_LU
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/el_GR b/ap/build/uClibc/extra/locale/collation/el_GR
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/el_GR
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/en_AU b/ap/build/uClibc/extra/locale/collation/en_AU
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/en_AU
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/en_BW b/ap/build/uClibc/extra/locale/collation/en_BW
new file mode 100644
index 0000000..a7e9285
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/en_BW
@@ -0,0 +1 @@
+copy "en_ZA"
diff --git a/ap/build/uClibc/extra/locale/collation/en_CA b/ap/build/uClibc/extra/locale/collation/en_CA
new file mode 100644
index 0000000..ab4b690
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/en_CA
@@ -0,0 +1,2061 @@
+
+% Base collation scheme: 1994-03-22
+
+% Ordering algorithm:
+% 1. Spaces and hyphen (but not soft
+% hyphen) before punctuation
+% characters, punctuation characters
+% before numbers,
+% numbers before letters.
+% 2. Letters with diacritical marks are
+% members of equivalence classes
+% 3. A distinction is made with regards
+% to case as noted below.
+% 4. Special characters are ignored
+% when comparing letters, but then
+% they are considered
+% 5. The alphabets are sorted in order
+% of first appearance in ISO 10646:
+% Latin, Greek, Cyrillic, etc.
+%
+% According to Greek specifications,
+% the steps 2. and 3. above are reversed
+% for the Greek script
+
+% collating symbols
+
+% The collating symbol naming is
+% mostly taken from ISO 10646-1,
+% for example the case and accent
+% names are from this standard.
+
+collating-symbol <CAPITAL>
+collating-symbol <CAPITAL-SMALL>
+collating-symbol <SMALL-CAPITAL>
+collating-symbol <SMALL>
+
+% <CAPITAL-SMALL> and <SMALL-CAPITAL>
+% are for cases like Danish <U0041><U0061>
+% and Spanish <U0043><U0068> being treated
+% as one letter.
+
+% The <a8> ...... <z8> collating
+% symbols have defined weights as
+% the last character in a group of
+% Latin letters. They are used
+% to specify deltas by locales using
+% a locale as the default ordering
+% and by "replace-after" statements
+% specifying the changed placement
+% in an ordering of a character.
+
+collating-symbol <a8>
+collating-symbol <b8>
+collating-symbol <c8>
+collating-symbol <d8>
+collating-symbol <e8>
+collating-symbol <f8>
+collating-symbol <g8>
+collating-symbol <h8>
+collating-symbol <i8>
+collating-symbol <j8>
+collating-symbol <k8>
+collating-symbol <l8>
+collating-symbol <m8>
+collating-symbol <n8>
+collating-symbol <o8>
+collating-symbol <p8>
+collating-symbol <q8>
+collating-symbol <r8>
+collating-symbol <s8>
+collating-symbol <t8>
+collating-symbol <u8>
+collating-symbol <v8>
+collating-symbol <w8>
+collating-symbol <x8>
+collating-symbol <y8>
+collating-symbol <z8>
+
+collating-symbol <NONE>
+collating-symbol <ACUTE>
+collating-symbol <ACUTE+DOT>
+collating-symbol <GRAVE>
+collating-symbol <DOUBLE-GRAVE>
+collating-symbol <BREVE>
+collating-symbol <BREVE+ACUTE>
+collating-symbol <BREVE+GRAVE>
+collating-symbol <BREVE+MACRON>
+collating-symbol <BREVE+HOOK>
+collating-symbol <BREVE+TILDE>
+collating-symbol <BREVE+DOT-BELOW>
+collating-symbol <BREVE-BELOW>
+collating-symbol <INVERTED-BREVE>
+collating-symbol <CIRCUMFLEX>
+collating-symbol <CIRCUMFLEX+ACUTE>
+collating-symbol <CIRCUMFLEX+GRAVE>
+collating-symbol <CIRCUMFLEX+HOOK>
+collating-symbol <CIRCUMFLEX+TILDE>
+collating-symbol <CIRCUMFLEX+DOT-BELOW>
+collating-symbol <CARON>
+collating-symbol <CARON+DIAERESIS>
+collating-symbol <CARON+DOT>
+collating-symbol <RING>
+collating-symbol <RING+ACUTE>
+collating-symbol <RING-BELOW>
+collating-symbol <DIAERESIS>
+collating-symbol <DIAERESIS+MACRON>
+collating-symbol <DIAERESIS+ACUTE>
+collating-symbol <DIAERESIS+GRAVE>
+collating-symbol <DIAERESIS+CARON>
+collating-symbol <DOUBLE-ACUTE>
+collating-symbol <HOOK>
+collating-symbol <TILDE>
+collating-symbol <TILDE+ACUTE>
+collating-symbol <TILDE+DIAERESIS>
+collating-symbol <TILDE-BELOW>
+collating-symbol <DOT>
+collating-symbol <DOT-BELOW>
+collating-symbol <DOT+DOT-BELOW>
+collating-symbol <STROKE>
+collating-symbol <STROKE+ACUTE>
+collating-symbol <CEDILLA>
+collating-symbol <CEDILLA+ACUTE>
+collating-symbol <CEDILLA+GRAVE>
+collating-symbol <CEDILLA+BREVE>
+collating-symbol <OGONEK>
+collating-symbol <OGONEK+MACRON>
+collating-symbol <MACRON>
+collating-symbol <MACRON+ACUTE>
+collating-symbol <MACRON+GRAVE>
+collating-symbol <MACRON+DIAERESIS>
+collating-symbol <MACRON+DIAERESIS-BELOW>
+collating-symbol <MACRON+DOT>
+collating-symbol <MACRON+DOT-BELOW>
+collating-symbol <MACRON+CIRCUMFLEX>
+collating-symbol <LINE-BELOW>
+collating-symbol <HORN>
+collating-symbol <HORN+ACUTE>
+collating-symbol <HORN+GRAVE>
+collating-symbol <HORN+HOOK>
+collating-symbol <HORN+TILDE>
+collating-symbol <HORN+DOT-BELOW>
+collating-symbol <PRECEDED-BY-APOSTROPHE>
+collating-symbol <GREEK>
+collating-symbol <TONOS>
+collating-symbol <DIALYTICA>
+collating-symbol <DIALYTICA+TONOS>
+collating-symbol <CYRILLIC>
+collating-symbol <HIRAGANA>
+collating-symbol <KATAKANA>
+collating-symbol <SPECIAL>
+
+% letter;accent;case;specials
+
+order_start forward;backward;forward;position
+
+% <CAPITAL> or <SMALL> letters first:
+
+<CAPITAL>
+<CAPITAL-SMALL>
+<SMALL-CAPITAL>
+<SMALL>
+
+% Accents:
+
+<NONE>
+<ACUTE>
+<ACUTE+DOT>
+<GRAVE>
+<DOUBLE-GRAVE>
+<BREVE>
+<BREVE+ACUTE>
+<BREVE+GRAVE>
+<BREVE+MACRON>
+<BREVE+HOOK>
+<BREVE+TILDE>
+<BREVE+DOT-BELOW>
+<BREVE-BELOW>
+<INVERTED-BREVE>
+<CIRCUMFLEX>
+<CIRCUMFLEX+ACUTE>
+<CIRCUMFLEX+GRAVE>
+<CIRCUMFLEX+HOOK>
+<CIRCUMFLEX+TILDE>
+<CIRCUMFLEX+DOT-BELOW>
+<CARON>
+<CARON+DIAERESIS>
+<CARON+DOT>
+<RING>
+<RING+ACUTE>
+<RING-BELOW>
+<DIAERESIS>
+<DIAERESIS+MACRON>
+<DIAERESIS+ACUTE>
+<DIAERESIS+GRAVE>
+<DIAERESIS+CARON>
+<DOUBLE-ACUTE>
+<HOOK>
+<TILDE>
+<TILDE+ACUTE>
+<TILDE+DIAERESIS>
+<TILDE-BELOW>
+<DOT>
+<DOT-BELOW>
+<DOT+DOT-BELOW>
+<STROKE>
+<STROKE+ACUTE>
+<CEDILLA>
+<CEDILLA+ACUTE>
+<CEDILLA+GRAVE>
+<CEDILLA+BREVE>
+<OGONEK>
+<OGONEK+MACRON>
+<MACRON>
+<MACRON+ACUTE>
+<MACRON+GRAVE>
+<MACRON+DIAERESIS>
+<MACRON+DIAERESIS-BELOW>
+<MACRON+DOT>
+<MACRON+DOT-BELOW>
+<MACRON+CIRCUMFLEX>
+<LINE-BELOW>
+<HORN>
+<HORN+ACUTE>
+<HORN+GRAVE>
+<HORN+HOOK>
+<HORN+TILDE>
+<HORN+DOT-BELOW>
+<PRECEDED-BY-APOSTROPHE>
+<GREEK>
+<TONOS>
+<DIALYTICA>
+<DIALYTICA+TONOS>
+<CYRILLIC>
+<HIRAGANA>
+<KATAKANA>
+<SPECIAL>
+
+<U00A0> <U00A0>;<U00A0>;<U00A0>;IGNORE
+<U0020> IGNORE;IGNORE;IGNORE;<U0020>
+<U0009> IGNORE;IGNORE;IGNORE;<U0009>
+<U000B> IGNORE;IGNORE;IGNORE;<U000B>
+<U000D> IGNORE;IGNORE;IGNORE;<U000D>
+<U000A> IGNORE;IGNORE;IGNORE;<U000A>
+<U000C> IGNORE;IGNORE;IGNORE;<U000C>
+<U005F> IGNORE;IGNORE;IGNORE;<U005F>
+<U00AF> IGNORE;IGNORE;IGNORE;<U00AF>
+<U00AD> IGNORE;IGNORE;IGNORE;<U00AD>
+<U002D> IGNORE;IGNORE;IGNORE;<U002D>
+<U002C> IGNORE;IGNORE;IGNORE;<U002C>
+<U003B> IGNORE;IGNORE;IGNORE;<U003B>
+<U003A> IGNORE;IGNORE;IGNORE;<U003A>
+<U0021> IGNORE;IGNORE;IGNORE;<U0021>
+<U00A1> IGNORE;IGNORE;IGNORE;<U00A1>
+<U003F> IGNORE;IGNORE;IGNORE;<U003F>
+<U00BF> IGNORE;IGNORE;IGNORE;<U00BF>
+<U002F> IGNORE;IGNORE;IGNORE;<U002F>
+<U002E> IGNORE;IGNORE;IGNORE;<U002E>
+<U00B4> IGNORE;IGNORE;IGNORE;<U00B4>
+<U0060> IGNORE;IGNORE;IGNORE;<U0060>
+<U005E> IGNORE;IGNORE;IGNORE;<U005E>
+<U00A8> IGNORE;IGNORE;IGNORE;<U00A8>
+<U007E> IGNORE;IGNORE;IGNORE;<U007E>
+<U00B7> IGNORE;IGNORE;IGNORE;<U00B7>
+<U00B8> IGNORE;IGNORE;IGNORE;<U00B8>
+<U0027> IGNORE;IGNORE;IGNORE;<U0027>
+<U2018> IGNORE;IGNORE;IGNORE;<U2018>
+<U2019> IGNORE;IGNORE;IGNORE;<U2019>
+<U0022> IGNORE;IGNORE;IGNORE;<U0022>
+<U201C> IGNORE;IGNORE;IGNORE;<U201C>
+<U201D> IGNORE;IGNORE;IGNORE;<U201D>
+<U00AB> IGNORE;IGNORE;IGNORE;<U00AB>
+<U00BB> IGNORE;IGNORE;IGNORE;<U00BB>
+<U0028> IGNORE;IGNORE;IGNORE;<U0028>
+<U207D> IGNORE;IGNORE;IGNORE;<U207D>
+<U0029> IGNORE;IGNORE;IGNORE;<U0029>
+<U207E> IGNORE;IGNORE;IGNORE;<U207E>
+<U005B> IGNORE;IGNORE;IGNORE;<U005B>
+<U005D> IGNORE;IGNORE;IGNORE;<U005D>
+<U007B> IGNORE;IGNORE;IGNORE;<U007B>
+<U007D> IGNORE;IGNORE;IGNORE;<U007D>
+<U00A7> IGNORE;IGNORE;IGNORE;<U00A7>
+<U00B6> IGNORE;IGNORE;IGNORE;<U00B6>
+<U00A9> IGNORE;IGNORE;IGNORE;<U00A9>
+<U00AE> IGNORE;IGNORE;IGNORE;<U00AE>
+<U0040> IGNORE;IGNORE;IGNORE;<U0040>
+<U00A4> IGNORE;IGNORE;IGNORE;<U00A4>
+<U00A2> IGNORE;IGNORE;IGNORE;<U00A2>
+<U0024> IGNORE;IGNORE;IGNORE;<U0024>
+<U00A3> IGNORE;IGNORE;IGNORE;<U00A3>
+<U00A5> IGNORE;IGNORE;IGNORE;<U00A5>
+<U002A> IGNORE;IGNORE;IGNORE;<U002A>
+<U005C> IGNORE;IGNORE;IGNORE;<U005C>
+<U0026> IGNORE;IGNORE;IGNORE;<U0026>
+<U0023> IGNORE;IGNORE;IGNORE;<U0023>
+<U0025> IGNORE;IGNORE;IGNORE;<U0025>
+<U207B> IGNORE;IGNORE;IGNORE;<U207B>
+<U002B> IGNORE;IGNORE;IGNORE;<U002B>
+<U207A> IGNORE;IGNORE;IGNORE;<U207A>
+<U00B1> IGNORE;IGNORE;IGNORE;<U00B1>
+<U00F7> IGNORE;IGNORE;IGNORE;<U00F7>
+<U00D7> IGNORE;IGNORE;IGNORE;<U00D7>
+<U2260> IGNORE;IGNORE;IGNORE;<U2260>
+<U003C> IGNORE;IGNORE;IGNORE;<U003C>
+<U2264> IGNORE;IGNORE;IGNORE;<U2264>
+<U003D> IGNORE;IGNORE;IGNORE;<U003D>
+<U2265> IGNORE;IGNORE;IGNORE;<U2265>
+<U003E> IGNORE;IGNORE;IGNORE;<U003E>
+<U00AC> IGNORE;IGNORE;IGNORE;<U00AC>
+<U007C> IGNORE;IGNORE;IGNORE;<U007C>
+<U00A6> IGNORE;IGNORE;IGNORE;<U00A6>
+<U00B0> IGNORE;IGNORE;IGNORE;<U00B0>
+<U00B5> IGNORE;IGNORE;IGNORE;<U00B5>
+<U02C7> IGNORE;IGNORE;IGNORE;<U02C7>
+<U02D8> IGNORE;IGNORE;IGNORE;<U02D8>
+<U02D9> IGNORE;IGNORE;IGNORE;<U02D9>
+<U02DA> IGNORE;IGNORE;IGNORE;<U02DA>
+<U02DB> IGNORE;IGNORE;IGNORE;<U02DB>
+<U02DC> IGNORE;IGNORE;IGNORE;<U02DC>
+<U02DD> IGNORE;IGNORE;IGNORE;<U02DD>
+<U0374> IGNORE;IGNORE;IGNORE;<U0374>
+<U0375> IGNORE;IGNORE;IGNORE;<U0375>
+<U037A> IGNORE;IGNORE;IGNORE;<U037A>
+<U037E> IGNORE;IGNORE;IGNORE;<U037E>
+<U0384> IGNORE;IGNORE;IGNORE;<U0384>
+<U0385> IGNORE;IGNORE;IGNORE;<U0385>
+<U0387> IGNORE;IGNORE;IGNORE;<U0387>
+<U03D0> IGNORE;IGNORE;IGNORE;<U03D0>
+<U1FBF> IGNORE;IGNORE;IGNORE;<U1FBF>
+<U1FC0> IGNORE;IGNORE;IGNORE;<U1FC0>
+<U1FC1> IGNORE;IGNORE;IGNORE;<U1FC1>
+<U1FCD> IGNORE;IGNORE;IGNORE;<U1FCD>
+<U1FCE> IGNORE;IGNORE;IGNORE;<U1FCE>
+<U1FCF> IGNORE;IGNORE;IGNORE;<U1FCF>
+<U1FDD> IGNORE;IGNORE;IGNORE;<U1FDD>
+<U1FDE> IGNORE;IGNORE;IGNORE;<U1FDE>
+<U1FDF> IGNORE;IGNORE;IGNORE;<U1FDF>
+<U1FED> IGNORE;IGNORE;IGNORE;<U1FED>
+<U1FEF> IGNORE;IGNORE;IGNORE;<U1FEF>
+<U1FFE> IGNORE;IGNORE;IGNORE;<U1FFE>
+<U2002> IGNORE;IGNORE;IGNORE;<U2002>
+<U2003> IGNORE;IGNORE;IGNORE;<U2003>
+<U2004> IGNORE;IGNORE;IGNORE;<U2004>
+<U2005> IGNORE;IGNORE;IGNORE;<U2005>
+<U2006> IGNORE;IGNORE;IGNORE;<U2006>
+<U200E> IGNORE;IGNORE;IGNORE;<U200E>
+<U200F> IGNORE;IGNORE;IGNORE;<U200F>
+<U2009> IGNORE;IGNORE;IGNORE;<U2009>
+<U200A> IGNORE;IGNORE;IGNORE;<U200A>
+<U2010> IGNORE;IGNORE;IGNORE;<U2010>
+<U2013> IGNORE;IGNORE;IGNORE;<U2013>
+<U2014> IGNORE;IGNORE;IGNORE;<U2014>
+<U2015> IGNORE;IGNORE;IGNORE;<U2015>
+<U2016> IGNORE;IGNORE;IGNORE;<U2016>
+<U2017> IGNORE;IGNORE;IGNORE;<U2017>
+<U201A> IGNORE;IGNORE;IGNORE;<U201A>
+<U201B> IGNORE;IGNORE;IGNORE;<U201B>
+<U201E> IGNORE;IGNORE;IGNORE;<U201E>
+<U201F> IGNORE;IGNORE;IGNORE;<U201F>
+<U2020> IGNORE;IGNORE;IGNORE;<U2020>
+<U2021> IGNORE;IGNORE;IGNORE;<U2021>
+<U2219> IGNORE;IGNORE;IGNORE;<U2219>
+<U2025> IGNORE;IGNORE;IGNORE;<U2025>
+<U2026> IGNORE;IGNORE;IGNORE;<U2026>
+<U2030> IGNORE;IGNORE;IGNORE;<U2030>
+<U2032> IGNORE;IGNORE;IGNORE;<U2032>
+<U2033> IGNORE;IGNORE;IGNORE;<U2033>
+<U2034> IGNORE;IGNORE;IGNORE;<U2034>
+<U2035> IGNORE;IGNORE;IGNORE;<U2035>
+<U2036> IGNORE;IGNORE;IGNORE;<U2036>
+<U2037> IGNORE;IGNORE;IGNORE;<U2037>
+<U2038> IGNORE;IGNORE;IGNORE;<U2038>
+<U2039> IGNORE;IGNORE;IGNORE;<U2039>
+<U203A> IGNORE;IGNORE;IGNORE;<U203A>
+<U203B> IGNORE;IGNORE;IGNORE;<U203B>
+<U203C> IGNORE;IGNORE;IGNORE;<U203C>
+<U203E> IGNORE;IGNORE;IGNORE;<U203E>
+<U207C> IGNORE;IGNORE;IGNORE;<U207C>
+<U2080> IGNORE;IGNORE;IGNORE;<U2080>
+<U2081> IGNORE;IGNORE;IGNORE;<U2081>
+<U2082> IGNORE;IGNORE;IGNORE;<U2082>
+<U2083> IGNORE;IGNORE;IGNORE;<U2083>
+<U2084> IGNORE;IGNORE;IGNORE;<U2084>
+<U2085> IGNORE;IGNORE;IGNORE;<U2085>
+<U2086> IGNORE;IGNORE;IGNORE;<U2086>
+<U2087> IGNORE;IGNORE;IGNORE;<U2087>
+<U2088> IGNORE;IGNORE;IGNORE;<U2088>
+<U2089> IGNORE;IGNORE;IGNORE;<U2089>
+<U208A> IGNORE;IGNORE;IGNORE;<U208A>
+<U208B> IGNORE;IGNORE;IGNORE;<U208B>
+<U208C> IGNORE;IGNORE;IGNORE;<U208C>
+<U208D> IGNORE;IGNORE;IGNORE;<U208D>
+<U208E> IGNORE;IGNORE;IGNORE;<U208E>
+<U20A3> IGNORE;IGNORE;IGNORE;<U20A3>
+<U20A4> IGNORE;IGNORE;IGNORE;<U20A4>
+<U20A7> IGNORE;IGNORE;IGNORE;<U20A7>
+<U20A9> IGNORE;IGNORE;IGNORE;<U20A9>
+<U2103> IGNORE;IGNORE;IGNORE;<U2103>
+<U2105> IGNORE;IGNORE;IGNORE;<U2105>
+<U2109> IGNORE;IGNORE;IGNORE;<U2109>
+<U2116> IGNORE;IGNORE;IGNORE;<U2116>
+<U2117> IGNORE;IGNORE;IGNORE;<U2117>
+<U211E> IGNORE;IGNORE;IGNORE;<U211E>
+<U2120> IGNORE;IGNORE;IGNORE;<U2120>
+<U2122> IGNORE;IGNORE;IGNORE;<U2122>
+<U2126> IGNORE;IGNORE;IGNORE;<U2126>
+<U212B> IGNORE;IGNORE;IGNORE;<U212B>
+<U2153> IGNORE;IGNORE;IGNORE;<U2153>
+<U2154> IGNORE;IGNORE;IGNORE;<U2154>
+<U2155> IGNORE;IGNORE;IGNORE;<U2155>
+<U2156> IGNORE;IGNORE;IGNORE;<U2156>
+<U2157> IGNORE;IGNORE;IGNORE;<U2157>
+<U2158> IGNORE;IGNORE;IGNORE;<U2158>
+<U2159> IGNORE;IGNORE;IGNORE;<U2159>
+<U215A> IGNORE;IGNORE;IGNORE;<U215A>
+<U2160> IGNORE;IGNORE;IGNORE;<U2160>
+<U2161> IGNORE;IGNORE;IGNORE;<U2161>
+<U2162> IGNORE;IGNORE;IGNORE;<U2162>
+<U2163> IGNORE;IGNORE;IGNORE;<U2163>
+<U2164> IGNORE;IGNORE;IGNORE;<U2164>
+<U2165> IGNORE;IGNORE;IGNORE;<U2165>
+<U2166> IGNORE;IGNORE;IGNORE;<U2166>
+<U2167> IGNORE;IGNORE;IGNORE;<U2167>
+<U2168> IGNORE;IGNORE;IGNORE;<U2168>
+<U2169> IGNORE;IGNORE;IGNORE;<U2169>
+<U216A> IGNORE;IGNORE;IGNORE;<U216A>
+<U216B> IGNORE;IGNORE;IGNORE;<U216B>
+<U216C> IGNORE;IGNORE;IGNORE;<U216C>
+<U216D> IGNORE;IGNORE;IGNORE;<U216D>
+<U216E> IGNORE;IGNORE;IGNORE;<U216E>
+<U216F> IGNORE;IGNORE;IGNORE;<U216F>
+<U2170> IGNORE;IGNORE;IGNORE;<U2170>
+<U2171> IGNORE;IGNORE;IGNORE;<U2171>
+<U2172> IGNORE;IGNORE;IGNORE;<U2172>
+<U2173> IGNORE;IGNORE;IGNORE;<U2173>
+<U2174> IGNORE;IGNORE;IGNORE;<U2174>
+<U2175> IGNORE;IGNORE;IGNORE;<U2175>
+<U2176> IGNORE;IGNORE;IGNORE;<U2176>
+<U2177> IGNORE;IGNORE;IGNORE;<U2177>
+<U2178> IGNORE;IGNORE;IGNORE;<U2178>
+<U2179> IGNORE;IGNORE;IGNORE;<U2179>
+<U217A> IGNORE;IGNORE;IGNORE;<U217A>
+<U217B> IGNORE;IGNORE;IGNORE;<U217B>
+<U217C> IGNORE;IGNORE;IGNORE;<U217C>
+<U217D> IGNORE;IGNORE;IGNORE;<U217D>
+<U217E> IGNORE;IGNORE;IGNORE;<U217E>
+<U217F> IGNORE;IGNORE;IGNORE;<U217F>
+<U2180> IGNORE;IGNORE;IGNORE;<U2180>
+<U2181> IGNORE;IGNORE;IGNORE;<U2181>
+<U2182> IGNORE;IGNORE;IGNORE;<U2182>
+<U2191> IGNORE;IGNORE;IGNORE;<U2191>
+<U2193> IGNORE;IGNORE;IGNORE;<U2193>
+<U2194> IGNORE;IGNORE;IGNORE;<U2194>
+<U2195> IGNORE;IGNORE;IGNORE;<U2195>
+<U2196> IGNORE;IGNORE;IGNORE;<U2196>
+<U2197> IGNORE;IGNORE;IGNORE;<U2197>
+<U2198> IGNORE;IGNORE;IGNORE;<U2198>
+<U2199> IGNORE;IGNORE;IGNORE;<U2199>
+<U21A8> IGNORE;IGNORE;IGNORE;<U21A8>
+<U21C0> IGNORE;IGNORE;IGNORE;<U21C0>
+<U21D0> IGNORE;IGNORE;IGNORE;<U21D0>
+<U21D2> IGNORE;IGNORE;IGNORE;<U21D2>
+<U21D4> IGNORE;IGNORE;IGNORE;<U21D4>
+<U2200> IGNORE;IGNORE;IGNORE;<U2200>
+<U2202> IGNORE;IGNORE;IGNORE;<U2202>
+<U2203> IGNORE;IGNORE;IGNORE;<U2203>
+<U2205> IGNORE;IGNORE;IGNORE;<U2205>
+<U2206> IGNORE;IGNORE;IGNORE;<U2206>
+<U2207> IGNORE;IGNORE;IGNORE;<U2207>
+<U2208> IGNORE;IGNORE;IGNORE;<U2208>
+<U220B> IGNORE;IGNORE;IGNORE;<U220B>
+<U220F> IGNORE;IGNORE;IGNORE;<U220F>
+<U2211> IGNORE;IGNORE;IGNORE;<U2211>
+<U2212> IGNORE;IGNORE;IGNORE;<U2212>
+<U2213> IGNORE;IGNORE;IGNORE;<U2213>
+<U2214> IGNORE;IGNORE;IGNORE;<U2214>
+<U2044> IGNORE;IGNORE;IGNORE;<U2044>
+<U2217> IGNORE;IGNORE;IGNORE;<U2217>
+<U2218> IGNORE;IGNORE;IGNORE;<U2218>
+<U2022> IGNORE;IGNORE;IGNORE;<U2022>
+<U221A> IGNORE;IGNORE;IGNORE;<U221A>
+<U221D> IGNORE;IGNORE;IGNORE;<U221D>
+<U221E> IGNORE;IGNORE;IGNORE;<U221E>
+<U221F> IGNORE;IGNORE;IGNORE;<U221F>
+<U2220> IGNORE;IGNORE;IGNORE;<U2220>
+<U2225> IGNORE;IGNORE;IGNORE;<U2225>
+<U2227> IGNORE;IGNORE;IGNORE;<U2227>
+<U2228> IGNORE;IGNORE;IGNORE;<U2228>
+<U2229> IGNORE;IGNORE;IGNORE;<U2229>
+<U222A> IGNORE;IGNORE;IGNORE;<U222A>
+<U222B> IGNORE;IGNORE;IGNORE;<U222B>
+<U222C> IGNORE;IGNORE;IGNORE;<U222C>
+<U222E> IGNORE;IGNORE;IGNORE;<U222E>
+<U2234> IGNORE;IGNORE;IGNORE;<U2234>
+<U2235> IGNORE;IGNORE;IGNORE;<U2235>
+<U2236> IGNORE;IGNORE;IGNORE;<U2236>
+<U2237> IGNORE;IGNORE;IGNORE;<U2237>
+<U223C> IGNORE;IGNORE;IGNORE;<U223C>
+<U223E> IGNORE;IGNORE;IGNORE;<U223E>
+<U2243> IGNORE;IGNORE;IGNORE;<U2243>
+<U2245> IGNORE;IGNORE;IGNORE;<U2245>
+<U2248> IGNORE;IGNORE;IGNORE;<U2248>
+<U224C> IGNORE;IGNORE;IGNORE;<U224C>
+<U2253> IGNORE;IGNORE;IGNORE;<U2253>
+<U2261> IGNORE;IGNORE;IGNORE;<U2261>
+<U226A> IGNORE;IGNORE;IGNORE;<U226A>
+<U226B> IGNORE;IGNORE;IGNORE;<U226B>
+<U226E> IGNORE;IGNORE;IGNORE;<U226E>
+<U226F> IGNORE;IGNORE;IGNORE;<U226F>
+<U2282> IGNORE;IGNORE;IGNORE;<U2282>
+<U2283> IGNORE;IGNORE;IGNORE;<U2283>
+<U2286> IGNORE;IGNORE;IGNORE;<U2286>
+<U2287> IGNORE;IGNORE;IGNORE;<U2287>
+<U2299> IGNORE;IGNORE;IGNORE;<U2299>
+<U229A> IGNORE;IGNORE;IGNORE;<U229A>
+<U22A5> IGNORE;IGNORE;IGNORE;<U22A5>
+<U22C5> IGNORE;IGNORE;IGNORE;<U22C5>
+<U22EE> IGNORE;IGNORE;IGNORE;<U22EE>
+<U2302> IGNORE;IGNORE;IGNORE;<U2302>
+<U2308> IGNORE;IGNORE;IGNORE;<U2308>
+<U2309> IGNORE;IGNORE;IGNORE;<U2309>
+<U230A> IGNORE;IGNORE;IGNORE;<U230A>
+<U230B> IGNORE;IGNORE;IGNORE;<U230B>
+<U2310> IGNORE;IGNORE;IGNORE;<U2310>
+<U2312> IGNORE;IGNORE;IGNORE;<U2312>
+<U2315> IGNORE;IGNORE;IGNORE;<U2315>
+<U2320> IGNORE;IGNORE;IGNORE;<U2320>
+<U2321> IGNORE;IGNORE;IGNORE;<U2321>
+<U2423> IGNORE;IGNORE;IGNORE;<U2423>
+<U2440> IGNORE;IGNORE;IGNORE;<U2440>
+<U2441> IGNORE;IGNORE;IGNORE;<U2441>
+<U2442> IGNORE;IGNORE;IGNORE;<U2442>
+<U2443> IGNORE;IGNORE;IGNORE;<U2443>
+<U2446> IGNORE;IGNORE;IGNORE;<U2446>
+<U2447> IGNORE;IGNORE;IGNORE;<U2447>
+<U2448> IGNORE;IGNORE;IGNORE;<U2448>
+<U2449> IGNORE;IGNORE;IGNORE;<U2449>
+<U2460> IGNORE;IGNORE;IGNORE;<U2460>
+<U2461> IGNORE;IGNORE;IGNORE;<U2461>
+<U2462> IGNORE;IGNORE;IGNORE;<U2462>
+<U2463> IGNORE;IGNORE;IGNORE;<U2463>
+<U2464> IGNORE;IGNORE;IGNORE;<U2464>
+<U2465> IGNORE;IGNORE;IGNORE;<U2465>
+<U2466> IGNORE;IGNORE;IGNORE;<U2466>
+<U2467> IGNORE;IGNORE;IGNORE;<U2467>
+<U2468> IGNORE;IGNORE;IGNORE;<U2468>
+<U2469> IGNORE;IGNORE;IGNORE;<U2469>
+<U246A> IGNORE;IGNORE;IGNORE;<U246A>
+<U246B> IGNORE;IGNORE;IGNORE;<U246B>
+<U246C> IGNORE;IGNORE;IGNORE;<U246C>
+<U246D> IGNORE;IGNORE;IGNORE;<U246D>
+<U246E> IGNORE;IGNORE;IGNORE;<U246E>
+<U246F> IGNORE;IGNORE;IGNORE;<U246F>
+<U2470> IGNORE;IGNORE;IGNORE;<U2470>
+<U2471> IGNORE;IGNORE;IGNORE;<U2471>
+<U2472> IGNORE;IGNORE;IGNORE;<U2472>
+<U2473> IGNORE;IGNORE;IGNORE;<U2473>
+<U2474> IGNORE;IGNORE;IGNORE;<U2474>
+<U2475> IGNORE;IGNORE;IGNORE;<U2475>
+<U2476> IGNORE;IGNORE;IGNORE;<U2476>
+<U2477> IGNORE;IGNORE;IGNORE;<U2477>
+<U2478> IGNORE;IGNORE;IGNORE;<U2478>
+<U2479> IGNORE;IGNORE;IGNORE;<U2479>
+<U247A> IGNORE;IGNORE;IGNORE;<U247A>
+<U247B> IGNORE;IGNORE;IGNORE;<U247B>
+<U247C> IGNORE;IGNORE;IGNORE;<U247C>
+<U247D> IGNORE;IGNORE;IGNORE;<U247D>
+<U247E> IGNORE;IGNORE;IGNORE;<U247E>
+<U247F> IGNORE;IGNORE;IGNORE;<U247F>
+<U2480> IGNORE;IGNORE;IGNORE;<U2480>
+<U2481> IGNORE;IGNORE;IGNORE;<U2481>
+<U2482> IGNORE;IGNORE;IGNORE;<U2482>
+<U2483> IGNORE;IGNORE;IGNORE;<U2483>
+<U2484> IGNORE;IGNORE;IGNORE;<U2484>
+<U2485> IGNORE;IGNORE;IGNORE;<U2485>
+<U2486> IGNORE;IGNORE;IGNORE;<U2486>
+<U2487> IGNORE;IGNORE;IGNORE;<U2487>
+<U2488> IGNORE;IGNORE;IGNORE;<U2488>
+<U2489> IGNORE;IGNORE;IGNORE;<U2489>
+<U248A> IGNORE;IGNORE;IGNORE;<U248A>
+<U248B> IGNORE;IGNORE;IGNORE;<U248B>
+<U248C> IGNORE;IGNORE;IGNORE;<U248C>
+<U248D> IGNORE;IGNORE;IGNORE;<U248D>
+<U248E> IGNORE;IGNORE;IGNORE;<U248E>
+<U248F> IGNORE;IGNORE;IGNORE;<U248F>
+<U2490> IGNORE;IGNORE;IGNORE;<U2490>
+<U2491> IGNORE;IGNORE;IGNORE;<U2491>
+<U2492> IGNORE;IGNORE;IGNORE;<U2492>
+<U2493> IGNORE;IGNORE;IGNORE;<U2493>
+<U2494> IGNORE;IGNORE;IGNORE;<U2494>
+<U2495> IGNORE;IGNORE;IGNORE;<U2495>
+<U2496> IGNORE;IGNORE;IGNORE;<U2496>
+<U2497> IGNORE;IGNORE;IGNORE;<U2497>
+<U2498> IGNORE;IGNORE;IGNORE;<U2498>
+<U2499> IGNORE;IGNORE;IGNORE;<U2499>
+<U249A> IGNORE;IGNORE;IGNORE;<U249A>
+<U249B> IGNORE;IGNORE;IGNORE;<U249B>
+<U24EA> IGNORE;IGNORE;IGNORE;<U24EA>
+<U2500> IGNORE;IGNORE;IGNORE;<U2500>
+<U2550> IGNORE;IGNORE;IGNORE;<U2550>
+<U2502> IGNORE;IGNORE;IGNORE;<U2502>
+<U2551> IGNORE;IGNORE;IGNORE;<U2551>
+<U2504> IGNORE;IGNORE;IGNORE;<U2504>
+<U2505> IGNORE;IGNORE;IGNORE;<U2505>
+<U2506> IGNORE;IGNORE;IGNORE;<U2506>
+<U2507> IGNORE;IGNORE;IGNORE;<U2507>
+<U2508> IGNORE;IGNORE;IGNORE;<U2508>
+<U2509> IGNORE;IGNORE;IGNORE;<U2509>
+<U250A> IGNORE;IGNORE;IGNORE;<U250A>
+<U250B> IGNORE;IGNORE;IGNORE;<U250B>
+<U250C> IGNORE;IGNORE;IGNORE;<U250C>
+<U2552> IGNORE;IGNORE;IGNORE;<U2552>
+<U2553> IGNORE;IGNORE;IGNORE;<U2553>
+<U2554> IGNORE;IGNORE;IGNORE;<U2554>
+<U2510> IGNORE;IGNORE;IGNORE;<U2510>
+<U2555> IGNORE;IGNORE;IGNORE;<U2555>
+<U2556> IGNORE;IGNORE;IGNORE;<U2556>
+<U2557> IGNORE;IGNORE;IGNORE;<U2557>
+<U2514> IGNORE;IGNORE;IGNORE;<U2514>
+<U2558> IGNORE;IGNORE;IGNORE;<U2558>
+<U2559> IGNORE;IGNORE;IGNORE;<U2559>
+<U255A> IGNORE;IGNORE;IGNORE;<U255A>
+<U2518> IGNORE;IGNORE;IGNORE;<U2518>
+<U255B> IGNORE;IGNORE;IGNORE;<U255B>
+<U255C> IGNORE;IGNORE;IGNORE;<U255C>
+<U255D> IGNORE;IGNORE;IGNORE;<U255D>
+<U251C> IGNORE;IGNORE;IGNORE;<U251C>
+<U255E> IGNORE;IGNORE;IGNORE;<U255E>
+<U251E> IGNORE;IGNORE;IGNORE;<U251E>
+<U251F> IGNORE;IGNORE;IGNORE;<U251F>
+<U255F> IGNORE;IGNORE;IGNORE;<U255F>
+<U2521> IGNORE;IGNORE;IGNORE;<U2521>
+<U2522> IGNORE;IGNORE;IGNORE;<U2522>
+<U2560> IGNORE;IGNORE;IGNORE;<U2560>
+<U2524> IGNORE;IGNORE;IGNORE;<U2524>
+<U2561> IGNORE;IGNORE;IGNORE;<U2561>
+<U2526> IGNORE;IGNORE;IGNORE;<U2526>
+<U2527> IGNORE;IGNORE;IGNORE;<U2527>
+<U2562> IGNORE;IGNORE;IGNORE;<U2562>
+<U2529> IGNORE;IGNORE;IGNORE;<U2529>
+<U252A> IGNORE;IGNORE;IGNORE;<U252A>
+<U2563> IGNORE;IGNORE;IGNORE;<U2563>
+<U252C> IGNORE;IGNORE;IGNORE;<U252C>
+<U252D> IGNORE;IGNORE;IGNORE;<U252D>
+<U252E> IGNORE;IGNORE;IGNORE;<U252E>
+<U2564> IGNORE;IGNORE;IGNORE;<U2564>
+<U2565> IGNORE;IGNORE;IGNORE;<U2565>
+<U2531> IGNORE;IGNORE;IGNORE;<U2531>
+<U2532> IGNORE;IGNORE;IGNORE;<U2532>
+<U2566> IGNORE;IGNORE;IGNORE;<U2566>
+<U2534> IGNORE;IGNORE;IGNORE;<U2534>
+<U2535> IGNORE;IGNORE;IGNORE;<U2535>
+<U2536> IGNORE;IGNORE;IGNORE;<U2536>
+<U2567> IGNORE;IGNORE;IGNORE;<U2567>
+<U2568> IGNORE;IGNORE;IGNORE;<U2568>
+<U2539> IGNORE;IGNORE;IGNORE;<U2539>
+<U253A> IGNORE;IGNORE;IGNORE;<U253A>
+<U2569> IGNORE;IGNORE;IGNORE;<U2569>
+<U253C> IGNORE;IGNORE;IGNORE;<U253C>
+<U253D> IGNORE;IGNORE;IGNORE;<U253D>
+<U253E> IGNORE;IGNORE;IGNORE;<U253E>
+<U256A> IGNORE;IGNORE;IGNORE;<U256A>
+<U2540> IGNORE;IGNORE;IGNORE;<U2540>
+<U2541> IGNORE;IGNORE;IGNORE;<U2541>
+<U256B> IGNORE;IGNORE;IGNORE;<U256B>
+<U2543> IGNORE;IGNORE;IGNORE;<U2543>
+<U2544> IGNORE;IGNORE;IGNORE;<U2544>
+<U2545> IGNORE;IGNORE;IGNORE;<U2545>
+<U2546> IGNORE;IGNORE;IGNORE;<U2546>
+<U2547> IGNORE;IGNORE;IGNORE;<U2547>
+<U2548> IGNORE;IGNORE;IGNORE;<U2548>
+<U2549> IGNORE;IGNORE;IGNORE;<U2549>
+<U254A> IGNORE;IGNORE;IGNORE;<U254A>
+<U256C> IGNORE;IGNORE;IGNORE;<U256C>
+<U2571> IGNORE;IGNORE;IGNORE;<U2571>
+<U2572> IGNORE;IGNORE;IGNORE;<U2572>
+<U2580> IGNORE;IGNORE;IGNORE;<U2580>
+<U2584> IGNORE;IGNORE;IGNORE;<U2584>
+<U2588> IGNORE;IGNORE;IGNORE;<U2588>
+<U258C> IGNORE;IGNORE;IGNORE;<U258C>
+<U2590> IGNORE;IGNORE;IGNORE;<U2590>
+<U2591> IGNORE;IGNORE;IGNORE;<U2591>
+<U2592> IGNORE;IGNORE;IGNORE;<U2592>
+<U2593> IGNORE;IGNORE;IGNORE;<U2593>
+<U25A0> IGNORE;IGNORE;IGNORE;<U25A0>
+<U25A1> IGNORE;IGNORE;IGNORE;<U25A1>
+<U25A2> IGNORE;IGNORE;IGNORE;<U25A2>
+<U25A3> IGNORE;IGNORE;IGNORE;<U25A3>
+<U25A4> IGNORE;IGNORE;IGNORE;<U25A4>
+<U25A5> IGNORE;IGNORE;IGNORE;<U25A5>
+<U25A6> IGNORE;IGNORE;IGNORE;<U25A6>
+<U25A7> IGNORE;IGNORE;IGNORE;<U25A7>
+<U25A8> IGNORE;IGNORE;IGNORE;<U25A8>
+<U25A9> IGNORE;IGNORE;IGNORE;<U25A9>
+<U25AA> IGNORE;IGNORE;IGNORE;<U25AA>
+<U25AC> IGNORE;IGNORE;IGNORE;<U25AC>
+<U25AD> IGNORE;IGNORE;IGNORE;<U25AD>
+<U25B2> IGNORE;IGNORE;IGNORE;<U25B2>
+<U25B3> IGNORE;IGNORE;IGNORE;<U25B3>
+<U25B7> IGNORE;IGNORE;IGNORE;<U25B7>
+<U25BA> IGNORE;IGNORE;IGNORE;<U25BA>
+<U25BC> IGNORE;IGNORE;IGNORE;<U25BC>
+<U25BD> IGNORE;IGNORE;IGNORE;<U25BD>
+<U25C1> IGNORE;IGNORE;IGNORE;<U25C1>
+<U25C4> IGNORE;IGNORE;IGNORE;<U25C4>
+<U25C6> IGNORE;IGNORE;IGNORE;<U25C6>
+<U25C7> IGNORE;IGNORE;IGNORE;<U25C7>
+<U25CA> IGNORE;IGNORE;IGNORE;<U25CA>
+<U25CB> IGNORE;IGNORE;IGNORE;<U25CB>
+<U25CE> IGNORE;IGNORE;IGNORE;<U25CE>
+<U25CF> IGNORE;IGNORE;IGNORE;<U25CF>
+<U25D0> IGNORE;IGNORE;IGNORE;<U25D0>
+<U25D1> IGNORE;IGNORE;IGNORE;<U25D1>
+<U25D8> IGNORE;IGNORE;IGNORE;<U25D8>
+<U25D9> IGNORE;IGNORE;IGNORE;<U25D9>
+<U25E2> IGNORE;IGNORE;IGNORE;<U25E2>
+<U25E3> IGNORE;IGNORE;IGNORE;<U25E3>
+<U25EF> IGNORE;IGNORE;IGNORE;<U25EF>
+<U2605> IGNORE;IGNORE;IGNORE;<U2605>
+<U2606> IGNORE;IGNORE;IGNORE;<U2606>
+<U260E> IGNORE;IGNORE;IGNORE;<U260E>
+<U260F> IGNORE;IGNORE;IGNORE;<U260F>
+<U261C> IGNORE;IGNORE;IGNORE;<U261C>
+<U261E> IGNORE;IGNORE;IGNORE;<U261E>
+<U263A> IGNORE;IGNORE;IGNORE;<U263A>
+<U263B> IGNORE;IGNORE;IGNORE;<U263B>
+<U263C> IGNORE;IGNORE;IGNORE;<U263C>
+<U2640> IGNORE;IGNORE;IGNORE;<U2640>
+<U2642> IGNORE;IGNORE;IGNORE;<U2642>
+<U2660> IGNORE;IGNORE;IGNORE;<U2660>
+<U2661> IGNORE;IGNORE;IGNORE;<U2661>
+<U2662> IGNORE;IGNORE;IGNORE;<U2662>
+<U2663> IGNORE;IGNORE;IGNORE;<U2663>
+<U2664> IGNORE;IGNORE;IGNORE;<U2664>
+<U2665> IGNORE;IGNORE;IGNORE;<U2665>
+<U2666> IGNORE;IGNORE;IGNORE;<U2666>
+<U2667> IGNORE;IGNORE;IGNORE;<U2667>
+<U2669> IGNORE;IGNORE;IGNORE;<U2669>
+<U266A> IGNORE;IGNORE;IGNORE;<U266A>
+<U266B> IGNORE;IGNORE;IGNORE;<U266B>
+<U266C> IGNORE;IGNORE;IGNORE;<U266C>
+<U266D> IGNORE;IGNORE;IGNORE;<U266D>
+<U266E> IGNORE;IGNORE;IGNORE;<U266E>
+<U266F> IGNORE;IGNORE;IGNORE;<U266F>
+<U2713> IGNORE;IGNORE;IGNORE;<U2713>
+<U2717> IGNORE;IGNORE;IGNORE;<U2717>
+<U2720> IGNORE;IGNORE;IGNORE;<U2720>
+<U3000> IGNORE;IGNORE;IGNORE;<U3000>
+<U3001> IGNORE;IGNORE;IGNORE;<U3001>
+<U3002> IGNORE;IGNORE;IGNORE;<U3002>
+<U3003> IGNORE;IGNORE;IGNORE;<U3003>
+<U3004> IGNORE;IGNORE;IGNORE;<U3004>
+<U3005> IGNORE;IGNORE;IGNORE;<U3005>
+<U3006> IGNORE;IGNORE;IGNORE;<U3006>
+<U3007> IGNORE;IGNORE;IGNORE;<U3007>
+<U300A> IGNORE;IGNORE;IGNORE;<U300A>
+<U300B> IGNORE;IGNORE;IGNORE;<U300B>
+<U300C> IGNORE;IGNORE;IGNORE;<U300C>
+<U300D> IGNORE;IGNORE;IGNORE;<U300D>
+<U300E> IGNORE;IGNORE;IGNORE;<U300E>
+<U300F> IGNORE;IGNORE;IGNORE;<U300F>
+<U3010> IGNORE;IGNORE;IGNORE;<U3010>
+<U3011> IGNORE;IGNORE;IGNORE;<U3011>
+<U3012> IGNORE;IGNORE;IGNORE;<U3012>
+<U3013> IGNORE;IGNORE;IGNORE;<U3013>
+<U3014> IGNORE;IGNORE;IGNORE;<U3014>
+<U3015> IGNORE;IGNORE;IGNORE;<U3015>
+<U3016> IGNORE;IGNORE;IGNORE;<U3016>
+<U3017> IGNORE;IGNORE;IGNORE;<U3017>
+<U301C> IGNORE;IGNORE;IGNORE;<U301C>
+<U3020> IGNORE;IGNORE;IGNORE;<U3020>
+<U309B> IGNORE;IGNORE;IGNORE;<U309B>
+<U309C> IGNORE;IGNORE;IGNORE;<U309C>
+<U309D> IGNORE;IGNORE;IGNORE;<U309D>
+<U309E> IGNORE;IGNORE;IGNORE;<U309E>
+<U30FB> IGNORE;IGNORE;IGNORE;<U30FB>
+<U30FC> IGNORE;IGNORE;IGNORE;<U30FC>
+<U30FD> IGNORE;IGNORE;IGNORE;<U30FD>
+<U30FE> IGNORE;IGNORE;IGNORE;<U30FE>
+<U321C> IGNORE;IGNORE;IGNORE;<U321C>
+<U3220> IGNORE;IGNORE;IGNORE;<U3220>
+<U3221> IGNORE;IGNORE;IGNORE;<U3221>
+<U3222> IGNORE;IGNORE;IGNORE;<U3222>
+<U3223> IGNORE;IGNORE;IGNORE;<U3223>
+<U3224> IGNORE;IGNORE;IGNORE;<U3224>
+<U3225> IGNORE;IGNORE;IGNORE;<U3225>
+<U3226> IGNORE;IGNORE;IGNORE;<U3226>
+<U3227> IGNORE;IGNORE;IGNORE;<U3227>
+<U3228> IGNORE;IGNORE;IGNORE;<U3228>
+<U3229> IGNORE;IGNORE;IGNORE;<U3229>
+<U327F> IGNORE;IGNORE;IGNORE;<U327F>
+<U33C2> IGNORE;IGNORE;IGNORE;<U33C2>
+<U33D8> IGNORE;IGNORE;IGNORE;<U33D8>
+<U0000> IGNORE;IGNORE;IGNORE;<U0000>
+<U0001> IGNORE;IGNORE;IGNORE;<U0001>
+<U0002> IGNORE;IGNORE;IGNORE;<U0002>
+<U0003> IGNORE;IGNORE;IGNORE;<U0003>
+<U0004> IGNORE;IGNORE;IGNORE;<U0004>
+<U0005> IGNORE;IGNORE;IGNORE;<U0005>
+<U0006> IGNORE;IGNORE;IGNORE;<U0006>
+<U0007> IGNORE;IGNORE;IGNORE;<U0007>
+<U0008> IGNORE;IGNORE;IGNORE;<U0008>
+<U000E> IGNORE;IGNORE;IGNORE;<U000E>
+<U000F> IGNORE;IGNORE;IGNORE;<U000F>
+<U0010> IGNORE;IGNORE;IGNORE;<U0010>
+<U0011> IGNORE;IGNORE;IGNORE;<U0011>
+<U0012> IGNORE;IGNORE;IGNORE;<U0012>
+<U0013> IGNORE;IGNORE;IGNORE;<U0013>
+<U0014> IGNORE;IGNORE;IGNORE;<U0014>
+<U0015> IGNORE;IGNORE;IGNORE;<U0015>
+<U0016> IGNORE;IGNORE;IGNORE;<U0016>
+<U0017> IGNORE;IGNORE;IGNORE;<U0017>
+<U0018> IGNORE;IGNORE;IGNORE;<U0018>
+<U0019> IGNORE;IGNORE;IGNORE;<U0019>
+<U001A> IGNORE;IGNORE;IGNORE;<U001A>
+<U001B> IGNORE;IGNORE;IGNORE;<U001B>
+<U001C> IGNORE;IGNORE;IGNORE;<U001C>
+<U001D> IGNORE;IGNORE;IGNORE;<U001D>
+<U001E> IGNORE;IGNORE;IGNORE;<U001E>
+<U001F> IGNORE;IGNORE;IGNORE;<U001F>
+<U007F> IGNORE;IGNORE;IGNORE;<U007F>
+<U0080> IGNORE;IGNORE;IGNORE;<U0080>
+<U0081> IGNORE;IGNORE;IGNORE;<U0081>
+<U0082> IGNORE;IGNORE;IGNORE;<U0082>
+<U0083> IGNORE;IGNORE;IGNORE;<U0083>
+<U0084> IGNORE;IGNORE;IGNORE;<U0084>
+<U0085> IGNORE;IGNORE;IGNORE;<U0085>
+<U0086> IGNORE;IGNORE;IGNORE;<U0086>
+<U0087> IGNORE;IGNORE;IGNORE;<U0087>
+<U0088> IGNORE;IGNORE;IGNORE;<U0088>
+<U0089> IGNORE;IGNORE;IGNORE;<U0089>
+<U008A> IGNORE;IGNORE;IGNORE;<U008A>
+<U008B> IGNORE;IGNORE;IGNORE;<U008B>
+<U008C> IGNORE;IGNORE;IGNORE;<U008C>
+<U008D> IGNORE;IGNORE;IGNORE;<U008D>
+<U008E> IGNORE;IGNORE;IGNORE;<U008E>
+<U008F> IGNORE;IGNORE;IGNORE;<U008F>
+<U0090> IGNORE;IGNORE;IGNORE;<U0090>
+<U0091> IGNORE;IGNORE;IGNORE;<U0091>
+<U0092> IGNORE;IGNORE;IGNORE;<U0092>
+<U0093> IGNORE;IGNORE;IGNORE;<U0093>
+<U0094> IGNORE;IGNORE;IGNORE;<U0094>
+<U0095> IGNORE;IGNORE;IGNORE;<U0095>
+<U0096> IGNORE;IGNORE;IGNORE;<U0096>
+<U0097> IGNORE;IGNORE;IGNORE;<U0097>
+<U0098> IGNORE;IGNORE;IGNORE;<U0098>
+<U0099> IGNORE;IGNORE;IGNORE;<U0099>
+<U009A> IGNORE;IGNORE;IGNORE;<U009A>
+<U009B> IGNORE;IGNORE;IGNORE;<U009B>
+<U009C> IGNORE;IGNORE;IGNORE;<U009C>
+<U009D> IGNORE;IGNORE;IGNORE;<U009D>
+<U009E> IGNORE;IGNORE;IGNORE;<U009E>
+<U009F> IGNORE;IGNORE;IGNORE;<U009F>
+<UE000> IGNORE;IGNORE;IGNORE;<UE000>
+<UE001> IGNORE;IGNORE;IGNORE;<UE001>
+<UE002> IGNORE;IGNORE;IGNORE;<UE002>
+<U0301> IGNORE;IGNORE;IGNORE;<U0301>
+<UE004> IGNORE;IGNORE;IGNORE;<UE004>
+<UE005> IGNORE;IGNORE;IGNORE;<UE005>
+<UE006> IGNORE;IGNORE;IGNORE;<UE006>
+<UE007> IGNORE;IGNORE;IGNORE;<UE007>
+<UE008> IGNORE;IGNORE;IGNORE;<UE008>
+<UE009> IGNORE;IGNORE;IGNORE;<UE009>
+<UE00A> IGNORE;IGNORE;IGNORE;<UE00A>
+<UE00B> IGNORE;IGNORE;IGNORE;<UE00B>
+<UE00C> IGNORE;IGNORE;IGNORE;<UE00C>
+<UE00D> IGNORE;IGNORE;IGNORE;<UE00D>
+<UE00E> IGNORE;IGNORE;IGNORE;<UE00E>
+<UE00F> IGNORE;IGNORE;IGNORE;<UE00F>
+<"=> IGNORE;IGNORE;IGNORE;<"=>
+<UE011> IGNORE;IGNORE;IGNORE;<UE011>
+<UE012> IGNORE;IGNORE;IGNORE;<UE012>
+<UE013> IGNORE;IGNORE;IGNORE;<UE013>
+<UE014> IGNORE;IGNORE;IGNORE;<UE014>
+<UE015> IGNORE;IGNORE;IGNORE;<UE015>
+<UE017> IGNORE;IGNORE;IGNORE;<UE017>
+<UE018> IGNORE;IGNORE;IGNORE;<UE018>
+<UE019> IGNORE;IGNORE;IGNORE;<UE019>
+UNDEFINED IGNORE;IGNORE;IGNORE
+
+<U0030> <U0030>;<U0030>;IGNORE;IGNORE
+<U2070> <U0030>;<U2070>;IGNORE;IGNORE
+<U215B> <U0030>;<U215B>;IGNORE;IGNORE
+<U00BC> <U0030>;<U00BC>;IGNORE;IGNORE
+<U215C> <U0030>;<U215C>;IGNORE;IGNORE
+<U00BD> <U0030>;<U00BD>;IGNORE;IGNORE
+<U215D> <U0030>;<U215D>;IGNORE;IGNORE
+<U00BE> <U0030>;<U00BE>;IGNORE;IGNORE
+<U215E> <U0030>;<U215E>;IGNORE;IGNORE
+<U0031> <U0031>;<U0031>;IGNORE;IGNORE
+<U0032> <U0032>;<U0032>;IGNORE;IGNORE
+<U0033> <U0033>;<U0033>;IGNORE;IGNORE
+<U0034> <U0034>;<U0034>;IGNORE;IGNORE
+<U0035> <U0035>;<U0035>;IGNORE;IGNORE
+<U0036> <U0036>;<U0036>;IGNORE;IGNORE
+<U0037> <U0037>;<U0037>;IGNORE;IGNORE
+<U0038> <U0038>;<U0038>;IGNORE;IGNORE
+<U0039> <U0039>;<U0039>;IGNORE;IGNORE
+<U00B9> <U0031>;<U00B9>;IGNORE;IGNORE
+<U00B2> <U0032>;<U00B2>;IGNORE;IGNORE
+<U00B3> <U0033>;<U00B3>;IGNORE;IGNORE
+<U2074> <U0034>;<U2074>;IGNORE;IGNORE
+<U2075> <U0035>;<U2075>;IGNORE;IGNORE
+<U2076> <U0036>;<U2076>;IGNORE;IGNORE
+<U2077> <U0037>;<U2077>;IGNORE;IGNORE
+<U2078> <U0038>;<U2078>;IGNORE;IGNORE
+<U2079> <U0039>;<U2079>;IGNORE;IGNORE
+<U0041> <U0041>;<NONE>;<CAPITAL>;IGNORE
+<U0061> <U0041>;<NONE>;<SMALL>;IGNORE
+<U00AA> <U0041>;<NONE>;<U00AA>;IGNORE
+<U00C1> <U0041>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E1> <U0041>;<ACUTE>;<SMALL>;IGNORE
+<U00C0> <U0041>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E0> <U0041>;<GRAVE>;<SMALL>;IGNORE
+<U0200> <U0041>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0201> <U0041>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0102> <U0041>;<BREVE>;<CAPITAL>;IGNORE
+<U0103> <U0041>;<BREVE>;<SMALL>;IGNORE
+<U1EAE> <U0041>;<BREVE+ACUTE>;<CAPITAL>;IGNORE
+<U1EAF> <U0041>;<BREVE+ACUTE>;<SMALL>;IGNORE
+<U1EB0> <U0041>;<BREVE+GRAVE>;<CAPITAL>;IGNORE
+<U1EB1> <U0041>;<BREVE+GRAVE>;<SMALL>;IGNORE
+<U1EB2> <U0041>;<BREVE+HOOK>;<CAPITAL>;IGNORE
+<U1EB3> <U0041>;<BREVE+HOOK>;<SMALL>;IGNORE
+<U1EB4> <U0041>;<BREVE+TILDE>;<CAPITAL>;IGNORE
+<U1EB5> <U0041>;<BREVE+TILDE>;<SMALL>;IGNORE
+<U1EB6> <U0041>;<BREVE+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB7> <U0041>;<BREVE+DOT-BELOW>;<SMALL>;IGNORE
+<U0202> <U0041>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0203> <U0041>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00C2> <U0041>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00E2> <U0041>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EA4> <U0041>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EA5> <U0041>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EA6> <U0041>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EA7> <U0041>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EA8> <U0041>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EA9> <U0041>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EAA> <U0041>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EAB> <U0041>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EAC> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EAD> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01CD> <U0041>;<CARON>;<CAPITAL>;IGNORE
+<U01CE> <U0041>;<CARON>;<SMALL>;IGNORE
+<U00C5> <U0041>;<RING>;<CAPITAL>;IGNORE
+<U00E5> <U0041>;<RING>;<SMALL>;IGNORE
+<U01FA> <U0041>;<RING+ACUTE>;<CAPITAL>;IGNORE
+<U01FB> <U0041>;<RING+ACUTE>;<SMALL>;IGNORE
+<U1E00> <U0041>;<RING-BELOW>;<CAPITAL>;IGNORE
+<U1E01> <U0041>;<RING-BELOW>;<SMALL>;IGNORE
+<U00C4> <U0041>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00E4> <U0041>;<DIAERESIS>;<SMALL>;IGNORE
+<U01DE> <U0041>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01DF> <U0041>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U1EA2> <U0041>;<HOOK>;<CAPITAL>;IGNORE
+<U1EA3> <U0041>;<HOOK>;<SMALL>;IGNORE
+<U00C3> <U0041>;<TILDE>;<CAPITAL>;IGNORE
+<U00E3> <U0041>;<TILDE>;<SMALL>;IGNORE
+<U1EA0> <U0041>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EA1> <U0041>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0104> <U0041>;<OGONEK>;<CAPITAL>;IGNORE
+<U0105> <U0041>;<OGONEK>;<SMALL>;IGNORE
+<U0100> <U0041>;<MACRON>;<CAPITAL>;IGNORE
+<U0101> <U0041>;<MACRON>;<SMALL>;IGNORE
+<U01E0> <U0041>;<MACRON+DOT>;<CAPITAL>;IGNORE
+<U01E1> <U0041>;<MACRON+DOT>;<SMALL>;IGNORE
+<a8>
+<U00C6> "<U0041><U0045>";"<U00C6><U00C6>";"<CAPITAL><CAPITAL>";IGNORE
+<U00E6> "<U0041><U0045>";"<U00C6><U00C6>";"<SMALL><SMALL>";IGNORE
+<U01FC> "<U0041><U0045>";"<U01FC><U01FC>";"<CAPITAL><CAPITAL>";IGNORE
+<U01FD> "<U0041><U0045>";"<U01FC><U01FC>";"<SMALL><SMALL>";IGNORE
+<U01E2> "<U0041><U0045>";"<U01E2><U01E2>";"<CAPITAL><CAPITAL>";IGNORE
+<U01E3> "<U0041><U0045>";"<U01E2><U01E2>";"<SMALL><SMALL>";IGNORE
+<U0042> <U0042>;<NONE>;<CAPITAL>;IGNORE
+<U0062> <U0042>;<NONE>;<SMALL>;IGNORE
+<U1E02> <U0042>;<DOT>;<CAPITAL>;IGNORE
+<U1E03> <U0042>;<DOT>;<SMALL>;IGNORE
+<U1E04> <U0042>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E05> <U0042>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E06> <U0042>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E07> <U0042>;<LINE-BELOW>;<SMALL>;IGNORE
+<b8>
+<U0043> <U0043>;<NONE>;<CAPITAL>;IGNORE
+<U0063> <U0043>;<NONE>;<SMALL>;IGNORE
+<U0106> <U0043>;<ACUTE>;<CAPITAL>;IGNORE
+<U0107> <U0043>;<ACUTE>;<SMALL>;IGNORE
+<U0108> <U0043>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0109> <U0043>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U010C> <U0043>;<CARON>;<CAPITAL>;IGNORE
+<U010D> <U0043>;<CARON>;<SMALL>;IGNORE
+<U0187> <U0043>;<HOOK>;<CAPITAL>;IGNORE
+<U0188> <U0043>;<HOOK>;<SMALL>;IGNORE
+<U010A> <U0043>;<DOT>;<CAPITAL>;IGNORE
+<U010B> <U0043>;<DOT>;<SMALL>;IGNORE
+<U00C7> <U0043>;<CEDILLA>;<CAPITAL>;IGNORE
+<U00E7> <U0043>;<CEDILLA>;<SMALL>;IGNORE
+<U1E08> <U0043>;<CEDILLA+ACUTE>;<CAPITAL>;IGNORE
+<U1E09> <U0043>;<CEDILLA+ACUTE>;<SMALL>;IGNORE
+<c8>
+<U0044> <U0044>;<NONE>;<CAPITAL>;IGNORE
+<U0064> <U0044>;<NONE>;<SMALL>;IGNORE
+<U010E> <U0044>;<CARON>;<CAPITAL>;IGNORE
+<U010F> <U0044>;<CARON>;<SMALL>;IGNORE
+<U1E0A> <U0044>;<DOT>;<CAPITAL>;IGNORE
+<U1E0B> <U0044>;<DOT>;<SMALL>;IGNORE
+<U1E0C> <U0044>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E0D> <U0044>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0110> <U0044>;<STROKE>;<CAPITAL>;IGNORE
+<U0111> <U0044>;<STROKE>;<SMALL>;IGNORE
+<U1E10> <U0044>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E11> <U0044>;<CEDILLA>;<SMALL>;IGNORE
+<U1E12> <U0044>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E13> <U0044>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E0E> <U0044>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E0F> <U0044>;<LINE-BELOW>;<SMALL>;IGNORE
+<d8>
+<U0045> <U0045>;<NONE>;<CAPITAL>;IGNORE
+<U0065> <U0045>;<NONE>;<SMALL>;IGNORE
+<U00C9> <U0045>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E9> <U0045>;<ACUTE>;<SMALL>;IGNORE
+<U00C8> <U0045>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E8> <U0045>;<GRAVE>;<SMALL>;IGNORE
+<U0204> <U0045>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0205> <U0045>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0114> <U0045>;<BREVE>;<CAPITAL>;IGNORE
+<U0115> <U0045>;<BREVE>;<SMALL>;IGNORE
+<U0206> <U0045>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0207> <U0045>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CA> <U0045>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EA> <U0045>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EBE> <U0045>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EBF> <U0045>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EC0> <U0045>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EC1> <U0045>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EC2> <U0045>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EC3> <U0045>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EC4> <U0045>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EC5> <U0045>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EC6> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EC7> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U011A> <U0045>;<CARON>;<CAPITAL>;IGNORE
+<U011B> <U0045>;<CARON>;<SMALL>;IGNORE
+<U00CB> <U0045>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EB> <U0045>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EBA> <U0045>;<HOOK>;<CAPITAL>;IGNORE
+<U1EBB> <U0045>;<HOOK>;<SMALL>;IGNORE
+<U1EBC> <U0045>;<TILDE>;<CAPITAL>;IGNORE
+<U1EBD> <U0045>;<TILDE>;<SMALL>;IGNORE
+<U1E1A> <U0045>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E1B> <U0045>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0116> <U0045>;<DOT>;<CAPITAL>;IGNORE
+<U0117> <U0045>;<DOT>;<SMALL>;IGNORE
+<U1EB8> <U0045>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB9> <U0045>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E1C> <U0045>;<CEDILLA+BREVE>;<CAPITAL>;IGNORE
+<U1E1D> <U0045>;<CEDILLA+BREVE>;<SMALL>;IGNORE
+<U0118> <U0045>;<OGONEK>;<CAPITAL>;IGNORE
+<U0119> <U0045>;<OGONEK>;<SMALL>;IGNORE
+<U0112> <U0045>;<MACRON>;<CAPITAL>;IGNORE
+<U0113> <U0045>;<MACRON>;<SMALL>;IGNORE
+<U1E16> <U0045>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E17> <U0045>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E14> <U0045>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E15> <U0045>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U1E18> <U0045>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E19> <U0045>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<e8>
+<U0046> <U0046>;<NONE>;<CAPITAL>;IGNORE
+<U0066> <U0046>;<NONE>;<SMALL>;IGNORE
+<U0191> <U0046>;<HOOK>;<CAPITAL>;IGNORE
+<U0192> <U0046>;<HOOK>;<SMALL>;IGNORE
+<U1E1E> <U0046>;<DOT>;<CAPITAL>;IGNORE
+<U1E1F> <U0046>;<DOT>;<SMALL>;IGNORE
+<f8>
+<UFB00> "<U0046><U0046>";"<NONE><NONE>";"<UFB00><UFB00>";IGNORE
+<UFB01> "<U0046><U0049>";"<NONE><NONE>";"<UFB01><UFB01>";IGNORE
+<UFB02> "<U0046><U004C>";"<NONE><NONE>";"<UFB02><UFB02>";IGNORE
+<UFB03> "<U0046><U0046><U0049>";"<NONE><NONE><NONE>";"<UFB03><UFB03><UFB03>";IGNORE
+<UFB04> "<U0046><U0046><U004C>";"<NONE><NONE><NONE>";"<UFB04><UFB04><UFB04>";IGNORE
+<U0047> <U0047>;<NONE>;<CAPITAL>;IGNORE
+<U0067> <U0047>;<NONE>;<SMALL>;IGNORE
+<U01F4> <U0047>;<ACUTE>;<CAPITAL>;IGNORE
+<U01F5> <U0047>;<ACUTE>;<SMALL>;IGNORE
+<U011E> <U0047>;<BREVE>;<CAPITAL>;IGNORE
+<U011F> <U0047>;<BREVE>;<SMALL>;IGNORE
+<U011C> <U0047>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U011D> <U0047>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01E6> <U0047>;<CARON>;<CAPITAL>;IGNORE
+<U01E7> <U0047>;<CARON>;<SMALL>;IGNORE
+<U0120> <U0047>;<DOT>;<CAPITAL>;IGNORE
+<U0121> <U0047>;<DOT>;<SMALL>;IGNORE
+<U01E4> <U0047>;<STROKE>;<CAPITAL>;IGNORE
+<U01E5> <U0047>;<STROKE>;<SMALL>;IGNORE
+<U0122> <U0047>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0123> <U0047>;<CEDILLA>;<SMALL>;IGNORE
+<U1E20> <U0047>;<MACRON>;<CAPITAL>;IGNORE
+<U1E21> <U0047>;<MACRON>;<SMALL>;IGNORE
+<g8>
+<U0048> <U0048>;<NONE>;<CAPITAL>;IGNORE
+<U0068> <U0048>;<NONE>;<SMALL>;IGNORE
+<U1E2A> <U0048>;<BREVE-BELOW>;<CAPITAL>;IGNORE
+<U1E2B> <U0048>;<BREVE-BELOW>;<SMALL>;IGNORE
+<U0124> <U0048>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0125> <U0048>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E26> <U0048>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E27> <U0048>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E22> <U0048>;<DOT>;<CAPITAL>;IGNORE
+<U1E23> <U0048>;<DOT>;<SMALL>;IGNORE
+<U1E24> <U0048>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E25> <U0048>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0126> <U0048>;<STROKE>;<CAPITAL>;IGNORE
+<U0127> <U0048>;<STROKE>;<SMALL>;IGNORE
+<U1E28> <U0048>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E29> <U0048>;<CEDILLA>;<SMALL>;IGNORE
+<h8>
+<U0049> <U0049>;<NONE>;<CAPITAL>;IGNORE
+<U0069> <U0049>;<NONE>;<SMALL>;IGNORE
+<U00CD> <U0049>;<ACUTE>;<CAPITAL>;IGNORE
+<U00ED> <U0049>;<ACUTE>;<SMALL>;IGNORE
+<U00CC> <U0049>;<GRAVE>;<CAPITAL>;IGNORE
+<U00EC> <U0049>;<GRAVE>;<SMALL>;IGNORE
+<U0208> <U0049>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0209> <U0049>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U012C> <U0049>;<BREVE>;<CAPITAL>;IGNORE
+<U012D> <U0049>;<BREVE>;<SMALL>;IGNORE
+<U020A> <U0049>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020B> <U0049>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CE> <U0049>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EE> <U0049>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01CF> <U0049>;<CARON>;<CAPITAL>;IGNORE
+<U01D0> <U0049>;<CARON>;<SMALL>;IGNORE
+<U00CF> <U0049>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EF> <U0049>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E2E> <U0049>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U1E2F> <U0049>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U1EC8> <U0049>;<HOOK>;<CAPITAL>;IGNORE
+<U1EC9> <U0049>;<HOOK>;<SMALL>;IGNORE
+<U0128> <U0049>;<TILDE>;<CAPITAL>;IGNORE
+<U0129> <U0049>;<TILDE>;<SMALL>;IGNORE
+<U1E2C> <U0049>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E2D> <U0049>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0130> <U0049>;<DOT>;<CAPITAL>;IGNORE
+<U0131> <U0049>;<DOT>;<SMALL>;IGNORE
+<U1ECA> <U0049>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECB> <U0049>;<DOT-BELOW>;<SMALL>;IGNORE
+<U012E> <U0049>;<OGONEK>;<CAPITAL>;IGNORE
+<U012F> <U0049>;<OGONEK>;<SMALL>;IGNORE
+<U012A> <U0049>;<MACRON>;<CAPITAL>;IGNORE
+<U012B> <U0049>;<MACRON>;<SMALL>;IGNORE
+<i8>
+<U0132> "<U0049><U004A>";"<U0132><U0132>";"<CAPITAL><CAPITAL>";IGNORE
+<U0133> "<U0049><U004A>";"<U0132><U0132>";"<SMALL><SMALL>";IGNORE
+<U004A> <U004A>;<NONE>;<CAPITAL>;IGNORE
+<U006A> <U004A>;<NONE>;<SMALL>;IGNORE
+<U0134> <U004A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0135> <U004A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<j8>
+<U004B> <U004B>;<NONE>;<CAPITAL>;IGNORE
+<U006B> <U004B>;<NONE>;<SMALL>;IGNORE
+<U1E30> <U004B>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E31> <U004B>;<ACUTE>;<SMALL>;IGNORE
+<U01E8> <U004B>;<CARON>;<CAPITAL>;IGNORE
+<U01E9> <U004B>;<CARON>;<SMALL>;IGNORE
+<U0198> <U004B>;<HOOK>;<CAPITAL>;IGNORE
+<U0199> <U004B>;<HOOK>;<SMALL>;IGNORE
+<U1E32> <U004B>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E33> <U004B>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0136> <U004B>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0137> <U004B>;<CEDILLA>;<SMALL>;IGNORE
+<U1E34> <U004B>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E35> <U004B>;<LINE-BELOW>;<SMALL>;IGNORE
+<k8>
+<U0138> <U004B>;<U0138>;<SMALL>;IGNORE
+<U004C> <U004C>;<NONE>;<CAPITAL>;IGNORE
+<U006C> <U004C>;<NONE>;<SMALL>;IGNORE
+<U0139> <U004C>;<ACUTE>;<CAPITAL>;IGNORE
+<U013A> <U004C>;<ACUTE>;<SMALL>;IGNORE
+<U013D> <U004C>;<CARON>;<CAPITAL>;IGNORE
+<U013E> <U004C>;<CARON>;<SMALL>;IGNORE
+<U013F> <U004C>;<DOT>;<CAPITAL>;IGNORE
+<U0140> <U004C>;<DOT>;<SMALL>;IGNORE
+<U1E36> <U004C>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E37> <U004C>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0141> <U004C>;<STROKE>;<CAPITAL>;IGNORE
+<U0142> <U004C>;<STROKE>;<SMALL>;IGNORE
+<U013B> <U004C>;<CEDILLA>;<CAPITAL>;IGNORE
+<U013C> <U004C>;<CEDILLA>;<SMALL>;IGNORE
+<U1E38> <U004C>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E39> <U004C>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E3C> <U004C>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E3D> <U004C>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E3A> <U004C>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E3B> <U004C>;<LINE-BELOW>;<SMALL>;IGNORE
+<l8>
+<U004D> <U004D>;<NONE>;<CAPITAL>;IGNORE
+<U006D> <U004D>;<NONE>;<SMALL>;IGNORE
+<U1E3E> <U004D>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E3F> <U004D>;<ACUTE>;<SMALL>;IGNORE
+<U1E40> <U004D>;<DOT>;<CAPITAL>;IGNORE
+<U1E41> <U004D>;<DOT>;<SMALL>;IGNORE
+<U1E42> <U004D>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E43> <U004D>;<DOT-BELOW>;<SMALL>;IGNORE
+<m8>
+<U004E> <U004E>;<NONE>;<CAPITAL>;IGNORE
+<U006E> <U004E>;<NONE>;<SMALL>;IGNORE
+<U0143> <U004E>;<ACUTE>;<CAPITAL>;IGNORE
+<U0144> <U004E>;<ACUTE>;<SMALL>;IGNORE
+<U0147> <U004E>;<CARON>;<CAPITAL>;IGNORE
+<U0148> <U004E>;<CARON>;<SMALL>;IGNORE
+<U00D1> <U004E>;<TILDE>;<CAPITAL>;IGNORE
+<U00F1> <U004E>;<TILDE>;<SMALL>;IGNORE
+<U1E44> <U004E>;<DOT>;<CAPITAL>;IGNORE
+<U1E45> <U004E>;<DOT>;<SMALL>;IGNORE
+<U1E46> <U004E>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E47> <U004E>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0145> <U004E>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0146> <U004E>;<CEDILLA>;<SMALL>;IGNORE
+<U1E4A> <U004E>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E4B> <U004E>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E48> <U004E>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E49> <U004E>;<LINE-BELOW>;<SMALL>;IGNORE
+<U0149> <U004E>;<PRECEDED-BY-APOSTROPHE>;<SMALL>;IGNORE
+<n8>
+<U014A> "<U004E><U0047>";"<U014A><U014A>";"<CAPITAL><CAPITAL>";IGNORE
+<U014B> "<U004E><U0047>";"<U014A><U014A>";"<SMALL><SMALL>";IGNORE
+<U004F> <U004F>;<NONE>;<CAPITAL>;IGNORE
+<U006F> <U004F>;<NONE>;<SMALL>;IGNORE
+<U00BA> <U004F>;<NONE>;<U00BA>;IGNORE
+<U00D3> <U004F>;<ACUTE>;<CAPITAL>;IGNORE
+<U00F3> <U004F>;<ACUTE>;<SMALL>;IGNORE
+<U00D2> <U004F>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F2> <U004F>;<GRAVE>;<SMALL>;IGNORE
+<U020C> <U004F>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U020D> <U004F>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U014E> <U004F>;<BREVE>;<CAPITAL>;IGNORE
+<U014F> <U004F>;<BREVE>;<SMALL>;IGNORE
+<U020E> <U004F>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020F> <U004F>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00D4> <U004F>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00F4> <U004F>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1ED0> <U004F>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1ED1> <U004F>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1ED2> <U004F>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1ED3> <U004F>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1ED4> <U004F>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1ED5> <U004F>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1ED6> <U004F>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1ED7> <U004F>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1ED8> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ED9> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01D1> <U004F>;<CARON>;<CAPITAL>;IGNORE
+<U01D2> <U004F>;<CARON>;<SMALL>;IGNORE
+<U00D6> <U004F>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00F6> <U004F>;<DIAERESIS>;<SMALL>;IGNORE
+<U0150> <U004F>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0151> <U004F>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1ECE> <U004F>;<HOOK>;<CAPITAL>;IGNORE
+<U1ECF> <U004F>;<HOOK>;<SMALL>;IGNORE
+<U00D5> <U004F>;<TILDE>;<CAPITAL>;IGNORE
+<U00F5> <U004F>;<TILDE>;<SMALL>;IGNORE
+<U1E4C> <U004F>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E4D> <U004F>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E4E> <U004F>;<TILDE+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E4F> <U004F>;<TILDE+DIAERESIS>;<SMALL>;IGNORE
+<U1ECC> <U004F>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECD> <U004F>;<DOT-BELOW>;<SMALL>;IGNORE
+<U00D8> <U004F>;<STROKE>;<CAPITAL>;IGNORE
+<U00F8> <U004F>;<STROKE>;<SMALL>;IGNORE
+<U01FE> <U004F>;<STROKE+ACUTE>;<CAPITAL>;IGNORE
+<U01FF> <U004F>;<STROKE+ACUTE>;<SMALL>;IGNORE
+<U01EA> <U004F>;<OGONEK>;<CAPITAL>;IGNORE
+<U01EB> <U004F>;<OGONEK>;<SMALL>;IGNORE
+<U01EC> <U004F>;<OGONEK+MACRON>;<CAPITAL>;IGNORE
+<U01ED> <U004F>;<OGONEK+MACRON>;<SMALL>;IGNORE
+<U014C> <U004F>;<MACRON>;<CAPITAL>;IGNORE
+<U014D> <U004F>;<MACRON>;<SMALL>;IGNORE
+<U1E52> <U004F>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E53> <U004F>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E50> <U004F>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E51> <U004F>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U01A0> <U004F>;<HORN>;<CAPITAL>;IGNORE
+<U01A1> <U004F>;<HORN>;<SMALL>;IGNORE
+<U1EDA> <U004F>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EDB> <U004F>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EDC> <U004F>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EDD> <U004F>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EDE> <U004F>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EDF> <U004F>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EE0> <U004F>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EE1> <U004F>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EE2> <U004F>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE3> <U004F>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<o8>
+<U0152> "<U004F><U0045>";"<U0152><U0152>";"<CAPITAL><CAPITAL>";IGNORE
+<U0153> "<U004F><U0045>";"<U0152><U0152>";"<SMALL><SMALL>";IGNORE
+<U0050> <U0050>;<NONE>;<CAPITAL>;IGNORE
+<U0070> <U0050>;<NONE>;<SMALL>;IGNORE
+<U1E54> <U0050>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E55> <U0050>;<ACUTE>;<SMALL>;IGNORE
+<U1E56> <U0050>;<DOT>;<CAPITAL>;IGNORE
+<U1E57> <U0050>;<DOT>;<SMALL>;IGNORE
+<p8>
+<U0051> <U0051>;<NONE>;<CAPITAL>;IGNORE
+<U0071> <U0051>;<NONE>;<SMALL>;IGNORE
+<q8>
+<U0052> <U0052>;<NONE>;<CAPITAL>;IGNORE
+<U0072> <U0052>;<NONE>;<SMALL>;IGNORE
+<U0154> <U0052>;<ACUTE>;<CAPITAL>;IGNORE
+<U0155> <U0052>;<ACUTE>;<SMALL>;IGNORE
+<U0210> <U0052>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0211> <U0052>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0212> <U0052>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0213> <U0052>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U0158> <U0052>;<CARON>;<CAPITAL>;IGNORE
+<U0159> <U0052>;<CARON>;<SMALL>;IGNORE
+<U1E58> <U0052>;<DOT>;<CAPITAL>;IGNORE
+<U1E59> <U0052>;<DOT>;<SMALL>;IGNORE
+<U1E5A> <U0052>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5B> <U0052>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0156> <U0052>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0157> <U0052>;<CEDILLA>;<SMALL>;IGNORE
+<U1E5C> <U0052>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5D> <U0052>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E5E> <U0052>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E5F> <U0052>;<LINE-BELOW>;<SMALL>;IGNORE
+<r8>
+<U0053> <U0053>;<NONE>;<CAPITAL>;IGNORE
+<U0073> <U0053>;<NONE>;<SMALL>;IGNORE
+<UFB06> "<U0053><U0054>";"<NONE><NONE>";"<UFB06><UFB06>";IGNORE
+<U015A> <U0053>;<ACUTE>;<CAPITAL>;IGNORE
+<U015B> <U0053>;<ACUTE>;<SMALL>;IGNORE
+<U1E64> <U0053>;<ACUTE+DOT>;<CAPITAL>;IGNORE
+<U1E65> <U0053>;<ACUTE+DOT>;<SMALL>;IGNORE
+<U015C> <U0053>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U015D> <U0053>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0160> <U0053>;<CARON>;<CAPITAL>;IGNORE
+<U0161> <U0053>;<CARON>;<SMALL>;IGNORE
+<U1E66> <U0053>;<CARON+DOT>;<CAPITAL>;IGNORE
+<U1E67> <U0053>;<CARON+DOT>;<SMALL>;IGNORE
+<U1E60> <U0053>;<DOT>;<CAPITAL>;IGNORE
+<U1E61> <U0053>;<DOT>;<SMALL>;IGNORE
+<U1E62> <U0053>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E63> <U0053>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E68> <U0053>;<DOT+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E69> <U0053>;<DOT+DOT-BELOW>;<SMALL>;IGNORE
+<U015E> <U0053>;<CEDILLA>;<CAPITAL>;IGNORE
+<U015F> <U0053>;<CEDILLA>;<SMALL>;IGNORE
+<s8>
+<U017F> <U0053>;<U017F>;<SMALL>;IGNORE
+<U00DF> "<U0053><U0053>";"<NONE><NONE>";"<SMALL><U00DF>";IGNORE
+<UFB05> "<U0053><U0054>";"<NONE><NONE>";"<UFB05><UFB05>";IGNORE
+<U0054> <U0054>;<NONE>;<CAPITAL>;IGNORE
+<U0074> <U0054>;<NONE>;<SMALL>;IGNORE
+<U0164> <U0054>;<CARON>;<CAPITAL>;IGNORE
+<U0165> <U0054>;<CARON>;<SMALL>;IGNORE
+<U1E6A> <U0054>;<DOT>;<CAPITAL>;IGNORE
+<U1E6B> <U0054>;<DOT>;<SMALL>;IGNORE
+<U1E6C> <U0054>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E6D> <U0054>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0166> <U0054>;<STROKE>;<CAPITAL>;IGNORE
+<U0167> <U0054>;<STROKE>;<SMALL>;IGNORE
+<U0162> <U0054>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0163> <U0054>;<CEDILLA>;<SMALL>;IGNORE
+<U1E70> <U0054>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E71> <U0054>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E6E> <U0054>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E6F> <U0054>;<LINE-BELOW>;<SMALL>;IGNORE
+<t8>
+<U00DE> "<U0054><U0048>";"<U00DE><U00DE>";"<CAPITAL><CAPITAL>";IGNORE
+<U00FE> "<U0054><U0048>";"<U00DE><U00DE>";"<SMALL><SMALL>";IGNORE
+<U0055> <U0055>;<NONE>;<CAPITAL>;IGNORE
+<U0075> <U0055>;<NONE>;<SMALL>;IGNORE
+<U00DA> <U0055>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FA> <U0055>;<ACUTE>;<SMALL>;IGNORE
+<U00D9> <U0055>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F9> <U0055>;<GRAVE>;<SMALL>;IGNORE
+<U0214> <U0055>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0215> <U0055>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U016C> <U0055>;<BREVE>;<CAPITAL>;IGNORE
+<U016D> <U0055>;<BREVE>;<SMALL>;IGNORE
+<U0216> <U0055>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0217> <U0055>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00DB> <U0055>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00FB> <U0055>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01D3> <U0055>;<CARON>;<CAPITAL>;IGNORE
+<U01D4> <U0055>;<CARON>;<SMALL>;IGNORE
+<U016E> <U0055>;<RING>;<CAPITAL>;IGNORE
+<U016F> <U0055>;<RING>;<SMALL>;IGNORE
+<U00DC> <U0055>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FC> <U0055>;<DIAERESIS>;<SMALL>;IGNORE
+<U01D5> <U0055>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01D6> <U0055>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U01D7> <U0055>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U01D8> <U0055>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U01DB> <U0055>;<DIAERESIS+GRAVE>;<CAPITAL>;IGNORE
+<U01DC> <U0055>;<DIAERESIS+GRAVE>;<SMALL>;IGNORE
+<U01D9> <U0055>;<DIAERESIS+CARON>;<CAPITAL>;IGNORE
+<U01DA> <U0055>;<DIAERESIS+CARON>;<SMALL>;IGNORE
+<U0170> <U0055>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0171> <U0055>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1EE6> <U0055>;<HOOK>;<CAPITAL>;IGNORE
+<U1EE7> <U0055>;<HOOK>;<SMALL>;IGNORE
+<U0168> <U0055>;<TILDE>;<CAPITAL>;IGNORE
+<U0169> <U0055>;<TILDE>;<SMALL>;IGNORE
+<U1E78> <U0055>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E79> <U0055>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E74> <U0055>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E75> <U0055>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U1EE4> <U0055>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE5> <U0055>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0172> <U0055>;<OGONEK>;<CAPITAL>;IGNORE
+<U0173> <U0055>;<OGONEK>;<SMALL>;IGNORE
+<U016A> <U0055>;<MACRON>;<CAPITAL>;IGNORE
+<U016B> <U0055>;<MACRON>;<SMALL>;IGNORE
+<U1E7A> <U0055>;<MACRON+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E7B> <U0055>;<MACRON+DIAERESIS>;<SMALL>;IGNORE
+<U1E72> <U0055>;<MACRON+DIAERESIS-BELOW>;<CAPITAL>;IGNORE
+<U1E73> <U0055>;<MACRON+DIAERESIS-BELOW>;<SMALL>;IGNORE
+<U1E76> <U0055>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E77> <U0055>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U01AF> <U0055>;<HORN>;<CAPITAL>;IGNORE
+<U01B0> <U0055>;<HORN>;<SMALL>;IGNORE
+<U1EE8> <U0055>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EE9> <U0055>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EEA> <U0055>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EEB> <U0055>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EEC> <U0055>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EED> <U0055>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EEE> <U0055>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EEF> <U0055>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EF0> <U0055>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF1> <U0055>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<u8>
+<U0056> <U0056>;<NONE>;<CAPITAL>;IGNORE
+<U0076> <U0056>;<NONE>;<SMALL>;IGNORE
+<U1E7C> <U0056>;<TILDE>;<CAPITAL>;IGNORE
+<U1E7D> <U0056>;<TILDE>;<SMALL>;IGNORE
+<U1E7E> <U0056>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E7F> <U0056>;<DOT-BELOW>;<SMALL>;IGNORE
+<v8>
+<U0057> <U0057>;<NONE>;<CAPITAL>;IGNORE
+<U0077> <U0057>;<NONE>;<SMALL>;IGNORE
+<U1E82> <U0057>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E83> <U0057>;<ACUTE>;<SMALL>;IGNORE
+<U1E80> <U0057>;<GRAVE>;<CAPITAL>;IGNORE
+<U1E81> <U0057>;<GRAVE>;<SMALL>;IGNORE
+<U0174> <U0057>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0175> <U0057>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E84> <U0057>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E85> <U0057>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E86> <U0057>;<DOT>;<CAPITAL>;IGNORE
+<U1E87> <U0057>;<DOT>;<SMALL>;IGNORE
+<U1E88> <U0057>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E89> <U0057>;<DOT-BELOW>;<SMALL>;IGNORE
+<w8>
+<U0058> <U0058>;<NONE>;<CAPITAL>;IGNORE
+<U0078> <U0058>;<NONE>;<SMALL>;IGNORE
+<U1E8C> <U0058>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E8D> <U0058>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E8A> <U0058>;<DOT>;<CAPITAL>;IGNORE
+<U1E8B> <U0058>;<DOT>;<SMALL>;IGNORE
+<x8>
+<U0059> <U0059>;<NONE>;<CAPITAL>;IGNORE
+<U0079> <U0059>;<NONE>;<SMALL>;IGNORE
+<U00DD> <U0059>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FD> <U0059>;<ACUTE>;<SMALL>;IGNORE
+<U1EF2> <U0059>;<GRAVE>;<CAPITAL>;IGNORE
+<U1EF3> <U0059>;<GRAVE>;<SMALL>;IGNORE
+<U0176> <U0059>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0177> <U0059>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0178> <U0059>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FF> <U0059>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EF6> <U0059>;<HOOK>;<CAPITAL>;IGNORE
+<U1EF7> <U0059>;<HOOK>;<SMALL>;IGNORE
+<U1EF8> <U0059>;<TILDE>;<CAPITAL>;IGNORE
+<U1EF9> <U0059>;<TILDE>;<SMALL>;IGNORE
+<U1E8E> <U0059>;<DOT>;<CAPITAL>;IGNORE
+<U1E8F> <U0059>;<DOT>;<SMALL>;IGNORE
+<U1EF4> <U0059>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF5> <U0059>;<DOT-BELOW>;<SMALL>;IGNORE
+<y8>
+<U005A> <U005A>;<NONE>;<CAPITAL>;IGNORE
+<U007A> <U005A>;<NONE>;<SMALL>;IGNORE
+<U0179> <U005A>;<ACUTE>;<CAPITAL>;IGNORE
+<U017A> <U005A>;<ACUTE>;<SMALL>;IGNORE
+<U1E90> <U005A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E91> <U005A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U017D> <U005A>;<CARON>;<CAPITAL>;IGNORE
+<U017E> <U005A>;<CARON>;<SMALL>;IGNORE
+<U017B> <U005A>;<DOT>;<CAPITAL>;IGNORE
+<U017C> <U005A>;<DOT>;<SMALL>;IGNORE
+<U1E92> <U005A>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E93> <U005A>;<DOT-BELOW>;<SMALL>;IGNORE
+<U01B5> <U005A>;<STROKE>;<CAPITAL>;IGNORE
+<U01B6> <U005A>;<STROKE>;<SMALL>;IGNORE
+<U1E94> <U005A>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E95> <U005A>;<LINE-BELOW>;<SMALL>;IGNORE
+<z8>
+<U0391> <U0391>;<CAPITAL>;<GREEK>;IGNORE
+<U0386> <U0391>;<CAPITAL>;<TONOS>;IGNORE
+<U03B1> <U0391>;<SMALL>;<GREEK>;IGNORE
+<U03AC> <U0391>;<SMALL>;<TONOS>;IGNORE
+<U0392> <U0392>;<CAPITAL>;<GREEK>;IGNORE
+<U03B2> <U0392>;<SMALL>;<GREEK>;IGNORE
+<U0393> <U0393>;<CAPITAL>;<GREEK>;IGNORE
+<U03B3> <U0393>;<SMALL>;<GREEK>;IGNORE
+<U0394> <U0394>;<CAPITAL>;<GREEK>;IGNORE
+<U03B4> <U0394>;<SMALL>;<GREEK>;IGNORE
+<U0395> <U0395>;<CAPITAL>;<GREEK>;IGNORE
+<U0388> <U0395>;<CAPITAL>;<TONOS>;IGNORE
+<U03B5> <U0395>;<SMALL>;<GREEK>;IGNORE
+<U03AD> <U0395>;<SMALL>;<TONOS>;IGNORE
+<U0396> <U0396>;<CAPITAL>;<GREEK>;IGNORE
+<U03B6> <U0396>;<SMALL>;<GREEK>;IGNORE
+<U0397> <U0397>;<CAPITAL>;<GREEK>;IGNORE
+<U0389> <U0397>;<CAPITAL>;<TONOS>;IGNORE
+<U03B7> <U0397>;<SMALL>;<GREEK>;IGNORE
+<U03AE> <U0397>;<SMALL>;<TONOS>;IGNORE
+<U0398> <U0398>;<CAPITAL>;<GREEK>;IGNORE
+<U03B8> <U0398>;<SMALL>;<GREEK>;IGNORE
+<U0399> <U0399>;<CAPITAL>;<GREEK>;IGNORE
+<U038A> <U0399>;<CAPITAL>;<TONOS>;IGNORE
+<U03AA> <U0399>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03B9> <U0399>;<SMALL>;<GREEK>;IGNORE
+<U03AF> <U0399>;<SMALL>;<TONOS>;IGNORE
+<U03CA> <U0399>;<SMALL>;<DIALYTICA>;IGNORE
+<U0390> <U0399>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U039A> <U039A>;<CAPITAL>;<GREEK>;IGNORE
+<U03BA> <U039A>;<SMALL>;<GREEK>;IGNORE
+<U039B> <U039B>;<CAPITAL>;<GREEK>;IGNORE
+<U03BB> <U039B>;<SMALL>;<GREEK>;IGNORE
+<U039C> <U039C>;<CAPITAL>;<GREEK>;IGNORE
+<U03BC> <U039C>;<SMALL>;<GREEK>;IGNORE
+<U039D> <U039D>;<CAPITAL>;<GREEK>;IGNORE
+<U03BD> <U039D>;<SMALL>;<GREEK>;IGNORE
+<U039E> <U039E>;<CAPITAL>;<GREEK>;IGNORE
+<U03BE> <U039E>;<SMALL>;<GREEK>;IGNORE
+<U039F> <U039F>;<CAPITAL>;<GREEK>;IGNORE
+<U038C> <U039F>;<CAPITAL>;<TONOS>;IGNORE
+<U03BF> <U039F>;<SMALL>;<GREEK>;IGNORE
+<U03CC> <U039F>;<SMALL>;<TONOS>;IGNORE
+<U03A0> <U03A0>;<CAPITAL>;<GREEK>;IGNORE
+<U03C0> <U03A0>;<SMALL>;<GREEK>;IGNORE
+<U03A1> <U03A1>;<CAPITAL>;<GREEK>;IGNORE
+<U03C1> <U03A1>;<SMALL>;<GREEK>;IGNORE
+<U03A3> <U03A3>;<CAPITAL>;<GREEK>;IGNORE
+<U03C3> <U03A3>;<SMALL>;<GREEK>;IGNORE
+<U03C2> <U03A3>;<SMALL>;<U03C2>;IGNORE
+<U03A4> <U03A4>;<CAPITAL>;<GREEK>;IGNORE
+<U03C4> <U03A4>;<SMALL>;<GREEK>;IGNORE
+<U03A5> <U03A5>;<CAPITAL>;<GREEK>;IGNORE
+<U038E> <U03A5>;<CAPITAL>;<TONOS>;IGNORE
+<U03AB> <U03A5>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03C5> <U03A5>;<SMALL>;<GREEK>;IGNORE
+<U03CD> <U03A5>;<SMALL>;<TONOS>;IGNORE
+<U03CB> <U03A5>;<SMALL>;<DIALYTICA>;IGNORE
+<U03B0> <U03A5>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U03A6> <U03A6>;<CAPITAL>;<GREEK>;IGNORE
+<U03C6> <U03A6>;<SMALL>;<GREEK>;IGNORE
+<U03A7> <U03A7>;<CAPITAL>;<GREEK>;IGNORE
+<U03C7> <U03A7>;<SMALL>;<GREEK>;IGNORE
+<U03A8> <U03A8>;<CAPITAL>;<GREEK>;IGNORE
+<U03C8> <U03A8>;<SMALL>;<GREEK>;IGNORE
+<U03A9> <U03A9>;<CAPITAL>;<GREEK>;IGNORE
+<U038F> <U03A9>;<CAPITAL>;<TONOS>;IGNORE
+<U03C9> <U03A9>;<SMALL>;<GREEK>;IGNORE
+<U03CE> <U03A9>;<SMALL>;<TONOS>;IGNORE
+<U0410> <U0410>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0430> <U0410>;<CYRILLIC>;<SMALL>;IGNORE
+<U0411> <U0411>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0431> <U0411>;<CYRILLIC>;<SMALL>;IGNORE
+<U0412> <U0412>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0432> <U0412>;<CYRILLIC>;<SMALL>;IGNORE
+<U0413> <U0413>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0433> <U0413>;<CYRILLIC>;<SMALL>;IGNORE
+<U0403> <U0403>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0453> <U0403>;<CYRILLIC>;<SMALL>;IGNORE
+<U0490> <U0490>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0491> <U0490>;<CYRILLIC>;<SMALL>;IGNORE
+<U0414> <U0414>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0434> <U0414>;<CYRILLIC>;<SMALL>;IGNORE
+<U0402> <U0402>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0452> <U0402>;<CYRILLIC>;<SMALL>;IGNORE
+<U0415> <U0415>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0435> <U0415>;<CYRILLIC>;<SMALL>;IGNORE
+<U0401> <U0401>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0451> <U0401>;<CYRILLIC>;<SMALL>;IGNORE
+<U0404> <U0404>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0454> <U0404>;<CYRILLIC>;<SMALL>;IGNORE
+<U0416> <U0416>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0436> <U0416>;<CYRILLIC>;<SMALL>;IGNORE
+<U0417> <U0417>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0437> <U0417>;<CYRILLIC>;<SMALL>;IGNORE
+<U0418> <U0418>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0438> <U0418>;<CYRILLIC>;<SMALL>;IGNORE
+<U0406> <U0406>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0456> <U0406>;<CYRILLIC>;<SMALL>;IGNORE
+<U0407> <U0407>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0457> <U0407>;<CYRILLIC>;<SMALL>;IGNORE
+<U0408> <U0408>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0458> <U0408>;<CYRILLIC>;<SMALL>;IGNORE
+<U0419> <U0419>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0439> <U0419>;<CYRILLIC>;<SMALL>;IGNORE
+<U041A> <U041A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043A> <U041A>;<CYRILLIC>;<SMALL>;IGNORE
+<U040C> <U040C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045C> <U040C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041B> <U041B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043B> <U041B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0409> <U0409>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0459> <U0409>;<CYRILLIC>;<SMALL>;IGNORE
+<U041C> <U041C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043C> <U041C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041D> <U041D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043D> <U041D>;<CYRILLIC>;<SMALL>;IGNORE
+<U040A> <U040A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045A> <U040A>;<CYRILLIC>;<SMALL>;IGNORE
+<U041E> <U041E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043E> <U041E>;<CYRILLIC>;<SMALL>;IGNORE
+<U041F> <U041F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043F> <U041F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0420> <U0420>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0440> <U0420>;<CYRILLIC>;<SMALL>;IGNORE
+<U0421> <U0421>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0441> <U0421>;<CYRILLIC>;<SMALL>;IGNORE
+<U0422> <U0422>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0442> <U0422>;<CYRILLIC>;<SMALL>;IGNORE
+<U040B> <U040B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045B> <U040B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0423> <U0423>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0443> <U0423>;<CYRILLIC>;<SMALL>;IGNORE
+<U040E> <U040E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045E> <U040E>;<CYRILLIC>;<SMALL>;IGNORE
+<U0424> <U0424>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0444> <U0424>;<CYRILLIC>;<SMALL>;IGNORE
+<U0425> <U0425>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0445> <U0425>;<CYRILLIC>;<SMALL>;IGNORE
+<U0426> <U0426>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0446> <U0426>;<CYRILLIC>;<SMALL>;IGNORE
+<U0405> <U0405>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0455> <U0405>;<CYRILLIC>;<SMALL>;IGNORE
+<U0427> <U0427>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0447> <U0427>;<CYRILLIC>;<SMALL>;IGNORE
+<U040F> <U040F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045F> <U040F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0428> <U0428>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0448> <U0428>;<CYRILLIC>;<SMALL>;IGNORE
+<U0429> <U0429>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0449> <U0429>;<CYRILLIC>;<SMALL>;IGNORE
+<U044A> <U044A>;<CYRILLIC>;<SMALL>;IGNORE
+<U042A> <U044A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042B> <U042B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044B> <U042B>;<CYRILLIC>;<SMALL>;IGNORE
+<U044C> <U044C>;<CYRILLIC>;<SMALL>;IGNORE
+<U042C> <U044C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042D> <U042D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044D> <U042D>;<CYRILLIC>;<SMALL>;IGNORE
+<U042E> <U042E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044E> <U042E>;<CYRILLIC>;<SMALL>;IGNORE
+<U042F> <U042F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044F> <U042F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0462> <U0462>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0463> <U0462>;<CYRILLIC>;<SMALL>;IGNORE
+<U046A> <U046A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U046B> <U046A>;<CYRILLIC>;<SMALL>;IGNORE
+<U0472> <U0472>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0473> <U0472>;<CYRILLIC>;<SMALL>;IGNORE
+<U0474> <U0474>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0475> <U0474>;<CYRILLIC>;<SMALL>;IGNORE
+<U0480> <U0480>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0481> <U0480>;<CYRILLIC>;<SMALL>;IGNORE
+<U05D0> <U05D0>;IGNORE;IGNORE;IGNORE
+<U05D1> <U05D1>;IGNORE;IGNORE;IGNORE
+<U05D2> <U05D2>;IGNORE;IGNORE;IGNORE
+<U05D3> <U05D3>;IGNORE;IGNORE;IGNORE
+<U05D4> <U05D4>;IGNORE;IGNORE;IGNORE
+<U05D5> <U05D5>;IGNORE;IGNORE;IGNORE
+<U05D6> <U05D6>;IGNORE;IGNORE;IGNORE
+<U05D7> <U05D7>;IGNORE;IGNORE;IGNORE
+<U05D8> <U05D8>;IGNORE;IGNORE;IGNORE
+<U05D9> <U05D9>;IGNORE;IGNORE;IGNORE
+<U05DA> <U05DA>;IGNORE;IGNORE;IGNORE
+<U05DB> <U05DB>;IGNORE;IGNORE;IGNORE
+<U05DC> <U05DC>;IGNORE;IGNORE;IGNORE
+<U05DD> <U05DD>;IGNORE;IGNORE;IGNORE
+<U05DE> <U05DE>;IGNORE;IGNORE;IGNORE
+<U05DF> <U05DF>;IGNORE;IGNORE;IGNORE
+<U05E0> <U05E0>;IGNORE;IGNORE;IGNORE
+<U05E1> <U05E1>;IGNORE;IGNORE;IGNORE
+<U05E2> <U05E2>;IGNORE;IGNORE;IGNORE
+<U05E3> <U05E3>;IGNORE;IGNORE;IGNORE
+<U05E4> <U05E4>;IGNORE;IGNORE;IGNORE
+<U05E5> <U05E5>;IGNORE;IGNORE;IGNORE
+<U05E6> <U05E6>;IGNORE;IGNORE;IGNORE
+<U05E7> <U05E7>;IGNORE;IGNORE;IGNORE
+<U05E8> <U05E8>;IGNORE;IGNORE;IGNORE
+<U05E9> <U05E9>;IGNORE;IGNORE;IGNORE
+<U05EA> <U05EA>;IGNORE;IGNORE;IGNORE
+
+% Arabic collating
+
+<U060C> IGNORE;IGNORE;IGNORE;<U060C>
+<U061B> IGNORE;IGNORE;IGNORE;<U061B>
+<U061F> IGNORE;IGNORE;IGNORE;<U061F>
+<U0640> IGNORE;IGNORE;IGNORE;<U0640>
+
+<U0621> <U0621>;<U0621>;IGNORE;IGNORE
+<U0622> <U0622>;<U0622>;IGNORE;IGNORE
+<UFE82> <U0622>;<UFE82>;IGNORE;IGNORE
+<U0623> <U0621>;<U0623>;IGNORE;IGNORE
+<UFE84> <U0621>;<UFE84>;IGNORE;IGNORE
+<U0624> <U0621>;<U0624>;IGNORE;IGNORE
+<U0625> <U0621>;<U0625>;IGNORE;IGNORE
+<UFE88> <U0621>;<UFE88>;IGNORE;IGNORE
+<U0626> <U0621>;<U0626>;IGNORE;IGNORE
+<U0670> <U0670>;<U0670>;IGNORE;IGNORE
+<U0627> <U0627>;<U0627>;IGNORE;IGNORE
+<UFE8D> <U0627>;<UFE8D>;IGNORE;IGNORE
+<UFE8E> <U0627>;<UFE8E>;IGNORE;IGNORE
+<UE016> <U0627>;<UE016>;IGNORE;IGNORE
+<U0628> <U0628>;<U0628>;IGNORE;IGNORE
+<UFE8F> <U0628>;<UFE8F>;IGNORE;IGNORE
+<UFE90> <U0628>;<UFE90>;IGNORE;IGNORE
+<UFE91> <U0628>;<UFE91>;IGNORE;IGNORE
+<UFE92> <U0628>;<UFE92>;IGNORE;IGNORE
+<U067E> <U067E>;<U067E>;IGNORE;IGNORE
+<U06A4> <U06A4>;<U06A4>;IGNORE;IGNORE
+<U0629> <U0629>;<U0629>;IGNORE;IGNORE
+<UFE93> <U0629>;<UFE93>;IGNORE;IGNORE
+<UFE94> <U0629>;<UFE94>;IGNORE;IGNORE
+<U062A> <U0629>;<U062A>;IGNORE;IGNORE
+<UFE95> <U0629>;<UFE95>;IGNORE;IGNORE
+<UFE96> <U0629>;<UFE96>;IGNORE;IGNORE
+<UFE97> <U0629>;<UFE97>;IGNORE;IGNORE
+<UFE98> <U0629>;<UFE98>;IGNORE;IGNORE
+<U062B> <U062B>;<U062B>;IGNORE;IGNORE
+<UFE99> <U062B>;<UFE99>;IGNORE;IGNORE
+<UFE9A> <U062B>;<UFE9A>;IGNORE;IGNORE
+<UFE9B> <U062B>;<UFE9B>;IGNORE;IGNORE
+<UFE9C> <U062B>;<UFE9C>;IGNORE;IGNORE
+<U062C> <U062C>;<U062C>;IGNORE;IGNORE
+<UFE9D> <U062C>;<UFE9D>;IGNORE;IGNORE
+<UFE9E> <U062C>;<UFE9E>;IGNORE;IGNORE
+<UFE9F> <U062C>;<UFE9F>;IGNORE;IGNORE
+<UFEA0> <U062C>;<UFEA0>;IGNORE;IGNORE
+<U062D> <U062D>;<U062D>;IGNORE;IGNORE
+<UFEA1> <U062D>;<UFEA1>;IGNORE;IGNORE
+<UFEA2> <U062D>;<UFEA2>;IGNORE;IGNORE
+<UFEA3> <U062D>;<UFEA3>;IGNORE;IGNORE
+<UFEA4> <U062D>;<UFEA4>;IGNORE;IGNORE
+<U062E> <U062E>;<U062E>;IGNORE;IGNORE
+<UFEA5> <U062E>;<UFEA5>;IGNORE;IGNORE
+<UFEA6> <U062E>;<UFEA6>;IGNORE;IGNORE
+<UFEA7> <U062E>;<UFEA7>;IGNORE;IGNORE
+<UFEA8> <U062E>;<UFEA8>;IGNORE;IGNORE
+<U062F> <U062F>;<U062F>;IGNORE;IGNORE
+<UFEA9> <U062F>;<UFEA9>;IGNORE;IGNORE
+<UFEAA> <U062F>;<UFEAA>;IGNORE;IGNORE
+<U0630> <U0630>;<U0630>;IGNORE;IGNORE
+<UFEAB> <U0630>;<UFEAB>;IGNORE;IGNORE
+<UFEAC> <U0630>;<UFEAC>;IGNORE;IGNORE
+<U0631> <U0631>;<U0631>;IGNORE;IGNORE
+<UFEAD> <U0631>;<UFEAD>;IGNORE;IGNORE
+<UFEAE> <U0631>;<UFEAE>;IGNORE;IGNORE
+<U0632> <U0632>;<U0632>;IGNORE;IGNORE
+<UFEAF> <U0632>;<UFEAF>;IGNORE;IGNORE
+<UFEB0> <U0632>;<UFEB0>;IGNORE;IGNORE
+<U0633> <U0633>;<U0633>;IGNORE;IGNORE
+<UFEB1> <U0633>;<UFEB1>;IGNORE;IGNORE
+<UFEB2> <U0633>;<UFEB2>;IGNORE;IGNORE
+<UFEB3> <U0633>;<UFEB3>;IGNORE;IGNORE
+<UFEB4> <U0633>;<UFEB4>;IGNORE;IGNORE
+<U0634> <U0634>;<U0634>;IGNORE;IGNORE
+<UFEB5> <U0634>;<UFEB5>;IGNORE;IGNORE
+<UFEB6> <U0634>;<UFEB6>;IGNORE;IGNORE
+<UFEB7> <U0634>;<UFEB7>;IGNORE;IGNORE
+<UFEB8> <U0634>;<UFEB8>;IGNORE;IGNORE
+<U0635> <U0635>;<U0635>;IGNORE;IGNORE
+<UFEB9> <U0635>;<UFEB9>;IGNORE;IGNORE
+<UFEBA> <U0635>;<UFEBA>;IGNORE;IGNORE
+<UFEBB> <U0635>;<UFEBB>;IGNORE;IGNORE
+<UFEBC> <U0635>;<UFEBC>;IGNORE;IGNORE
+<U0636> <U0636>;<U0636>;IGNORE;IGNORE
+<UFEBD> <U0636>;<UFEBD>;IGNORE;IGNORE
+<UFEBE> <U0636>;<UFEBE>;IGNORE;IGNORE
+<UFEBF> <U0636>;<UFEBF>;IGNORE;IGNORE
+<UFEC0> <U0636>;<UFEC0>;IGNORE;IGNORE
+<U0637> <U0637>;<U0637>;IGNORE;IGNORE
+<UFEC1> <U0637>;<UFEC1>;IGNORE;IGNORE
+<UFEC2> <U0637>;<UFEC2>;IGNORE;IGNORE
+<UFEC3> <U0637>;<UFEC3>;IGNORE;IGNORE
+<UFEC4> <U0637>;<UFEC4>;IGNORE;IGNORE
+<U0638> <U0638>;<U0638>;IGNORE;IGNORE
+<UFEC5> <U0638>;<UFEC5>;IGNORE;IGNORE
+<UFEC6> <U0638>;<UFEC6>;IGNORE;IGNORE
+<UFEC7> <U0638>;<UFEC7>;IGNORE;IGNORE
+<UFEC8> <U0638>;<UFEC8>;IGNORE;IGNORE
+<U0639> <U0639>;<U0639>;IGNORE;IGNORE
+<UFEC9> <U0639>;<UFEC9>;IGNORE;IGNORE
+<UFECA> <U0639>;<UFECA>;IGNORE;IGNORE
+<UFECB> <U0639>;<UFECB>;IGNORE;IGNORE
+<UFECC> <U0639>;<UFECC>;IGNORE;IGNORE
+<U063A> <U063A>;<U063A>;IGNORE;IGNORE
+<UFECD> <U063A>;<UFECD>;IGNORE;IGNORE
+<UFECE> <U063A>;<UFECE>;IGNORE;IGNORE
+<UFECF> <U063A>;<UFECF>;IGNORE;IGNORE
+<UFED0> <U063A>;<UFED0>;IGNORE;IGNORE
+<U0641> <U0641>;<U0641>;IGNORE;IGNORE
+<UFED1> <U0641>;<UFED1>;IGNORE;IGNORE
+<UFED2> <U0641>;<UFED2>;IGNORE;IGNORE
+<UFED3> <U0641>;<UFED3>;IGNORE;IGNORE
+<UFED4> <U0641>;<UFED4>;IGNORE;IGNORE
+<U0642> <U0642>;<U0642>;IGNORE;IGNORE
+<UFED5> <U0642>;<UFED5>;IGNORE;IGNORE
+<UFED6> <U0642>;<UFED6>;IGNORE;IGNORE
+<UFED7> <U0642>;<UFED7>;IGNORE;IGNORE
+<UFED8> <U0642>;<UFED8>;IGNORE;IGNORE
+<U0643> <U0643>;<U0643>;IGNORE;IGNORE
+<UFED9> <U0643>;<UFED9>;IGNORE;IGNORE
+<UFEDA> <U0643>;<UFEDA>;IGNORE;IGNORE
+<UFEDB> <U0643>;<UFEDB>;IGNORE;IGNORE
+<UFEDC> <U0643>;<UFEDC>;IGNORE;IGNORE
+<U0644> <U0644>;<U0644>;IGNORE;IGNORE
+<UFEDD> <U0644>;<UFEDD>;IGNORE;IGNORE
+<UFEDE> <U0644>;<UFEDE>;IGNORE;IGNORE
+<UFEDF> <U0644>;<UFEDF>;IGNORE;IGNORE
+<UFEE0> <U0644>;<UFEE0>;IGNORE;IGNORE
+<U0645> <U0645>;<U0645>;IGNORE;IGNORE
+<UFEE1> <U0645>;<UFEE1>;IGNORE;IGNORE
+<UFEE2> <U0645>;<UFEE2>;IGNORE;IGNORE
+<UFEE3> <U0645>;<UFEE3>;IGNORE;IGNORE
+<UFEE4> <U0645>;<UFEE4>;IGNORE;IGNORE
+<U0646> <U0646>;<U0646>;IGNORE;IGNORE
+<UFEE5> <U0646>;<UFEE5>;IGNORE;IGNORE
+<UFEE6> <U0646>;<UFEE6>;IGNORE;IGNORE
+<UFEE7> <U0646>;<UFEE7>;IGNORE;IGNORE
+<UFEE8> <U0646>;<UFEE8>;IGNORE;IGNORE
+<U0647> <U0647>;<U0647>;IGNORE;IGNORE
+<UFEE9> <U0647>;<UFEE9>;IGNORE;IGNORE
+<UFEEA> <U0647>;<UFEEA>;IGNORE;IGNORE
+<UFEEB> <U0647>;<UFEEB>;IGNORE;IGNORE
+<UFEEC> <U0647>;<UFEEC>;IGNORE;IGNORE
+<U0648> <U0648>;<U0648>;IGNORE;IGNORE
+<UFEED> <U0648>;<UFEED>;IGNORE;IGNORE
+<UFEEE> <U0648>;<UFEEE>;IGNORE;IGNORE
+<U0649> <U0649>;<U0649>;IGNORE;IGNORE
+<UFEEF> <U0649>;<UFEEF>;IGNORE;IGNORE
+<UFEF0> <U0649>;<UFEF0>;IGNORE;IGNORE
+<U064A> <U064A>;<U064A>;IGNORE;IGNORE
+<UFEF1> <U064A>;<UFEF1>;IGNORE;IGNORE
+<UFEF2> <U064A>;<UFEF2>;IGNORE;IGNORE
+<UFEF3> <U064A>;<UFEF3>;IGNORE;IGNORE
+<UFEF4> <U064A>;<UFEF4>;IGNORE;IGNORE
+
+<U064B> IGNORE;IGNORE;<U064B>;IGNORE
+<U064C> IGNORE;IGNORE;<U064C>;IGNORE
+<U064D> IGNORE;IGNORE;<U064D>;IGNORE
+<U064E> IGNORE;IGNORE;<U064E>;IGNORE
+<U064F> IGNORE;IGNORE;<U064F>;IGNORE
+<U0650> IGNORE;IGNORE;<U0650>;IGNORE
+<U0651> IGNORE;IGNORE;<U0651>;IGNORE
+<UFE7D> IGNORE;IGNORE;<UFE7D>;IGNORE
+<U0652> IGNORE;IGNORE;<U0652>;IGNORE
+
+<U0660> <U0030>;<U0660>;IGNORE;IGNORE
+<U0661> <U0031>;<U0661>;IGNORE;IGNORE
+<U0662> <U0032>;<U0662>;IGNORE;IGNORE
+<U0663> <U0033>;<U0663>;IGNORE;IGNORE
+<U0664> <U0034>;<U0664>;IGNORE;IGNORE
+<U0665> <U0035>;<U0665>;IGNORE;IGNORE
+<U0666> <U0036>;<U0666>;IGNORE;IGNORE
+<U0667> <U0037>;<U0667>;IGNORE;IGNORE
+<U0668> <U0038>;<U0668>;IGNORE;IGNORE
+<U0669> <U0039>;<U0669>;IGNORE;IGNORE
+
+<UFEF5> "<U0644><U0622>";"<U0644><U0622>";"<UFEF5><UFEF5>";IGNORE
+<UFEF6> "<U0644><U0622>";"<U0644><UFE82>";"<UFEF6><UFEF6>";IGNORE
+<UFEF7> "<U0644><U0623>";"<U0644><U0623>";"<UFEF7><UFEF7>";IGNORE
+<UFEF8> "<U0644><U0623>";"<U0644><UFE84>";"<UFEF8><UFEF8>";IGNORE
+<UFEF9> "<U0644><U0625>";"<U0644><U0625>";"<UFEF9><UFEF9>";IGNORE
+<UFEFA> "<U0644><U0625>";"<U0644><UFE88>";"<UFEFA><UFEFA>";IGNORE
+<UFEFB> "<U0644><U0627>";"<U0644><UFE8D>";"<UFEFB><UFEFB>";IGNORE
+<UFEFC> "<U0644><U0627>";"<U0644><UFE8E>";"<UFEFC><UFEFC>";IGNORE
+
+% katakana/hiragana sorting
+% base is katakana, as this is present in most charsets
+% normal before voiced before semi-voiced
+% small vocals before normal vocals
+% katakana before hiragana
+
+<U30A1> <U30A1>;<U30A1>;IGNORE;IGNORE
+<U3041> <U30A1>;<U3041>;IGNORE;IGNORE
+<U30A2> <U30A1>;<U30A2>;IGNORE;IGNORE
+<U3042> <U30A1>;<U3042>;IGNORE;IGNORE
+<U30A3> <U30A3>;<U30A3>;IGNORE;IGNORE
+<U3043> <U30A3>;<U3043>;IGNORE;IGNORE
+<U30A4> <U30A3>;<U30A4>;IGNORE;IGNORE
+<U3044> <U30A3>;<U3044>;IGNORE;IGNORE
+<U30A5> <U30A5>;<U30A5>;IGNORE;IGNORE
+<U3045> <U30A5>;<U3045>;IGNORE;IGNORE
+<U30A6> <U30A5>;<U30A6>;IGNORE;IGNORE
+<U3046> <U30A5>;<U3046>;IGNORE;IGNORE
+<U30F4> <U30A5>;<U30F4>;IGNORE;IGNORE
+<U30A7> <U30A7>;<U30A7>;IGNORE;IGNORE
+<U3047> <U30A7>;<U3047>;IGNORE;IGNORE
+<U30A8> <U30A7>;<U30A8>;IGNORE;IGNORE
+<U3048> <U30A7>;<U3048>;IGNORE;IGNORE
+<U30A9> <U30A9>;<U30A9>;IGNORE;IGNORE
+<U3049> <U30A9>;<U3049>;IGNORE;IGNORE
+<U30AA> <U30A9>;<U30AA>;IGNORE;IGNORE
+<U304A> <U30A9>;<U304A>;IGNORE;IGNORE
+<U30F5> <U30F5>;<U30F5>;IGNORE;IGNORE
+<U30AB> <U30F5>;<U30AB>;IGNORE;IGNORE
+<U304B> <U30F5>;<U304B>;IGNORE;IGNORE
+<U30AC> <U30F5>;<U30AC>;IGNORE;IGNORE
+<U304C> <U30F5>;<U304C>;IGNORE;IGNORE
+<U30AD> <U30AD>;<U30AD>;IGNORE;IGNORE
+<U304D> <U30AD>;<U304D>;IGNORE;IGNORE
+<U30AE> <U30AD>;<U30AE>;IGNORE;IGNORE
+<U304E> <U30AD>;<U304E>;IGNORE;IGNORE
+<U30AF> <U30AF>;<U30AF>;IGNORE;IGNORE
+<U304F> <U30AF>;<U304F>;IGNORE;IGNORE
+<U30B0> <U30AF>;<U30B0>;IGNORE;IGNORE
+<U3050> <U30AF>;<U3050>;IGNORE;IGNORE
+<U30F6> <U30F6>;<U30F6>;IGNORE;IGNORE
+<U30B1> <U30F6>;<U30B1>;IGNORE;IGNORE
+<U3051> <U30F6>;<U3051>;IGNORE;IGNORE
+<U30B2> <U30F6>;<U30B2>;IGNORE;IGNORE
+<U3052> <U30F6>;<U3052>;IGNORE;IGNORE
+<U30B3> <U30B3>;<U30B3>;IGNORE;IGNORE
+<U3053> <U30B3>;<U3053>;IGNORE;IGNORE
+<U30B4> <U30B3>;<U30B4>;IGNORE;IGNORE
+<U3054> <U30B3>;<U3054>;IGNORE;IGNORE
+<U30B5> <U30B5>;<U30B5>;IGNORE;IGNORE
+<U3055> <U30B5>;<U3055>;IGNORE;IGNORE
+<U30B6> <U30B5>;<U30B6>;IGNORE;IGNORE
+<U3056> <U30B5>;<U3056>;IGNORE;IGNORE
+<U30B7> <U30B7>;<U30B7>;IGNORE;IGNORE
+<U3057> <U30B7>;<U3057>;IGNORE;IGNORE
+<U30B8> <U30B7>;<U30B8>;IGNORE;IGNORE
+<U3058> <U30B7>;<U3058>;IGNORE;IGNORE
+<U30B9> <U30B9>;<U30B9>;IGNORE;IGNORE
+<U3059> <U30B9>;<U3059>;IGNORE;IGNORE
+<U30BA> <U30B9>;<U30BA>;IGNORE;IGNORE
+<U305A> <U30B9>;<U305A>;IGNORE;IGNORE
+<U30BB> <U30BB>;<U30BB>;IGNORE;IGNORE
+<U305B> <U30BB>;<U305B>;IGNORE;IGNORE
+<U30BC> <U30BB>;<U30BC>;IGNORE;IGNORE
+<U305C> <U30BB>;<U305C>;IGNORE;IGNORE
+<U30BD> <U30BD>;<U30BD>;IGNORE;IGNORE
+<U305D> <U30BD>;<U305D>;IGNORE;IGNORE
+<U30BE> <U30BD>;<U30BE>;IGNORE;IGNORE
+<U305E> <U30BD>;<U305E>;IGNORE;IGNORE
+<U30BF> <U30BF>;<U30BF>;IGNORE;IGNORE
+<U305F> <U30BF>;<U305F>;IGNORE;IGNORE
+<U30C0> <U30BF>;<U30C0>;IGNORE;IGNORE
+<U3060> <U30BF>;<U3060>;IGNORE;IGNORE
+<U30C1> <U30C1>;<U30C1>;IGNORE;IGNORE
+<U3061> <U30C1>;<U3061>;IGNORE;IGNORE
+<U30C2> <U30C1>;<U30C2>;IGNORE;IGNORE
+<U3062> <U30C1>;<U3062>;IGNORE;IGNORE
+<U30C3> <U30C3>;<U30C3>;IGNORE;IGNORE
+<U3063> <U30C3>;<U3063>;IGNORE;IGNORE
+<U30C4> <U30C3>;<U30C4>;IGNORE;IGNORE
+<U3064> <U30C3>;<U3064>;IGNORE;IGNORE
+<U30C5> <U30C3>;<U30C5>;IGNORE;IGNORE
+<U3065> <U30C3>;<U3065>;IGNORE;IGNORE
+<U30C6> <U30C6>;<U30C6>;IGNORE;IGNORE
+<U3066> <U30C6>;<U3066>;IGNORE;IGNORE
+<U30C7> <U30C6>;<U30C7>;IGNORE;IGNORE
+<U3067> <U30C6>;<U3067>;IGNORE;IGNORE
+<U30C8> <U30C8>;<U30C8>;IGNORE;IGNORE
+<U3068> <U30C8>;<U3068>;IGNORE;IGNORE
+<U30C9> <U30C8>;<U30C9>;IGNORE;IGNORE
+<U3069> <U30C8>;<U3069>;IGNORE;IGNORE
+<U30CA> <U30CA>;<U30CA>;IGNORE;IGNORE
+<U306A> <U30CA>;<U306A>;IGNORE;IGNORE
+<U30CB> <U30CB>;<U30CB>;IGNORE;IGNORE
+<U306B> <U30CB>;<U306B>;IGNORE;IGNORE
+<U30CC> <U30CC>;<U30CC>;IGNORE;IGNORE
+<U306C> <U30CC>;<U306C>;IGNORE;IGNORE
+<U30CD> <U30CD>;<U30CD>;IGNORE;IGNORE
+<U306D> <U30CD>;<U306D>;IGNORE;IGNORE
+<U30CE> <U30CE>;<U30CE>;IGNORE;IGNORE
+<U306E> <U30CE>;<U306E>;IGNORE;IGNORE
+<U30CF> <U30CF>;<U30CF>;IGNORE;IGNORE
+<U306F> <U30CF>;<U306F>;IGNORE;IGNORE
+<U30D0> <U30CF>;<U30D0>;IGNORE;IGNORE
+<U3070> <U30CF>;<U3070>;IGNORE;IGNORE
+<U30D1> <U30CF>;<U30D1>;IGNORE;IGNORE
+<U3071> <U30CF>;<U3071>;IGNORE;IGNORE
+<U30D2> <U30D2>;<U30D2>;IGNORE;IGNORE
+<U3072> <U30D2>;<U3072>;IGNORE;IGNORE
+<U30D3> <U30D2>;<U30D3>;IGNORE;IGNORE
+<U3073> <U30D2>;<U3073>;IGNORE;IGNORE
+<U30D4> <U30D2>;<U30D4>;IGNORE;IGNORE
+<U3074> <U30D2>;<U3074>;IGNORE;IGNORE
+<U30D5> <U30D5>;<U30D5>;IGNORE;IGNORE
+<U3075> <U30D5>;<U3075>;IGNORE;IGNORE
+<U30D6> <U30D5>;<U30D6>;IGNORE;IGNORE
+<U3076> <U30D5>;<U3076>;IGNORE;IGNORE
+<U30D7> <U30D5>;<U30D7>;IGNORE;IGNORE
+<U3077> <U30D5>;<U3077>;IGNORE;IGNORE
+<U30D8> <U30D8>;<U30D8>;IGNORE;IGNORE
+<U3078> <U30D8>;<U3078>;IGNORE;IGNORE
+<U30D9> <U30D8>;<U30D9>;IGNORE;IGNORE
+<U3079> <U30D8>;<U3079>;IGNORE;IGNORE
+<U30DA> <U30D8>;<U30DA>;IGNORE;IGNORE
+<U307A> <U30D8>;<U307A>;IGNORE;IGNORE
+<U30DB> <U30DB>;<U30DB>;IGNORE;IGNORE
+<U307B> <U30DB>;<U307B>;IGNORE;IGNORE
+<U30DC> <U30DB>;<U30DC>;IGNORE;IGNORE
+<U307C> <U30DB>;<U307C>;IGNORE;IGNORE
+<U30DD> <U30DB>;<U30DD>;IGNORE;IGNORE
+<U307D> <U30DB>;<U307D>;IGNORE;IGNORE
+<U30DE> <U30DE>;<U30DE>;IGNORE;IGNORE
+<U307E> <U30DE>;<U307E>;IGNORE;IGNORE
+<U30DF> <U30DF>;<U30DF>;IGNORE;IGNORE
+<U307F> <U30DF>;<U307F>;IGNORE;IGNORE
+<U30E0> <U30E0>;<U30E0>;IGNORE;IGNORE
+<U3080> <U30E0>;<U3080>;IGNORE;IGNORE
+<U30E1> <U30E1>;<U30E1>;IGNORE;IGNORE
+<U3081> <U30E1>;<U3081>;IGNORE;IGNORE
+<U30E2> <U30E2>;<U30E2>;IGNORE;IGNORE
+<U3082> <U30E2>;<U3082>;IGNORE;IGNORE
+<U30E3> <U30E3>;<U30E3>;IGNORE;IGNORE
+<U3083> <U30E3>;<U3083>;IGNORE;IGNORE
+<U30E4> <U30E3>;<U30E4>;IGNORE;IGNORE
+<U3084> <U30E3>;<U3084>;IGNORE;IGNORE
+<U30E5> <U30E5>;<U30E5>;IGNORE;IGNORE
+<U3085> <U30E5>;<U3085>;IGNORE;IGNORE
+<U30E6> <U30E5>;<U30E6>;IGNORE;IGNORE
+<U3086> <U30E5>;<U3086>;IGNORE;IGNORE
+<U30E7> <U30E7>;<U30E7>;IGNORE;IGNORE
+<U3087> <U30E7>;<U3087>;IGNORE;IGNORE
+<U30E8> <U30E7>;<U30E8>;IGNORE;IGNORE
+<U3088> <U30E7>;<U3088>;IGNORE;IGNORE
+<U30E9> <U30E9>;<U30E9>;IGNORE;IGNORE
+<U3089> <U30E9>;<U3089>;IGNORE;IGNORE
+<U30EA> <U30EA>;<U30EA>;IGNORE;IGNORE
+<U308A> <U30EA>;<U308A>;IGNORE;IGNORE
+<U30EB> <U30EB>;<U30EB>;IGNORE;IGNORE
+<U308B> <U30EB>;<U308B>;IGNORE;IGNORE
+<U30EC> <U30EC>;<U30EC>;IGNORE;IGNORE
+<U308C> <U30EC>;<U308C>;IGNORE;IGNORE
+<U30ED> <U30ED>;<U30ED>;IGNORE;IGNORE
+<U308D> <U30ED>;<U308D>;IGNORE;IGNORE
+<U30EE> <U30EE>;<U30EE>;IGNORE;IGNORE
+<U308E> <U30EE>;<U308E>;IGNORE;IGNORE
+<U30EF> <U30EE>;<U30EF>;IGNORE;IGNORE
+<U308F> <U30EE>;<U308F>;IGNORE;IGNORE
+<U30F0> <U30F0>;<U30F0>;IGNORE;IGNORE
+<U3090> <U30F0>;<U3090>;IGNORE;IGNORE
+<U30F1> <U30F1>;<U30F1>;IGNORE;IGNORE
+<U3091> <U30F1>;<U3091>;IGNORE;IGNORE
+<U30F2> <U30F2>;<U30F2>;IGNORE;IGNORE
+<U3092> <U30F2>;<U3092>;IGNORE;IGNORE
+<U30F3> <U30F3>;<U30F3>;IGNORE;IGNORE
+<U3093> <U30F3>;<U3093>;IGNORE;IGNORE
+
+order_end
+
diff --git a/ap/build/uClibc/extra/locale/collation/en_DK b/ap/build/uClibc/extra/locale/collation/en_DK
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/en_DK
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/en_GB b/ap/build/uClibc/extra/locale/collation/en_GB
new file mode 100644
index 0000000..5314a57
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/en_GB
@@ -0,0 +1,2 @@
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/en_HK b/ap/build/uClibc/extra/locale/collation/en_HK
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/en_HK
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/en_IE b/ap/build/uClibc/extra/locale/collation/en_IE
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/en_IE
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/en_IN b/ap/build/uClibc/extra/locale/collation/en_IN
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/en_IN
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/en_NZ b/ap/build/uClibc/extra/locale/collation/en_NZ
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/en_NZ
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/en_PH b/ap/build/uClibc/extra/locale/collation/en_PH
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/en_PH
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/en_SG b/ap/build/uClibc/extra/locale/collation/en_SG
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/en_SG
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/en_US b/ap/build/uClibc/extra/locale/collation/en_US
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/en_US
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/en_ZA b/ap/build/uClibc/extra/locale/collation/en_ZA
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/en_ZA
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/en_ZW b/ap/build/uClibc/extra/locale/collation/en_ZW
new file mode 100644
index 0000000..a7e9285
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/en_ZW
@@ -0,0 +1 @@
+copy "en_ZA"
diff --git a/ap/build/uClibc/extra/locale/collation/eo_EO b/ap/build/uClibc/extra/locale/collation/eo_EO
new file mode 100644
index 0000000..c8057f5
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/eo_EO
@@ -0,0 +1,49 @@
+copy "iso14651_t1"
+
+collating-symbol <ccirc>
+collating-symbol <gcirc>
+collating-symbol <hcirc>
+collating-symbol <jcirc>
+collating-symbol <scirc>
+collating-symbol <ubreve>
+
+reorder-after <c>
+<ccirc>
+reorder-after <g>
+<gcirc>
+reorder-after <h>
+<hcirc>
+reorder-after <j>
+<jcirc>
+reorder-after <s>
+<scirc>
+reorder-after <u>
+<ubreve>
+
+reorder-after <U0043>
+<U0108> <ccirc>;<CIR>;<CAP>;IGNORE % Ĉ
+reorder-after <U0063>
+<U0109> <ccirc>;<CIR>;<MIN>;IGNORE % ĉ
+reorder-after <U0047>
+<U011C> <gcirc>;<CIR>;<CAP>;IGNORE % Ĝ
+reorder-after <U0067>
+<U011D> <gcirc>;<CIR>;<MIN>;IGNORE % ĝ
+reorder-after <U0048>
+<U0124> <hcirc>;<CIR>;<CAP>;IGNORE % Ĥ
+reorder-after <U0068>
+<U0125> <hcirc>;<CIR>;<MIN>;IGNORE % ĥ
+reorder-after <U004A>
+<U0134> <jcirc>;<CIR>;<CAP>;IGNORE % Ĵ
+reorder-after <U006A>
+<U0135> <jcirc>;<CIR>;<MIN>;IGNORE % ĵ
+reorder-after <U0053>
+<U015C> <scirc>;<CIR>;<CAP>;IGNORE % Ŝ
+reorder-after <U0073>
+<U015D> <scirc>;<CIR>;<MIN>;IGNORE % ŝ
+reorder-after <U0055>
+<U016C> <ubreve>;<BRE>;<CAP>;IGNORE % Ŭ
+reorder-after <U0075>
+<U016D> <ubreve>;<BRE>;<MIN>;IGNORE % ŭ
+
+reorder-end
+
diff --git a/ap/build/uClibc/extra/locale/collation/es_AR b/ap/build/uClibc/extra/locale/collation/es_AR
new file mode 100644
index 0000000..09fd11b
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/es_AR
@@ -0,0 +1 @@
+copy "es_ES"
diff --git a/ap/build/uClibc/extra/locale/collation/es_BO b/ap/build/uClibc/extra/locale/collation/es_BO
new file mode 100644
index 0000000..09fd11b
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/es_BO
@@ -0,0 +1 @@
+copy "es_ES"
diff --git a/ap/build/uClibc/extra/locale/collation/es_CL b/ap/build/uClibc/extra/locale/collation/es_CL
new file mode 100644
index 0000000..09fd11b
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/es_CL
@@ -0,0 +1 @@
+copy "es_ES"
diff --git a/ap/build/uClibc/extra/locale/collation/es_CO b/ap/build/uClibc/extra/locale/collation/es_CO
new file mode 100644
index 0000000..09fd11b
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/es_CO
@@ -0,0 +1 @@
+copy "es_ES"
diff --git a/ap/build/uClibc/extra/locale/collation/es_CR b/ap/build/uClibc/extra/locale/collation/es_CR
new file mode 100644
index 0000000..09fd11b
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/es_CR
@@ -0,0 +1 @@
+copy "es_ES"
diff --git a/ap/build/uClibc/extra/locale/collation/es_DO b/ap/build/uClibc/extra/locale/collation/es_DO
new file mode 100644
index 0000000..09fd11b
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/es_DO
@@ -0,0 +1 @@
+copy "es_ES"
diff --git a/ap/build/uClibc/extra/locale/collation/es_EC b/ap/build/uClibc/extra/locale/collation/es_EC
new file mode 100644
index 0000000..a0ea9ad
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/es_EC
@@ -0,0 +1 @@
+copy "es_US"
diff --git a/ap/build/uClibc/extra/locale/collation/es_ES b/ap/build/uClibc/extra/locale/collation/es_ES
new file mode 100644
index 0000000..2c0a033
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/es_ES
@@ -0,0 +1,2061 @@
+
+% Base collation scheme: 1994-03-22
+
+% Ordering algorithm:
+% 1. Spaces and hyphen (but not soft
+% hyphen) before punctuation
+% characters, punctuation characters
+% before numbers,
+% numbers before letters.
+% 2. Letters with diacritical marks are
+% members of equivalence classes
+% 3. A distinction is made with regards
+% to case as noted below.
+% 4. Special characters are ignored
+% when comparing letters, but then
+% they are considered
+% 5. The alphabets are sorted in order
+% of first appearance in ISO 10646:
+% Latin, Greek, Cyrillic, etc.
+%
+% According to Greek specifications,
+% the steps 2. and 3. above are reversed
+% for the Greek script
+
+% collating symbols
+
+% The collating symbol naming is
+% mostly taken from ISO 10646-1,
+% for example the case and accent
+% names are from this standard.
+
+collating-symbol <CAPITAL>
+collating-symbol <CAPITAL-SMALL>
+collating-symbol <SMALL-CAPITAL>
+collating-symbol <SMALL>
+
+% <CAPITAL-SMALL> and <SMALL-CAPITAL>
+% are for cases like Danish <U0041><U0061>
+% and Spanish <U0043><U0068> being treated
+% as one letter.
+
+% The <a8> ...... <z8> collating
+% symbols have defined weights as
+% the last character in a group of
+% Latin letters. They are used
+% to specify deltas by locales using
+% a locale as the default ordering
+% and by "replace-after" statements
+% specifying the changed placement
+% in an ordering of a character.
+
+collating-symbol <a8>
+collating-symbol <b8>
+collating-symbol <c8>
+collating-symbol <d8>
+collating-symbol <e8>
+collating-symbol <f8>
+collating-symbol <g8>
+collating-symbol <h8>
+collating-symbol <i8>
+collating-symbol <j8>
+collating-symbol <k8>
+collating-symbol <l8>
+collating-symbol <m8>
+collating-symbol <n8>
+collating-symbol <o8>
+collating-symbol <p8>
+collating-symbol <q8>
+collating-symbol <r8>
+collating-symbol <s8>
+collating-symbol <t8>
+collating-symbol <u8>
+collating-symbol <v8>
+collating-symbol <w8>
+collating-symbol <x8>
+collating-symbol <y8>
+collating-symbol <z8>
+
+collating-symbol <NONE>
+collating-symbol <ACUTE>
+collating-symbol <ACUTE+DOT>
+collating-symbol <GRAVE>
+collating-symbol <DOUBLE-GRAVE>
+collating-symbol <BREVE>
+collating-symbol <BREVE+ACUTE>
+collating-symbol <BREVE+GRAVE>
+collating-symbol <BREVE+MACRON>
+collating-symbol <BREVE+HOOK>
+collating-symbol <BREVE+TILDE>
+collating-symbol <BREVE+DOT-BELOW>
+collating-symbol <BREVE-BELOW>
+collating-symbol <INVERTED-BREVE>
+collating-symbol <CIRCUMFLEX>
+collating-symbol <CIRCUMFLEX+ACUTE>
+collating-symbol <CIRCUMFLEX+GRAVE>
+collating-symbol <CIRCUMFLEX+HOOK>
+collating-symbol <CIRCUMFLEX+TILDE>
+collating-symbol <CIRCUMFLEX+DOT-BELOW>
+collating-symbol <CARON>
+collating-symbol <CARON+DIAERESIS>
+collating-symbol <CARON+DOT>
+collating-symbol <RING>
+collating-symbol <RING+ACUTE>
+collating-symbol <RING-BELOW>
+collating-symbol <DIAERESIS>
+collating-symbol <DIAERESIS+MACRON>
+collating-symbol <DIAERESIS+ACUTE>
+collating-symbol <DIAERESIS+GRAVE>
+collating-symbol <DIAERESIS+CARON>
+collating-symbol <DOUBLE-ACUTE>
+collating-symbol <HOOK>
+collating-symbol <TILDE>
+collating-symbol <TILDE+ACUTE>
+collating-symbol <TILDE+DIAERESIS>
+collating-symbol <TILDE-BELOW>
+collating-symbol <DOT>
+collating-symbol <DOT-BELOW>
+collating-symbol <DOT+DOT-BELOW>
+collating-symbol <STROKE>
+collating-symbol <STROKE+ACUTE>
+collating-symbol <CEDILLA>
+collating-symbol <CEDILLA+ACUTE>
+collating-symbol <CEDILLA+GRAVE>
+collating-symbol <CEDILLA+BREVE>
+collating-symbol <OGONEK>
+collating-symbol <OGONEK+MACRON>
+collating-symbol <MACRON>
+collating-symbol <MACRON+ACUTE>
+collating-symbol <MACRON+GRAVE>
+collating-symbol <MACRON+DIAERESIS>
+collating-symbol <MACRON+DIAERESIS-BELOW>
+collating-symbol <MACRON+DOT>
+collating-symbol <MACRON+DOT-BELOW>
+collating-symbol <MACRON+CIRCUMFLEX>
+collating-symbol <LINE-BELOW>
+collating-symbol <HORN>
+collating-symbol <HORN+ACUTE>
+collating-symbol <HORN+GRAVE>
+collating-symbol <HORN+HOOK>
+collating-symbol <HORN+TILDE>
+collating-symbol <HORN+DOT-BELOW>
+collating-symbol <PRECEDED-BY-APOSTROPHE>
+collating-symbol <GREEK>
+collating-symbol <TONOS>
+collating-symbol <DIALYTICA>
+collating-symbol <DIALYTICA+TONOS>
+collating-symbol <CYRILLIC>
+collating-symbol <HIRAGANA>
+collating-symbol <KATAKANA>
+collating-symbol <SPECIAL>
+
+% letter;accent;case;specials
+
+order_start forward;backward;forward;position
+
+% <CAPITAL> or <SMALL> letters first:
+
+<SMALL>
+<SMALL-CAPITAL>
+<CAPITAL-SMALL>
+<CAPITAL>
+
+% Accents:
+
+<NONE>
+<ACUTE>
+<ACUTE+DOT>
+<GRAVE>
+<DOUBLE-GRAVE>
+<BREVE>
+<BREVE+ACUTE>
+<BREVE+GRAVE>
+<BREVE+MACRON>
+<BREVE+HOOK>
+<BREVE+TILDE>
+<BREVE+DOT-BELOW>
+<BREVE-BELOW>
+<INVERTED-BREVE>
+<CIRCUMFLEX>
+<CIRCUMFLEX+ACUTE>
+<CIRCUMFLEX+GRAVE>
+<CIRCUMFLEX+HOOK>
+<CIRCUMFLEX+TILDE>
+<CIRCUMFLEX+DOT-BELOW>
+<CARON>
+<CARON+DIAERESIS>
+<CARON+DOT>
+<RING>
+<RING+ACUTE>
+<RING-BELOW>
+<DIAERESIS>
+<DIAERESIS+MACRON>
+<DIAERESIS+ACUTE>
+<DIAERESIS+GRAVE>
+<DIAERESIS+CARON>
+<DOUBLE-ACUTE>
+<HOOK>
+<TILDE>
+<TILDE+ACUTE>
+<TILDE+DIAERESIS>
+<TILDE-BELOW>
+<DOT>
+<DOT-BELOW>
+<DOT+DOT-BELOW>
+<STROKE>
+<STROKE+ACUTE>
+<CEDILLA>
+<CEDILLA+ACUTE>
+<CEDILLA+GRAVE>
+<CEDILLA+BREVE>
+<OGONEK>
+<OGONEK+MACRON>
+<MACRON>
+<MACRON+ACUTE>
+<MACRON+GRAVE>
+<MACRON+DIAERESIS>
+<MACRON+DIAERESIS-BELOW>
+<MACRON+DOT>
+<MACRON+DOT-BELOW>
+<MACRON+CIRCUMFLEX>
+<LINE-BELOW>
+<HORN>
+<HORN+ACUTE>
+<HORN+GRAVE>
+<HORN+HOOK>
+<HORN+TILDE>
+<HORN+DOT-BELOW>
+<PRECEDED-BY-APOSTROPHE>
+<GREEK>
+<TONOS>
+<DIALYTICA>
+<DIALYTICA+TONOS>
+<CYRILLIC>
+<HIRAGANA>
+<KATAKANA>
+<SPECIAL>
+
+<U00A0> <U00A0>;<U00A0>;<U00A0>;IGNORE
+<U0020> IGNORE;IGNORE;IGNORE;<U0020>
+<U0009> IGNORE;IGNORE;IGNORE;<U0009>
+<U000B> IGNORE;IGNORE;IGNORE;<U000B>
+<U000D> IGNORE;IGNORE;IGNORE;<U000D>
+<U000A> IGNORE;IGNORE;IGNORE;<U000A>
+<U000C> IGNORE;IGNORE;IGNORE;<U000C>
+<U005F> IGNORE;IGNORE;IGNORE;<U005F>
+<U00AF> IGNORE;IGNORE;IGNORE;<U00AF>
+<U00AD> IGNORE;IGNORE;IGNORE;<U00AD>
+<U002D> IGNORE;IGNORE;IGNORE;<U002D>
+<U002C> IGNORE;IGNORE;IGNORE;<U002C>
+<U003B> IGNORE;IGNORE;IGNORE;<U003B>
+<U003A> IGNORE;IGNORE;IGNORE;<U003A>
+<U0021> IGNORE;IGNORE;IGNORE;<U0021>
+<U00A1> IGNORE;IGNORE;IGNORE;<U00A1>
+<U003F> IGNORE;IGNORE;IGNORE;<U003F>
+<U00BF> IGNORE;IGNORE;IGNORE;<U00BF>
+<U002F> IGNORE;IGNORE;IGNORE;<U002F>
+<U002E> IGNORE;IGNORE;IGNORE;<U002E>
+<U00B4> IGNORE;IGNORE;IGNORE;<U00B4>
+<U0060> IGNORE;IGNORE;IGNORE;<U0060>
+<U005E> IGNORE;IGNORE;IGNORE;<U005E>
+<U00A8> IGNORE;IGNORE;IGNORE;<U00A8>
+<U007E> IGNORE;IGNORE;IGNORE;<U007E>
+<U00B7> IGNORE;IGNORE;IGNORE;<U00B7>
+<U00B8> IGNORE;IGNORE;IGNORE;<U00B8>
+<U0027> IGNORE;IGNORE;IGNORE;<U0027>
+<U2018> IGNORE;IGNORE;IGNORE;<U2018>
+<U2019> IGNORE;IGNORE;IGNORE;<U2019>
+<U0022> IGNORE;IGNORE;IGNORE;<U0022>
+<U201C> IGNORE;IGNORE;IGNORE;<U201C>
+<U201D> IGNORE;IGNORE;IGNORE;<U201D>
+<U00AB> IGNORE;IGNORE;IGNORE;<U00AB>
+<U00BB> IGNORE;IGNORE;IGNORE;<U00BB>
+<U0028> IGNORE;IGNORE;IGNORE;<U0028>
+<U207D> IGNORE;IGNORE;IGNORE;<U207D>
+<U0029> IGNORE;IGNORE;IGNORE;<U0029>
+<U207E> IGNORE;IGNORE;IGNORE;<U207E>
+<U005B> IGNORE;IGNORE;IGNORE;<U005B>
+<U005D> IGNORE;IGNORE;IGNORE;<U005D>
+<U007B> IGNORE;IGNORE;IGNORE;<U007B>
+<U007D> IGNORE;IGNORE;IGNORE;<U007D>
+<U00A7> IGNORE;IGNORE;IGNORE;<U00A7>
+<U00B6> IGNORE;IGNORE;IGNORE;<U00B6>
+<U00A9> IGNORE;IGNORE;IGNORE;<U00A9>
+<U00AE> IGNORE;IGNORE;IGNORE;<U00AE>
+<U0040> IGNORE;IGNORE;IGNORE;<U0040>
+<U00A4> IGNORE;IGNORE;IGNORE;<U00A4>
+<U00A2> IGNORE;IGNORE;IGNORE;<U00A2>
+<U0024> IGNORE;IGNORE;IGNORE;<U0024>
+<U00A3> IGNORE;IGNORE;IGNORE;<U00A3>
+<U00A5> IGNORE;IGNORE;IGNORE;<U00A5>
+<U002A> IGNORE;IGNORE;IGNORE;<U002A>
+<U005C> IGNORE;IGNORE;IGNORE;<U005C>
+<U0026> IGNORE;IGNORE;IGNORE;<U0026>
+<U0023> IGNORE;IGNORE;IGNORE;<U0023>
+<U0025> IGNORE;IGNORE;IGNORE;<U0025>
+<U207B> IGNORE;IGNORE;IGNORE;<U207B>
+<U002B> IGNORE;IGNORE;IGNORE;<U002B>
+<U207A> IGNORE;IGNORE;IGNORE;<U207A>
+<U00B1> IGNORE;IGNORE;IGNORE;<U00B1>
+<U00F7> IGNORE;IGNORE;IGNORE;<U00F7>
+<U00D7> IGNORE;IGNORE;IGNORE;<U00D7>
+<U2260> IGNORE;IGNORE;IGNORE;<U2260>
+<U003C> IGNORE;IGNORE;IGNORE;<U003C>
+<U2264> IGNORE;IGNORE;IGNORE;<U2264>
+<U003D> IGNORE;IGNORE;IGNORE;<U003D>
+<U2265> IGNORE;IGNORE;IGNORE;<U2265>
+<U003E> IGNORE;IGNORE;IGNORE;<U003E>
+<U00AC> IGNORE;IGNORE;IGNORE;<U00AC>
+<U007C> IGNORE;IGNORE;IGNORE;<U007C>
+<U00A6> IGNORE;IGNORE;IGNORE;<U00A6>
+<U00B0> IGNORE;IGNORE;IGNORE;<U00B0>
+<U00B5> IGNORE;IGNORE;IGNORE;<U00B5>
+<U02C7> IGNORE;IGNORE;IGNORE;<U02C7>
+<U02D8> IGNORE;IGNORE;IGNORE;<U02D8>
+<U02D9> IGNORE;IGNORE;IGNORE;<U02D9>
+<U02DA> IGNORE;IGNORE;IGNORE;<U02DA>
+<U02DB> IGNORE;IGNORE;IGNORE;<U02DB>
+<U02DC> IGNORE;IGNORE;IGNORE;<U02DC>
+<U02DD> IGNORE;IGNORE;IGNORE;<U02DD>
+<U0374> IGNORE;IGNORE;IGNORE;<U0374>
+<U0375> IGNORE;IGNORE;IGNORE;<U0375>
+<U037A> IGNORE;IGNORE;IGNORE;<U037A>
+<U037E> IGNORE;IGNORE;IGNORE;<U037E>
+<U0384> IGNORE;IGNORE;IGNORE;<U0384>
+<U0385> IGNORE;IGNORE;IGNORE;<U0385>
+<U0387> IGNORE;IGNORE;IGNORE;<U0387>
+<U03D0> IGNORE;IGNORE;IGNORE;<U03D0>
+<U1FBF> IGNORE;IGNORE;IGNORE;<U1FBF>
+<U1FC0> IGNORE;IGNORE;IGNORE;<U1FC0>
+<U1FC1> IGNORE;IGNORE;IGNORE;<U1FC1>
+<U1FCD> IGNORE;IGNORE;IGNORE;<U1FCD>
+<U1FCE> IGNORE;IGNORE;IGNORE;<U1FCE>
+<U1FCF> IGNORE;IGNORE;IGNORE;<U1FCF>
+<U1FDD> IGNORE;IGNORE;IGNORE;<U1FDD>
+<U1FDE> IGNORE;IGNORE;IGNORE;<U1FDE>
+<U1FDF> IGNORE;IGNORE;IGNORE;<U1FDF>
+<U1FED> IGNORE;IGNORE;IGNORE;<U1FED>
+<U1FEF> IGNORE;IGNORE;IGNORE;<U1FEF>
+<U1FFE> IGNORE;IGNORE;IGNORE;<U1FFE>
+<U2002> IGNORE;IGNORE;IGNORE;<U2002>
+<U2003> IGNORE;IGNORE;IGNORE;<U2003>
+<U2004> IGNORE;IGNORE;IGNORE;<U2004>
+<U2005> IGNORE;IGNORE;IGNORE;<U2005>
+<U2006> IGNORE;IGNORE;IGNORE;<U2006>
+<U200E> IGNORE;IGNORE;IGNORE;<U200E>
+<U200F> IGNORE;IGNORE;IGNORE;<U200F>
+<U2009> IGNORE;IGNORE;IGNORE;<U2009>
+<U200A> IGNORE;IGNORE;IGNORE;<U200A>
+<U2010> IGNORE;IGNORE;IGNORE;<U2010>
+<U2013> IGNORE;IGNORE;IGNORE;<U2013>
+<U2014> IGNORE;IGNORE;IGNORE;<U2014>
+<U2015> IGNORE;IGNORE;IGNORE;<U2015>
+<U2016> IGNORE;IGNORE;IGNORE;<U2016>
+<U2017> IGNORE;IGNORE;IGNORE;<U2017>
+<U201A> IGNORE;IGNORE;IGNORE;<U201A>
+<U201B> IGNORE;IGNORE;IGNORE;<U201B>
+<U201E> IGNORE;IGNORE;IGNORE;<U201E>
+<U201F> IGNORE;IGNORE;IGNORE;<U201F>
+<U2020> IGNORE;IGNORE;IGNORE;<U2020>
+<U2021> IGNORE;IGNORE;IGNORE;<U2021>
+<U2219> IGNORE;IGNORE;IGNORE;<U2219>
+<U2025> IGNORE;IGNORE;IGNORE;<U2025>
+<U2026> IGNORE;IGNORE;IGNORE;<U2026>
+<U2030> IGNORE;IGNORE;IGNORE;<U2030>
+<U2032> IGNORE;IGNORE;IGNORE;<U2032>
+<U2033> IGNORE;IGNORE;IGNORE;<U2033>
+<U2034> IGNORE;IGNORE;IGNORE;<U2034>
+<U2035> IGNORE;IGNORE;IGNORE;<U2035>
+<U2036> IGNORE;IGNORE;IGNORE;<U2036>
+<U2037> IGNORE;IGNORE;IGNORE;<U2037>
+<U2038> IGNORE;IGNORE;IGNORE;<U2038>
+<U2039> IGNORE;IGNORE;IGNORE;<U2039>
+<U203A> IGNORE;IGNORE;IGNORE;<U203A>
+<U203B> IGNORE;IGNORE;IGNORE;<U203B>
+<U203C> IGNORE;IGNORE;IGNORE;<U203C>
+<U203E> IGNORE;IGNORE;IGNORE;<U203E>
+<U207C> IGNORE;IGNORE;IGNORE;<U207C>
+<U2080> IGNORE;IGNORE;IGNORE;<U2080>
+<U2081> IGNORE;IGNORE;IGNORE;<U2081>
+<U2082> IGNORE;IGNORE;IGNORE;<U2082>
+<U2083> IGNORE;IGNORE;IGNORE;<U2083>
+<U2084> IGNORE;IGNORE;IGNORE;<U2084>
+<U2085> IGNORE;IGNORE;IGNORE;<U2085>
+<U2086> IGNORE;IGNORE;IGNORE;<U2086>
+<U2087> IGNORE;IGNORE;IGNORE;<U2087>
+<U2088> IGNORE;IGNORE;IGNORE;<U2088>
+<U2089> IGNORE;IGNORE;IGNORE;<U2089>
+<U208A> IGNORE;IGNORE;IGNORE;<U208A>
+<U208B> IGNORE;IGNORE;IGNORE;<U208B>
+<U208C> IGNORE;IGNORE;IGNORE;<U208C>
+<U208D> IGNORE;IGNORE;IGNORE;<U208D>
+<U208E> IGNORE;IGNORE;IGNORE;<U208E>
+<U20A3> IGNORE;IGNORE;IGNORE;<U20A3>
+<U20A4> IGNORE;IGNORE;IGNORE;<U20A4>
+<U20A7> IGNORE;IGNORE;IGNORE;<U20A7>
+<U20A9> IGNORE;IGNORE;IGNORE;<U20A9>
+<U2103> IGNORE;IGNORE;IGNORE;<U2103>
+<U2105> IGNORE;IGNORE;IGNORE;<U2105>
+<U2109> IGNORE;IGNORE;IGNORE;<U2109>
+<U2116> IGNORE;IGNORE;IGNORE;<U2116>
+<U2117> IGNORE;IGNORE;IGNORE;<U2117>
+<U211E> IGNORE;IGNORE;IGNORE;<U211E>
+<U2120> IGNORE;IGNORE;IGNORE;<U2120>
+<U2122> IGNORE;IGNORE;IGNORE;<U2122>
+<U2126> IGNORE;IGNORE;IGNORE;<U2126>
+<U212B> IGNORE;IGNORE;IGNORE;<U212B>
+<U2153> IGNORE;IGNORE;IGNORE;<U2153>
+<U2154> IGNORE;IGNORE;IGNORE;<U2154>
+<U2155> IGNORE;IGNORE;IGNORE;<U2155>
+<U2156> IGNORE;IGNORE;IGNORE;<U2156>
+<U2157> IGNORE;IGNORE;IGNORE;<U2157>
+<U2158> IGNORE;IGNORE;IGNORE;<U2158>
+<U2159> IGNORE;IGNORE;IGNORE;<U2159>
+<U215A> IGNORE;IGNORE;IGNORE;<U215A>
+<U2160> IGNORE;IGNORE;IGNORE;<U2160>
+<U2161> IGNORE;IGNORE;IGNORE;<U2161>
+<U2162> IGNORE;IGNORE;IGNORE;<U2162>
+<U2163> IGNORE;IGNORE;IGNORE;<U2163>
+<U2164> IGNORE;IGNORE;IGNORE;<U2164>
+<U2165> IGNORE;IGNORE;IGNORE;<U2165>
+<U2166> IGNORE;IGNORE;IGNORE;<U2166>
+<U2167> IGNORE;IGNORE;IGNORE;<U2167>
+<U2168> IGNORE;IGNORE;IGNORE;<U2168>
+<U2169> IGNORE;IGNORE;IGNORE;<U2169>
+<U216A> IGNORE;IGNORE;IGNORE;<U216A>
+<U216B> IGNORE;IGNORE;IGNORE;<U216B>
+<U216C> IGNORE;IGNORE;IGNORE;<U216C>
+<U216D> IGNORE;IGNORE;IGNORE;<U216D>
+<U216E> IGNORE;IGNORE;IGNORE;<U216E>
+<U216F> IGNORE;IGNORE;IGNORE;<U216F>
+<U2170> IGNORE;IGNORE;IGNORE;<U2170>
+<U2171> IGNORE;IGNORE;IGNORE;<U2171>
+<U2172> IGNORE;IGNORE;IGNORE;<U2172>
+<U2173> IGNORE;IGNORE;IGNORE;<U2173>
+<U2174> IGNORE;IGNORE;IGNORE;<U2174>
+<U2175> IGNORE;IGNORE;IGNORE;<U2175>
+<U2176> IGNORE;IGNORE;IGNORE;<U2176>
+<U2177> IGNORE;IGNORE;IGNORE;<U2177>
+<U2178> IGNORE;IGNORE;IGNORE;<U2178>
+<U2179> IGNORE;IGNORE;IGNORE;<U2179>
+<U217A> IGNORE;IGNORE;IGNORE;<U217A>
+<U217B> IGNORE;IGNORE;IGNORE;<U217B>
+<U217C> IGNORE;IGNORE;IGNORE;<U217C>
+<U217D> IGNORE;IGNORE;IGNORE;<U217D>
+<U217E> IGNORE;IGNORE;IGNORE;<U217E>
+<U217F> IGNORE;IGNORE;IGNORE;<U217F>
+<U2180> IGNORE;IGNORE;IGNORE;<U2180>
+<U2181> IGNORE;IGNORE;IGNORE;<U2181>
+<U2182> IGNORE;IGNORE;IGNORE;<U2182>
+<U2191> IGNORE;IGNORE;IGNORE;<U2191>
+<U2193> IGNORE;IGNORE;IGNORE;<U2193>
+<U2194> IGNORE;IGNORE;IGNORE;<U2194>
+<U2195> IGNORE;IGNORE;IGNORE;<U2195>
+<U2196> IGNORE;IGNORE;IGNORE;<U2196>
+<U2197> IGNORE;IGNORE;IGNORE;<U2197>
+<U2198> IGNORE;IGNORE;IGNORE;<U2198>
+<U2199> IGNORE;IGNORE;IGNORE;<U2199>
+<U21A8> IGNORE;IGNORE;IGNORE;<U21A8>
+<U21C0> IGNORE;IGNORE;IGNORE;<U21C0>
+<U21D0> IGNORE;IGNORE;IGNORE;<U21D0>
+<U21D2> IGNORE;IGNORE;IGNORE;<U21D2>
+<U21D4> IGNORE;IGNORE;IGNORE;<U21D4>
+<U2200> IGNORE;IGNORE;IGNORE;<U2200>
+<U2202> IGNORE;IGNORE;IGNORE;<U2202>
+<U2203> IGNORE;IGNORE;IGNORE;<U2203>
+<U2205> IGNORE;IGNORE;IGNORE;<U2205>
+<U2206> IGNORE;IGNORE;IGNORE;<U2206>
+<U2207> IGNORE;IGNORE;IGNORE;<U2207>
+<U2208> IGNORE;IGNORE;IGNORE;<U2208>
+<U220B> IGNORE;IGNORE;IGNORE;<U220B>
+<U220F> IGNORE;IGNORE;IGNORE;<U220F>
+<U2211> IGNORE;IGNORE;IGNORE;<U2211>
+<U2212> IGNORE;IGNORE;IGNORE;<U2212>
+<U2213> IGNORE;IGNORE;IGNORE;<U2213>
+<U2214> IGNORE;IGNORE;IGNORE;<U2214>
+<U2044> IGNORE;IGNORE;IGNORE;<U2044>
+<U2217> IGNORE;IGNORE;IGNORE;<U2217>
+<U2218> IGNORE;IGNORE;IGNORE;<U2218>
+<U2022> IGNORE;IGNORE;IGNORE;<U2022>
+<U221A> IGNORE;IGNORE;IGNORE;<U221A>
+<U221D> IGNORE;IGNORE;IGNORE;<U221D>
+<U221E> IGNORE;IGNORE;IGNORE;<U221E>
+<U221F> IGNORE;IGNORE;IGNORE;<U221F>
+<U2220> IGNORE;IGNORE;IGNORE;<U2220>
+<U2225> IGNORE;IGNORE;IGNORE;<U2225>
+<U2227> IGNORE;IGNORE;IGNORE;<U2227>
+<U2228> IGNORE;IGNORE;IGNORE;<U2228>
+<U2229> IGNORE;IGNORE;IGNORE;<U2229>
+<U222A> IGNORE;IGNORE;IGNORE;<U222A>
+<U222B> IGNORE;IGNORE;IGNORE;<U222B>
+<U222C> IGNORE;IGNORE;IGNORE;<U222C>
+<U222E> IGNORE;IGNORE;IGNORE;<U222E>
+<U2234> IGNORE;IGNORE;IGNORE;<U2234>
+<U2235> IGNORE;IGNORE;IGNORE;<U2235>
+<U2236> IGNORE;IGNORE;IGNORE;<U2236>
+<U2237> IGNORE;IGNORE;IGNORE;<U2237>
+<U223C> IGNORE;IGNORE;IGNORE;<U223C>
+<U223E> IGNORE;IGNORE;IGNORE;<U223E>
+<U2243> IGNORE;IGNORE;IGNORE;<U2243>
+<U2245> IGNORE;IGNORE;IGNORE;<U2245>
+<U2248> IGNORE;IGNORE;IGNORE;<U2248>
+<U224C> IGNORE;IGNORE;IGNORE;<U224C>
+<U2253> IGNORE;IGNORE;IGNORE;<U2253>
+<U2261> IGNORE;IGNORE;IGNORE;<U2261>
+<U226A> IGNORE;IGNORE;IGNORE;<U226A>
+<U226B> IGNORE;IGNORE;IGNORE;<U226B>
+<U226E> IGNORE;IGNORE;IGNORE;<U226E>
+<U226F> IGNORE;IGNORE;IGNORE;<U226F>
+<U2282> IGNORE;IGNORE;IGNORE;<U2282>
+<U2283> IGNORE;IGNORE;IGNORE;<U2283>
+<U2286> IGNORE;IGNORE;IGNORE;<U2286>
+<U2287> IGNORE;IGNORE;IGNORE;<U2287>
+<U2299> IGNORE;IGNORE;IGNORE;<U2299>
+<U229A> IGNORE;IGNORE;IGNORE;<U229A>
+<U22A5> IGNORE;IGNORE;IGNORE;<U22A5>
+<U22C5> IGNORE;IGNORE;IGNORE;<U22C5>
+<U22EE> IGNORE;IGNORE;IGNORE;<U22EE>
+<U2302> IGNORE;IGNORE;IGNORE;<U2302>
+<U2308> IGNORE;IGNORE;IGNORE;<U2308>
+<U2309> IGNORE;IGNORE;IGNORE;<U2309>
+<U230A> IGNORE;IGNORE;IGNORE;<U230A>
+<U230B> IGNORE;IGNORE;IGNORE;<U230B>
+<U2310> IGNORE;IGNORE;IGNORE;<U2310>
+<U2312> IGNORE;IGNORE;IGNORE;<U2312>
+<U2315> IGNORE;IGNORE;IGNORE;<U2315>
+<U2320> IGNORE;IGNORE;IGNORE;<U2320>
+<U2321> IGNORE;IGNORE;IGNORE;<U2321>
+<U2423> IGNORE;IGNORE;IGNORE;<U2423>
+<U2440> IGNORE;IGNORE;IGNORE;<U2440>
+<U2441> IGNORE;IGNORE;IGNORE;<U2441>
+<U2442> IGNORE;IGNORE;IGNORE;<U2442>
+<U2443> IGNORE;IGNORE;IGNORE;<U2443>
+<U2446> IGNORE;IGNORE;IGNORE;<U2446>
+<U2447> IGNORE;IGNORE;IGNORE;<U2447>
+<U2448> IGNORE;IGNORE;IGNORE;<U2448>
+<U2449> IGNORE;IGNORE;IGNORE;<U2449>
+<U2460> IGNORE;IGNORE;IGNORE;<U2460>
+<U2461> IGNORE;IGNORE;IGNORE;<U2461>
+<U2462> IGNORE;IGNORE;IGNORE;<U2462>
+<U2463> IGNORE;IGNORE;IGNORE;<U2463>
+<U2464> IGNORE;IGNORE;IGNORE;<U2464>
+<U2465> IGNORE;IGNORE;IGNORE;<U2465>
+<U2466> IGNORE;IGNORE;IGNORE;<U2466>
+<U2467> IGNORE;IGNORE;IGNORE;<U2467>
+<U2468> IGNORE;IGNORE;IGNORE;<U2468>
+<U2469> IGNORE;IGNORE;IGNORE;<U2469>
+<U246A> IGNORE;IGNORE;IGNORE;<U246A>
+<U246B> IGNORE;IGNORE;IGNORE;<U246B>
+<U246C> IGNORE;IGNORE;IGNORE;<U246C>
+<U246D> IGNORE;IGNORE;IGNORE;<U246D>
+<U246E> IGNORE;IGNORE;IGNORE;<U246E>
+<U246F> IGNORE;IGNORE;IGNORE;<U246F>
+<U2470> IGNORE;IGNORE;IGNORE;<U2470>
+<U2471> IGNORE;IGNORE;IGNORE;<U2471>
+<U2472> IGNORE;IGNORE;IGNORE;<U2472>
+<U2473> IGNORE;IGNORE;IGNORE;<U2473>
+<U2474> IGNORE;IGNORE;IGNORE;<U2474>
+<U2475> IGNORE;IGNORE;IGNORE;<U2475>
+<U2476> IGNORE;IGNORE;IGNORE;<U2476>
+<U2477> IGNORE;IGNORE;IGNORE;<U2477>
+<U2478> IGNORE;IGNORE;IGNORE;<U2478>
+<U2479> IGNORE;IGNORE;IGNORE;<U2479>
+<U247A> IGNORE;IGNORE;IGNORE;<U247A>
+<U247B> IGNORE;IGNORE;IGNORE;<U247B>
+<U247C> IGNORE;IGNORE;IGNORE;<U247C>
+<U247D> IGNORE;IGNORE;IGNORE;<U247D>
+<U247E> IGNORE;IGNORE;IGNORE;<U247E>
+<U247F> IGNORE;IGNORE;IGNORE;<U247F>
+<U2480> IGNORE;IGNORE;IGNORE;<U2480>
+<U2481> IGNORE;IGNORE;IGNORE;<U2481>
+<U2482> IGNORE;IGNORE;IGNORE;<U2482>
+<U2483> IGNORE;IGNORE;IGNORE;<U2483>
+<U2484> IGNORE;IGNORE;IGNORE;<U2484>
+<U2485> IGNORE;IGNORE;IGNORE;<U2485>
+<U2486> IGNORE;IGNORE;IGNORE;<U2486>
+<U2487> IGNORE;IGNORE;IGNORE;<U2487>
+<U2488> IGNORE;IGNORE;IGNORE;<U2488>
+<U2489> IGNORE;IGNORE;IGNORE;<U2489>
+<U248A> IGNORE;IGNORE;IGNORE;<U248A>
+<U248B> IGNORE;IGNORE;IGNORE;<U248B>
+<U248C> IGNORE;IGNORE;IGNORE;<U248C>
+<U248D> IGNORE;IGNORE;IGNORE;<U248D>
+<U248E> IGNORE;IGNORE;IGNORE;<U248E>
+<U248F> IGNORE;IGNORE;IGNORE;<U248F>
+<U2490> IGNORE;IGNORE;IGNORE;<U2490>
+<U2491> IGNORE;IGNORE;IGNORE;<U2491>
+<U2492> IGNORE;IGNORE;IGNORE;<U2492>
+<U2493> IGNORE;IGNORE;IGNORE;<U2493>
+<U2494> IGNORE;IGNORE;IGNORE;<U2494>
+<U2495> IGNORE;IGNORE;IGNORE;<U2495>
+<U2496> IGNORE;IGNORE;IGNORE;<U2496>
+<U2497> IGNORE;IGNORE;IGNORE;<U2497>
+<U2498> IGNORE;IGNORE;IGNORE;<U2498>
+<U2499> IGNORE;IGNORE;IGNORE;<U2499>
+<U249A> IGNORE;IGNORE;IGNORE;<U249A>
+<U249B> IGNORE;IGNORE;IGNORE;<U249B>
+<U24EA> IGNORE;IGNORE;IGNORE;<U24EA>
+<U2500> IGNORE;IGNORE;IGNORE;<U2500>
+<U2550> IGNORE;IGNORE;IGNORE;<U2550>
+<U2502> IGNORE;IGNORE;IGNORE;<U2502>
+<U2551> IGNORE;IGNORE;IGNORE;<U2551>
+<U2504> IGNORE;IGNORE;IGNORE;<U2504>
+<U2505> IGNORE;IGNORE;IGNORE;<U2505>
+<U2506> IGNORE;IGNORE;IGNORE;<U2506>
+<U2507> IGNORE;IGNORE;IGNORE;<U2507>
+<U2508> IGNORE;IGNORE;IGNORE;<U2508>
+<U2509> IGNORE;IGNORE;IGNORE;<U2509>
+<U250A> IGNORE;IGNORE;IGNORE;<U250A>
+<U250B> IGNORE;IGNORE;IGNORE;<U250B>
+<U250C> IGNORE;IGNORE;IGNORE;<U250C>
+<U2552> IGNORE;IGNORE;IGNORE;<U2552>
+<U2553> IGNORE;IGNORE;IGNORE;<U2553>
+<U2554> IGNORE;IGNORE;IGNORE;<U2554>
+<U2510> IGNORE;IGNORE;IGNORE;<U2510>
+<U2555> IGNORE;IGNORE;IGNORE;<U2555>
+<U2556> IGNORE;IGNORE;IGNORE;<U2556>
+<U2557> IGNORE;IGNORE;IGNORE;<U2557>
+<U2514> IGNORE;IGNORE;IGNORE;<U2514>
+<U2558> IGNORE;IGNORE;IGNORE;<U2558>
+<U2559> IGNORE;IGNORE;IGNORE;<U2559>
+<U255A> IGNORE;IGNORE;IGNORE;<U255A>
+<U2518> IGNORE;IGNORE;IGNORE;<U2518>
+<U255B> IGNORE;IGNORE;IGNORE;<U255B>
+<U255C> IGNORE;IGNORE;IGNORE;<U255C>
+<U255D> IGNORE;IGNORE;IGNORE;<U255D>
+<U251C> IGNORE;IGNORE;IGNORE;<U251C>
+<U255E> IGNORE;IGNORE;IGNORE;<U255E>
+<U251E> IGNORE;IGNORE;IGNORE;<U251E>
+<U251F> IGNORE;IGNORE;IGNORE;<U251F>
+<U255F> IGNORE;IGNORE;IGNORE;<U255F>
+<U2521> IGNORE;IGNORE;IGNORE;<U2521>
+<U2522> IGNORE;IGNORE;IGNORE;<U2522>
+<U2560> IGNORE;IGNORE;IGNORE;<U2560>
+<U2524> IGNORE;IGNORE;IGNORE;<U2524>
+<U2561> IGNORE;IGNORE;IGNORE;<U2561>
+<U2526> IGNORE;IGNORE;IGNORE;<U2526>
+<U2527> IGNORE;IGNORE;IGNORE;<U2527>
+<U2562> IGNORE;IGNORE;IGNORE;<U2562>
+<U2529> IGNORE;IGNORE;IGNORE;<U2529>
+<U252A> IGNORE;IGNORE;IGNORE;<U252A>
+<U2563> IGNORE;IGNORE;IGNORE;<U2563>
+<U252C> IGNORE;IGNORE;IGNORE;<U252C>
+<U252D> IGNORE;IGNORE;IGNORE;<U252D>
+<U252E> IGNORE;IGNORE;IGNORE;<U252E>
+<U2564> IGNORE;IGNORE;IGNORE;<U2564>
+<U2565> IGNORE;IGNORE;IGNORE;<U2565>
+<U2531> IGNORE;IGNORE;IGNORE;<U2531>
+<U2532> IGNORE;IGNORE;IGNORE;<U2532>
+<U2566> IGNORE;IGNORE;IGNORE;<U2566>
+<U2534> IGNORE;IGNORE;IGNORE;<U2534>
+<U2535> IGNORE;IGNORE;IGNORE;<U2535>
+<U2536> IGNORE;IGNORE;IGNORE;<U2536>
+<U2567> IGNORE;IGNORE;IGNORE;<U2567>
+<U2568> IGNORE;IGNORE;IGNORE;<U2568>
+<U2539> IGNORE;IGNORE;IGNORE;<U2539>
+<U253A> IGNORE;IGNORE;IGNORE;<U253A>
+<U2569> IGNORE;IGNORE;IGNORE;<U2569>
+<U253C> IGNORE;IGNORE;IGNORE;<U253C>
+<U253D> IGNORE;IGNORE;IGNORE;<U253D>
+<U253E> IGNORE;IGNORE;IGNORE;<U253E>
+<U256A> IGNORE;IGNORE;IGNORE;<U256A>
+<U2540> IGNORE;IGNORE;IGNORE;<U2540>
+<U2541> IGNORE;IGNORE;IGNORE;<U2541>
+<U256B> IGNORE;IGNORE;IGNORE;<U256B>
+<U2543> IGNORE;IGNORE;IGNORE;<U2543>
+<U2544> IGNORE;IGNORE;IGNORE;<U2544>
+<U2545> IGNORE;IGNORE;IGNORE;<U2545>
+<U2546> IGNORE;IGNORE;IGNORE;<U2546>
+<U2547> IGNORE;IGNORE;IGNORE;<U2547>
+<U2548> IGNORE;IGNORE;IGNORE;<U2548>
+<U2549> IGNORE;IGNORE;IGNORE;<U2549>
+<U254A> IGNORE;IGNORE;IGNORE;<U254A>
+<U256C> IGNORE;IGNORE;IGNORE;<U256C>
+<U2571> IGNORE;IGNORE;IGNORE;<U2571>
+<U2572> IGNORE;IGNORE;IGNORE;<U2572>
+<U2580> IGNORE;IGNORE;IGNORE;<U2580>
+<U2584> IGNORE;IGNORE;IGNORE;<U2584>
+<U2588> IGNORE;IGNORE;IGNORE;<U2588>
+<U258C> IGNORE;IGNORE;IGNORE;<U258C>
+<U2590> IGNORE;IGNORE;IGNORE;<U2590>
+<U2591> IGNORE;IGNORE;IGNORE;<U2591>
+<U2592> IGNORE;IGNORE;IGNORE;<U2592>
+<U2593> IGNORE;IGNORE;IGNORE;<U2593>
+<U25A0> IGNORE;IGNORE;IGNORE;<U25A0>
+<U25A1> IGNORE;IGNORE;IGNORE;<U25A1>
+<U25A2> IGNORE;IGNORE;IGNORE;<U25A2>
+<U25A3> IGNORE;IGNORE;IGNORE;<U25A3>
+<U25A4> IGNORE;IGNORE;IGNORE;<U25A4>
+<U25A5> IGNORE;IGNORE;IGNORE;<U25A5>
+<U25A6> IGNORE;IGNORE;IGNORE;<U25A6>
+<U25A7> IGNORE;IGNORE;IGNORE;<U25A7>
+<U25A8> IGNORE;IGNORE;IGNORE;<U25A8>
+<U25A9> IGNORE;IGNORE;IGNORE;<U25A9>
+<U25AA> IGNORE;IGNORE;IGNORE;<U25AA>
+<U25AC> IGNORE;IGNORE;IGNORE;<U25AC>
+<U25AD> IGNORE;IGNORE;IGNORE;<U25AD>
+<U25B2> IGNORE;IGNORE;IGNORE;<U25B2>
+<U25B3> IGNORE;IGNORE;IGNORE;<U25B3>
+<U25B7> IGNORE;IGNORE;IGNORE;<U25B7>
+<U25BA> IGNORE;IGNORE;IGNORE;<U25BA>
+<U25BC> IGNORE;IGNORE;IGNORE;<U25BC>
+<U25BD> IGNORE;IGNORE;IGNORE;<U25BD>
+<U25C1> IGNORE;IGNORE;IGNORE;<U25C1>
+<U25C4> IGNORE;IGNORE;IGNORE;<U25C4>
+<U25C6> IGNORE;IGNORE;IGNORE;<U25C6>
+<U25C7> IGNORE;IGNORE;IGNORE;<U25C7>
+<U25CA> IGNORE;IGNORE;IGNORE;<U25CA>
+<U25CB> IGNORE;IGNORE;IGNORE;<U25CB>
+<U25CE> IGNORE;IGNORE;IGNORE;<U25CE>
+<U25CF> IGNORE;IGNORE;IGNORE;<U25CF>
+<U25D0> IGNORE;IGNORE;IGNORE;<U25D0>
+<U25D1> IGNORE;IGNORE;IGNORE;<U25D1>
+<U25D8> IGNORE;IGNORE;IGNORE;<U25D8>
+<U25D9> IGNORE;IGNORE;IGNORE;<U25D9>
+<U25E2> IGNORE;IGNORE;IGNORE;<U25E2>
+<U25E3> IGNORE;IGNORE;IGNORE;<U25E3>
+<U25EF> IGNORE;IGNORE;IGNORE;<U25EF>
+<U2605> IGNORE;IGNORE;IGNORE;<U2605>
+<U2606> IGNORE;IGNORE;IGNORE;<U2606>
+<U260E> IGNORE;IGNORE;IGNORE;<U260E>
+<U260F> IGNORE;IGNORE;IGNORE;<U260F>
+<U261C> IGNORE;IGNORE;IGNORE;<U261C>
+<U261E> IGNORE;IGNORE;IGNORE;<U261E>
+<U263A> IGNORE;IGNORE;IGNORE;<U263A>
+<U263B> IGNORE;IGNORE;IGNORE;<U263B>
+<U263C> IGNORE;IGNORE;IGNORE;<U263C>
+<U2640> IGNORE;IGNORE;IGNORE;<U2640>
+<U2642> IGNORE;IGNORE;IGNORE;<U2642>
+<U2660> IGNORE;IGNORE;IGNORE;<U2660>
+<U2661> IGNORE;IGNORE;IGNORE;<U2661>
+<U2662> IGNORE;IGNORE;IGNORE;<U2662>
+<U2663> IGNORE;IGNORE;IGNORE;<U2663>
+<U2664> IGNORE;IGNORE;IGNORE;<U2664>
+<U2665> IGNORE;IGNORE;IGNORE;<U2665>
+<U2666> IGNORE;IGNORE;IGNORE;<U2666>
+<U2667> IGNORE;IGNORE;IGNORE;<U2667>
+<U2669> IGNORE;IGNORE;IGNORE;<U2669>
+<U266A> IGNORE;IGNORE;IGNORE;<U266A>
+<U266B> IGNORE;IGNORE;IGNORE;<U266B>
+<U266C> IGNORE;IGNORE;IGNORE;<U266C>
+<U266D> IGNORE;IGNORE;IGNORE;<U266D>
+<U266E> IGNORE;IGNORE;IGNORE;<U266E>
+<U266F> IGNORE;IGNORE;IGNORE;<U266F>
+<U2713> IGNORE;IGNORE;IGNORE;<U2713>
+<U2717> IGNORE;IGNORE;IGNORE;<U2717>
+<U2720> IGNORE;IGNORE;IGNORE;<U2720>
+<U3000> IGNORE;IGNORE;IGNORE;<U3000>
+<U3001> IGNORE;IGNORE;IGNORE;<U3001>
+<U3002> IGNORE;IGNORE;IGNORE;<U3002>
+<U3003> IGNORE;IGNORE;IGNORE;<U3003>
+<U3004> IGNORE;IGNORE;IGNORE;<U3004>
+<U3005> IGNORE;IGNORE;IGNORE;<U3005>
+<U3006> IGNORE;IGNORE;IGNORE;<U3006>
+<U3007> IGNORE;IGNORE;IGNORE;<U3007>
+<U300A> IGNORE;IGNORE;IGNORE;<U300A>
+<U300B> IGNORE;IGNORE;IGNORE;<U300B>
+<U300C> IGNORE;IGNORE;IGNORE;<U300C>
+<U300D> IGNORE;IGNORE;IGNORE;<U300D>
+<U300E> IGNORE;IGNORE;IGNORE;<U300E>
+<U300F> IGNORE;IGNORE;IGNORE;<U300F>
+<U3010> IGNORE;IGNORE;IGNORE;<U3010>
+<U3011> IGNORE;IGNORE;IGNORE;<U3011>
+<U3012> IGNORE;IGNORE;IGNORE;<U3012>
+<U3013> IGNORE;IGNORE;IGNORE;<U3013>
+<U3014> IGNORE;IGNORE;IGNORE;<U3014>
+<U3015> IGNORE;IGNORE;IGNORE;<U3015>
+<U3016> IGNORE;IGNORE;IGNORE;<U3016>
+<U3017> IGNORE;IGNORE;IGNORE;<U3017>
+<U301C> IGNORE;IGNORE;IGNORE;<U301C>
+<U3020> IGNORE;IGNORE;IGNORE;<U3020>
+<U309B> IGNORE;IGNORE;IGNORE;<U309B>
+<U309C> IGNORE;IGNORE;IGNORE;<U309C>
+<U309D> IGNORE;IGNORE;IGNORE;<U309D>
+<U309E> IGNORE;IGNORE;IGNORE;<U309E>
+<U30FB> IGNORE;IGNORE;IGNORE;<U30FB>
+<U30FC> IGNORE;IGNORE;IGNORE;<U30FC>
+<U30FD> IGNORE;IGNORE;IGNORE;<U30FD>
+<U30FE> IGNORE;IGNORE;IGNORE;<U30FE>
+<U321C> IGNORE;IGNORE;IGNORE;<U321C>
+<U3220> IGNORE;IGNORE;IGNORE;<U3220>
+<U3221> IGNORE;IGNORE;IGNORE;<U3221>
+<U3222> IGNORE;IGNORE;IGNORE;<U3222>
+<U3223> IGNORE;IGNORE;IGNORE;<U3223>
+<U3224> IGNORE;IGNORE;IGNORE;<U3224>
+<U3225> IGNORE;IGNORE;IGNORE;<U3225>
+<U3226> IGNORE;IGNORE;IGNORE;<U3226>
+<U3227> IGNORE;IGNORE;IGNORE;<U3227>
+<U3228> IGNORE;IGNORE;IGNORE;<U3228>
+<U3229> IGNORE;IGNORE;IGNORE;<U3229>
+<U327F> IGNORE;IGNORE;IGNORE;<U327F>
+<U33C2> IGNORE;IGNORE;IGNORE;<U33C2>
+<U33D8> IGNORE;IGNORE;IGNORE;<U33D8>
+<U0000> IGNORE;IGNORE;IGNORE;<U0000>
+<U0001> IGNORE;IGNORE;IGNORE;<U0001>
+<U0002> IGNORE;IGNORE;IGNORE;<U0002>
+<U0003> IGNORE;IGNORE;IGNORE;<U0003>
+<U0004> IGNORE;IGNORE;IGNORE;<U0004>
+<U0005> IGNORE;IGNORE;IGNORE;<U0005>
+<U0006> IGNORE;IGNORE;IGNORE;<U0006>
+<U0007> IGNORE;IGNORE;IGNORE;<U0007>
+<U0008> IGNORE;IGNORE;IGNORE;<U0008>
+<U000E> IGNORE;IGNORE;IGNORE;<U000E>
+<U000F> IGNORE;IGNORE;IGNORE;<U000F>
+<U0010> IGNORE;IGNORE;IGNORE;<U0010>
+<U0011> IGNORE;IGNORE;IGNORE;<U0011>
+<U0012> IGNORE;IGNORE;IGNORE;<U0012>
+<U0013> IGNORE;IGNORE;IGNORE;<U0013>
+<U0014> IGNORE;IGNORE;IGNORE;<U0014>
+<U0015> IGNORE;IGNORE;IGNORE;<U0015>
+<U0016> IGNORE;IGNORE;IGNORE;<U0016>
+<U0017> IGNORE;IGNORE;IGNORE;<U0017>
+<U0018> IGNORE;IGNORE;IGNORE;<U0018>
+<U0019> IGNORE;IGNORE;IGNORE;<U0019>
+<U001A> IGNORE;IGNORE;IGNORE;<U001A>
+<U001B> IGNORE;IGNORE;IGNORE;<U001B>
+<U001C> IGNORE;IGNORE;IGNORE;<U001C>
+<U001D> IGNORE;IGNORE;IGNORE;<U001D>
+<U001E> IGNORE;IGNORE;IGNORE;<U001E>
+<U001F> IGNORE;IGNORE;IGNORE;<U001F>
+<U007F> IGNORE;IGNORE;IGNORE;<U007F>
+<U0080> IGNORE;IGNORE;IGNORE;<U0080>
+<U0081> IGNORE;IGNORE;IGNORE;<U0081>
+<U0082> IGNORE;IGNORE;IGNORE;<U0082>
+<U0083> IGNORE;IGNORE;IGNORE;<U0083>
+<U0084> IGNORE;IGNORE;IGNORE;<U0084>
+<U0085> IGNORE;IGNORE;IGNORE;<U0085>
+<U0086> IGNORE;IGNORE;IGNORE;<U0086>
+<U0087> IGNORE;IGNORE;IGNORE;<U0087>
+<U0088> IGNORE;IGNORE;IGNORE;<U0088>
+<U0089> IGNORE;IGNORE;IGNORE;<U0089>
+<U008A> IGNORE;IGNORE;IGNORE;<U008A>
+<U008B> IGNORE;IGNORE;IGNORE;<U008B>
+<U008C> IGNORE;IGNORE;IGNORE;<U008C>
+<U008D> IGNORE;IGNORE;IGNORE;<U008D>
+<U008E> IGNORE;IGNORE;IGNORE;<U008E>
+<U008F> IGNORE;IGNORE;IGNORE;<U008F>
+<U0090> IGNORE;IGNORE;IGNORE;<U0090>
+<U0091> IGNORE;IGNORE;IGNORE;<U0091>
+<U0092> IGNORE;IGNORE;IGNORE;<U0092>
+<U0093> IGNORE;IGNORE;IGNORE;<U0093>
+<U0094> IGNORE;IGNORE;IGNORE;<U0094>
+<U0095> IGNORE;IGNORE;IGNORE;<U0095>
+<U0096> IGNORE;IGNORE;IGNORE;<U0096>
+<U0097> IGNORE;IGNORE;IGNORE;<U0097>
+<U0098> IGNORE;IGNORE;IGNORE;<U0098>
+<U0099> IGNORE;IGNORE;IGNORE;<U0099>
+<U009A> IGNORE;IGNORE;IGNORE;<U009A>
+<U009B> IGNORE;IGNORE;IGNORE;<U009B>
+<U009C> IGNORE;IGNORE;IGNORE;<U009C>
+<U009D> IGNORE;IGNORE;IGNORE;<U009D>
+<U009E> IGNORE;IGNORE;IGNORE;<U009E>
+<U009F> IGNORE;IGNORE;IGNORE;<U009F>
+<UE000> IGNORE;IGNORE;IGNORE;<UE000>
+<UE001> IGNORE;IGNORE;IGNORE;<UE001>
+<UE002> IGNORE;IGNORE;IGNORE;<UE002>
+<U0301> IGNORE;IGNORE;IGNORE;<U0301>
+<UE004> IGNORE;IGNORE;IGNORE;<UE004>
+<UE005> IGNORE;IGNORE;IGNORE;<UE005>
+<UE006> IGNORE;IGNORE;IGNORE;<UE006>
+<UE007> IGNORE;IGNORE;IGNORE;<UE007>
+<UE008> IGNORE;IGNORE;IGNORE;<UE008>
+<UE009> IGNORE;IGNORE;IGNORE;<UE009>
+<UE00A> IGNORE;IGNORE;IGNORE;<UE00A>
+<UE00B> IGNORE;IGNORE;IGNORE;<UE00B>
+<UE00C> IGNORE;IGNORE;IGNORE;<UE00C>
+<UE00D> IGNORE;IGNORE;IGNORE;<UE00D>
+<UE00E> IGNORE;IGNORE;IGNORE;<UE00E>
+<UE00F> IGNORE;IGNORE;IGNORE;<UE00F>
+<"=> IGNORE;IGNORE;IGNORE;<"=>
+<UE011> IGNORE;IGNORE;IGNORE;<UE011>
+<UE012> IGNORE;IGNORE;IGNORE;<UE012>
+<UE013> IGNORE;IGNORE;IGNORE;<UE013>
+<UE014> IGNORE;IGNORE;IGNORE;<UE014>
+<UE015> IGNORE;IGNORE;IGNORE;<UE015>
+<UE017> IGNORE;IGNORE;IGNORE;<UE017>
+<UE018> IGNORE;IGNORE;IGNORE;<UE018>
+<UE019> IGNORE;IGNORE;IGNORE;<UE019>
+UNDEFINED IGNORE;IGNORE;IGNORE
+
+<U0030> <U0030>;<U0030>;IGNORE;IGNORE
+<U2070> <U0030>;<U2070>;IGNORE;IGNORE
+<U215B> <U0030>;<U215B>;IGNORE;IGNORE
+<U00BC> <U0030>;<U00BC>;IGNORE;IGNORE
+<U215C> <U0030>;<U215C>;IGNORE;IGNORE
+<U00BD> <U0030>;<U00BD>;IGNORE;IGNORE
+<U215D> <U0030>;<U215D>;IGNORE;IGNORE
+<U00BE> <U0030>;<U00BE>;IGNORE;IGNORE
+<U215E> <U0030>;<U215E>;IGNORE;IGNORE
+<U0031> <U0031>;<U0031>;IGNORE;IGNORE
+<U0032> <U0032>;<U0032>;IGNORE;IGNORE
+<U0033> <U0033>;<U0033>;IGNORE;IGNORE
+<U0034> <U0034>;<U0034>;IGNORE;IGNORE
+<U0035> <U0035>;<U0035>;IGNORE;IGNORE
+<U0036> <U0036>;<U0036>;IGNORE;IGNORE
+<U0037> <U0037>;<U0037>;IGNORE;IGNORE
+<U0038> <U0038>;<U0038>;IGNORE;IGNORE
+<U0039> <U0039>;<U0039>;IGNORE;IGNORE
+<U00B9> <U0031>;<U00B9>;IGNORE;IGNORE
+<U00B2> <U0032>;<U00B2>;IGNORE;IGNORE
+<U00B3> <U0033>;<U00B3>;IGNORE;IGNORE
+<U2074> <U0034>;<U2074>;IGNORE;IGNORE
+<U2075> <U0035>;<U2075>;IGNORE;IGNORE
+<U2076> <U0036>;<U2076>;IGNORE;IGNORE
+<U2077> <U0037>;<U2077>;IGNORE;IGNORE
+<U2078> <U0038>;<U2078>;IGNORE;IGNORE
+<U2079> <U0039>;<U2079>;IGNORE;IGNORE
+<U0041> <U0041>;<NONE>;<CAPITAL>;IGNORE
+<U0061> <U0041>;<NONE>;<SMALL>;IGNORE
+<U00AA> <U0041>;<NONE>;<U00AA>;IGNORE
+<U00C1> <U0041>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E1> <U0041>;<ACUTE>;<SMALL>;IGNORE
+<U00C0> <U0041>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E0> <U0041>;<GRAVE>;<SMALL>;IGNORE
+<U0200> <U0041>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0201> <U0041>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0102> <U0041>;<BREVE>;<CAPITAL>;IGNORE
+<U0103> <U0041>;<BREVE>;<SMALL>;IGNORE
+<U1EAE> <U0041>;<BREVE+ACUTE>;<CAPITAL>;IGNORE
+<U1EAF> <U0041>;<BREVE+ACUTE>;<SMALL>;IGNORE
+<U1EB0> <U0041>;<BREVE+GRAVE>;<CAPITAL>;IGNORE
+<U1EB1> <U0041>;<BREVE+GRAVE>;<SMALL>;IGNORE
+<U1EB2> <U0041>;<BREVE+HOOK>;<CAPITAL>;IGNORE
+<U1EB3> <U0041>;<BREVE+HOOK>;<SMALL>;IGNORE
+<U1EB4> <U0041>;<BREVE+TILDE>;<CAPITAL>;IGNORE
+<U1EB5> <U0041>;<BREVE+TILDE>;<SMALL>;IGNORE
+<U1EB6> <U0041>;<BREVE+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB7> <U0041>;<BREVE+DOT-BELOW>;<SMALL>;IGNORE
+<U0202> <U0041>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0203> <U0041>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00C2> <U0041>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00E2> <U0041>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EA4> <U0041>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EA5> <U0041>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EA6> <U0041>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EA7> <U0041>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EA8> <U0041>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EA9> <U0041>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EAA> <U0041>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EAB> <U0041>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EAC> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EAD> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01CD> <U0041>;<CARON>;<CAPITAL>;IGNORE
+<U01CE> <U0041>;<CARON>;<SMALL>;IGNORE
+<U00C5> <U0041>;<RING>;<CAPITAL>;IGNORE
+<U00E5> <U0041>;<RING>;<SMALL>;IGNORE
+<U01FA> <U0041>;<RING+ACUTE>;<CAPITAL>;IGNORE
+<U01FB> <U0041>;<RING+ACUTE>;<SMALL>;IGNORE
+<U1E00> <U0041>;<RING-BELOW>;<CAPITAL>;IGNORE
+<U1E01> <U0041>;<RING-BELOW>;<SMALL>;IGNORE
+<U00C4> <U0041>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00E4> <U0041>;<DIAERESIS>;<SMALL>;IGNORE
+<U01DE> <U0041>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01DF> <U0041>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U1EA2> <U0041>;<HOOK>;<CAPITAL>;IGNORE
+<U1EA3> <U0041>;<HOOK>;<SMALL>;IGNORE
+<U00C3> <U0041>;<TILDE>;<CAPITAL>;IGNORE
+<U00E3> <U0041>;<TILDE>;<SMALL>;IGNORE
+<U1EA0> <U0041>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EA1> <U0041>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0104> <U0041>;<OGONEK>;<CAPITAL>;IGNORE
+<U0105> <U0041>;<OGONEK>;<SMALL>;IGNORE
+<U0100> <U0041>;<MACRON>;<CAPITAL>;IGNORE
+<U0101> <U0041>;<MACRON>;<SMALL>;IGNORE
+<U01E0> <U0041>;<MACRON+DOT>;<CAPITAL>;IGNORE
+<U01E1> <U0041>;<MACRON+DOT>;<SMALL>;IGNORE
+<a8>
+<U00C6> "<U0041><U0045>";"<U00C6><U00C6>";"<CAPITAL><CAPITAL>";IGNORE
+<U00E6> "<U0041><U0045>";"<U00C6><U00C6>";"<SMALL><SMALL>";IGNORE
+<U01FC> "<U0041><U0045>";"<U01FC><U01FC>";"<CAPITAL><CAPITAL>";IGNORE
+<U01FD> "<U0041><U0045>";"<U01FC><U01FC>";"<SMALL><SMALL>";IGNORE
+<U01E2> "<U0041><U0045>";"<U01E2><U01E2>";"<CAPITAL><CAPITAL>";IGNORE
+<U01E3> "<U0041><U0045>";"<U01E2><U01E2>";"<SMALL><SMALL>";IGNORE
+<U0042> <U0042>;<NONE>;<CAPITAL>;IGNORE
+<U0062> <U0042>;<NONE>;<SMALL>;IGNORE
+<U1E02> <U0042>;<DOT>;<CAPITAL>;IGNORE
+<U1E03> <U0042>;<DOT>;<SMALL>;IGNORE
+<U1E04> <U0042>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E05> <U0042>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E06> <U0042>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E07> <U0042>;<LINE-BELOW>;<SMALL>;IGNORE
+<b8>
+<U0043> <U0043>;<NONE>;<CAPITAL>;IGNORE
+<U0063> <U0043>;<NONE>;<SMALL>;IGNORE
+<U0106> <U0043>;<ACUTE>;<CAPITAL>;IGNORE
+<U0107> <U0043>;<ACUTE>;<SMALL>;IGNORE
+<U0108> <U0043>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0109> <U0043>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U010C> <U0043>;<CARON>;<CAPITAL>;IGNORE
+<U010D> <U0043>;<CARON>;<SMALL>;IGNORE
+<U0187> <U0043>;<HOOK>;<CAPITAL>;IGNORE
+<U0188> <U0043>;<HOOK>;<SMALL>;IGNORE
+<U010A> <U0043>;<DOT>;<CAPITAL>;IGNORE
+<U010B> <U0043>;<DOT>;<SMALL>;IGNORE
+<U00C7> <U0043>;<CEDILLA>;<CAPITAL>;IGNORE
+<U00E7> <U0043>;<CEDILLA>;<SMALL>;IGNORE
+<U1E08> <U0043>;<CEDILLA+ACUTE>;<CAPITAL>;IGNORE
+<U1E09> <U0043>;<CEDILLA+ACUTE>;<SMALL>;IGNORE
+<c8>
+<U0044> <U0044>;<NONE>;<CAPITAL>;IGNORE
+<U0064> <U0044>;<NONE>;<SMALL>;IGNORE
+<U010E> <U0044>;<CARON>;<CAPITAL>;IGNORE
+<U010F> <U0044>;<CARON>;<SMALL>;IGNORE
+<U1E0A> <U0044>;<DOT>;<CAPITAL>;IGNORE
+<U1E0B> <U0044>;<DOT>;<SMALL>;IGNORE
+<U1E0C> <U0044>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E0D> <U0044>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0110> <U0044>;<STROKE>;<CAPITAL>;IGNORE
+<U0111> <U0044>;<STROKE>;<SMALL>;IGNORE
+<U1E10> <U0044>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E11> <U0044>;<CEDILLA>;<SMALL>;IGNORE
+<U1E12> <U0044>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E13> <U0044>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E0E> <U0044>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E0F> <U0044>;<LINE-BELOW>;<SMALL>;IGNORE
+<d8>
+<U0045> <U0045>;<NONE>;<CAPITAL>;IGNORE
+<U0065> <U0045>;<NONE>;<SMALL>;IGNORE
+<U00C9> <U0045>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E9> <U0045>;<ACUTE>;<SMALL>;IGNORE
+<U00C8> <U0045>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E8> <U0045>;<GRAVE>;<SMALL>;IGNORE
+<U0204> <U0045>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0205> <U0045>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0114> <U0045>;<BREVE>;<CAPITAL>;IGNORE
+<U0115> <U0045>;<BREVE>;<SMALL>;IGNORE
+<U0206> <U0045>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0207> <U0045>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CA> <U0045>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EA> <U0045>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EBE> <U0045>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EBF> <U0045>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EC0> <U0045>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EC1> <U0045>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EC2> <U0045>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EC3> <U0045>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EC4> <U0045>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EC5> <U0045>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EC6> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EC7> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U011A> <U0045>;<CARON>;<CAPITAL>;IGNORE
+<U011B> <U0045>;<CARON>;<SMALL>;IGNORE
+<U00CB> <U0045>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EB> <U0045>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EBA> <U0045>;<HOOK>;<CAPITAL>;IGNORE
+<U1EBB> <U0045>;<HOOK>;<SMALL>;IGNORE
+<U1EBC> <U0045>;<TILDE>;<CAPITAL>;IGNORE
+<U1EBD> <U0045>;<TILDE>;<SMALL>;IGNORE
+<U1E1A> <U0045>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E1B> <U0045>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0116> <U0045>;<DOT>;<CAPITAL>;IGNORE
+<U0117> <U0045>;<DOT>;<SMALL>;IGNORE
+<U1EB8> <U0045>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB9> <U0045>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E1C> <U0045>;<CEDILLA+BREVE>;<CAPITAL>;IGNORE
+<U1E1D> <U0045>;<CEDILLA+BREVE>;<SMALL>;IGNORE
+<U0118> <U0045>;<OGONEK>;<CAPITAL>;IGNORE
+<U0119> <U0045>;<OGONEK>;<SMALL>;IGNORE
+<U0112> <U0045>;<MACRON>;<CAPITAL>;IGNORE
+<U0113> <U0045>;<MACRON>;<SMALL>;IGNORE
+<U1E16> <U0045>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E17> <U0045>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E14> <U0045>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E15> <U0045>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U1E18> <U0045>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E19> <U0045>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<e8>
+<U0046> <U0046>;<NONE>;<CAPITAL>;IGNORE
+<U0066> <U0046>;<NONE>;<SMALL>;IGNORE
+<U0191> <U0046>;<HOOK>;<CAPITAL>;IGNORE
+<U0192> <U0046>;<HOOK>;<SMALL>;IGNORE
+<U1E1E> <U0046>;<DOT>;<CAPITAL>;IGNORE
+<U1E1F> <U0046>;<DOT>;<SMALL>;IGNORE
+<f8>
+<UFB00> "<U0046><U0046>";"<NONE><NONE>";"<UFB00><UFB00>";IGNORE
+<UFB01> "<U0046><U0049>";"<NONE><NONE>";"<UFB01><UFB01>";IGNORE
+<UFB02> "<U0046><U004C>";"<NONE><NONE>";"<UFB02><UFB02>";IGNORE
+<UFB03> "<U0046><U0046><U0049>";"<NONE><NONE><NONE>";"<UFB03><UFB03><UFB03>";IGNORE
+<UFB04> "<U0046><U0046><U004C>";"<NONE><NONE><NONE>";"<UFB04><UFB04><UFB04>";IGNORE
+<U0047> <U0047>;<NONE>;<CAPITAL>;IGNORE
+<U0067> <U0047>;<NONE>;<SMALL>;IGNORE
+<U01F4> <U0047>;<ACUTE>;<CAPITAL>;IGNORE
+<U01F5> <U0047>;<ACUTE>;<SMALL>;IGNORE
+<U011E> <U0047>;<BREVE>;<CAPITAL>;IGNORE
+<U011F> <U0047>;<BREVE>;<SMALL>;IGNORE
+<U011C> <U0047>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U011D> <U0047>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01E6> <U0047>;<CARON>;<CAPITAL>;IGNORE
+<U01E7> <U0047>;<CARON>;<SMALL>;IGNORE
+<U0120> <U0047>;<DOT>;<CAPITAL>;IGNORE
+<U0121> <U0047>;<DOT>;<SMALL>;IGNORE
+<U01E4> <U0047>;<STROKE>;<CAPITAL>;IGNORE
+<U01E5> <U0047>;<STROKE>;<SMALL>;IGNORE
+<U0122> <U0047>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0123> <U0047>;<CEDILLA>;<SMALL>;IGNORE
+<U1E20> <U0047>;<MACRON>;<CAPITAL>;IGNORE
+<U1E21> <U0047>;<MACRON>;<SMALL>;IGNORE
+<g8>
+<U0048> <U0048>;<NONE>;<CAPITAL>;IGNORE
+<U0068> <U0048>;<NONE>;<SMALL>;IGNORE
+<U1E2A> <U0048>;<BREVE-BELOW>;<CAPITAL>;IGNORE
+<U1E2B> <U0048>;<BREVE-BELOW>;<SMALL>;IGNORE
+<U0124> <U0048>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0125> <U0048>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E26> <U0048>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E27> <U0048>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E22> <U0048>;<DOT>;<CAPITAL>;IGNORE
+<U1E23> <U0048>;<DOT>;<SMALL>;IGNORE
+<U1E24> <U0048>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E25> <U0048>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0126> <U0048>;<STROKE>;<CAPITAL>;IGNORE
+<U0127> <U0048>;<STROKE>;<SMALL>;IGNORE
+<U1E28> <U0048>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E29> <U0048>;<CEDILLA>;<SMALL>;IGNORE
+<h8>
+<U0049> <U0049>;<NONE>;<CAPITAL>;IGNORE
+<U0069> <U0049>;<NONE>;<SMALL>;IGNORE
+<U00CD> <U0049>;<ACUTE>;<CAPITAL>;IGNORE
+<U00ED> <U0049>;<ACUTE>;<SMALL>;IGNORE
+<U00CC> <U0049>;<GRAVE>;<CAPITAL>;IGNORE
+<U00EC> <U0049>;<GRAVE>;<SMALL>;IGNORE
+<U0208> <U0049>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0209> <U0049>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U012C> <U0049>;<BREVE>;<CAPITAL>;IGNORE
+<U012D> <U0049>;<BREVE>;<SMALL>;IGNORE
+<U020A> <U0049>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020B> <U0049>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CE> <U0049>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EE> <U0049>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01CF> <U0049>;<CARON>;<CAPITAL>;IGNORE
+<U01D0> <U0049>;<CARON>;<SMALL>;IGNORE
+<U00CF> <U0049>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EF> <U0049>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E2E> <U0049>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U1E2F> <U0049>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U1EC8> <U0049>;<HOOK>;<CAPITAL>;IGNORE
+<U1EC9> <U0049>;<HOOK>;<SMALL>;IGNORE
+<U0128> <U0049>;<TILDE>;<CAPITAL>;IGNORE
+<U0129> <U0049>;<TILDE>;<SMALL>;IGNORE
+<U1E2C> <U0049>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E2D> <U0049>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0130> <U0049>;<DOT>;<CAPITAL>;IGNORE
+<U0131> <U0049>;<DOT>;<SMALL>;IGNORE
+<U1ECA> <U0049>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECB> <U0049>;<DOT-BELOW>;<SMALL>;IGNORE
+<U012E> <U0049>;<OGONEK>;<CAPITAL>;IGNORE
+<U012F> <U0049>;<OGONEK>;<SMALL>;IGNORE
+<U012A> <U0049>;<MACRON>;<CAPITAL>;IGNORE
+<U012B> <U0049>;<MACRON>;<SMALL>;IGNORE
+<i8>
+<U0132> "<U0049><U004A>";"<U0132><U0132>";"<CAPITAL><CAPITAL>";IGNORE
+<U0133> "<U0049><U004A>";"<U0132><U0132>";"<SMALL><SMALL>";IGNORE
+<U004A> <U004A>;<NONE>;<CAPITAL>;IGNORE
+<U006A> <U004A>;<NONE>;<SMALL>;IGNORE
+<U0134> <U004A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0135> <U004A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<j8>
+<U004B> <U004B>;<NONE>;<CAPITAL>;IGNORE
+<U006B> <U004B>;<NONE>;<SMALL>;IGNORE
+<U1E30> <U004B>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E31> <U004B>;<ACUTE>;<SMALL>;IGNORE
+<U01E8> <U004B>;<CARON>;<CAPITAL>;IGNORE
+<U01E9> <U004B>;<CARON>;<SMALL>;IGNORE
+<U0198> <U004B>;<HOOK>;<CAPITAL>;IGNORE
+<U0199> <U004B>;<HOOK>;<SMALL>;IGNORE
+<U1E32> <U004B>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E33> <U004B>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0136> <U004B>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0137> <U004B>;<CEDILLA>;<SMALL>;IGNORE
+<U1E34> <U004B>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E35> <U004B>;<LINE-BELOW>;<SMALL>;IGNORE
+<k8>
+<U0138> <U004B>;<U0138>;<SMALL>;IGNORE
+<U004C> <U004C>;<NONE>;<CAPITAL>;IGNORE
+<U006C> <U004C>;<NONE>;<SMALL>;IGNORE
+<U0139> <U004C>;<ACUTE>;<CAPITAL>;IGNORE
+<U013A> <U004C>;<ACUTE>;<SMALL>;IGNORE
+<U013D> <U004C>;<CARON>;<CAPITAL>;IGNORE
+<U013E> <U004C>;<CARON>;<SMALL>;IGNORE
+<U013F> <U004C>;<DOT>;<CAPITAL>;IGNORE
+<U0140> <U004C>;<DOT>;<SMALL>;IGNORE
+<U1E36> <U004C>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E37> <U004C>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0141> <U004C>;<STROKE>;<CAPITAL>;IGNORE
+<U0142> <U004C>;<STROKE>;<SMALL>;IGNORE
+<U013B> <U004C>;<CEDILLA>;<CAPITAL>;IGNORE
+<U013C> <U004C>;<CEDILLA>;<SMALL>;IGNORE
+<U1E38> <U004C>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E39> <U004C>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E3C> <U004C>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E3D> <U004C>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E3A> <U004C>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E3B> <U004C>;<LINE-BELOW>;<SMALL>;IGNORE
+<l8>
+<U004D> <U004D>;<NONE>;<CAPITAL>;IGNORE
+<U006D> <U004D>;<NONE>;<SMALL>;IGNORE
+<U1E3E> <U004D>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E3F> <U004D>;<ACUTE>;<SMALL>;IGNORE
+<U1E40> <U004D>;<DOT>;<CAPITAL>;IGNORE
+<U1E41> <U004D>;<DOT>;<SMALL>;IGNORE
+<U1E42> <U004D>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E43> <U004D>;<DOT-BELOW>;<SMALL>;IGNORE
+<m8>
+<U004E> <U004E>;<NONE>;<CAPITAL>;IGNORE
+<U006E> <U004E>;<NONE>;<SMALL>;IGNORE
+<U0143> <U004E>;<ACUTE>;<CAPITAL>;IGNORE
+<U0144> <U004E>;<ACUTE>;<SMALL>;IGNORE
+<U0147> <U004E>;<CARON>;<CAPITAL>;IGNORE
+<U0148> <U004E>;<CARON>;<SMALL>;IGNORE
+<U1E44> <U004E>;<DOT>;<CAPITAL>;IGNORE
+<U1E45> <U004E>;<DOT>;<SMALL>;IGNORE
+<U1E46> <U004E>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E47> <U004E>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0145> <U004E>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0146> <U004E>;<CEDILLA>;<SMALL>;IGNORE
+<U1E4A> <U004E>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E4B> <U004E>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E48> <U004E>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E49> <U004E>;<LINE-BELOW>;<SMALL>;IGNORE
+<U0149> <U004E>;<PRECEDED-BY-APOSTROPHE>;<SMALL>;IGNORE
+<n8>
+<U00D1> <U00D1>;<NONE>;<CAPITAL>;IGNORE
+<U00F1> <U00D1>;<NONE>;<SMALL>;IGNORE
+<U014A> "<U004E><U0047>";"<U014A><U014A>";"<CAPITAL><CAPITAL>";IGNORE
+<U014B> "<U004E><U0047>";"<U014A><U014A>";"<SMALL><SMALL>";IGNORE
+<U004F> <U004F>;<NONE>;<CAPITAL>;IGNORE
+<U006F> <U004F>;<NONE>;<SMALL>;IGNORE
+<U00BA> <U004F>;<NONE>;<U00BA>;IGNORE
+<U00D3> <U004F>;<ACUTE>;<CAPITAL>;IGNORE
+<U00F3> <U004F>;<ACUTE>;<SMALL>;IGNORE
+<U00D2> <U004F>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F2> <U004F>;<GRAVE>;<SMALL>;IGNORE
+<U020C> <U004F>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U020D> <U004F>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U014E> <U004F>;<BREVE>;<CAPITAL>;IGNORE
+<U014F> <U004F>;<BREVE>;<SMALL>;IGNORE
+<U020E> <U004F>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020F> <U004F>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00D4> <U004F>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00F4> <U004F>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1ED0> <U004F>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1ED1> <U004F>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1ED2> <U004F>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1ED3> <U004F>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1ED4> <U004F>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1ED5> <U004F>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1ED6> <U004F>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1ED7> <U004F>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1ED8> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ED9> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01D1> <U004F>;<CARON>;<CAPITAL>;IGNORE
+<U01D2> <U004F>;<CARON>;<SMALL>;IGNORE
+<U00D6> <U004F>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00F6> <U004F>;<DIAERESIS>;<SMALL>;IGNORE
+<U0150> <U004F>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0151> <U004F>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1ECE> <U004F>;<HOOK>;<CAPITAL>;IGNORE
+<U1ECF> <U004F>;<HOOK>;<SMALL>;IGNORE
+<U00D5> <U004F>;<TILDE>;<CAPITAL>;IGNORE
+<U00F5> <U004F>;<TILDE>;<SMALL>;IGNORE
+<U1E4C> <U004F>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E4D> <U004F>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E4E> <U004F>;<TILDE+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E4F> <U004F>;<TILDE+DIAERESIS>;<SMALL>;IGNORE
+<U1ECC> <U004F>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECD> <U004F>;<DOT-BELOW>;<SMALL>;IGNORE
+<U00D8> <U004F>;<STROKE>;<CAPITAL>;IGNORE
+<U00F8> <U004F>;<STROKE>;<SMALL>;IGNORE
+<U01FE> <U004F>;<STROKE+ACUTE>;<CAPITAL>;IGNORE
+<U01FF> <U004F>;<STROKE+ACUTE>;<SMALL>;IGNORE
+<U01EA> <U004F>;<OGONEK>;<CAPITAL>;IGNORE
+<U01EB> <U004F>;<OGONEK>;<SMALL>;IGNORE
+<U01EC> <U004F>;<OGONEK+MACRON>;<CAPITAL>;IGNORE
+<U01ED> <U004F>;<OGONEK+MACRON>;<SMALL>;IGNORE
+<U014C> <U004F>;<MACRON>;<CAPITAL>;IGNORE
+<U014D> <U004F>;<MACRON>;<SMALL>;IGNORE
+<U1E52> <U004F>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E53> <U004F>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E50> <U004F>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E51> <U004F>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U01A0> <U004F>;<HORN>;<CAPITAL>;IGNORE
+<U01A1> <U004F>;<HORN>;<SMALL>;IGNORE
+<U1EDA> <U004F>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EDB> <U004F>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EDC> <U004F>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EDD> <U004F>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EDE> <U004F>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EDF> <U004F>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EE0> <U004F>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EE1> <U004F>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EE2> <U004F>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE3> <U004F>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<o8>
+<U0152> "<U004F><U0045>";"<U0152><U0152>";"<CAPITAL><CAPITAL>";IGNORE
+<U0153> "<U004F><U0045>";"<U0152><U0152>";"<SMALL><SMALL>";IGNORE
+<U0050> <U0050>;<NONE>;<CAPITAL>;IGNORE
+<U0070> <U0050>;<NONE>;<SMALL>;IGNORE
+<U1E54> <U0050>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E55> <U0050>;<ACUTE>;<SMALL>;IGNORE
+<U1E56> <U0050>;<DOT>;<CAPITAL>;IGNORE
+<U1E57> <U0050>;<DOT>;<SMALL>;IGNORE
+<p8>
+<U0051> <U0051>;<NONE>;<CAPITAL>;IGNORE
+<U0071> <U0051>;<NONE>;<SMALL>;IGNORE
+<q8>
+<U0052> <U0052>;<NONE>;<CAPITAL>;IGNORE
+<U0072> <U0052>;<NONE>;<SMALL>;IGNORE
+<U0154> <U0052>;<ACUTE>;<CAPITAL>;IGNORE
+<U0155> <U0052>;<ACUTE>;<SMALL>;IGNORE
+<U0210> <U0052>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0211> <U0052>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0212> <U0052>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0213> <U0052>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U0158> <U0052>;<CARON>;<CAPITAL>;IGNORE
+<U0159> <U0052>;<CARON>;<SMALL>;IGNORE
+<U1E58> <U0052>;<DOT>;<CAPITAL>;IGNORE
+<U1E59> <U0052>;<DOT>;<SMALL>;IGNORE
+<U1E5A> <U0052>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5B> <U0052>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0156> <U0052>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0157> <U0052>;<CEDILLA>;<SMALL>;IGNORE
+<U1E5C> <U0052>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5D> <U0052>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E5E> <U0052>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E5F> <U0052>;<LINE-BELOW>;<SMALL>;IGNORE
+<r8>
+<U0053> <U0053>;<NONE>;<CAPITAL>;IGNORE
+<U0073> <U0053>;<NONE>;<SMALL>;IGNORE
+<UFB06> "<U0053><U0054>";"<NONE><NONE>";"<UFB06><UFB06>";IGNORE
+<U015A> <U0053>;<ACUTE>;<CAPITAL>;IGNORE
+<U015B> <U0053>;<ACUTE>;<SMALL>;IGNORE
+<U1E64> <U0053>;<ACUTE+DOT>;<CAPITAL>;IGNORE
+<U1E65> <U0053>;<ACUTE+DOT>;<SMALL>;IGNORE
+<U015C> <U0053>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U015D> <U0053>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0160> <U0053>;<CARON>;<CAPITAL>;IGNORE
+<U0161> <U0053>;<CARON>;<SMALL>;IGNORE
+<U1E66> <U0053>;<CARON+DOT>;<CAPITAL>;IGNORE
+<U1E67> <U0053>;<CARON+DOT>;<SMALL>;IGNORE
+<U1E60> <U0053>;<DOT>;<CAPITAL>;IGNORE
+<U1E61> <U0053>;<DOT>;<SMALL>;IGNORE
+<U1E62> <U0053>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E63> <U0053>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E68> <U0053>;<DOT+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E69> <U0053>;<DOT+DOT-BELOW>;<SMALL>;IGNORE
+<U015E> <U0053>;<CEDILLA>;<CAPITAL>;IGNORE
+<U015F> <U0053>;<CEDILLA>;<SMALL>;IGNORE
+<s8>
+<U017F> <U0053>;<U017F>;<SMALL>;IGNORE
+<U00DF> "<U0053><U0053>";"<NONE><NONE>";"<SMALL><U00DF>";IGNORE
+<UFB05> "<U0053><U0054>";"<NONE><NONE>";"<UFB05><UFB05>";IGNORE
+<U0054> <U0054>;<NONE>;<CAPITAL>;IGNORE
+<U0074> <U0054>;<NONE>;<SMALL>;IGNORE
+<U0164> <U0054>;<CARON>;<CAPITAL>;IGNORE
+<U0165> <U0054>;<CARON>;<SMALL>;IGNORE
+<U1E6A> <U0054>;<DOT>;<CAPITAL>;IGNORE
+<U1E6B> <U0054>;<DOT>;<SMALL>;IGNORE
+<U1E6C> <U0054>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E6D> <U0054>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0166> <U0054>;<STROKE>;<CAPITAL>;IGNORE
+<U0167> <U0054>;<STROKE>;<SMALL>;IGNORE
+<U0162> <U0054>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0163> <U0054>;<CEDILLA>;<SMALL>;IGNORE
+<U1E70> <U0054>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E71> <U0054>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E6E> <U0054>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E6F> <U0054>;<LINE-BELOW>;<SMALL>;IGNORE
+<t8>
+<U00DE> "<U0054><U0048>";"<U00DE><U00DE>";"<CAPITAL><CAPITAL>";IGNORE
+<U00FE> "<U0054><U0048>";"<U00DE><U00DE>";"<SMALL><SMALL>";IGNORE
+<U0055> <U0055>;<NONE>;<CAPITAL>;IGNORE
+<U0075> <U0055>;<NONE>;<SMALL>;IGNORE
+<U00DA> <U0055>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FA> <U0055>;<ACUTE>;<SMALL>;IGNORE
+<U00D9> <U0055>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F9> <U0055>;<GRAVE>;<SMALL>;IGNORE
+<U0214> <U0055>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0215> <U0055>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U016C> <U0055>;<BREVE>;<CAPITAL>;IGNORE
+<U016D> <U0055>;<BREVE>;<SMALL>;IGNORE
+<U0216> <U0055>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0217> <U0055>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00DB> <U0055>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00FB> <U0055>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01D3> <U0055>;<CARON>;<CAPITAL>;IGNORE
+<U01D4> <U0055>;<CARON>;<SMALL>;IGNORE
+<U016E> <U0055>;<RING>;<CAPITAL>;IGNORE
+<U016F> <U0055>;<RING>;<SMALL>;IGNORE
+<U00DC> <U0055>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FC> <U0055>;<DIAERESIS>;<SMALL>;IGNORE
+<U01D5> <U0055>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01D6> <U0055>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U01D7> <U0055>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U01D8> <U0055>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U01DB> <U0055>;<DIAERESIS+GRAVE>;<CAPITAL>;IGNORE
+<U01DC> <U0055>;<DIAERESIS+GRAVE>;<SMALL>;IGNORE
+<U01D9> <U0055>;<DIAERESIS+CARON>;<CAPITAL>;IGNORE
+<U01DA> <U0055>;<DIAERESIS+CARON>;<SMALL>;IGNORE
+<U0170> <U0055>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0171> <U0055>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1EE6> <U0055>;<HOOK>;<CAPITAL>;IGNORE
+<U1EE7> <U0055>;<HOOK>;<SMALL>;IGNORE
+<U0168> <U0055>;<TILDE>;<CAPITAL>;IGNORE
+<U0169> <U0055>;<TILDE>;<SMALL>;IGNORE
+<U1E78> <U0055>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E79> <U0055>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E74> <U0055>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E75> <U0055>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U1EE4> <U0055>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE5> <U0055>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0172> <U0055>;<OGONEK>;<CAPITAL>;IGNORE
+<U0173> <U0055>;<OGONEK>;<SMALL>;IGNORE
+<U016A> <U0055>;<MACRON>;<CAPITAL>;IGNORE
+<U016B> <U0055>;<MACRON>;<SMALL>;IGNORE
+<U1E7A> <U0055>;<MACRON+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E7B> <U0055>;<MACRON+DIAERESIS>;<SMALL>;IGNORE
+<U1E72> <U0055>;<MACRON+DIAERESIS-BELOW>;<CAPITAL>;IGNORE
+<U1E73> <U0055>;<MACRON+DIAERESIS-BELOW>;<SMALL>;IGNORE
+<U1E76> <U0055>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E77> <U0055>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U01AF> <U0055>;<HORN>;<CAPITAL>;IGNORE
+<U01B0> <U0055>;<HORN>;<SMALL>;IGNORE
+<U1EE8> <U0055>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EE9> <U0055>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EEA> <U0055>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EEB> <U0055>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EEC> <U0055>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EED> <U0055>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EEE> <U0055>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EEF> <U0055>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EF0> <U0055>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF1> <U0055>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<u8>
+<U0056> <U0056>;<NONE>;<CAPITAL>;IGNORE
+<U0076> <U0056>;<NONE>;<SMALL>;IGNORE
+<U1E7C> <U0056>;<TILDE>;<CAPITAL>;IGNORE
+<U1E7D> <U0056>;<TILDE>;<SMALL>;IGNORE
+<U1E7E> <U0056>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E7F> <U0056>;<DOT-BELOW>;<SMALL>;IGNORE
+<v8>
+<U0057> <U0057>;<NONE>;<CAPITAL>;IGNORE
+<U0077> <U0057>;<NONE>;<SMALL>;IGNORE
+<U1E82> <U0057>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E83> <U0057>;<ACUTE>;<SMALL>;IGNORE
+<U1E80> <U0057>;<GRAVE>;<CAPITAL>;IGNORE
+<U1E81> <U0057>;<GRAVE>;<SMALL>;IGNORE
+<U0174> <U0057>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0175> <U0057>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E84> <U0057>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E85> <U0057>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E86> <U0057>;<DOT>;<CAPITAL>;IGNORE
+<U1E87> <U0057>;<DOT>;<SMALL>;IGNORE
+<U1E88> <U0057>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E89> <U0057>;<DOT-BELOW>;<SMALL>;IGNORE
+<w8>
+<U0058> <U0058>;<NONE>;<CAPITAL>;IGNORE
+<U0078> <U0058>;<NONE>;<SMALL>;IGNORE
+<U1E8C> <U0058>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E8D> <U0058>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E8A> <U0058>;<DOT>;<CAPITAL>;IGNORE
+<U1E8B> <U0058>;<DOT>;<SMALL>;IGNORE
+<x8>
+<U0059> <U0059>;<NONE>;<CAPITAL>;IGNORE
+<U0079> <U0059>;<NONE>;<SMALL>;IGNORE
+<U00DD> <U0059>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FD> <U0059>;<ACUTE>;<SMALL>;IGNORE
+<U1EF2> <U0059>;<GRAVE>;<CAPITAL>;IGNORE
+<U1EF3> <U0059>;<GRAVE>;<SMALL>;IGNORE
+<U0176> <U0059>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0177> <U0059>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0178> <U0059>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FF> <U0059>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EF6> <U0059>;<HOOK>;<CAPITAL>;IGNORE
+<U1EF7> <U0059>;<HOOK>;<SMALL>;IGNORE
+<U1EF8> <U0059>;<TILDE>;<CAPITAL>;IGNORE
+<U1EF9> <U0059>;<TILDE>;<SMALL>;IGNORE
+<U1E8E> <U0059>;<DOT>;<CAPITAL>;IGNORE
+<U1E8F> <U0059>;<DOT>;<SMALL>;IGNORE
+<U1EF4> <U0059>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF5> <U0059>;<DOT-BELOW>;<SMALL>;IGNORE
+<y8>
+<U005A> <U005A>;<NONE>;<CAPITAL>;IGNORE
+<U007A> <U005A>;<NONE>;<SMALL>;IGNORE
+<U0179> <U005A>;<ACUTE>;<CAPITAL>;IGNORE
+<U017A> <U005A>;<ACUTE>;<SMALL>;IGNORE
+<U1E90> <U005A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E91> <U005A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U017D> <U005A>;<CARON>;<CAPITAL>;IGNORE
+<U017E> <U005A>;<CARON>;<SMALL>;IGNORE
+<U017B> <U005A>;<DOT>;<CAPITAL>;IGNORE
+<U017C> <U005A>;<DOT>;<SMALL>;IGNORE
+<U1E92> <U005A>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E93> <U005A>;<DOT-BELOW>;<SMALL>;IGNORE
+<U01B5> <U005A>;<STROKE>;<CAPITAL>;IGNORE
+<U01B6> <U005A>;<STROKE>;<SMALL>;IGNORE
+<U1E94> <U005A>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E95> <U005A>;<LINE-BELOW>;<SMALL>;IGNORE
+<z8>
+<U0391> <U0391>;<CAPITAL>;<GREEK>;IGNORE
+<U0386> <U0391>;<CAPITAL>;<TONOS>;IGNORE
+<U03B1> <U0391>;<SMALL>;<GREEK>;IGNORE
+<U03AC> <U0391>;<SMALL>;<TONOS>;IGNORE
+<U0392> <U0392>;<CAPITAL>;<GREEK>;IGNORE
+<U03B2> <U0392>;<SMALL>;<GREEK>;IGNORE
+<U0393> <U0393>;<CAPITAL>;<GREEK>;IGNORE
+<U03B3> <U0393>;<SMALL>;<GREEK>;IGNORE
+<U0394> <U0394>;<CAPITAL>;<GREEK>;IGNORE
+<U03B4> <U0394>;<SMALL>;<GREEK>;IGNORE
+<U0395> <U0395>;<CAPITAL>;<GREEK>;IGNORE
+<U0388> <U0395>;<CAPITAL>;<TONOS>;IGNORE
+<U03B5> <U0395>;<SMALL>;<GREEK>;IGNORE
+<U03AD> <U0395>;<SMALL>;<TONOS>;IGNORE
+<U0396> <U0396>;<CAPITAL>;<GREEK>;IGNORE
+<U03B6> <U0396>;<SMALL>;<GREEK>;IGNORE
+<U0397> <U0397>;<CAPITAL>;<GREEK>;IGNORE
+<U0389> <U0397>;<CAPITAL>;<TONOS>;IGNORE
+<U03B7> <U0397>;<SMALL>;<GREEK>;IGNORE
+<U03AE> <U0397>;<SMALL>;<TONOS>;IGNORE
+<U0398> <U0398>;<CAPITAL>;<GREEK>;IGNORE
+<U03B8> <U0398>;<SMALL>;<GREEK>;IGNORE
+<U0399> <U0399>;<CAPITAL>;<GREEK>;IGNORE
+<U038A> <U0399>;<CAPITAL>;<TONOS>;IGNORE
+<U03AA> <U0399>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03B9> <U0399>;<SMALL>;<GREEK>;IGNORE
+<U03AF> <U0399>;<SMALL>;<TONOS>;IGNORE
+<U03CA> <U0399>;<SMALL>;<DIALYTICA>;IGNORE
+<U0390> <U0399>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U039A> <U039A>;<CAPITAL>;<GREEK>;IGNORE
+<U03BA> <U039A>;<SMALL>;<GREEK>;IGNORE
+<U039B> <U039B>;<CAPITAL>;<GREEK>;IGNORE
+<U03BB> <U039B>;<SMALL>;<GREEK>;IGNORE
+<U039C> <U039C>;<CAPITAL>;<GREEK>;IGNORE
+<U03BC> <U039C>;<SMALL>;<GREEK>;IGNORE
+<U039D> <U039D>;<CAPITAL>;<GREEK>;IGNORE
+<U03BD> <U039D>;<SMALL>;<GREEK>;IGNORE
+<U039E> <U039E>;<CAPITAL>;<GREEK>;IGNORE
+<U03BE> <U039E>;<SMALL>;<GREEK>;IGNORE
+<U039F> <U039F>;<CAPITAL>;<GREEK>;IGNORE
+<U038C> <U039F>;<CAPITAL>;<TONOS>;IGNORE
+<U03BF> <U039F>;<SMALL>;<GREEK>;IGNORE
+<U03CC> <U039F>;<SMALL>;<TONOS>;IGNORE
+<U03A0> <U03A0>;<CAPITAL>;<GREEK>;IGNORE
+<U03C0> <U03A0>;<SMALL>;<GREEK>;IGNORE
+<U03A1> <U03A1>;<CAPITAL>;<GREEK>;IGNORE
+<U03C1> <U03A1>;<SMALL>;<GREEK>;IGNORE
+<U03A3> <U03A3>;<CAPITAL>;<GREEK>;IGNORE
+<U03C3> <U03A3>;<SMALL>;<GREEK>;IGNORE
+<U03C2> <U03A3>;<SMALL>;<U03C2>;IGNORE
+<U03A4> <U03A4>;<CAPITAL>;<GREEK>;IGNORE
+<U03C4> <U03A4>;<SMALL>;<GREEK>;IGNORE
+<U03A5> <U03A5>;<CAPITAL>;<GREEK>;IGNORE
+<U038E> <U03A5>;<CAPITAL>;<TONOS>;IGNORE
+<U03AB> <U03A5>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03C5> <U03A5>;<SMALL>;<GREEK>;IGNORE
+<U03CD> <U03A5>;<SMALL>;<TONOS>;IGNORE
+<U03CB> <U03A5>;<SMALL>;<DIALYTICA>;IGNORE
+<U03B0> <U03A5>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U03A6> <U03A6>;<CAPITAL>;<GREEK>;IGNORE
+<U03C6> <U03A6>;<SMALL>;<GREEK>;IGNORE
+<U03A7> <U03A7>;<CAPITAL>;<GREEK>;IGNORE
+<U03C7> <U03A7>;<SMALL>;<GREEK>;IGNORE
+<U03A8> <U03A8>;<CAPITAL>;<GREEK>;IGNORE
+<U03C8> <U03A8>;<SMALL>;<GREEK>;IGNORE
+<U03A9> <U03A9>;<CAPITAL>;<GREEK>;IGNORE
+<U038F> <U03A9>;<CAPITAL>;<TONOS>;IGNORE
+<U03C9> <U03A9>;<SMALL>;<GREEK>;IGNORE
+<U03CE> <U03A9>;<SMALL>;<TONOS>;IGNORE
+<U0410> <U0410>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0430> <U0410>;<CYRILLIC>;<SMALL>;IGNORE
+<U0411> <U0411>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0431> <U0411>;<CYRILLIC>;<SMALL>;IGNORE
+<U0412> <U0412>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0432> <U0412>;<CYRILLIC>;<SMALL>;IGNORE
+<U0413> <U0413>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0433> <U0413>;<CYRILLIC>;<SMALL>;IGNORE
+<U0403> <U0403>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0453> <U0403>;<CYRILLIC>;<SMALL>;IGNORE
+<U0490> <U0490>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0491> <U0490>;<CYRILLIC>;<SMALL>;IGNORE
+<U0414> <U0414>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0434> <U0414>;<CYRILLIC>;<SMALL>;IGNORE
+<U0402> <U0402>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0452> <U0402>;<CYRILLIC>;<SMALL>;IGNORE
+<U0415> <U0415>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0435> <U0415>;<CYRILLIC>;<SMALL>;IGNORE
+<U0401> <U0401>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0451> <U0401>;<CYRILLIC>;<SMALL>;IGNORE
+<U0404> <U0404>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0454> <U0404>;<CYRILLIC>;<SMALL>;IGNORE
+<U0416> <U0416>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0436> <U0416>;<CYRILLIC>;<SMALL>;IGNORE
+<U0417> <U0417>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0437> <U0417>;<CYRILLIC>;<SMALL>;IGNORE
+<U0418> <U0418>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0438> <U0418>;<CYRILLIC>;<SMALL>;IGNORE
+<U0406> <U0406>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0456> <U0406>;<CYRILLIC>;<SMALL>;IGNORE
+<U0407> <U0407>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0457> <U0407>;<CYRILLIC>;<SMALL>;IGNORE
+<U0408> <U0408>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0458> <U0408>;<CYRILLIC>;<SMALL>;IGNORE
+<U0419> <U0419>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0439> <U0419>;<CYRILLIC>;<SMALL>;IGNORE
+<U041A> <U041A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043A> <U041A>;<CYRILLIC>;<SMALL>;IGNORE
+<U040C> <U040C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045C> <U040C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041B> <U041B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043B> <U041B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0409> <U0409>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0459> <U0409>;<CYRILLIC>;<SMALL>;IGNORE
+<U041C> <U041C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043C> <U041C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041D> <U041D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043D> <U041D>;<CYRILLIC>;<SMALL>;IGNORE
+<U040A> <U040A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045A> <U040A>;<CYRILLIC>;<SMALL>;IGNORE
+<U041E> <U041E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043E> <U041E>;<CYRILLIC>;<SMALL>;IGNORE
+<U041F> <U041F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043F> <U041F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0420> <U0420>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0440> <U0420>;<CYRILLIC>;<SMALL>;IGNORE
+<U0421> <U0421>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0441> <U0421>;<CYRILLIC>;<SMALL>;IGNORE
+<U0422> <U0422>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0442> <U0422>;<CYRILLIC>;<SMALL>;IGNORE
+<U040B> <U040B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045B> <U040B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0423> <U0423>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0443> <U0423>;<CYRILLIC>;<SMALL>;IGNORE
+<U040E> <U040E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045E> <U040E>;<CYRILLIC>;<SMALL>;IGNORE
+<U0424> <U0424>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0444> <U0424>;<CYRILLIC>;<SMALL>;IGNORE
+<U0425> <U0425>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0445> <U0425>;<CYRILLIC>;<SMALL>;IGNORE
+<U0426> <U0426>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0446> <U0426>;<CYRILLIC>;<SMALL>;IGNORE
+<U0405> <U0405>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0455> <U0405>;<CYRILLIC>;<SMALL>;IGNORE
+<U0427> <U0427>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0447> <U0427>;<CYRILLIC>;<SMALL>;IGNORE
+<U040F> <U040F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045F> <U040F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0428> <U0428>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0448> <U0428>;<CYRILLIC>;<SMALL>;IGNORE
+<U0429> <U0429>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0449> <U0429>;<CYRILLIC>;<SMALL>;IGNORE
+<U044A> <U044A>;<CYRILLIC>;<SMALL>;IGNORE
+<U042A> <U044A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042B> <U042B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044B> <U042B>;<CYRILLIC>;<SMALL>;IGNORE
+<U044C> <U044C>;<CYRILLIC>;<SMALL>;IGNORE
+<U042C> <U044C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042D> <U042D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044D> <U042D>;<CYRILLIC>;<SMALL>;IGNORE
+<U042E> <U042E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044E> <U042E>;<CYRILLIC>;<SMALL>;IGNORE
+<U042F> <U042F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044F> <U042F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0462> <U0462>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0463> <U0462>;<CYRILLIC>;<SMALL>;IGNORE
+<U046A> <U046A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U046B> <U046A>;<CYRILLIC>;<SMALL>;IGNORE
+<U0472> <U0472>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0473> <U0472>;<CYRILLIC>;<SMALL>;IGNORE
+<U0474> <U0474>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0475> <U0474>;<CYRILLIC>;<SMALL>;IGNORE
+<U0480> <U0480>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0481> <U0480>;<CYRILLIC>;<SMALL>;IGNORE
+<U05D0> <U05D0>;IGNORE;IGNORE;IGNORE
+<U05D1> <U05D1>;IGNORE;IGNORE;IGNORE
+<U05D2> <U05D2>;IGNORE;IGNORE;IGNORE
+<U05D3> <U05D3>;IGNORE;IGNORE;IGNORE
+<U05D4> <U05D4>;IGNORE;IGNORE;IGNORE
+<U05D5> <U05D5>;IGNORE;IGNORE;IGNORE
+<U05D6> <U05D6>;IGNORE;IGNORE;IGNORE
+<U05D7> <U05D7>;IGNORE;IGNORE;IGNORE
+<U05D8> <U05D8>;IGNORE;IGNORE;IGNORE
+<U05D9> <U05D9>;IGNORE;IGNORE;IGNORE
+<U05DA> <U05DA>;IGNORE;IGNORE;IGNORE
+<U05DB> <U05DB>;IGNORE;IGNORE;IGNORE
+<U05DC> <U05DC>;IGNORE;IGNORE;IGNORE
+<U05DD> <U05DD>;IGNORE;IGNORE;IGNORE
+<U05DE> <U05DE>;IGNORE;IGNORE;IGNORE
+<U05DF> <U05DF>;IGNORE;IGNORE;IGNORE
+<U05E0> <U05E0>;IGNORE;IGNORE;IGNORE
+<U05E1> <U05E1>;IGNORE;IGNORE;IGNORE
+<U05E2> <U05E2>;IGNORE;IGNORE;IGNORE
+<U05E3> <U05E3>;IGNORE;IGNORE;IGNORE
+<U05E4> <U05E4>;IGNORE;IGNORE;IGNORE
+<U05E5> <U05E5>;IGNORE;IGNORE;IGNORE
+<U05E6> <U05E6>;IGNORE;IGNORE;IGNORE
+<U05E7> <U05E7>;IGNORE;IGNORE;IGNORE
+<U05E8> <U05E8>;IGNORE;IGNORE;IGNORE
+<U05E9> <U05E9>;IGNORE;IGNORE;IGNORE
+<U05EA> <U05EA>;IGNORE;IGNORE;IGNORE
+
+% Arabic collating
+
+<U060C> IGNORE;IGNORE;IGNORE;<U060C>
+<U061B> IGNORE;IGNORE;IGNORE;<U061B>
+<U061F> IGNORE;IGNORE;IGNORE;<U061F>
+<U0640> IGNORE;IGNORE;IGNORE;<U0640>
+
+<U0621> <U0621>;<U0621>;IGNORE;IGNORE
+<U0622> <U0622>;<U0622>;IGNORE;IGNORE
+<UFE82> <U0622>;<UFE82>;IGNORE;IGNORE
+<U0623> <U0621>;<U0623>;IGNORE;IGNORE
+<UFE84> <U0621>;<UFE84>;IGNORE;IGNORE
+<U0624> <U0621>;<U0624>;IGNORE;IGNORE
+<U0625> <U0621>;<U0625>;IGNORE;IGNORE
+<UFE88> <U0621>;<UFE88>;IGNORE;IGNORE
+<U0626> <U0621>;<U0626>;IGNORE;IGNORE
+<U0670> <U0670>;<U0670>;IGNORE;IGNORE
+<U0627> <U0627>;<U0627>;IGNORE;IGNORE
+<UFE8D> <U0627>;<UFE8D>;IGNORE;IGNORE
+<UFE8E> <U0627>;<UFE8E>;IGNORE;IGNORE
+<UE016> <U0627>;<UE016>;IGNORE;IGNORE
+<U0628> <U0628>;<U0628>;IGNORE;IGNORE
+<UFE8F> <U0628>;<UFE8F>;IGNORE;IGNORE
+<UFE90> <U0628>;<UFE90>;IGNORE;IGNORE
+<UFE91> <U0628>;<UFE91>;IGNORE;IGNORE
+<UFE92> <U0628>;<UFE92>;IGNORE;IGNORE
+<U067E> <U067E>;<U067E>;IGNORE;IGNORE
+<U06A4> <U06A4>;<U06A4>;IGNORE;IGNORE
+<U0629> <U0629>;<U0629>;IGNORE;IGNORE
+<UFE93> <U0629>;<UFE93>;IGNORE;IGNORE
+<UFE94> <U0629>;<UFE94>;IGNORE;IGNORE
+<U062A> <U0629>;<U062A>;IGNORE;IGNORE
+<UFE95> <U0629>;<UFE95>;IGNORE;IGNORE
+<UFE96> <U0629>;<UFE96>;IGNORE;IGNORE
+<UFE97> <U0629>;<UFE97>;IGNORE;IGNORE
+<UFE98> <U0629>;<UFE98>;IGNORE;IGNORE
+<U062B> <U062B>;<U062B>;IGNORE;IGNORE
+<UFE99> <U062B>;<UFE99>;IGNORE;IGNORE
+<UFE9A> <U062B>;<UFE9A>;IGNORE;IGNORE
+<UFE9B> <U062B>;<UFE9B>;IGNORE;IGNORE
+<UFE9C> <U062B>;<UFE9C>;IGNORE;IGNORE
+<U062C> <U062C>;<U062C>;IGNORE;IGNORE
+<UFE9D> <U062C>;<UFE9D>;IGNORE;IGNORE
+<UFE9E> <U062C>;<UFE9E>;IGNORE;IGNORE
+<UFE9F> <U062C>;<UFE9F>;IGNORE;IGNORE
+<UFEA0> <U062C>;<UFEA0>;IGNORE;IGNORE
+<U062D> <U062D>;<U062D>;IGNORE;IGNORE
+<UFEA1> <U062D>;<UFEA1>;IGNORE;IGNORE
+<UFEA2> <U062D>;<UFEA2>;IGNORE;IGNORE
+<UFEA3> <U062D>;<UFEA3>;IGNORE;IGNORE
+<UFEA4> <U062D>;<UFEA4>;IGNORE;IGNORE
+<U062E> <U062E>;<U062E>;IGNORE;IGNORE
+<UFEA5> <U062E>;<UFEA5>;IGNORE;IGNORE
+<UFEA6> <U062E>;<UFEA6>;IGNORE;IGNORE
+<UFEA7> <U062E>;<UFEA7>;IGNORE;IGNORE
+<UFEA8> <U062E>;<UFEA8>;IGNORE;IGNORE
+<U062F> <U062F>;<U062F>;IGNORE;IGNORE
+<UFEA9> <U062F>;<UFEA9>;IGNORE;IGNORE
+<UFEAA> <U062F>;<UFEAA>;IGNORE;IGNORE
+<U0630> <U0630>;<U0630>;IGNORE;IGNORE
+<UFEAB> <U0630>;<UFEAB>;IGNORE;IGNORE
+<UFEAC> <U0630>;<UFEAC>;IGNORE;IGNORE
+<U0631> <U0631>;<U0631>;IGNORE;IGNORE
+<UFEAD> <U0631>;<UFEAD>;IGNORE;IGNORE
+<UFEAE> <U0631>;<UFEAE>;IGNORE;IGNORE
+<U0632> <U0632>;<U0632>;IGNORE;IGNORE
+<UFEAF> <U0632>;<UFEAF>;IGNORE;IGNORE
+<UFEB0> <U0632>;<UFEB0>;IGNORE;IGNORE
+<U0633> <U0633>;<U0633>;IGNORE;IGNORE
+<UFEB1> <U0633>;<UFEB1>;IGNORE;IGNORE
+<UFEB2> <U0633>;<UFEB2>;IGNORE;IGNORE
+<UFEB3> <U0633>;<UFEB3>;IGNORE;IGNORE
+<UFEB4> <U0633>;<UFEB4>;IGNORE;IGNORE
+<U0634> <U0634>;<U0634>;IGNORE;IGNORE
+<UFEB5> <U0634>;<UFEB5>;IGNORE;IGNORE
+<UFEB6> <U0634>;<UFEB6>;IGNORE;IGNORE
+<UFEB7> <U0634>;<UFEB7>;IGNORE;IGNORE
+<UFEB8> <U0634>;<UFEB8>;IGNORE;IGNORE
+<U0635> <U0635>;<U0635>;IGNORE;IGNORE
+<UFEB9> <U0635>;<UFEB9>;IGNORE;IGNORE
+<UFEBA> <U0635>;<UFEBA>;IGNORE;IGNORE
+<UFEBB> <U0635>;<UFEBB>;IGNORE;IGNORE
+<UFEBC> <U0635>;<UFEBC>;IGNORE;IGNORE
+<U0636> <U0636>;<U0636>;IGNORE;IGNORE
+<UFEBD> <U0636>;<UFEBD>;IGNORE;IGNORE
+<UFEBE> <U0636>;<UFEBE>;IGNORE;IGNORE
+<UFEBF> <U0636>;<UFEBF>;IGNORE;IGNORE
+<UFEC0> <U0636>;<UFEC0>;IGNORE;IGNORE
+<U0637> <U0637>;<U0637>;IGNORE;IGNORE
+<UFEC1> <U0637>;<UFEC1>;IGNORE;IGNORE
+<UFEC2> <U0637>;<UFEC2>;IGNORE;IGNORE
+<UFEC3> <U0637>;<UFEC3>;IGNORE;IGNORE
+<UFEC4> <U0637>;<UFEC4>;IGNORE;IGNORE
+<U0638> <U0638>;<U0638>;IGNORE;IGNORE
+<UFEC5> <U0638>;<UFEC5>;IGNORE;IGNORE
+<UFEC6> <U0638>;<UFEC6>;IGNORE;IGNORE
+<UFEC7> <U0638>;<UFEC7>;IGNORE;IGNORE
+<UFEC8> <U0638>;<UFEC8>;IGNORE;IGNORE
+<U0639> <U0639>;<U0639>;IGNORE;IGNORE
+<UFEC9> <U0639>;<UFEC9>;IGNORE;IGNORE
+<UFECA> <U0639>;<UFECA>;IGNORE;IGNORE
+<UFECB> <U0639>;<UFECB>;IGNORE;IGNORE
+<UFECC> <U0639>;<UFECC>;IGNORE;IGNORE
+<U063A> <U063A>;<U063A>;IGNORE;IGNORE
+<UFECD> <U063A>;<UFECD>;IGNORE;IGNORE
+<UFECE> <U063A>;<UFECE>;IGNORE;IGNORE
+<UFECF> <U063A>;<UFECF>;IGNORE;IGNORE
+<UFED0> <U063A>;<UFED0>;IGNORE;IGNORE
+<U0641> <U0641>;<U0641>;IGNORE;IGNORE
+<UFED1> <U0641>;<UFED1>;IGNORE;IGNORE
+<UFED2> <U0641>;<UFED2>;IGNORE;IGNORE
+<UFED3> <U0641>;<UFED3>;IGNORE;IGNORE
+<UFED4> <U0641>;<UFED4>;IGNORE;IGNORE
+<U0642> <U0642>;<U0642>;IGNORE;IGNORE
+<UFED5> <U0642>;<UFED5>;IGNORE;IGNORE
+<UFED6> <U0642>;<UFED6>;IGNORE;IGNORE
+<UFED7> <U0642>;<UFED7>;IGNORE;IGNORE
+<UFED8> <U0642>;<UFED8>;IGNORE;IGNORE
+<U0643> <U0643>;<U0643>;IGNORE;IGNORE
+<UFED9> <U0643>;<UFED9>;IGNORE;IGNORE
+<UFEDA> <U0643>;<UFEDA>;IGNORE;IGNORE
+<UFEDB> <U0643>;<UFEDB>;IGNORE;IGNORE
+<UFEDC> <U0643>;<UFEDC>;IGNORE;IGNORE
+<U0644> <U0644>;<U0644>;IGNORE;IGNORE
+<UFEDD> <U0644>;<UFEDD>;IGNORE;IGNORE
+<UFEDE> <U0644>;<UFEDE>;IGNORE;IGNORE
+<UFEDF> <U0644>;<UFEDF>;IGNORE;IGNORE
+<UFEE0> <U0644>;<UFEE0>;IGNORE;IGNORE
+<U0645> <U0645>;<U0645>;IGNORE;IGNORE
+<UFEE1> <U0645>;<UFEE1>;IGNORE;IGNORE
+<UFEE2> <U0645>;<UFEE2>;IGNORE;IGNORE
+<UFEE3> <U0645>;<UFEE3>;IGNORE;IGNORE
+<UFEE4> <U0645>;<UFEE4>;IGNORE;IGNORE
+<U0646> <U0646>;<U0646>;IGNORE;IGNORE
+<UFEE5> <U0646>;<UFEE5>;IGNORE;IGNORE
+<UFEE6> <U0646>;<UFEE6>;IGNORE;IGNORE
+<UFEE7> <U0646>;<UFEE7>;IGNORE;IGNORE
+<UFEE8> <U0646>;<UFEE8>;IGNORE;IGNORE
+<U0647> <U0647>;<U0647>;IGNORE;IGNORE
+<UFEE9> <U0647>;<UFEE9>;IGNORE;IGNORE
+<UFEEA> <U0647>;<UFEEA>;IGNORE;IGNORE
+<UFEEB> <U0647>;<UFEEB>;IGNORE;IGNORE
+<UFEEC> <U0647>;<UFEEC>;IGNORE;IGNORE
+<U0648> <U0648>;<U0648>;IGNORE;IGNORE
+<UFEED> <U0648>;<UFEED>;IGNORE;IGNORE
+<UFEEE> <U0648>;<UFEEE>;IGNORE;IGNORE
+<U0649> <U0649>;<U0649>;IGNORE;IGNORE
+<UFEEF> <U0649>;<UFEEF>;IGNORE;IGNORE
+<UFEF0> <U0649>;<UFEF0>;IGNORE;IGNORE
+<U064A> <U064A>;<U064A>;IGNORE;IGNORE
+<UFEF1> <U064A>;<UFEF1>;IGNORE;IGNORE
+<UFEF2> <U064A>;<UFEF2>;IGNORE;IGNORE
+<UFEF3> <U064A>;<UFEF3>;IGNORE;IGNORE
+<UFEF4> <U064A>;<UFEF4>;IGNORE;IGNORE
+
+<U064B> IGNORE;IGNORE;<U064B>;IGNORE
+<U064C> IGNORE;IGNORE;<U064C>;IGNORE
+<U064D> IGNORE;IGNORE;<U064D>;IGNORE
+<U064E> IGNORE;IGNORE;<U064E>;IGNORE
+<U064F> IGNORE;IGNORE;<U064F>;IGNORE
+<U0650> IGNORE;IGNORE;<U0650>;IGNORE
+<U0651> IGNORE;IGNORE;<U0651>;IGNORE
+<UFE7D> IGNORE;IGNORE;<UFE7D>;IGNORE
+<U0652> IGNORE;IGNORE;<U0652>;IGNORE
+
+<U0660> <U0030>;<U0660>;IGNORE;IGNORE
+<U0661> <U0031>;<U0661>;IGNORE;IGNORE
+<U0662> <U0032>;<U0662>;IGNORE;IGNORE
+<U0663> <U0033>;<U0663>;IGNORE;IGNORE
+<U0664> <U0034>;<U0664>;IGNORE;IGNORE
+<U0665> <U0035>;<U0665>;IGNORE;IGNORE
+<U0666> <U0036>;<U0666>;IGNORE;IGNORE
+<U0667> <U0037>;<U0667>;IGNORE;IGNORE
+<U0668> <U0038>;<U0668>;IGNORE;IGNORE
+<U0669> <U0039>;<U0669>;IGNORE;IGNORE
+
+<UFEF5> "<U0644><U0622>";"<U0644><U0622>";"<UFEF5><UFEF5>";IGNORE
+<UFEF6> "<U0644><U0622>";"<U0644><UFE82>";"<UFEF6><UFEF6>";IGNORE
+<UFEF7> "<U0644><U0623>";"<U0644><U0623>";"<UFEF7><UFEF7>";IGNORE
+<UFEF8> "<U0644><U0623>";"<U0644><UFE84>";"<UFEF8><UFEF8>";IGNORE
+<UFEF9> "<U0644><U0625>";"<U0644><U0625>";"<UFEF9><UFEF9>";IGNORE
+<UFEFA> "<U0644><U0625>";"<U0644><UFE88>";"<UFEFA><UFEFA>";IGNORE
+<UFEFB> "<U0644><U0627>";"<U0644><UFE8D>";"<UFEFB><UFEFB>";IGNORE
+<UFEFC> "<U0644><U0627>";"<U0644><UFE8E>";"<UFEFC><UFEFC>";IGNORE
+
+% katakana/hiragana sorting
+% base is katakana, as this is present in most charsets
+% normal before voiced before semi-voiced
+% small vocals before normal vocals
+% katakana before hiragana
+
+<U30A1> <U30A1>;<U30A1>;IGNORE;IGNORE
+<U3041> <U30A1>;<U3041>;IGNORE;IGNORE
+<U30A2> <U30A1>;<U30A2>;IGNORE;IGNORE
+<U3042> <U30A1>;<U3042>;IGNORE;IGNORE
+<U30A3> <U30A3>;<U30A3>;IGNORE;IGNORE
+<U3043> <U30A3>;<U3043>;IGNORE;IGNORE
+<U30A4> <U30A3>;<U30A4>;IGNORE;IGNORE
+<U3044> <U30A3>;<U3044>;IGNORE;IGNORE
+<U30A5> <U30A5>;<U30A5>;IGNORE;IGNORE
+<U3045> <U30A5>;<U3045>;IGNORE;IGNORE
+<U30A6> <U30A5>;<U30A6>;IGNORE;IGNORE
+<U3046> <U30A5>;<U3046>;IGNORE;IGNORE
+<U30F4> <U30A5>;<U30F4>;IGNORE;IGNORE
+<U30A7> <U30A7>;<U30A7>;IGNORE;IGNORE
+<U3047> <U30A7>;<U3047>;IGNORE;IGNORE
+<U30A8> <U30A7>;<U30A8>;IGNORE;IGNORE
+<U3048> <U30A7>;<U3048>;IGNORE;IGNORE
+<U30A9> <U30A9>;<U30A9>;IGNORE;IGNORE
+<U3049> <U30A9>;<U3049>;IGNORE;IGNORE
+<U30AA> <U30A9>;<U30AA>;IGNORE;IGNORE
+<U304A> <U30A9>;<U304A>;IGNORE;IGNORE
+<U30F5> <U30F5>;<U30F5>;IGNORE;IGNORE
+<U30AB> <U30F5>;<U30AB>;IGNORE;IGNORE
+<U304B> <U30F5>;<U304B>;IGNORE;IGNORE
+<U30AC> <U30F5>;<U30AC>;IGNORE;IGNORE
+<U304C> <U30F5>;<U304C>;IGNORE;IGNORE
+<U30AD> <U30AD>;<U30AD>;IGNORE;IGNORE
+<U304D> <U30AD>;<U304D>;IGNORE;IGNORE
+<U30AE> <U30AD>;<U30AE>;IGNORE;IGNORE
+<U304E> <U30AD>;<U304E>;IGNORE;IGNORE
+<U30AF> <U30AF>;<U30AF>;IGNORE;IGNORE
+<U304F> <U30AF>;<U304F>;IGNORE;IGNORE
+<U30B0> <U30AF>;<U30B0>;IGNORE;IGNORE
+<U3050> <U30AF>;<U3050>;IGNORE;IGNORE
+<U30F6> <U30F6>;<U30F6>;IGNORE;IGNORE
+<U30B1> <U30F6>;<U30B1>;IGNORE;IGNORE
+<U3051> <U30F6>;<U3051>;IGNORE;IGNORE
+<U30B2> <U30F6>;<U30B2>;IGNORE;IGNORE
+<U3052> <U30F6>;<U3052>;IGNORE;IGNORE
+<U30B3> <U30B3>;<U30B3>;IGNORE;IGNORE
+<U3053> <U30B3>;<U3053>;IGNORE;IGNORE
+<U30B4> <U30B3>;<U30B4>;IGNORE;IGNORE
+<U3054> <U30B3>;<U3054>;IGNORE;IGNORE
+<U30B5> <U30B5>;<U30B5>;IGNORE;IGNORE
+<U3055> <U30B5>;<U3055>;IGNORE;IGNORE
+<U30B6> <U30B5>;<U30B6>;IGNORE;IGNORE
+<U3056> <U30B5>;<U3056>;IGNORE;IGNORE
+<U30B7> <U30B7>;<U30B7>;IGNORE;IGNORE
+<U3057> <U30B7>;<U3057>;IGNORE;IGNORE
+<U30B8> <U30B7>;<U30B8>;IGNORE;IGNORE
+<U3058> <U30B7>;<U3058>;IGNORE;IGNORE
+<U30B9> <U30B9>;<U30B9>;IGNORE;IGNORE
+<U3059> <U30B9>;<U3059>;IGNORE;IGNORE
+<U30BA> <U30B9>;<U30BA>;IGNORE;IGNORE
+<U305A> <U30B9>;<U305A>;IGNORE;IGNORE
+<U30BB> <U30BB>;<U30BB>;IGNORE;IGNORE
+<U305B> <U30BB>;<U305B>;IGNORE;IGNORE
+<U30BC> <U30BB>;<U30BC>;IGNORE;IGNORE
+<U305C> <U30BB>;<U305C>;IGNORE;IGNORE
+<U30BD> <U30BD>;<U30BD>;IGNORE;IGNORE
+<U305D> <U30BD>;<U305D>;IGNORE;IGNORE
+<U30BE> <U30BD>;<U30BE>;IGNORE;IGNORE
+<U305E> <U30BD>;<U305E>;IGNORE;IGNORE
+<U30BF> <U30BF>;<U30BF>;IGNORE;IGNORE
+<U305F> <U30BF>;<U305F>;IGNORE;IGNORE
+<U30C0> <U30BF>;<U30C0>;IGNORE;IGNORE
+<U3060> <U30BF>;<U3060>;IGNORE;IGNORE
+<U30C1> <U30C1>;<U30C1>;IGNORE;IGNORE
+<U3061> <U30C1>;<U3061>;IGNORE;IGNORE
+<U30C2> <U30C1>;<U30C2>;IGNORE;IGNORE
+<U3062> <U30C1>;<U3062>;IGNORE;IGNORE
+<U30C3> <U30C3>;<U30C3>;IGNORE;IGNORE
+<U3063> <U30C3>;<U3063>;IGNORE;IGNORE
+<U30C4> <U30C3>;<U30C4>;IGNORE;IGNORE
+<U3064> <U30C3>;<U3064>;IGNORE;IGNORE
+<U30C5> <U30C3>;<U30C5>;IGNORE;IGNORE
+<U3065> <U30C3>;<U3065>;IGNORE;IGNORE
+<U30C6> <U30C6>;<U30C6>;IGNORE;IGNORE
+<U3066> <U30C6>;<U3066>;IGNORE;IGNORE
+<U30C7> <U30C6>;<U30C7>;IGNORE;IGNORE
+<U3067> <U30C6>;<U3067>;IGNORE;IGNORE
+<U30C8> <U30C8>;<U30C8>;IGNORE;IGNORE
+<U3068> <U30C8>;<U3068>;IGNORE;IGNORE
+<U30C9> <U30C8>;<U30C9>;IGNORE;IGNORE
+<U3069> <U30C8>;<U3069>;IGNORE;IGNORE
+<U30CA> <U30CA>;<U30CA>;IGNORE;IGNORE
+<U306A> <U30CA>;<U306A>;IGNORE;IGNORE
+<U30CB> <U30CB>;<U30CB>;IGNORE;IGNORE
+<U306B> <U30CB>;<U306B>;IGNORE;IGNORE
+<U30CC> <U30CC>;<U30CC>;IGNORE;IGNORE
+<U306C> <U30CC>;<U306C>;IGNORE;IGNORE
+<U30CD> <U30CD>;<U30CD>;IGNORE;IGNORE
+<U306D> <U30CD>;<U306D>;IGNORE;IGNORE
+<U30CE> <U30CE>;<U30CE>;IGNORE;IGNORE
+<U306E> <U30CE>;<U306E>;IGNORE;IGNORE
+<U30CF> <U30CF>;<U30CF>;IGNORE;IGNORE
+<U306F> <U30CF>;<U306F>;IGNORE;IGNORE
+<U30D0> <U30CF>;<U30D0>;IGNORE;IGNORE
+<U3070> <U30CF>;<U3070>;IGNORE;IGNORE
+<U30D1> <U30CF>;<U30D1>;IGNORE;IGNORE
+<U3071> <U30CF>;<U3071>;IGNORE;IGNORE
+<U30D2> <U30D2>;<U30D2>;IGNORE;IGNORE
+<U3072> <U30D2>;<U3072>;IGNORE;IGNORE
+<U30D3> <U30D2>;<U30D3>;IGNORE;IGNORE
+<U3073> <U30D2>;<U3073>;IGNORE;IGNORE
+<U30D4> <U30D2>;<U30D4>;IGNORE;IGNORE
+<U3074> <U30D2>;<U3074>;IGNORE;IGNORE
+<U30D5> <U30D5>;<U30D5>;IGNORE;IGNORE
+<U3075> <U30D5>;<U3075>;IGNORE;IGNORE
+<U30D6> <U30D5>;<U30D6>;IGNORE;IGNORE
+<U3076> <U30D5>;<U3076>;IGNORE;IGNORE
+<U30D7> <U30D5>;<U30D7>;IGNORE;IGNORE
+<U3077> <U30D5>;<U3077>;IGNORE;IGNORE
+<U30D8> <U30D8>;<U30D8>;IGNORE;IGNORE
+<U3078> <U30D8>;<U3078>;IGNORE;IGNORE
+<U30D9> <U30D8>;<U30D9>;IGNORE;IGNORE
+<U3079> <U30D8>;<U3079>;IGNORE;IGNORE
+<U30DA> <U30D8>;<U30DA>;IGNORE;IGNORE
+<U307A> <U30D8>;<U307A>;IGNORE;IGNORE
+<U30DB> <U30DB>;<U30DB>;IGNORE;IGNORE
+<U307B> <U30DB>;<U307B>;IGNORE;IGNORE
+<U30DC> <U30DB>;<U30DC>;IGNORE;IGNORE
+<U307C> <U30DB>;<U307C>;IGNORE;IGNORE
+<U30DD> <U30DB>;<U30DD>;IGNORE;IGNORE
+<U307D> <U30DB>;<U307D>;IGNORE;IGNORE
+<U30DE> <U30DE>;<U30DE>;IGNORE;IGNORE
+<U307E> <U30DE>;<U307E>;IGNORE;IGNORE
+<U30DF> <U30DF>;<U30DF>;IGNORE;IGNORE
+<U307F> <U30DF>;<U307F>;IGNORE;IGNORE
+<U30E0> <U30E0>;<U30E0>;IGNORE;IGNORE
+<U3080> <U30E0>;<U3080>;IGNORE;IGNORE
+<U30E1> <U30E1>;<U30E1>;IGNORE;IGNORE
+<U3081> <U30E1>;<U3081>;IGNORE;IGNORE
+<U30E2> <U30E2>;<U30E2>;IGNORE;IGNORE
+<U3082> <U30E2>;<U3082>;IGNORE;IGNORE
+<U30E3> <U30E3>;<U30E3>;IGNORE;IGNORE
+<U3083> <U30E3>;<U3083>;IGNORE;IGNORE
+<U30E4> <U30E3>;<U30E4>;IGNORE;IGNORE
+<U3084> <U30E3>;<U3084>;IGNORE;IGNORE
+<U30E5> <U30E5>;<U30E5>;IGNORE;IGNORE
+<U3085> <U30E5>;<U3085>;IGNORE;IGNORE
+<U30E6> <U30E5>;<U30E6>;IGNORE;IGNORE
+<U3086> <U30E5>;<U3086>;IGNORE;IGNORE
+<U30E7> <U30E7>;<U30E7>;IGNORE;IGNORE
+<U3087> <U30E7>;<U3087>;IGNORE;IGNORE
+<U30E8> <U30E7>;<U30E8>;IGNORE;IGNORE
+<U3088> <U30E7>;<U3088>;IGNORE;IGNORE
+<U30E9> <U30E9>;<U30E9>;IGNORE;IGNORE
+<U3089> <U30E9>;<U3089>;IGNORE;IGNORE
+<U30EA> <U30EA>;<U30EA>;IGNORE;IGNORE
+<U308A> <U30EA>;<U308A>;IGNORE;IGNORE
+<U30EB> <U30EB>;<U30EB>;IGNORE;IGNORE
+<U308B> <U30EB>;<U308B>;IGNORE;IGNORE
+<U30EC> <U30EC>;<U30EC>;IGNORE;IGNORE
+<U308C> <U30EC>;<U308C>;IGNORE;IGNORE
+<U30ED> <U30ED>;<U30ED>;IGNORE;IGNORE
+<U308D> <U30ED>;<U308D>;IGNORE;IGNORE
+<U30EE> <U30EE>;<U30EE>;IGNORE;IGNORE
+<U308E> <U30EE>;<U308E>;IGNORE;IGNORE
+<U30EF> <U30EE>;<U30EF>;IGNORE;IGNORE
+<U308F> <U30EE>;<U308F>;IGNORE;IGNORE
+<U30F0> <U30F0>;<U30F0>;IGNORE;IGNORE
+<U3090> <U30F0>;<U3090>;IGNORE;IGNORE
+<U30F1> <U30F1>;<U30F1>;IGNORE;IGNORE
+<U3091> <U30F1>;<U3091>;IGNORE;IGNORE
+<U30F2> <U30F2>;<U30F2>;IGNORE;IGNORE
+<U3092> <U30F2>;<U3092>;IGNORE;IGNORE
+<U30F3> <U30F3>;<U30F3>;IGNORE;IGNORE
+<U3093> <U30F3>;<U3093>;IGNORE;IGNORE
+
+order_end
+
diff --git a/ap/build/uClibc/extra/locale/collation/es_GT b/ap/build/uClibc/extra/locale/collation/es_GT
new file mode 100644
index 0000000..09fd11b
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/es_GT
@@ -0,0 +1 @@
+copy "es_ES"
diff --git a/ap/build/uClibc/extra/locale/collation/es_HN b/ap/build/uClibc/extra/locale/collation/es_HN
new file mode 100644
index 0000000..09fd11b
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/es_HN
@@ -0,0 +1 @@
+copy "es_ES"
diff --git a/ap/build/uClibc/extra/locale/collation/es_MX b/ap/build/uClibc/extra/locale/collation/es_MX
new file mode 100644
index 0000000..09fd11b
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/es_MX
@@ -0,0 +1 @@
+copy "es_ES"
diff --git a/ap/build/uClibc/extra/locale/collation/es_NI b/ap/build/uClibc/extra/locale/collation/es_NI
new file mode 100644
index 0000000..09fd11b
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/es_NI
@@ -0,0 +1 @@
+copy "es_ES"
diff --git a/ap/build/uClibc/extra/locale/collation/es_PA b/ap/build/uClibc/extra/locale/collation/es_PA
new file mode 100644
index 0000000..09fd11b
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/es_PA
@@ -0,0 +1 @@
+copy "es_ES"
diff --git a/ap/build/uClibc/extra/locale/collation/es_PE b/ap/build/uClibc/extra/locale/collation/es_PE
new file mode 100644
index 0000000..09fd11b
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/es_PE
@@ -0,0 +1 @@
+copy "es_ES"
diff --git a/ap/build/uClibc/extra/locale/collation/es_PR b/ap/build/uClibc/extra/locale/collation/es_PR
new file mode 100644
index 0000000..09fd11b
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/es_PR
@@ -0,0 +1 @@
+copy "es_ES"
diff --git a/ap/build/uClibc/extra/locale/collation/es_PY b/ap/build/uClibc/extra/locale/collation/es_PY
new file mode 100644
index 0000000..09fd11b
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/es_PY
@@ -0,0 +1 @@
+copy "es_ES"
diff --git a/ap/build/uClibc/extra/locale/collation/es_SV b/ap/build/uClibc/extra/locale/collation/es_SV
new file mode 100644
index 0000000..09fd11b
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/es_SV
@@ -0,0 +1 @@
+copy "es_ES"
diff --git a/ap/build/uClibc/extra/locale/collation/es_US b/ap/build/uClibc/extra/locale/collation/es_US
new file mode 100644
index 0000000..56a4f36
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/es_US
@@ -0,0 +1,2077 @@
+collating-element <C-H> from "<U0043><U0048>"
+collating-element <c-h> from "<U0063><U0068>"
+collating-element <C-h> from "<U0043><U0068>"
+collating-element <c-H> from "<U0063><U0048>"
+collating-element <L-L> from "<U004C><U004C>"
+collating-element <l-l> from "<U006C><U006C>"
+collating-element <L-l> from "<U004C><U006C>"
+collating-element <l-L> from "<U006C><U004C>"
+
+% Base collation scheme: 1994-03-22
+
+% Ordering algorithm:
+% 1. Spaces and hyphen (but not soft
+% hyphen) before punctuation
+% characters, punctuation characters
+% before numbers,
+% numbers before letters.
+% 2. Letters with diacritical marks are
+% members of equivalence classes
+% 3. A distinction is made with regards
+% to case as noted below.
+% 4. Special characters are ignored
+% when comparing letters, but then
+% they are considered
+% 5. The alphabets are sorted in order
+% of first appearance in ISO 10646:
+% Latin, Greek, Cyrillic, etc.
+%
+% According to Greek specifications,
+% the steps 2. and 3. above are reversed
+% for the Greek script
+
+% collating symbols
+
+% The collating symbol naming is
+% mostly taken from ISO 10646-1,
+% for example the case and accent
+% names are from this standard.
+
+collating-symbol <CAPITAL>
+collating-symbol <CAPITAL-SMALL>
+collating-symbol <SMALL-CAPITAL>
+collating-symbol <SMALL>
+
+% <CAPITAL-SMALL> and <SMALL-CAPITAL>
+% are for cases like Danish <U0041><U0061>
+% and Spanish <U0043><U0068> being treated
+% as one letter.
+
+% The <a8> ...... <z8> collating
+% symbols have defined weights as
+% the last character in a group of
+% Latin letters. They are used
+% to specify deltas by locales using
+% a locale as the default ordering
+% and by "replace-after" statements
+% specifying the changed placement
+% in an ordering of a character.
+
+collating-symbol <a8>
+collating-symbol <b8>
+collating-symbol <c8>
+collating-symbol <d8>
+collating-symbol <e8>
+collating-symbol <f8>
+collating-symbol <g8>
+collating-symbol <h8>
+collating-symbol <i8>
+collating-symbol <j8>
+collating-symbol <k8>
+collating-symbol <l8>
+collating-symbol <m8>
+collating-symbol <n8>
+collating-symbol <o8>
+collating-symbol <p8>
+collating-symbol <q8>
+collating-symbol <r8>
+collating-symbol <s8>
+collating-symbol <t8>
+collating-symbol <u8>
+collating-symbol <v8>
+collating-symbol <w8>
+collating-symbol <x8>
+collating-symbol <y8>
+collating-symbol <z8>
+
+collating-symbol <NONE>
+collating-symbol <ACUTE>
+collating-symbol <ACUTE+DOT>
+collating-symbol <GRAVE>
+collating-symbol <DOUBLE-GRAVE>
+collating-symbol <BREVE>
+collating-symbol <BREVE+ACUTE>
+collating-symbol <BREVE+GRAVE>
+collating-symbol <BREVE+MACRON>
+collating-symbol <BREVE+HOOK>
+collating-symbol <BREVE+TILDE>
+collating-symbol <BREVE+DOT-BELOW>
+collating-symbol <BREVE-BELOW>
+collating-symbol <INVERTED-BREVE>
+collating-symbol <CIRCUMFLEX>
+collating-symbol <CIRCUMFLEX+ACUTE>
+collating-symbol <CIRCUMFLEX+GRAVE>
+collating-symbol <CIRCUMFLEX+HOOK>
+collating-symbol <CIRCUMFLEX+TILDE>
+collating-symbol <CIRCUMFLEX+DOT-BELOW>
+collating-symbol <CARON>
+collating-symbol <CARON+DIAERESIS>
+collating-symbol <CARON+DOT>
+collating-symbol <RING>
+collating-symbol <RING+ACUTE>
+collating-symbol <RING-BELOW>
+collating-symbol <DIAERESIS>
+collating-symbol <DIAERESIS+MACRON>
+collating-symbol <DIAERESIS+ACUTE>
+collating-symbol <DIAERESIS+GRAVE>
+collating-symbol <DIAERESIS+CARON>
+collating-symbol <DOUBLE-ACUTE>
+collating-symbol <HOOK>
+collating-symbol <TILDE>
+collating-symbol <TILDE+ACUTE>
+collating-symbol <TILDE+DIAERESIS>
+collating-symbol <TILDE-BELOW>
+collating-symbol <DOT>
+collating-symbol <DOT-BELOW>
+collating-symbol <DOT+DOT-BELOW>
+collating-symbol <STROKE>
+collating-symbol <STROKE+ACUTE>
+collating-symbol <CEDILLA>
+collating-symbol <CEDILLA+ACUTE>
+collating-symbol <CEDILLA+GRAVE>
+collating-symbol <CEDILLA+BREVE>
+collating-symbol <OGONEK>
+collating-symbol <OGONEK+MACRON>
+collating-symbol <MACRON>
+collating-symbol <MACRON+ACUTE>
+collating-symbol <MACRON+GRAVE>
+collating-symbol <MACRON+DIAERESIS>
+collating-symbol <MACRON+DIAERESIS-BELOW>
+collating-symbol <MACRON+DOT>
+collating-symbol <MACRON+DOT-BELOW>
+collating-symbol <MACRON+CIRCUMFLEX>
+collating-symbol <LINE-BELOW>
+collating-symbol <HORN>
+collating-symbol <HORN+ACUTE>
+collating-symbol <HORN+GRAVE>
+collating-symbol <HORN+HOOK>
+collating-symbol <HORN+TILDE>
+collating-symbol <HORN+DOT-BELOW>
+collating-symbol <PRECEDED-BY-APOSTROPHE>
+collating-symbol <GREEK>
+collating-symbol <TONOS>
+collating-symbol <DIALYTICA>
+collating-symbol <DIALYTICA+TONOS>
+collating-symbol <CYRILLIC>
+collating-symbol <HIRAGANA>
+collating-symbol <KATAKANA>
+collating-symbol <SPECIAL>
+
+% letter;accent;case;specials
+
+order_start forward;backward;forward;position
+
+% <CAPITAL> or <SMALL> letters first:
+
+<SMALL>
+<SMALL-CAPITAL>
+<CAPITAL-SMALL>
+<CAPITAL>
+
+% Accents:
+
+<NONE>
+<ACUTE>
+<ACUTE+DOT>
+<GRAVE>
+<DOUBLE-GRAVE>
+<BREVE>
+<BREVE+ACUTE>
+<BREVE+GRAVE>
+<BREVE+MACRON>
+<BREVE+HOOK>
+<BREVE+TILDE>
+<BREVE+DOT-BELOW>
+<BREVE-BELOW>
+<INVERTED-BREVE>
+<CIRCUMFLEX>
+<CIRCUMFLEX+ACUTE>
+<CIRCUMFLEX+GRAVE>
+<CIRCUMFLEX+HOOK>
+<CIRCUMFLEX+TILDE>
+<CIRCUMFLEX+DOT-BELOW>
+<CARON>
+<CARON+DIAERESIS>
+<CARON+DOT>
+<RING>
+<RING+ACUTE>
+<RING-BELOW>
+<DIAERESIS>
+<DIAERESIS+MACRON>
+<DIAERESIS+ACUTE>
+<DIAERESIS+GRAVE>
+<DIAERESIS+CARON>
+<DOUBLE-ACUTE>
+<HOOK>
+<TILDE>
+<TILDE+ACUTE>
+<TILDE+DIAERESIS>
+<TILDE-BELOW>
+<DOT>
+<DOT-BELOW>
+<DOT+DOT-BELOW>
+<STROKE>
+<STROKE+ACUTE>
+<CEDILLA>
+<CEDILLA+ACUTE>
+<CEDILLA+GRAVE>
+<CEDILLA+BREVE>
+<OGONEK>
+<OGONEK+MACRON>
+<MACRON>
+<MACRON+ACUTE>
+<MACRON+GRAVE>
+<MACRON+DIAERESIS>
+<MACRON+DIAERESIS-BELOW>
+<MACRON+DOT>
+<MACRON+DOT-BELOW>
+<MACRON+CIRCUMFLEX>
+<LINE-BELOW>
+<HORN>
+<HORN+ACUTE>
+<HORN+GRAVE>
+<HORN+HOOK>
+<HORN+TILDE>
+<HORN+DOT-BELOW>
+<PRECEDED-BY-APOSTROPHE>
+<GREEK>
+<TONOS>
+<DIALYTICA>
+<DIALYTICA+TONOS>
+<CYRILLIC>
+<HIRAGANA>
+<KATAKANA>
+<SPECIAL>
+
+<U00A0> <U00A0>;<U00A0>;<U00A0>;IGNORE
+<U0020> IGNORE;IGNORE;IGNORE;<U0020>
+<U0009> IGNORE;IGNORE;IGNORE;<U0009>
+<U000B> IGNORE;IGNORE;IGNORE;<U000B>
+<U000D> IGNORE;IGNORE;IGNORE;<U000D>
+<U000A> IGNORE;IGNORE;IGNORE;<U000A>
+<U000C> IGNORE;IGNORE;IGNORE;<U000C>
+<U005F> IGNORE;IGNORE;IGNORE;<U005F>
+<U00AF> IGNORE;IGNORE;IGNORE;<U00AF>
+<U00AD> IGNORE;IGNORE;IGNORE;<U00AD>
+<U002D> IGNORE;IGNORE;IGNORE;<U002D>
+<U002C> IGNORE;IGNORE;IGNORE;<U002C>
+<U003B> IGNORE;IGNORE;IGNORE;<U003B>
+<U003A> IGNORE;IGNORE;IGNORE;<U003A>
+<U0021> IGNORE;IGNORE;IGNORE;<U0021>
+<U00A1> IGNORE;IGNORE;IGNORE;<U00A1>
+<U003F> IGNORE;IGNORE;IGNORE;<U003F>
+<U00BF> IGNORE;IGNORE;IGNORE;<U00BF>
+<U002F> IGNORE;IGNORE;IGNORE;<U002F>
+<U002E> IGNORE;IGNORE;IGNORE;<U002E>
+<U00B4> IGNORE;IGNORE;IGNORE;<U00B4>
+<U0060> IGNORE;IGNORE;IGNORE;<U0060>
+<U005E> IGNORE;IGNORE;IGNORE;<U005E>
+<U00A8> IGNORE;IGNORE;IGNORE;<U00A8>
+<U007E> IGNORE;IGNORE;IGNORE;<U007E>
+<U00B7> IGNORE;IGNORE;IGNORE;<U00B7>
+<U00B8> IGNORE;IGNORE;IGNORE;<U00B8>
+<U0027> IGNORE;IGNORE;IGNORE;<U0027>
+<U2018> IGNORE;IGNORE;IGNORE;<U2018>
+<U2019> IGNORE;IGNORE;IGNORE;<U2019>
+<U0022> IGNORE;IGNORE;IGNORE;<U0022>
+<U201C> IGNORE;IGNORE;IGNORE;<U201C>
+<U201D> IGNORE;IGNORE;IGNORE;<U201D>
+<U00AB> IGNORE;IGNORE;IGNORE;<U00AB>
+<U00BB> IGNORE;IGNORE;IGNORE;<U00BB>
+<U0028> IGNORE;IGNORE;IGNORE;<U0028>
+<U207D> IGNORE;IGNORE;IGNORE;<U207D>
+<U0029> IGNORE;IGNORE;IGNORE;<U0029>
+<U207E> IGNORE;IGNORE;IGNORE;<U207E>
+<U005B> IGNORE;IGNORE;IGNORE;<U005B>
+<U005D> IGNORE;IGNORE;IGNORE;<U005D>
+<U007B> IGNORE;IGNORE;IGNORE;<U007B>
+<U007D> IGNORE;IGNORE;IGNORE;<U007D>
+<U00A7> IGNORE;IGNORE;IGNORE;<U00A7>
+<U00B6> IGNORE;IGNORE;IGNORE;<U00B6>
+<U00A9> IGNORE;IGNORE;IGNORE;<U00A9>
+<U00AE> IGNORE;IGNORE;IGNORE;<U00AE>
+<U0040> IGNORE;IGNORE;IGNORE;<U0040>
+<U00A4> IGNORE;IGNORE;IGNORE;<U00A4>
+<U00A2> IGNORE;IGNORE;IGNORE;<U00A2>
+<U0024> IGNORE;IGNORE;IGNORE;<U0024>
+<U00A3> IGNORE;IGNORE;IGNORE;<U00A3>
+<U00A5> IGNORE;IGNORE;IGNORE;<U00A5>
+<U002A> IGNORE;IGNORE;IGNORE;<U002A>
+<U005C> IGNORE;IGNORE;IGNORE;<U005C>
+<U0026> IGNORE;IGNORE;IGNORE;<U0026>
+<U0023> IGNORE;IGNORE;IGNORE;<U0023>
+<U0025> IGNORE;IGNORE;IGNORE;<U0025>
+<U207B> IGNORE;IGNORE;IGNORE;<U207B>
+<U002B> IGNORE;IGNORE;IGNORE;<U002B>
+<U207A> IGNORE;IGNORE;IGNORE;<U207A>
+<U00B1> IGNORE;IGNORE;IGNORE;<U00B1>
+<U00F7> IGNORE;IGNORE;IGNORE;<U00F7>
+<U00D7> IGNORE;IGNORE;IGNORE;<U00D7>
+<U2260> IGNORE;IGNORE;IGNORE;<U2260>
+<U003C> IGNORE;IGNORE;IGNORE;<U003C>
+<U2264> IGNORE;IGNORE;IGNORE;<U2264>
+<U003D> IGNORE;IGNORE;IGNORE;<U003D>
+<U2265> IGNORE;IGNORE;IGNORE;<U2265>
+<U003E> IGNORE;IGNORE;IGNORE;<U003E>
+<U00AC> IGNORE;IGNORE;IGNORE;<U00AC>
+<U007C> IGNORE;IGNORE;IGNORE;<U007C>
+<U00A6> IGNORE;IGNORE;IGNORE;<U00A6>
+<U00B0> IGNORE;IGNORE;IGNORE;<U00B0>
+<U00B5> IGNORE;IGNORE;IGNORE;<U00B5>
+<U02C7> IGNORE;IGNORE;IGNORE;<U02C7>
+<U02D8> IGNORE;IGNORE;IGNORE;<U02D8>
+<U02D9> IGNORE;IGNORE;IGNORE;<U02D9>
+<U02DA> IGNORE;IGNORE;IGNORE;<U02DA>
+<U02DB> IGNORE;IGNORE;IGNORE;<U02DB>
+<U02DC> IGNORE;IGNORE;IGNORE;<U02DC>
+<U02DD> IGNORE;IGNORE;IGNORE;<U02DD>
+<U0374> IGNORE;IGNORE;IGNORE;<U0374>
+<U0375> IGNORE;IGNORE;IGNORE;<U0375>
+<U037A> IGNORE;IGNORE;IGNORE;<U037A>
+<U037E> IGNORE;IGNORE;IGNORE;<U037E>
+<U0384> IGNORE;IGNORE;IGNORE;<U0384>
+<U0385> IGNORE;IGNORE;IGNORE;<U0385>
+<U0387> IGNORE;IGNORE;IGNORE;<U0387>
+<U03D0> IGNORE;IGNORE;IGNORE;<U03D0>
+<U1FBF> IGNORE;IGNORE;IGNORE;<U1FBF>
+<U1FC0> IGNORE;IGNORE;IGNORE;<U1FC0>
+<U1FC1> IGNORE;IGNORE;IGNORE;<U1FC1>
+<U1FCD> IGNORE;IGNORE;IGNORE;<U1FCD>
+<U1FCE> IGNORE;IGNORE;IGNORE;<U1FCE>
+<U1FCF> IGNORE;IGNORE;IGNORE;<U1FCF>
+<U1FDD> IGNORE;IGNORE;IGNORE;<U1FDD>
+<U1FDE> IGNORE;IGNORE;IGNORE;<U1FDE>
+<U1FDF> IGNORE;IGNORE;IGNORE;<U1FDF>
+<U1FED> IGNORE;IGNORE;IGNORE;<U1FED>
+<U1FEF> IGNORE;IGNORE;IGNORE;<U1FEF>
+<U1FFE> IGNORE;IGNORE;IGNORE;<U1FFE>
+<U2002> IGNORE;IGNORE;IGNORE;<U2002>
+<U2003> IGNORE;IGNORE;IGNORE;<U2003>
+<U2004> IGNORE;IGNORE;IGNORE;<U2004>
+<U2005> IGNORE;IGNORE;IGNORE;<U2005>
+<U2006> IGNORE;IGNORE;IGNORE;<U2006>
+<U200E> IGNORE;IGNORE;IGNORE;<U200E>
+<U200F> IGNORE;IGNORE;IGNORE;<U200F>
+<U2009> IGNORE;IGNORE;IGNORE;<U2009>
+<U200A> IGNORE;IGNORE;IGNORE;<U200A>
+<U2010> IGNORE;IGNORE;IGNORE;<U2010>
+<U2013> IGNORE;IGNORE;IGNORE;<U2013>
+<U2014> IGNORE;IGNORE;IGNORE;<U2014>
+<U2015> IGNORE;IGNORE;IGNORE;<U2015>
+<U2016> IGNORE;IGNORE;IGNORE;<U2016>
+<U2017> IGNORE;IGNORE;IGNORE;<U2017>
+<U201A> IGNORE;IGNORE;IGNORE;<U201A>
+<U201B> IGNORE;IGNORE;IGNORE;<U201B>
+<U201E> IGNORE;IGNORE;IGNORE;<U201E>
+<U201F> IGNORE;IGNORE;IGNORE;<U201F>
+<U2020> IGNORE;IGNORE;IGNORE;<U2020>
+<U2021> IGNORE;IGNORE;IGNORE;<U2021>
+<U2219> IGNORE;IGNORE;IGNORE;<U2219>
+<U2025> IGNORE;IGNORE;IGNORE;<U2025>
+<U2026> IGNORE;IGNORE;IGNORE;<U2026>
+<U2030> IGNORE;IGNORE;IGNORE;<U2030>
+<U2032> IGNORE;IGNORE;IGNORE;<U2032>
+<U2033> IGNORE;IGNORE;IGNORE;<U2033>
+<U2034> IGNORE;IGNORE;IGNORE;<U2034>
+<U2035> IGNORE;IGNORE;IGNORE;<U2035>
+<U2036> IGNORE;IGNORE;IGNORE;<U2036>
+<U2037> IGNORE;IGNORE;IGNORE;<U2037>
+<U2038> IGNORE;IGNORE;IGNORE;<U2038>
+<U2039> IGNORE;IGNORE;IGNORE;<U2039>
+<U203A> IGNORE;IGNORE;IGNORE;<U203A>
+<U203B> IGNORE;IGNORE;IGNORE;<U203B>
+<U203C> IGNORE;IGNORE;IGNORE;<U203C>
+<U203E> IGNORE;IGNORE;IGNORE;<U203E>
+<U207C> IGNORE;IGNORE;IGNORE;<U207C>
+<U2080> IGNORE;IGNORE;IGNORE;<U2080>
+<U2081> IGNORE;IGNORE;IGNORE;<U2081>
+<U2082> IGNORE;IGNORE;IGNORE;<U2082>
+<U2083> IGNORE;IGNORE;IGNORE;<U2083>
+<U2084> IGNORE;IGNORE;IGNORE;<U2084>
+<U2085> IGNORE;IGNORE;IGNORE;<U2085>
+<U2086> IGNORE;IGNORE;IGNORE;<U2086>
+<U2087> IGNORE;IGNORE;IGNORE;<U2087>
+<U2088> IGNORE;IGNORE;IGNORE;<U2088>
+<U2089> IGNORE;IGNORE;IGNORE;<U2089>
+<U208A> IGNORE;IGNORE;IGNORE;<U208A>
+<U208B> IGNORE;IGNORE;IGNORE;<U208B>
+<U208C> IGNORE;IGNORE;IGNORE;<U208C>
+<U208D> IGNORE;IGNORE;IGNORE;<U208D>
+<U208E> IGNORE;IGNORE;IGNORE;<U208E>
+<U20A3> IGNORE;IGNORE;IGNORE;<U20A3>
+<U20A4> IGNORE;IGNORE;IGNORE;<U20A4>
+<U20A7> IGNORE;IGNORE;IGNORE;<U20A7>
+<U20A9> IGNORE;IGNORE;IGNORE;<U20A9>
+<U2103> IGNORE;IGNORE;IGNORE;<U2103>
+<U2105> IGNORE;IGNORE;IGNORE;<U2105>
+<U2109> IGNORE;IGNORE;IGNORE;<U2109>
+<U2116> IGNORE;IGNORE;IGNORE;<U2116>
+<U2117> IGNORE;IGNORE;IGNORE;<U2117>
+<U211E> IGNORE;IGNORE;IGNORE;<U211E>
+<U2120> IGNORE;IGNORE;IGNORE;<U2120>
+<U2122> IGNORE;IGNORE;IGNORE;<U2122>
+<U2126> IGNORE;IGNORE;IGNORE;<U2126>
+<U212B> IGNORE;IGNORE;IGNORE;<U212B>
+<U2153> IGNORE;IGNORE;IGNORE;<U2153>
+<U2154> IGNORE;IGNORE;IGNORE;<U2154>
+<U2155> IGNORE;IGNORE;IGNORE;<U2155>
+<U2156> IGNORE;IGNORE;IGNORE;<U2156>
+<U2157> IGNORE;IGNORE;IGNORE;<U2157>
+<U2158> IGNORE;IGNORE;IGNORE;<U2158>
+<U2159> IGNORE;IGNORE;IGNORE;<U2159>
+<U215A> IGNORE;IGNORE;IGNORE;<U215A>
+<U2160> IGNORE;IGNORE;IGNORE;<U2160>
+<U2161> IGNORE;IGNORE;IGNORE;<U2161>
+<U2162> IGNORE;IGNORE;IGNORE;<U2162>
+<U2163> IGNORE;IGNORE;IGNORE;<U2163>
+<U2164> IGNORE;IGNORE;IGNORE;<U2164>
+<U2165> IGNORE;IGNORE;IGNORE;<U2165>
+<U2166> IGNORE;IGNORE;IGNORE;<U2166>
+<U2167> IGNORE;IGNORE;IGNORE;<U2167>
+<U2168> IGNORE;IGNORE;IGNORE;<U2168>
+<U2169> IGNORE;IGNORE;IGNORE;<U2169>
+<U216A> IGNORE;IGNORE;IGNORE;<U216A>
+<U216B> IGNORE;IGNORE;IGNORE;<U216B>
+<U216C> IGNORE;IGNORE;IGNORE;<U216C>
+<U216D> IGNORE;IGNORE;IGNORE;<U216D>
+<U216E> IGNORE;IGNORE;IGNORE;<U216E>
+<U216F> IGNORE;IGNORE;IGNORE;<U216F>
+<U2170> IGNORE;IGNORE;IGNORE;<U2170>
+<U2171> IGNORE;IGNORE;IGNORE;<U2171>
+<U2172> IGNORE;IGNORE;IGNORE;<U2172>
+<U2173> IGNORE;IGNORE;IGNORE;<U2173>
+<U2174> IGNORE;IGNORE;IGNORE;<U2174>
+<U2175> IGNORE;IGNORE;IGNORE;<U2175>
+<U2176> IGNORE;IGNORE;IGNORE;<U2176>
+<U2177> IGNORE;IGNORE;IGNORE;<U2177>
+<U2178> IGNORE;IGNORE;IGNORE;<U2178>
+<U2179> IGNORE;IGNORE;IGNORE;<U2179>
+<U217A> IGNORE;IGNORE;IGNORE;<U217A>
+<U217B> IGNORE;IGNORE;IGNORE;<U217B>
+<U217C> IGNORE;IGNORE;IGNORE;<U217C>
+<U217D> IGNORE;IGNORE;IGNORE;<U217D>
+<U217E> IGNORE;IGNORE;IGNORE;<U217E>
+<U217F> IGNORE;IGNORE;IGNORE;<U217F>
+<U2180> IGNORE;IGNORE;IGNORE;<U2180>
+<U2181> IGNORE;IGNORE;IGNORE;<U2181>
+<U2182> IGNORE;IGNORE;IGNORE;<U2182>
+<U2191> IGNORE;IGNORE;IGNORE;<U2191>
+<U2193> IGNORE;IGNORE;IGNORE;<U2193>
+<U2194> IGNORE;IGNORE;IGNORE;<U2194>
+<U2195> IGNORE;IGNORE;IGNORE;<U2195>
+<U2196> IGNORE;IGNORE;IGNORE;<U2196>
+<U2197> IGNORE;IGNORE;IGNORE;<U2197>
+<U2198> IGNORE;IGNORE;IGNORE;<U2198>
+<U2199> IGNORE;IGNORE;IGNORE;<U2199>
+<U21A8> IGNORE;IGNORE;IGNORE;<U21A8>
+<U21C0> IGNORE;IGNORE;IGNORE;<U21C0>
+<U21D0> IGNORE;IGNORE;IGNORE;<U21D0>
+<U21D2> IGNORE;IGNORE;IGNORE;<U21D2>
+<U21D4> IGNORE;IGNORE;IGNORE;<U21D4>
+<U2200> IGNORE;IGNORE;IGNORE;<U2200>
+<U2202> IGNORE;IGNORE;IGNORE;<U2202>
+<U2203> IGNORE;IGNORE;IGNORE;<U2203>
+<U2205> IGNORE;IGNORE;IGNORE;<U2205>
+<U2206> IGNORE;IGNORE;IGNORE;<U2206>
+<U2207> IGNORE;IGNORE;IGNORE;<U2207>
+<U2208> IGNORE;IGNORE;IGNORE;<U2208>
+<U220B> IGNORE;IGNORE;IGNORE;<U220B>
+<U220F> IGNORE;IGNORE;IGNORE;<U220F>
+<U2211> IGNORE;IGNORE;IGNORE;<U2211>
+<U2212> IGNORE;IGNORE;IGNORE;<U2212>
+<U2213> IGNORE;IGNORE;IGNORE;<U2213>
+<U2214> IGNORE;IGNORE;IGNORE;<U2214>
+<U2044> IGNORE;IGNORE;IGNORE;<U2044>
+<U2217> IGNORE;IGNORE;IGNORE;<U2217>
+<U2218> IGNORE;IGNORE;IGNORE;<U2218>
+<U2022> IGNORE;IGNORE;IGNORE;<U2022>
+<U221A> IGNORE;IGNORE;IGNORE;<U221A>
+<U221D> IGNORE;IGNORE;IGNORE;<U221D>
+<U221E> IGNORE;IGNORE;IGNORE;<U221E>
+<U221F> IGNORE;IGNORE;IGNORE;<U221F>
+<U2220> IGNORE;IGNORE;IGNORE;<U2220>
+<U2225> IGNORE;IGNORE;IGNORE;<U2225>
+<U2227> IGNORE;IGNORE;IGNORE;<U2227>
+<U2228> IGNORE;IGNORE;IGNORE;<U2228>
+<U2229> IGNORE;IGNORE;IGNORE;<U2229>
+<U222A> IGNORE;IGNORE;IGNORE;<U222A>
+<U222B> IGNORE;IGNORE;IGNORE;<U222B>
+<U222C> IGNORE;IGNORE;IGNORE;<U222C>
+<U222E> IGNORE;IGNORE;IGNORE;<U222E>
+<U2234> IGNORE;IGNORE;IGNORE;<U2234>
+<U2235> IGNORE;IGNORE;IGNORE;<U2235>
+<U2236> IGNORE;IGNORE;IGNORE;<U2236>
+<U2237> IGNORE;IGNORE;IGNORE;<U2237>
+<U223C> IGNORE;IGNORE;IGNORE;<U223C>
+<U223E> IGNORE;IGNORE;IGNORE;<U223E>
+<U2243> IGNORE;IGNORE;IGNORE;<U2243>
+<U2245> IGNORE;IGNORE;IGNORE;<U2245>
+<U2248> IGNORE;IGNORE;IGNORE;<U2248>
+<U224C> IGNORE;IGNORE;IGNORE;<U224C>
+<U2253> IGNORE;IGNORE;IGNORE;<U2253>
+<U2261> IGNORE;IGNORE;IGNORE;<U2261>
+<U226A> IGNORE;IGNORE;IGNORE;<U226A>
+<U226B> IGNORE;IGNORE;IGNORE;<U226B>
+<U226E> IGNORE;IGNORE;IGNORE;<U226E>
+<U226F> IGNORE;IGNORE;IGNORE;<U226F>
+<U2282> IGNORE;IGNORE;IGNORE;<U2282>
+<U2283> IGNORE;IGNORE;IGNORE;<U2283>
+<U2286> IGNORE;IGNORE;IGNORE;<U2286>
+<U2287> IGNORE;IGNORE;IGNORE;<U2287>
+<U2299> IGNORE;IGNORE;IGNORE;<U2299>
+<U229A> IGNORE;IGNORE;IGNORE;<U229A>
+<U22A5> IGNORE;IGNORE;IGNORE;<U22A5>
+<U22C5> IGNORE;IGNORE;IGNORE;<U22C5>
+<U22EE> IGNORE;IGNORE;IGNORE;<U22EE>
+<U2302> IGNORE;IGNORE;IGNORE;<U2302>
+<U2308> IGNORE;IGNORE;IGNORE;<U2308>
+<U2309> IGNORE;IGNORE;IGNORE;<U2309>
+<U230A> IGNORE;IGNORE;IGNORE;<U230A>
+<U230B> IGNORE;IGNORE;IGNORE;<U230B>
+<U2310> IGNORE;IGNORE;IGNORE;<U2310>
+<U2312> IGNORE;IGNORE;IGNORE;<U2312>
+<U2315> IGNORE;IGNORE;IGNORE;<U2315>
+<U2320> IGNORE;IGNORE;IGNORE;<U2320>
+<U2321> IGNORE;IGNORE;IGNORE;<U2321>
+<U2423> IGNORE;IGNORE;IGNORE;<U2423>
+<U2440> IGNORE;IGNORE;IGNORE;<U2440>
+<U2441> IGNORE;IGNORE;IGNORE;<U2441>
+<U2442> IGNORE;IGNORE;IGNORE;<U2442>
+<U2443> IGNORE;IGNORE;IGNORE;<U2443>
+<U2446> IGNORE;IGNORE;IGNORE;<U2446>
+<U2447> IGNORE;IGNORE;IGNORE;<U2447>
+<U2448> IGNORE;IGNORE;IGNORE;<U2448>
+<U2449> IGNORE;IGNORE;IGNORE;<U2449>
+<U2460> IGNORE;IGNORE;IGNORE;<U2460>
+<U2461> IGNORE;IGNORE;IGNORE;<U2461>
+<U2462> IGNORE;IGNORE;IGNORE;<U2462>
+<U2463> IGNORE;IGNORE;IGNORE;<U2463>
+<U2464> IGNORE;IGNORE;IGNORE;<U2464>
+<U2465> IGNORE;IGNORE;IGNORE;<U2465>
+<U2466> IGNORE;IGNORE;IGNORE;<U2466>
+<U2467> IGNORE;IGNORE;IGNORE;<U2467>
+<U2468> IGNORE;IGNORE;IGNORE;<U2468>
+<U2469> IGNORE;IGNORE;IGNORE;<U2469>
+<U246A> IGNORE;IGNORE;IGNORE;<U246A>
+<U246B> IGNORE;IGNORE;IGNORE;<U246B>
+<U246C> IGNORE;IGNORE;IGNORE;<U246C>
+<U246D> IGNORE;IGNORE;IGNORE;<U246D>
+<U246E> IGNORE;IGNORE;IGNORE;<U246E>
+<U246F> IGNORE;IGNORE;IGNORE;<U246F>
+<U2470> IGNORE;IGNORE;IGNORE;<U2470>
+<U2471> IGNORE;IGNORE;IGNORE;<U2471>
+<U2472> IGNORE;IGNORE;IGNORE;<U2472>
+<U2473> IGNORE;IGNORE;IGNORE;<U2473>
+<U2474> IGNORE;IGNORE;IGNORE;<U2474>
+<U2475> IGNORE;IGNORE;IGNORE;<U2475>
+<U2476> IGNORE;IGNORE;IGNORE;<U2476>
+<U2477> IGNORE;IGNORE;IGNORE;<U2477>
+<U2478> IGNORE;IGNORE;IGNORE;<U2478>
+<U2479> IGNORE;IGNORE;IGNORE;<U2479>
+<U247A> IGNORE;IGNORE;IGNORE;<U247A>
+<U247B> IGNORE;IGNORE;IGNORE;<U247B>
+<U247C> IGNORE;IGNORE;IGNORE;<U247C>
+<U247D> IGNORE;IGNORE;IGNORE;<U247D>
+<U247E> IGNORE;IGNORE;IGNORE;<U247E>
+<U247F> IGNORE;IGNORE;IGNORE;<U247F>
+<U2480> IGNORE;IGNORE;IGNORE;<U2480>
+<U2481> IGNORE;IGNORE;IGNORE;<U2481>
+<U2482> IGNORE;IGNORE;IGNORE;<U2482>
+<U2483> IGNORE;IGNORE;IGNORE;<U2483>
+<U2484> IGNORE;IGNORE;IGNORE;<U2484>
+<U2485> IGNORE;IGNORE;IGNORE;<U2485>
+<U2486> IGNORE;IGNORE;IGNORE;<U2486>
+<U2487> IGNORE;IGNORE;IGNORE;<U2487>
+<U2488> IGNORE;IGNORE;IGNORE;<U2488>
+<U2489> IGNORE;IGNORE;IGNORE;<U2489>
+<U248A> IGNORE;IGNORE;IGNORE;<U248A>
+<U248B> IGNORE;IGNORE;IGNORE;<U248B>
+<U248C> IGNORE;IGNORE;IGNORE;<U248C>
+<U248D> IGNORE;IGNORE;IGNORE;<U248D>
+<U248E> IGNORE;IGNORE;IGNORE;<U248E>
+<U248F> IGNORE;IGNORE;IGNORE;<U248F>
+<U2490> IGNORE;IGNORE;IGNORE;<U2490>
+<U2491> IGNORE;IGNORE;IGNORE;<U2491>
+<U2492> IGNORE;IGNORE;IGNORE;<U2492>
+<U2493> IGNORE;IGNORE;IGNORE;<U2493>
+<U2494> IGNORE;IGNORE;IGNORE;<U2494>
+<U2495> IGNORE;IGNORE;IGNORE;<U2495>
+<U2496> IGNORE;IGNORE;IGNORE;<U2496>
+<U2497> IGNORE;IGNORE;IGNORE;<U2497>
+<U2498> IGNORE;IGNORE;IGNORE;<U2498>
+<U2499> IGNORE;IGNORE;IGNORE;<U2499>
+<U249A> IGNORE;IGNORE;IGNORE;<U249A>
+<U249B> IGNORE;IGNORE;IGNORE;<U249B>
+<U24EA> IGNORE;IGNORE;IGNORE;<U24EA>
+<U2500> IGNORE;IGNORE;IGNORE;<U2500>
+<U2550> IGNORE;IGNORE;IGNORE;<U2550>
+<U2502> IGNORE;IGNORE;IGNORE;<U2502>
+<U2551> IGNORE;IGNORE;IGNORE;<U2551>
+<U2504> IGNORE;IGNORE;IGNORE;<U2504>
+<U2505> IGNORE;IGNORE;IGNORE;<U2505>
+<U2506> IGNORE;IGNORE;IGNORE;<U2506>
+<U2507> IGNORE;IGNORE;IGNORE;<U2507>
+<U2508> IGNORE;IGNORE;IGNORE;<U2508>
+<U2509> IGNORE;IGNORE;IGNORE;<U2509>
+<U250A> IGNORE;IGNORE;IGNORE;<U250A>
+<U250B> IGNORE;IGNORE;IGNORE;<U250B>
+<U250C> IGNORE;IGNORE;IGNORE;<U250C>
+<U2552> IGNORE;IGNORE;IGNORE;<U2552>
+<U2553> IGNORE;IGNORE;IGNORE;<U2553>
+<U2554> IGNORE;IGNORE;IGNORE;<U2554>
+<U2510> IGNORE;IGNORE;IGNORE;<U2510>
+<U2555> IGNORE;IGNORE;IGNORE;<U2555>
+<U2556> IGNORE;IGNORE;IGNORE;<U2556>
+<U2557> IGNORE;IGNORE;IGNORE;<U2557>
+<U2514> IGNORE;IGNORE;IGNORE;<U2514>
+<U2558> IGNORE;IGNORE;IGNORE;<U2558>
+<U2559> IGNORE;IGNORE;IGNORE;<U2559>
+<U255A> IGNORE;IGNORE;IGNORE;<U255A>
+<U2518> IGNORE;IGNORE;IGNORE;<U2518>
+<U255B> IGNORE;IGNORE;IGNORE;<U255B>
+<U255C> IGNORE;IGNORE;IGNORE;<U255C>
+<U255D> IGNORE;IGNORE;IGNORE;<U255D>
+<U251C> IGNORE;IGNORE;IGNORE;<U251C>
+<U255E> IGNORE;IGNORE;IGNORE;<U255E>
+<U251E> IGNORE;IGNORE;IGNORE;<U251E>
+<U251F> IGNORE;IGNORE;IGNORE;<U251F>
+<U255F> IGNORE;IGNORE;IGNORE;<U255F>
+<U2521> IGNORE;IGNORE;IGNORE;<U2521>
+<U2522> IGNORE;IGNORE;IGNORE;<U2522>
+<U2560> IGNORE;IGNORE;IGNORE;<U2560>
+<U2524> IGNORE;IGNORE;IGNORE;<U2524>
+<U2561> IGNORE;IGNORE;IGNORE;<U2561>
+<U2526> IGNORE;IGNORE;IGNORE;<U2526>
+<U2527> IGNORE;IGNORE;IGNORE;<U2527>
+<U2562> IGNORE;IGNORE;IGNORE;<U2562>
+<U2529> IGNORE;IGNORE;IGNORE;<U2529>
+<U252A> IGNORE;IGNORE;IGNORE;<U252A>
+<U2563> IGNORE;IGNORE;IGNORE;<U2563>
+<U252C> IGNORE;IGNORE;IGNORE;<U252C>
+<U252D> IGNORE;IGNORE;IGNORE;<U252D>
+<U252E> IGNORE;IGNORE;IGNORE;<U252E>
+<U2564> IGNORE;IGNORE;IGNORE;<U2564>
+<U2565> IGNORE;IGNORE;IGNORE;<U2565>
+<U2531> IGNORE;IGNORE;IGNORE;<U2531>
+<U2532> IGNORE;IGNORE;IGNORE;<U2532>
+<U2566> IGNORE;IGNORE;IGNORE;<U2566>
+<U2534> IGNORE;IGNORE;IGNORE;<U2534>
+<U2535> IGNORE;IGNORE;IGNORE;<U2535>
+<U2536> IGNORE;IGNORE;IGNORE;<U2536>
+<U2567> IGNORE;IGNORE;IGNORE;<U2567>
+<U2568> IGNORE;IGNORE;IGNORE;<U2568>
+<U2539> IGNORE;IGNORE;IGNORE;<U2539>
+<U253A> IGNORE;IGNORE;IGNORE;<U253A>
+<U2569> IGNORE;IGNORE;IGNORE;<U2569>
+<U253C> IGNORE;IGNORE;IGNORE;<U253C>
+<U253D> IGNORE;IGNORE;IGNORE;<U253D>
+<U253E> IGNORE;IGNORE;IGNORE;<U253E>
+<U256A> IGNORE;IGNORE;IGNORE;<U256A>
+<U2540> IGNORE;IGNORE;IGNORE;<U2540>
+<U2541> IGNORE;IGNORE;IGNORE;<U2541>
+<U256B> IGNORE;IGNORE;IGNORE;<U256B>
+<U2543> IGNORE;IGNORE;IGNORE;<U2543>
+<U2544> IGNORE;IGNORE;IGNORE;<U2544>
+<U2545> IGNORE;IGNORE;IGNORE;<U2545>
+<U2546> IGNORE;IGNORE;IGNORE;<U2546>
+<U2547> IGNORE;IGNORE;IGNORE;<U2547>
+<U2548> IGNORE;IGNORE;IGNORE;<U2548>
+<U2549> IGNORE;IGNORE;IGNORE;<U2549>
+<U254A> IGNORE;IGNORE;IGNORE;<U254A>
+<U256C> IGNORE;IGNORE;IGNORE;<U256C>
+<U2571> IGNORE;IGNORE;IGNORE;<U2571>
+<U2572> IGNORE;IGNORE;IGNORE;<U2572>
+<U2580> IGNORE;IGNORE;IGNORE;<U2580>
+<U2584> IGNORE;IGNORE;IGNORE;<U2584>
+<U2588> IGNORE;IGNORE;IGNORE;<U2588>
+<U258C> IGNORE;IGNORE;IGNORE;<U258C>
+<U2590> IGNORE;IGNORE;IGNORE;<U2590>
+<U2591> IGNORE;IGNORE;IGNORE;<U2591>
+<U2592> IGNORE;IGNORE;IGNORE;<U2592>
+<U2593> IGNORE;IGNORE;IGNORE;<U2593>
+<U25A0> IGNORE;IGNORE;IGNORE;<U25A0>
+<U25A1> IGNORE;IGNORE;IGNORE;<U25A1>
+<U25A2> IGNORE;IGNORE;IGNORE;<U25A2>
+<U25A3> IGNORE;IGNORE;IGNORE;<U25A3>
+<U25A4> IGNORE;IGNORE;IGNORE;<U25A4>
+<U25A5> IGNORE;IGNORE;IGNORE;<U25A5>
+<U25A6> IGNORE;IGNORE;IGNORE;<U25A6>
+<U25A7> IGNORE;IGNORE;IGNORE;<U25A7>
+<U25A8> IGNORE;IGNORE;IGNORE;<U25A8>
+<U25A9> IGNORE;IGNORE;IGNORE;<U25A9>
+<U25AA> IGNORE;IGNORE;IGNORE;<U25AA>
+<U25AC> IGNORE;IGNORE;IGNORE;<U25AC>
+<U25AD> IGNORE;IGNORE;IGNORE;<U25AD>
+<U25B2> IGNORE;IGNORE;IGNORE;<U25B2>
+<U25B3> IGNORE;IGNORE;IGNORE;<U25B3>
+<U25B7> IGNORE;IGNORE;IGNORE;<U25B7>
+<U25BA> IGNORE;IGNORE;IGNORE;<U25BA>
+<U25BC> IGNORE;IGNORE;IGNORE;<U25BC>
+<U25BD> IGNORE;IGNORE;IGNORE;<U25BD>
+<U25C1> IGNORE;IGNORE;IGNORE;<U25C1>
+<U25C4> IGNORE;IGNORE;IGNORE;<U25C4>
+<U25C6> IGNORE;IGNORE;IGNORE;<U25C6>
+<U25C7> IGNORE;IGNORE;IGNORE;<U25C7>
+<U25CA> IGNORE;IGNORE;IGNORE;<U25CA>
+<U25CB> IGNORE;IGNORE;IGNORE;<U25CB>
+<U25CE> IGNORE;IGNORE;IGNORE;<U25CE>
+<U25CF> IGNORE;IGNORE;IGNORE;<U25CF>
+<U25D0> IGNORE;IGNORE;IGNORE;<U25D0>
+<U25D1> IGNORE;IGNORE;IGNORE;<U25D1>
+<U25D8> IGNORE;IGNORE;IGNORE;<U25D8>
+<U25D9> IGNORE;IGNORE;IGNORE;<U25D9>
+<U25E2> IGNORE;IGNORE;IGNORE;<U25E2>
+<U25E3> IGNORE;IGNORE;IGNORE;<U25E3>
+<U25EF> IGNORE;IGNORE;IGNORE;<U25EF>
+<U2605> IGNORE;IGNORE;IGNORE;<U2605>
+<U2606> IGNORE;IGNORE;IGNORE;<U2606>
+<U260E> IGNORE;IGNORE;IGNORE;<U260E>
+<U260F> IGNORE;IGNORE;IGNORE;<U260F>
+<U261C> IGNORE;IGNORE;IGNORE;<U261C>
+<U261E> IGNORE;IGNORE;IGNORE;<U261E>
+<U263A> IGNORE;IGNORE;IGNORE;<U263A>
+<U263B> IGNORE;IGNORE;IGNORE;<U263B>
+<U263C> IGNORE;IGNORE;IGNORE;<U263C>
+<U2640> IGNORE;IGNORE;IGNORE;<U2640>
+<U2642> IGNORE;IGNORE;IGNORE;<U2642>
+<U2660> IGNORE;IGNORE;IGNORE;<U2660>
+<U2661> IGNORE;IGNORE;IGNORE;<U2661>
+<U2662> IGNORE;IGNORE;IGNORE;<U2662>
+<U2663> IGNORE;IGNORE;IGNORE;<U2663>
+<U2664> IGNORE;IGNORE;IGNORE;<U2664>
+<U2665> IGNORE;IGNORE;IGNORE;<U2665>
+<U2666> IGNORE;IGNORE;IGNORE;<U2666>
+<U2667> IGNORE;IGNORE;IGNORE;<U2667>
+<U2669> IGNORE;IGNORE;IGNORE;<U2669>
+<U266A> IGNORE;IGNORE;IGNORE;<U266A>
+<U266B> IGNORE;IGNORE;IGNORE;<U266B>
+<U266C> IGNORE;IGNORE;IGNORE;<U266C>
+<U266D> IGNORE;IGNORE;IGNORE;<U266D>
+<U266E> IGNORE;IGNORE;IGNORE;<U266E>
+<U266F> IGNORE;IGNORE;IGNORE;<U266F>
+<U2713> IGNORE;IGNORE;IGNORE;<U2713>
+<U2717> IGNORE;IGNORE;IGNORE;<U2717>
+<U2720> IGNORE;IGNORE;IGNORE;<U2720>
+<U3000> IGNORE;IGNORE;IGNORE;<U3000>
+<U3001> IGNORE;IGNORE;IGNORE;<U3001>
+<U3002> IGNORE;IGNORE;IGNORE;<U3002>
+<U3003> IGNORE;IGNORE;IGNORE;<U3003>
+<U3004> IGNORE;IGNORE;IGNORE;<U3004>
+<U3005> IGNORE;IGNORE;IGNORE;<U3005>
+<U3006> IGNORE;IGNORE;IGNORE;<U3006>
+<U3007> IGNORE;IGNORE;IGNORE;<U3007>
+<U300A> IGNORE;IGNORE;IGNORE;<U300A>
+<U300B> IGNORE;IGNORE;IGNORE;<U300B>
+<U300C> IGNORE;IGNORE;IGNORE;<U300C>
+<U300D> IGNORE;IGNORE;IGNORE;<U300D>
+<U300E> IGNORE;IGNORE;IGNORE;<U300E>
+<U300F> IGNORE;IGNORE;IGNORE;<U300F>
+<U3010> IGNORE;IGNORE;IGNORE;<U3010>
+<U3011> IGNORE;IGNORE;IGNORE;<U3011>
+<U3012> IGNORE;IGNORE;IGNORE;<U3012>
+<U3013> IGNORE;IGNORE;IGNORE;<U3013>
+<U3014> IGNORE;IGNORE;IGNORE;<U3014>
+<U3015> IGNORE;IGNORE;IGNORE;<U3015>
+<U3016> IGNORE;IGNORE;IGNORE;<U3016>
+<U3017> IGNORE;IGNORE;IGNORE;<U3017>
+<U301C> IGNORE;IGNORE;IGNORE;<U301C>
+<U3020> IGNORE;IGNORE;IGNORE;<U3020>
+<U309B> IGNORE;IGNORE;IGNORE;<U309B>
+<U309C> IGNORE;IGNORE;IGNORE;<U309C>
+<U309D> IGNORE;IGNORE;IGNORE;<U309D>
+<U309E> IGNORE;IGNORE;IGNORE;<U309E>
+<U30FB> IGNORE;IGNORE;IGNORE;<U30FB>
+<U30FC> IGNORE;IGNORE;IGNORE;<U30FC>
+<U30FD> IGNORE;IGNORE;IGNORE;<U30FD>
+<U30FE> IGNORE;IGNORE;IGNORE;<U30FE>
+<U321C> IGNORE;IGNORE;IGNORE;<U321C>
+<U3220> IGNORE;IGNORE;IGNORE;<U3220>
+<U3221> IGNORE;IGNORE;IGNORE;<U3221>
+<U3222> IGNORE;IGNORE;IGNORE;<U3222>
+<U3223> IGNORE;IGNORE;IGNORE;<U3223>
+<U3224> IGNORE;IGNORE;IGNORE;<U3224>
+<U3225> IGNORE;IGNORE;IGNORE;<U3225>
+<U3226> IGNORE;IGNORE;IGNORE;<U3226>
+<U3227> IGNORE;IGNORE;IGNORE;<U3227>
+<U3228> IGNORE;IGNORE;IGNORE;<U3228>
+<U3229> IGNORE;IGNORE;IGNORE;<U3229>
+<U327F> IGNORE;IGNORE;IGNORE;<U327F>
+<U33C2> IGNORE;IGNORE;IGNORE;<U33C2>
+<U33D8> IGNORE;IGNORE;IGNORE;<U33D8>
+<U0000> IGNORE;IGNORE;IGNORE;<U0000>
+<U0001> IGNORE;IGNORE;IGNORE;<U0001>
+<U0002> IGNORE;IGNORE;IGNORE;<U0002>
+<U0003> IGNORE;IGNORE;IGNORE;<U0003>
+<U0004> IGNORE;IGNORE;IGNORE;<U0004>
+<U0005> IGNORE;IGNORE;IGNORE;<U0005>
+<U0006> IGNORE;IGNORE;IGNORE;<U0006>
+<U0007> IGNORE;IGNORE;IGNORE;<U0007>
+<U0008> IGNORE;IGNORE;IGNORE;<U0008>
+<U000E> IGNORE;IGNORE;IGNORE;<U000E>
+<U000F> IGNORE;IGNORE;IGNORE;<U000F>
+<U0010> IGNORE;IGNORE;IGNORE;<U0010>
+<U0011> IGNORE;IGNORE;IGNORE;<U0011>
+<U0012> IGNORE;IGNORE;IGNORE;<U0012>
+<U0013> IGNORE;IGNORE;IGNORE;<U0013>
+<U0014> IGNORE;IGNORE;IGNORE;<U0014>
+<U0015> IGNORE;IGNORE;IGNORE;<U0015>
+<U0016> IGNORE;IGNORE;IGNORE;<U0016>
+<U0017> IGNORE;IGNORE;IGNORE;<U0017>
+<U0018> IGNORE;IGNORE;IGNORE;<U0018>
+<U0019> IGNORE;IGNORE;IGNORE;<U0019>
+<U001A> IGNORE;IGNORE;IGNORE;<U001A>
+<U001B> IGNORE;IGNORE;IGNORE;<U001B>
+<U001C> IGNORE;IGNORE;IGNORE;<U001C>
+<U001D> IGNORE;IGNORE;IGNORE;<U001D>
+<U001E> IGNORE;IGNORE;IGNORE;<U001E>
+<U001F> IGNORE;IGNORE;IGNORE;<U001F>
+<U007F> IGNORE;IGNORE;IGNORE;<U007F>
+<U0080> IGNORE;IGNORE;IGNORE;<U0080>
+<U0081> IGNORE;IGNORE;IGNORE;<U0081>
+<U0082> IGNORE;IGNORE;IGNORE;<U0082>
+<U0083> IGNORE;IGNORE;IGNORE;<U0083>
+<U0084> IGNORE;IGNORE;IGNORE;<U0084>
+<U0085> IGNORE;IGNORE;IGNORE;<U0085>
+<U0086> IGNORE;IGNORE;IGNORE;<U0086>
+<U0087> IGNORE;IGNORE;IGNORE;<U0087>
+<U0088> IGNORE;IGNORE;IGNORE;<U0088>
+<U0089> IGNORE;IGNORE;IGNORE;<U0089>
+<U008A> IGNORE;IGNORE;IGNORE;<U008A>
+<U008B> IGNORE;IGNORE;IGNORE;<U008B>
+<U008C> IGNORE;IGNORE;IGNORE;<U008C>
+<U008D> IGNORE;IGNORE;IGNORE;<U008D>
+<U008E> IGNORE;IGNORE;IGNORE;<U008E>
+<U008F> IGNORE;IGNORE;IGNORE;<U008F>
+<U0090> IGNORE;IGNORE;IGNORE;<U0090>
+<U0091> IGNORE;IGNORE;IGNORE;<U0091>
+<U0092> IGNORE;IGNORE;IGNORE;<U0092>
+<U0093> IGNORE;IGNORE;IGNORE;<U0093>
+<U0094> IGNORE;IGNORE;IGNORE;<U0094>
+<U0095> IGNORE;IGNORE;IGNORE;<U0095>
+<U0096> IGNORE;IGNORE;IGNORE;<U0096>
+<U0097> IGNORE;IGNORE;IGNORE;<U0097>
+<U0098> IGNORE;IGNORE;IGNORE;<U0098>
+<U0099> IGNORE;IGNORE;IGNORE;<U0099>
+<U009A> IGNORE;IGNORE;IGNORE;<U009A>
+<U009B> IGNORE;IGNORE;IGNORE;<U009B>
+<U009C> IGNORE;IGNORE;IGNORE;<U009C>
+<U009D> IGNORE;IGNORE;IGNORE;<U009D>
+<U009E> IGNORE;IGNORE;IGNORE;<U009E>
+<U009F> IGNORE;IGNORE;IGNORE;<U009F>
+<UE000> IGNORE;IGNORE;IGNORE;<UE000>
+<UE001> IGNORE;IGNORE;IGNORE;<UE001>
+<UE002> IGNORE;IGNORE;IGNORE;<UE002>
+<U0301> IGNORE;IGNORE;IGNORE;<U0301>
+<UE004> IGNORE;IGNORE;IGNORE;<UE004>
+<UE005> IGNORE;IGNORE;IGNORE;<UE005>
+<UE006> IGNORE;IGNORE;IGNORE;<UE006>
+<UE007> IGNORE;IGNORE;IGNORE;<UE007>
+<UE008> IGNORE;IGNORE;IGNORE;<UE008>
+<UE009> IGNORE;IGNORE;IGNORE;<UE009>
+<UE00A> IGNORE;IGNORE;IGNORE;<UE00A>
+<UE00B> IGNORE;IGNORE;IGNORE;<UE00B>
+<UE00C> IGNORE;IGNORE;IGNORE;<UE00C>
+<UE00D> IGNORE;IGNORE;IGNORE;<UE00D>
+<UE00E> IGNORE;IGNORE;IGNORE;<UE00E>
+<UE00F> IGNORE;IGNORE;IGNORE;<UE00F>
+<"=> IGNORE;IGNORE;IGNORE;<"=>
+<UE011> IGNORE;IGNORE;IGNORE;<UE011>
+<UE012> IGNORE;IGNORE;IGNORE;<UE012>
+<UE013> IGNORE;IGNORE;IGNORE;<UE013>
+<UE014> IGNORE;IGNORE;IGNORE;<UE014>
+<UE015> IGNORE;IGNORE;IGNORE;<UE015>
+<UE017> IGNORE;IGNORE;IGNORE;<UE017>
+<UE018> IGNORE;IGNORE;IGNORE;<UE018>
+<UE019> IGNORE;IGNORE;IGNORE;<UE019>
+UNDEFINED IGNORE;IGNORE;IGNORE
+
+<U0030> <U0030>;<U0030>;IGNORE;IGNORE
+<U2070> <U0030>;<U2070>;IGNORE;IGNORE
+<U215B> <U0030>;<U215B>;IGNORE;IGNORE
+<U00BC> <U0030>;<U00BC>;IGNORE;IGNORE
+<U215C> <U0030>;<U215C>;IGNORE;IGNORE
+<U00BD> <U0030>;<U00BD>;IGNORE;IGNORE
+<U215D> <U0030>;<U215D>;IGNORE;IGNORE
+<U00BE> <U0030>;<U00BE>;IGNORE;IGNORE
+<U215E> <U0030>;<U215E>;IGNORE;IGNORE
+<U0031> <U0031>;<U0031>;IGNORE;IGNORE
+<U0032> <U0032>;<U0032>;IGNORE;IGNORE
+<U0033> <U0033>;<U0033>;IGNORE;IGNORE
+<U0034> <U0034>;<U0034>;IGNORE;IGNORE
+<U0035> <U0035>;<U0035>;IGNORE;IGNORE
+<U0036> <U0036>;<U0036>;IGNORE;IGNORE
+<U0037> <U0037>;<U0037>;IGNORE;IGNORE
+<U0038> <U0038>;<U0038>;IGNORE;IGNORE
+<U0039> <U0039>;<U0039>;IGNORE;IGNORE
+<U00B9> <U0031>;<U00B9>;IGNORE;IGNORE
+<U00B2> <U0032>;<U00B2>;IGNORE;IGNORE
+<U00B3> <U0033>;<U00B3>;IGNORE;IGNORE
+<U2074> <U0034>;<U2074>;IGNORE;IGNORE
+<U2075> <U0035>;<U2075>;IGNORE;IGNORE
+<U2076> <U0036>;<U2076>;IGNORE;IGNORE
+<U2077> <U0037>;<U2077>;IGNORE;IGNORE
+<U2078> <U0038>;<U2078>;IGNORE;IGNORE
+<U2079> <U0039>;<U2079>;IGNORE;IGNORE
+<U0041> <U0041>;<NONE>;<CAPITAL>;IGNORE
+<U0061> <U0041>;<NONE>;<SMALL>;IGNORE
+<U00AA> <U0041>;<NONE>;<U00AA>;IGNORE
+<U00C1> <U0041>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E1> <U0041>;<ACUTE>;<SMALL>;IGNORE
+<U00C0> <U0041>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E0> <U0041>;<GRAVE>;<SMALL>;IGNORE
+<U0200> <U0041>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0201> <U0041>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0102> <U0041>;<BREVE>;<CAPITAL>;IGNORE
+<U0103> <U0041>;<BREVE>;<SMALL>;IGNORE
+<U1EAE> <U0041>;<BREVE+ACUTE>;<CAPITAL>;IGNORE
+<U1EAF> <U0041>;<BREVE+ACUTE>;<SMALL>;IGNORE
+<U1EB0> <U0041>;<BREVE+GRAVE>;<CAPITAL>;IGNORE
+<U1EB1> <U0041>;<BREVE+GRAVE>;<SMALL>;IGNORE
+<U1EB2> <U0041>;<BREVE+HOOK>;<CAPITAL>;IGNORE
+<U1EB3> <U0041>;<BREVE+HOOK>;<SMALL>;IGNORE
+<U1EB4> <U0041>;<BREVE+TILDE>;<CAPITAL>;IGNORE
+<U1EB5> <U0041>;<BREVE+TILDE>;<SMALL>;IGNORE
+<U1EB6> <U0041>;<BREVE+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB7> <U0041>;<BREVE+DOT-BELOW>;<SMALL>;IGNORE
+<U0202> <U0041>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0203> <U0041>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00C2> <U0041>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00E2> <U0041>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EA4> <U0041>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EA5> <U0041>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EA6> <U0041>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EA7> <U0041>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EA8> <U0041>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EA9> <U0041>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EAA> <U0041>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EAB> <U0041>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EAC> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EAD> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01CD> <U0041>;<CARON>;<CAPITAL>;IGNORE
+<U01CE> <U0041>;<CARON>;<SMALL>;IGNORE
+<U00C5> <U0041>;<RING>;<CAPITAL>;IGNORE
+<U00E5> <U0041>;<RING>;<SMALL>;IGNORE
+<U01FA> <U0041>;<RING+ACUTE>;<CAPITAL>;IGNORE
+<U01FB> <U0041>;<RING+ACUTE>;<SMALL>;IGNORE
+<U1E00> <U0041>;<RING-BELOW>;<CAPITAL>;IGNORE
+<U1E01> <U0041>;<RING-BELOW>;<SMALL>;IGNORE
+<U00C4> <U0041>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00E4> <U0041>;<DIAERESIS>;<SMALL>;IGNORE
+<U01DE> <U0041>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01DF> <U0041>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U1EA2> <U0041>;<HOOK>;<CAPITAL>;IGNORE
+<U1EA3> <U0041>;<HOOK>;<SMALL>;IGNORE
+<U00C3> <U0041>;<TILDE>;<CAPITAL>;IGNORE
+<U00E3> <U0041>;<TILDE>;<SMALL>;IGNORE
+<U1EA0> <U0041>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EA1> <U0041>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0104> <U0041>;<OGONEK>;<CAPITAL>;IGNORE
+<U0105> <U0041>;<OGONEK>;<SMALL>;IGNORE
+<U0100> <U0041>;<MACRON>;<CAPITAL>;IGNORE
+<U0101> <U0041>;<MACRON>;<SMALL>;IGNORE
+<U01E0> <U0041>;<MACRON+DOT>;<CAPITAL>;IGNORE
+<U01E1> <U0041>;<MACRON+DOT>;<SMALL>;IGNORE
+<a8>
+<U00C6> "<U0041><U0045>";"<U00C6><U00C6>";"<CAPITAL><CAPITAL>";IGNORE
+<U00E6> "<U0041><U0045>";"<U00C6><U00C6>";"<SMALL><SMALL>";IGNORE
+<U01FC> "<U0041><U0045>";"<U01FC><U01FC>";"<CAPITAL><CAPITAL>";IGNORE
+<U01FD> "<U0041><U0045>";"<U01FC><U01FC>";"<SMALL><SMALL>";IGNORE
+<U01E2> "<U0041><U0045>";"<U01E2><U01E2>";"<CAPITAL><CAPITAL>";IGNORE
+<U01E3> "<U0041><U0045>";"<U01E2><U01E2>";"<SMALL><SMALL>";IGNORE
+<U0042> <U0042>;<NONE>;<CAPITAL>;IGNORE
+<U0062> <U0042>;<NONE>;<SMALL>;IGNORE
+<U1E02> <U0042>;<DOT>;<CAPITAL>;IGNORE
+<U1E03> <U0042>;<DOT>;<SMALL>;IGNORE
+<U1E04> <U0042>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E05> <U0042>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E06> <U0042>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E07> <U0042>;<LINE-BELOW>;<SMALL>;IGNORE
+<b8>
+<U0043> <U0043>;<NONE>;<CAPITAL>;IGNORE
+<U0063> <U0043>;<NONE>;<SMALL>;IGNORE
+<U0106> <U0043>;<ACUTE>;<CAPITAL>;IGNORE
+<U0107> <U0043>;<ACUTE>;<SMALL>;IGNORE
+<U0108> <U0043>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0109> <U0043>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U010C> <U0043>;<CARON>;<CAPITAL>;IGNORE
+<U010D> <U0043>;<CARON>;<SMALL>;IGNORE
+<U0187> <U0043>;<HOOK>;<CAPITAL>;IGNORE
+<U0188> <U0043>;<HOOK>;<SMALL>;IGNORE
+<U010A> <U0043>;<DOT>;<CAPITAL>;IGNORE
+<U010B> <U0043>;<DOT>;<SMALL>;IGNORE
+<U00C7> <U0043>;<CEDILLA>;<CAPITAL>;IGNORE
+<U00E7> <U0043>;<CEDILLA>;<SMALL>;IGNORE
+<U1E08> <U0043>;<CEDILLA+ACUTE>;<CAPITAL>;IGNORE
+<U1E09> <U0043>;<CEDILLA+ACUTE>;<SMALL>;IGNORE
+<c8>
+<C-H> <C-H>;<NONE>;<CAPITAL>;IGNORE
+<C-h> <C-H>;<NONE>;<CAPITAL-SMALL>;IGNORE
+<c-H> <C-H>;<NONE>;<SMALL-CAPITAL>;IGNORE
+<c-h> <C-H>;<NONE>;<SMALL>;IGNORE
+<U0044> <U0044>;<NONE>;<CAPITAL>;IGNORE
+<U0064> <U0044>;<NONE>;<SMALL>;IGNORE
+<U010E> <U0044>;<CARON>;<CAPITAL>;IGNORE
+<U010F> <U0044>;<CARON>;<SMALL>;IGNORE
+<U1E0A> <U0044>;<DOT>;<CAPITAL>;IGNORE
+<U1E0B> <U0044>;<DOT>;<SMALL>;IGNORE
+<U1E0C> <U0044>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E0D> <U0044>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0110> <U0044>;<STROKE>;<CAPITAL>;IGNORE
+<U0111> <U0044>;<STROKE>;<SMALL>;IGNORE
+<U1E10> <U0044>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E11> <U0044>;<CEDILLA>;<SMALL>;IGNORE
+<U1E12> <U0044>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E13> <U0044>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E0E> <U0044>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E0F> <U0044>;<LINE-BELOW>;<SMALL>;IGNORE
+<d8>
+<U0045> <U0045>;<NONE>;<CAPITAL>;IGNORE
+<U0065> <U0045>;<NONE>;<SMALL>;IGNORE
+<U00C9> <U0045>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E9> <U0045>;<ACUTE>;<SMALL>;IGNORE
+<U00C8> <U0045>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E8> <U0045>;<GRAVE>;<SMALL>;IGNORE
+<U0204> <U0045>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0205> <U0045>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0114> <U0045>;<BREVE>;<CAPITAL>;IGNORE
+<U0115> <U0045>;<BREVE>;<SMALL>;IGNORE
+<U0206> <U0045>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0207> <U0045>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CA> <U0045>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EA> <U0045>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EBE> <U0045>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EBF> <U0045>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EC0> <U0045>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EC1> <U0045>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EC2> <U0045>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EC3> <U0045>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EC4> <U0045>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EC5> <U0045>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EC6> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EC7> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U011A> <U0045>;<CARON>;<CAPITAL>;IGNORE
+<U011B> <U0045>;<CARON>;<SMALL>;IGNORE
+<U00CB> <U0045>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EB> <U0045>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EBA> <U0045>;<HOOK>;<CAPITAL>;IGNORE
+<U1EBB> <U0045>;<HOOK>;<SMALL>;IGNORE
+<U1EBC> <U0045>;<TILDE>;<CAPITAL>;IGNORE
+<U1EBD> <U0045>;<TILDE>;<SMALL>;IGNORE
+<U1E1A> <U0045>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E1B> <U0045>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0116> <U0045>;<DOT>;<CAPITAL>;IGNORE
+<U0117> <U0045>;<DOT>;<SMALL>;IGNORE
+<U1EB8> <U0045>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB9> <U0045>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E1C> <U0045>;<CEDILLA+BREVE>;<CAPITAL>;IGNORE
+<U1E1D> <U0045>;<CEDILLA+BREVE>;<SMALL>;IGNORE
+<U0118> <U0045>;<OGONEK>;<CAPITAL>;IGNORE
+<U0119> <U0045>;<OGONEK>;<SMALL>;IGNORE
+<U0112> <U0045>;<MACRON>;<CAPITAL>;IGNORE
+<U0113> <U0045>;<MACRON>;<SMALL>;IGNORE
+<U1E16> <U0045>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E17> <U0045>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E14> <U0045>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E15> <U0045>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U1E18> <U0045>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E19> <U0045>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<e8>
+<U0046> <U0046>;<NONE>;<CAPITAL>;IGNORE
+<U0066> <U0046>;<NONE>;<SMALL>;IGNORE
+<U0191> <U0046>;<HOOK>;<CAPITAL>;IGNORE
+<U0192> <U0046>;<HOOK>;<SMALL>;IGNORE
+<U1E1E> <U0046>;<DOT>;<CAPITAL>;IGNORE
+<U1E1F> <U0046>;<DOT>;<SMALL>;IGNORE
+<f8>
+<UFB00> "<U0046><U0046>";"<NONE><NONE>";"<UFB00><UFB00>";IGNORE
+<UFB01> "<U0046><U0049>";"<NONE><NONE>";"<UFB01><UFB01>";IGNORE
+<UFB02> "<U0046><U004C>";"<NONE><NONE>";"<UFB02><UFB02>";IGNORE
+<UFB03> "<U0046><U0046><U0049>";"<NONE><NONE><NONE>";"<UFB03><UFB03><UFB03>";IGNORE
+<UFB04> "<U0046><U0046><U004C>";"<NONE><NONE><NONE>";"<UFB04><UFB04><UFB04>";IGNORE
+<U0047> <U0047>;<NONE>;<CAPITAL>;IGNORE
+<U0067> <U0047>;<NONE>;<SMALL>;IGNORE
+<U01F4> <U0047>;<ACUTE>;<CAPITAL>;IGNORE
+<U01F5> <U0047>;<ACUTE>;<SMALL>;IGNORE
+<U011E> <U0047>;<BREVE>;<CAPITAL>;IGNORE
+<U011F> <U0047>;<BREVE>;<SMALL>;IGNORE
+<U011C> <U0047>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U011D> <U0047>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01E6> <U0047>;<CARON>;<CAPITAL>;IGNORE
+<U01E7> <U0047>;<CARON>;<SMALL>;IGNORE
+<U0120> <U0047>;<DOT>;<CAPITAL>;IGNORE
+<U0121> <U0047>;<DOT>;<SMALL>;IGNORE
+<U01E4> <U0047>;<STROKE>;<CAPITAL>;IGNORE
+<U01E5> <U0047>;<STROKE>;<SMALL>;IGNORE
+<U0122> <U0047>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0123> <U0047>;<CEDILLA>;<SMALL>;IGNORE
+<U1E20> <U0047>;<MACRON>;<CAPITAL>;IGNORE
+<U1E21> <U0047>;<MACRON>;<SMALL>;IGNORE
+<g8>
+<U0048> <U0048>;<NONE>;<CAPITAL>;IGNORE
+<U0068> <U0048>;<NONE>;<SMALL>;IGNORE
+<U1E2A> <U0048>;<BREVE-BELOW>;<CAPITAL>;IGNORE
+<U1E2B> <U0048>;<BREVE-BELOW>;<SMALL>;IGNORE
+<U0124> <U0048>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0125> <U0048>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E26> <U0048>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E27> <U0048>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E22> <U0048>;<DOT>;<CAPITAL>;IGNORE
+<U1E23> <U0048>;<DOT>;<SMALL>;IGNORE
+<U1E24> <U0048>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E25> <U0048>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0126> <U0048>;<STROKE>;<CAPITAL>;IGNORE
+<U0127> <U0048>;<STROKE>;<SMALL>;IGNORE
+<U1E28> <U0048>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E29> <U0048>;<CEDILLA>;<SMALL>;IGNORE
+<h8>
+<U0049> <U0049>;<NONE>;<CAPITAL>;IGNORE
+<U0069> <U0049>;<NONE>;<SMALL>;IGNORE
+<U00CD> <U0049>;<ACUTE>;<CAPITAL>;IGNORE
+<U00ED> <U0049>;<ACUTE>;<SMALL>;IGNORE
+<U00CC> <U0049>;<GRAVE>;<CAPITAL>;IGNORE
+<U00EC> <U0049>;<GRAVE>;<SMALL>;IGNORE
+<U0208> <U0049>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0209> <U0049>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U012C> <U0049>;<BREVE>;<CAPITAL>;IGNORE
+<U012D> <U0049>;<BREVE>;<SMALL>;IGNORE
+<U020A> <U0049>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020B> <U0049>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CE> <U0049>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EE> <U0049>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01CF> <U0049>;<CARON>;<CAPITAL>;IGNORE
+<U01D0> <U0049>;<CARON>;<SMALL>;IGNORE
+<U00CF> <U0049>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EF> <U0049>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E2E> <U0049>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U1E2F> <U0049>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U1EC8> <U0049>;<HOOK>;<CAPITAL>;IGNORE
+<U1EC9> <U0049>;<HOOK>;<SMALL>;IGNORE
+<U0128> <U0049>;<TILDE>;<CAPITAL>;IGNORE
+<U0129> <U0049>;<TILDE>;<SMALL>;IGNORE
+<U1E2C> <U0049>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E2D> <U0049>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0130> <U0049>;<DOT>;<CAPITAL>;IGNORE
+<U0131> <U0049>;<DOT>;<SMALL>;IGNORE
+<U1ECA> <U0049>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECB> <U0049>;<DOT-BELOW>;<SMALL>;IGNORE
+<U012E> <U0049>;<OGONEK>;<CAPITAL>;IGNORE
+<U012F> <U0049>;<OGONEK>;<SMALL>;IGNORE
+<U012A> <U0049>;<MACRON>;<CAPITAL>;IGNORE
+<U012B> <U0049>;<MACRON>;<SMALL>;IGNORE
+<i8>
+<U0132> "<U0049><U004A>";"<U0132><U0132>";"<CAPITAL><CAPITAL>";IGNORE
+<U0133> "<U0049><U004A>";"<U0132><U0132>";"<SMALL><SMALL>";IGNORE
+<U004A> <U004A>;<NONE>;<CAPITAL>;IGNORE
+<U006A> <U004A>;<NONE>;<SMALL>;IGNORE
+<U0134> <U004A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0135> <U004A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<j8>
+<U004B> <U004B>;<NONE>;<CAPITAL>;IGNORE
+<U006B> <U004B>;<NONE>;<SMALL>;IGNORE
+<U1E30> <U004B>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E31> <U004B>;<ACUTE>;<SMALL>;IGNORE
+<U01E8> <U004B>;<CARON>;<CAPITAL>;IGNORE
+<U01E9> <U004B>;<CARON>;<SMALL>;IGNORE
+<U0198> <U004B>;<HOOK>;<CAPITAL>;IGNORE
+<U0199> <U004B>;<HOOK>;<SMALL>;IGNORE
+<U1E32> <U004B>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E33> <U004B>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0136> <U004B>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0137> <U004B>;<CEDILLA>;<SMALL>;IGNORE
+<U1E34> <U004B>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E35> <U004B>;<LINE-BELOW>;<SMALL>;IGNORE
+<k8>
+<U0138> <U004B>;<U0138>;<SMALL>;IGNORE
+<U004C> <U004C>;<NONE>;<CAPITAL>;IGNORE
+<U006C> <U004C>;<NONE>;<SMALL>;IGNORE
+<U0139> <U004C>;<ACUTE>;<CAPITAL>;IGNORE
+<U013A> <U004C>;<ACUTE>;<SMALL>;IGNORE
+<U013D> <U004C>;<CARON>;<CAPITAL>;IGNORE
+<U013E> <U004C>;<CARON>;<SMALL>;IGNORE
+<U013F> <U004C>;<DOT>;<CAPITAL>;IGNORE
+<U0140> <U004C>;<DOT>;<SMALL>;IGNORE
+<U1E36> <U004C>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E37> <U004C>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0141> <U004C>;<STROKE>;<CAPITAL>;IGNORE
+<U0142> <U004C>;<STROKE>;<SMALL>;IGNORE
+<U013B> <U004C>;<CEDILLA>;<CAPITAL>;IGNORE
+<U013C> <U004C>;<CEDILLA>;<SMALL>;IGNORE
+<U1E38> <U004C>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E39> <U004C>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E3C> <U004C>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E3D> <U004C>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E3A> <U004C>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E3B> <U004C>;<LINE-BELOW>;<SMALL>;IGNORE
+<l8>
+<L-L> <L-L>;<NONE>;<CAPITAL>;IGNORE
+<L-l> <L-L>;<NONE>;<CAPITAL-SMALL>;IGNORE
+<l-L> <L-L>;<NONE>;<SMALL-CAPITAL>;IGNORE
+<l-l> <L-L>;<NONE>;<SMALL>;IGNORE
+<U004D> <U004D>;<NONE>;<CAPITAL>;IGNORE
+<U006D> <U004D>;<NONE>;<SMALL>;IGNORE
+<U1E3E> <U004D>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E3F> <U004D>;<ACUTE>;<SMALL>;IGNORE
+<U1E40> <U004D>;<DOT>;<CAPITAL>;IGNORE
+<U1E41> <U004D>;<DOT>;<SMALL>;IGNORE
+<U1E42> <U004D>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E43> <U004D>;<DOT-BELOW>;<SMALL>;IGNORE
+<m8>
+<U004E> <U004E>;<NONE>;<CAPITAL>;IGNORE
+<U006E> <U004E>;<NONE>;<SMALL>;IGNORE
+<U0143> <U004E>;<ACUTE>;<CAPITAL>;IGNORE
+<U0144> <U004E>;<ACUTE>;<SMALL>;IGNORE
+<U0147> <U004E>;<CARON>;<CAPITAL>;IGNORE
+<U0148> <U004E>;<CARON>;<SMALL>;IGNORE
+<U1E44> <U004E>;<DOT>;<CAPITAL>;IGNORE
+<U1E45> <U004E>;<DOT>;<SMALL>;IGNORE
+<U1E46> <U004E>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E47> <U004E>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0145> <U004E>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0146> <U004E>;<CEDILLA>;<SMALL>;IGNORE
+<U1E4A> <U004E>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E4B> <U004E>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E48> <U004E>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E49> <U004E>;<LINE-BELOW>;<SMALL>;IGNORE
+<U0149> <U004E>;<PRECEDED-BY-APOSTROPHE>;<SMALL>;IGNORE
+<n8>
+<U00D1> <U00D1>;<NONE>;<CAPITAL>;IGNORE
+<U00F1> <U00D1>;<NONE>;<SMALL>;IGNORE
+<U014A> "<U004E><U0047>";"<U014A><U014A>";"<CAPITAL><CAPITAL>";IGNORE
+<U014B> "<U004E><U0047>";"<U014A><U014A>";"<SMALL><SMALL>";IGNORE
+<U004F> <U004F>;<NONE>;<CAPITAL>;IGNORE
+<U006F> <U004F>;<NONE>;<SMALL>;IGNORE
+<U00BA> <U004F>;<NONE>;<U00BA>;IGNORE
+<U00D3> <U004F>;<ACUTE>;<CAPITAL>;IGNORE
+<U00F3> <U004F>;<ACUTE>;<SMALL>;IGNORE
+<U00D2> <U004F>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F2> <U004F>;<GRAVE>;<SMALL>;IGNORE
+<U020C> <U004F>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U020D> <U004F>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U014E> <U004F>;<BREVE>;<CAPITAL>;IGNORE
+<U014F> <U004F>;<BREVE>;<SMALL>;IGNORE
+<U020E> <U004F>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020F> <U004F>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00D4> <U004F>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00F4> <U004F>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1ED0> <U004F>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1ED1> <U004F>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1ED2> <U004F>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1ED3> <U004F>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1ED4> <U004F>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1ED5> <U004F>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1ED6> <U004F>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1ED7> <U004F>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1ED8> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ED9> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01D1> <U004F>;<CARON>;<CAPITAL>;IGNORE
+<U01D2> <U004F>;<CARON>;<SMALL>;IGNORE
+<U00D6> <U004F>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00F6> <U004F>;<DIAERESIS>;<SMALL>;IGNORE
+<U0150> <U004F>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0151> <U004F>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1ECE> <U004F>;<HOOK>;<CAPITAL>;IGNORE
+<U1ECF> <U004F>;<HOOK>;<SMALL>;IGNORE
+<U00D5> <U004F>;<TILDE>;<CAPITAL>;IGNORE
+<U00F5> <U004F>;<TILDE>;<SMALL>;IGNORE
+<U1E4C> <U004F>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E4D> <U004F>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E4E> <U004F>;<TILDE+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E4F> <U004F>;<TILDE+DIAERESIS>;<SMALL>;IGNORE
+<U1ECC> <U004F>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECD> <U004F>;<DOT-BELOW>;<SMALL>;IGNORE
+<U00D8> <U004F>;<STROKE>;<CAPITAL>;IGNORE
+<U00F8> <U004F>;<STROKE>;<SMALL>;IGNORE
+<U01FE> <U004F>;<STROKE+ACUTE>;<CAPITAL>;IGNORE
+<U01FF> <U004F>;<STROKE+ACUTE>;<SMALL>;IGNORE
+<U01EA> <U004F>;<OGONEK>;<CAPITAL>;IGNORE
+<U01EB> <U004F>;<OGONEK>;<SMALL>;IGNORE
+<U01EC> <U004F>;<OGONEK+MACRON>;<CAPITAL>;IGNORE
+<U01ED> <U004F>;<OGONEK+MACRON>;<SMALL>;IGNORE
+<U014C> <U004F>;<MACRON>;<CAPITAL>;IGNORE
+<U014D> <U004F>;<MACRON>;<SMALL>;IGNORE
+<U1E52> <U004F>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E53> <U004F>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E50> <U004F>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E51> <U004F>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U01A0> <U004F>;<HORN>;<CAPITAL>;IGNORE
+<U01A1> <U004F>;<HORN>;<SMALL>;IGNORE
+<U1EDA> <U004F>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EDB> <U004F>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EDC> <U004F>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EDD> <U004F>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EDE> <U004F>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EDF> <U004F>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EE0> <U004F>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EE1> <U004F>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EE2> <U004F>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE3> <U004F>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<o8>
+<U0152> "<U004F><U0045>";"<U0152><U0152>";"<CAPITAL><CAPITAL>";IGNORE
+<U0153> "<U004F><U0045>";"<U0152><U0152>";"<SMALL><SMALL>";IGNORE
+<U0050> <U0050>;<NONE>;<CAPITAL>;IGNORE
+<U0070> <U0050>;<NONE>;<SMALL>;IGNORE
+<U1E54> <U0050>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E55> <U0050>;<ACUTE>;<SMALL>;IGNORE
+<U1E56> <U0050>;<DOT>;<CAPITAL>;IGNORE
+<U1E57> <U0050>;<DOT>;<SMALL>;IGNORE
+<p8>
+<U0051> <U0051>;<NONE>;<CAPITAL>;IGNORE
+<U0071> <U0051>;<NONE>;<SMALL>;IGNORE
+<q8>
+<U0052> <U0052>;<NONE>;<CAPITAL>;IGNORE
+<U0072> <U0052>;<NONE>;<SMALL>;IGNORE
+<U0154> <U0052>;<ACUTE>;<CAPITAL>;IGNORE
+<U0155> <U0052>;<ACUTE>;<SMALL>;IGNORE
+<U0210> <U0052>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0211> <U0052>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0212> <U0052>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0213> <U0052>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U0158> <U0052>;<CARON>;<CAPITAL>;IGNORE
+<U0159> <U0052>;<CARON>;<SMALL>;IGNORE
+<U1E58> <U0052>;<DOT>;<CAPITAL>;IGNORE
+<U1E59> <U0052>;<DOT>;<SMALL>;IGNORE
+<U1E5A> <U0052>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5B> <U0052>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0156> <U0052>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0157> <U0052>;<CEDILLA>;<SMALL>;IGNORE
+<U1E5C> <U0052>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5D> <U0052>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E5E> <U0052>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E5F> <U0052>;<LINE-BELOW>;<SMALL>;IGNORE
+<r8>
+<U0053> <U0053>;<NONE>;<CAPITAL>;IGNORE
+<U0073> <U0053>;<NONE>;<SMALL>;IGNORE
+<UFB06> "<U0053><U0054>";"<NONE><NONE>";"<UFB06><UFB06>";IGNORE
+<U015A> <U0053>;<ACUTE>;<CAPITAL>;IGNORE
+<U015B> <U0053>;<ACUTE>;<SMALL>;IGNORE
+<U1E64> <U0053>;<ACUTE+DOT>;<CAPITAL>;IGNORE
+<U1E65> <U0053>;<ACUTE+DOT>;<SMALL>;IGNORE
+<U015C> <U0053>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U015D> <U0053>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0160> <U0053>;<CARON>;<CAPITAL>;IGNORE
+<U0161> <U0053>;<CARON>;<SMALL>;IGNORE
+<U1E66> <U0053>;<CARON+DOT>;<CAPITAL>;IGNORE
+<U1E67> <U0053>;<CARON+DOT>;<SMALL>;IGNORE
+<U1E60> <U0053>;<DOT>;<CAPITAL>;IGNORE
+<U1E61> <U0053>;<DOT>;<SMALL>;IGNORE
+<U1E62> <U0053>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E63> <U0053>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E68> <U0053>;<DOT+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E69> <U0053>;<DOT+DOT-BELOW>;<SMALL>;IGNORE
+<U015E> <U0053>;<CEDILLA>;<CAPITAL>;IGNORE
+<U015F> <U0053>;<CEDILLA>;<SMALL>;IGNORE
+<s8>
+<U017F> <U0053>;<U017F>;<SMALL>;IGNORE
+<U00DF> "<U0053><U0053>";"<NONE><NONE>";"<SMALL><U00DF>";IGNORE
+<UFB05> "<U0053><U0054>";"<NONE><NONE>";"<UFB05><UFB05>";IGNORE
+<U0054> <U0054>;<NONE>;<CAPITAL>;IGNORE
+<U0074> <U0054>;<NONE>;<SMALL>;IGNORE
+<U0164> <U0054>;<CARON>;<CAPITAL>;IGNORE
+<U0165> <U0054>;<CARON>;<SMALL>;IGNORE
+<U1E6A> <U0054>;<DOT>;<CAPITAL>;IGNORE
+<U1E6B> <U0054>;<DOT>;<SMALL>;IGNORE
+<U1E6C> <U0054>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E6D> <U0054>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0166> <U0054>;<STROKE>;<CAPITAL>;IGNORE
+<U0167> <U0054>;<STROKE>;<SMALL>;IGNORE
+<U0162> <U0054>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0163> <U0054>;<CEDILLA>;<SMALL>;IGNORE
+<U1E70> <U0054>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E71> <U0054>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E6E> <U0054>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E6F> <U0054>;<LINE-BELOW>;<SMALL>;IGNORE
+<t8>
+<U00DE> "<U0054><U0048>";"<U00DE><U00DE>";"<CAPITAL><CAPITAL>";IGNORE
+<U00FE> "<U0054><U0048>";"<U00DE><U00DE>";"<SMALL><SMALL>";IGNORE
+<U0055> <U0055>;<NONE>;<CAPITAL>;IGNORE
+<U0075> <U0055>;<NONE>;<SMALL>;IGNORE
+<U00DA> <U0055>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FA> <U0055>;<ACUTE>;<SMALL>;IGNORE
+<U00D9> <U0055>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F9> <U0055>;<GRAVE>;<SMALL>;IGNORE
+<U0214> <U0055>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0215> <U0055>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U016C> <U0055>;<BREVE>;<CAPITAL>;IGNORE
+<U016D> <U0055>;<BREVE>;<SMALL>;IGNORE
+<U0216> <U0055>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0217> <U0055>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00DB> <U0055>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00FB> <U0055>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01D3> <U0055>;<CARON>;<CAPITAL>;IGNORE
+<U01D4> <U0055>;<CARON>;<SMALL>;IGNORE
+<U016E> <U0055>;<RING>;<CAPITAL>;IGNORE
+<U016F> <U0055>;<RING>;<SMALL>;IGNORE
+<U00DC> <U0055>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FC> <U0055>;<DIAERESIS>;<SMALL>;IGNORE
+<U01D5> <U0055>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01D6> <U0055>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U01D7> <U0055>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U01D8> <U0055>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U01DB> <U0055>;<DIAERESIS+GRAVE>;<CAPITAL>;IGNORE
+<U01DC> <U0055>;<DIAERESIS+GRAVE>;<SMALL>;IGNORE
+<U01D9> <U0055>;<DIAERESIS+CARON>;<CAPITAL>;IGNORE
+<U01DA> <U0055>;<DIAERESIS+CARON>;<SMALL>;IGNORE
+<U0170> <U0055>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0171> <U0055>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1EE6> <U0055>;<HOOK>;<CAPITAL>;IGNORE
+<U1EE7> <U0055>;<HOOK>;<SMALL>;IGNORE
+<U0168> <U0055>;<TILDE>;<CAPITAL>;IGNORE
+<U0169> <U0055>;<TILDE>;<SMALL>;IGNORE
+<U1E78> <U0055>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E79> <U0055>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E74> <U0055>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E75> <U0055>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U1EE4> <U0055>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE5> <U0055>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0172> <U0055>;<OGONEK>;<CAPITAL>;IGNORE
+<U0173> <U0055>;<OGONEK>;<SMALL>;IGNORE
+<U016A> <U0055>;<MACRON>;<CAPITAL>;IGNORE
+<U016B> <U0055>;<MACRON>;<SMALL>;IGNORE
+<U1E7A> <U0055>;<MACRON+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E7B> <U0055>;<MACRON+DIAERESIS>;<SMALL>;IGNORE
+<U1E72> <U0055>;<MACRON+DIAERESIS-BELOW>;<CAPITAL>;IGNORE
+<U1E73> <U0055>;<MACRON+DIAERESIS-BELOW>;<SMALL>;IGNORE
+<U1E76> <U0055>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E77> <U0055>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U01AF> <U0055>;<HORN>;<CAPITAL>;IGNORE
+<U01B0> <U0055>;<HORN>;<SMALL>;IGNORE
+<U1EE8> <U0055>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EE9> <U0055>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EEA> <U0055>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EEB> <U0055>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EEC> <U0055>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EED> <U0055>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EEE> <U0055>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EEF> <U0055>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EF0> <U0055>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF1> <U0055>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<u8>
+<U0056> <U0056>;<NONE>;<CAPITAL>;IGNORE
+<U0076> <U0056>;<NONE>;<SMALL>;IGNORE
+<U1E7C> <U0056>;<TILDE>;<CAPITAL>;IGNORE
+<U1E7D> <U0056>;<TILDE>;<SMALL>;IGNORE
+<U1E7E> <U0056>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E7F> <U0056>;<DOT-BELOW>;<SMALL>;IGNORE
+<v8>
+<U0057> <U0057>;<NONE>;<CAPITAL>;IGNORE
+<U0077> <U0057>;<NONE>;<SMALL>;IGNORE
+<U1E82> <U0057>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E83> <U0057>;<ACUTE>;<SMALL>;IGNORE
+<U1E80> <U0057>;<GRAVE>;<CAPITAL>;IGNORE
+<U1E81> <U0057>;<GRAVE>;<SMALL>;IGNORE
+<U0174> <U0057>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0175> <U0057>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E84> <U0057>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E85> <U0057>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E86> <U0057>;<DOT>;<CAPITAL>;IGNORE
+<U1E87> <U0057>;<DOT>;<SMALL>;IGNORE
+<U1E88> <U0057>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E89> <U0057>;<DOT-BELOW>;<SMALL>;IGNORE
+<w8>
+<U0058> <U0058>;<NONE>;<CAPITAL>;IGNORE
+<U0078> <U0058>;<NONE>;<SMALL>;IGNORE
+<U1E8C> <U0058>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E8D> <U0058>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E8A> <U0058>;<DOT>;<CAPITAL>;IGNORE
+<U1E8B> <U0058>;<DOT>;<SMALL>;IGNORE
+<x8>
+<U0059> <U0059>;<NONE>;<CAPITAL>;IGNORE
+<U0079> <U0059>;<NONE>;<SMALL>;IGNORE
+<U00DD> <U0059>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FD> <U0059>;<ACUTE>;<SMALL>;IGNORE
+<U1EF2> <U0059>;<GRAVE>;<CAPITAL>;IGNORE
+<U1EF3> <U0059>;<GRAVE>;<SMALL>;IGNORE
+<U0176> <U0059>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0177> <U0059>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0178> <U0059>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FF> <U0059>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EF6> <U0059>;<HOOK>;<CAPITAL>;IGNORE
+<U1EF7> <U0059>;<HOOK>;<SMALL>;IGNORE
+<U1EF8> <U0059>;<TILDE>;<CAPITAL>;IGNORE
+<U1EF9> <U0059>;<TILDE>;<SMALL>;IGNORE
+<U1E8E> <U0059>;<DOT>;<CAPITAL>;IGNORE
+<U1E8F> <U0059>;<DOT>;<SMALL>;IGNORE
+<U1EF4> <U0059>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF5> <U0059>;<DOT-BELOW>;<SMALL>;IGNORE
+<y8>
+<U005A> <U005A>;<NONE>;<CAPITAL>;IGNORE
+<U007A> <U005A>;<NONE>;<SMALL>;IGNORE
+<U0179> <U005A>;<ACUTE>;<CAPITAL>;IGNORE
+<U017A> <U005A>;<ACUTE>;<SMALL>;IGNORE
+<U1E90> <U005A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E91> <U005A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U017D> <U005A>;<CARON>;<CAPITAL>;IGNORE
+<U017E> <U005A>;<CARON>;<SMALL>;IGNORE
+<U017B> <U005A>;<DOT>;<CAPITAL>;IGNORE
+<U017C> <U005A>;<DOT>;<SMALL>;IGNORE
+<U1E92> <U005A>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E93> <U005A>;<DOT-BELOW>;<SMALL>;IGNORE
+<U01B5> <U005A>;<STROKE>;<CAPITAL>;IGNORE
+<U01B6> <U005A>;<STROKE>;<SMALL>;IGNORE
+<U1E94> <U005A>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E95> <U005A>;<LINE-BELOW>;<SMALL>;IGNORE
+<z8>
+<U0391> <U0391>;<CAPITAL>;<GREEK>;IGNORE
+<U0386> <U0391>;<CAPITAL>;<TONOS>;IGNORE
+<U03B1> <U0391>;<SMALL>;<GREEK>;IGNORE
+<U03AC> <U0391>;<SMALL>;<TONOS>;IGNORE
+<U0392> <U0392>;<CAPITAL>;<GREEK>;IGNORE
+<U03B2> <U0392>;<SMALL>;<GREEK>;IGNORE
+<U0393> <U0393>;<CAPITAL>;<GREEK>;IGNORE
+<U03B3> <U0393>;<SMALL>;<GREEK>;IGNORE
+<U0394> <U0394>;<CAPITAL>;<GREEK>;IGNORE
+<U03B4> <U0394>;<SMALL>;<GREEK>;IGNORE
+<U0395> <U0395>;<CAPITAL>;<GREEK>;IGNORE
+<U0388> <U0395>;<CAPITAL>;<TONOS>;IGNORE
+<U03B5> <U0395>;<SMALL>;<GREEK>;IGNORE
+<U03AD> <U0395>;<SMALL>;<TONOS>;IGNORE
+<U0396> <U0396>;<CAPITAL>;<GREEK>;IGNORE
+<U03B6> <U0396>;<SMALL>;<GREEK>;IGNORE
+<U0397> <U0397>;<CAPITAL>;<GREEK>;IGNORE
+<U0389> <U0397>;<CAPITAL>;<TONOS>;IGNORE
+<U03B7> <U0397>;<SMALL>;<GREEK>;IGNORE
+<U03AE> <U0397>;<SMALL>;<TONOS>;IGNORE
+<U0398> <U0398>;<CAPITAL>;<GREEK>;IGNORE
+<U03B8> <U0398>;<SMALL>;<GREEK>;IGNORE
+<U0399> <U0399>;<CAPITAL>;<GREEK>;IGNORE
+<U038A> <U0399>;<CAPITAL>;<TONOS>;IGNORE
+<U03AA> <U0399>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03B9> <U0399>;<SMALL>;<GREEK>;IGNORE
+<U03AF> <U0399>;<SMALL>;<TONOS>;IGNORE
+<U03CA> <U0399>;<SMALL>;<DIALYTICA>;IGNORE
+<U0390> <U0399>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U039A> <U039A>;<CAPITAL>;<GREEK>;IGNORE
+<U03BA> <U039A>;<SMALL>;<GREEK>;IGNORE
+<U039B> <U039B>;<CAPITAL>;<GREEK>;IGNORE
+<U03BB> <U039B>;<SMALL>;<GREEK>;IGNORE
+<U039C> <U039C>;<CAPITAL>;<GREEK>;IGNORE
+<U03BC> <U039C>;<SMALL>;<GREEK>;IGNORE
+<U039D> <U039D>;<CAPITAL>;<GREEK>;IGNORE
+<U03BD> <U039D>;<SMALL>;<GREEK>;IGNORE
+<U039E> <U039E>;<CAPITAL>;<GREEK>;IGNORE
+<U03BE> <U039E>;<SMALL>;<GREEK>;IGNORE
+<U039F> <U039F>;<CAPITAL>;<GREEK>;IGNORE
+<U038C> <U039F>;<CAPITAL>;<TONOS>;IGNORE
+<U03BF> <U039F>;<SMALL>;<GREEK>;IGNORE
+<U03CC> <U039F>;<SMALL>;<TONOS>;IGNORE
+<U03A0> <U03A0>;<CAPITAL>;<GREEK>;IGNORE
+<U03C0> <U03A0>;<SMALL>;<GREEK>;IGNORE
+<U03A1> <U03A1>;<CAPITAL>;<GREEK>;IGNORE
+<U03C1> <U03A1>;<SMALL>;<GREEK>;IGNORE
+<U03A3> <U03A3>;<CAPITAL>;<GREEK>;IGNORE
+<U03C3> <U03A3>;<SMALL>;<GREEK>;IGNORE
+<U03C2> <U03A3>;<SMALL>;<U03C2>;IGNORE
+<U03A4> <U03A4>;<CAPITAL>;<GREEK>;IGNORE
+<U03C4> <U03A4>;<SMALL>;<GREEK>;IGNORE
+<U03A5> <U03A5>;<CAPITAL>;<GREEK>;IGNORE
+<U038E> <U03A5>;<CAPITAL>;<TONOS>;IGNORE
+<U03AB> <U03A5>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03C5> <U03A5>;<SMALL>;<GREEK>;IGNORE
+<U03CD> <U03A5>;<SMALL>;<TONOS>;IGNORE
+<U03CB> <U03A5>;<SMALL>;<DIALYTICA>;IGNORE
+<U03B0> <U03A5>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U03A6> <U03A6>;<CAPITAL>;<GREEK>;IGNORE
+<U03C6> <U03A6>;<SMALL>;<GREEK>;IGNORE
+<U03A7> <U03A7>;<CAPITAL>;<GREEK>;IGNORE
+<U03C7> <U03A7>;<SMALL>;<GREEK>;IGNORE
+<U03A8> <U03A8>;<CAPITAL>;<GREEK>;IGNORE
+<U03C8> <U03A8>;<SMALL>;<GREEK>;IGNORE
+<U03A9> <U03A9>;<CAPITAL>;<GREEK>;IGNORE
+<U038F> <U03A9>;<CAPITAL>;<TONOS>;IGNORE
+<U03C9> <U03A9>;<SMALL>;<GREEK>;IGNORE
+<U03CE> <U03A9>;<SMALL>;<TONOS>;IGNORE
+<U0410> <U0410>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0430> <U0410>;<CYRILLIC>;<SMALL>;IGNORE
+<U0411> <U0411>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0431> <U0411>;<CYRILLIC>;<SMALL>;IGNORE
+<U0412> <U0412>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0432> <U0412>;<CYRILLIC>;<SMALL>;IGNORE
+<U0413> <U0413>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0433> <U0413>;<CYRILLIC>;<SMALL>;IGNORE
+<U0403> <U0403>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0453> <U0403>;<CYRILLIC>;<SMALL>;IGNORE
+<U0490> <U0490>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0491> <U0490>;<CYRILLIC>;<SMALL>;IGNORE
+<U0414> <U0414>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0434> <U0414>;<CYRILLIC>;<SMALL>;IGNORE
+<U0402> <U0402>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0452> <U0402>;<CYRILLIC>;<SMALL>;IGNORE
+<U0415> <U0415>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0435> <U0415>;<CYRILLIC>;<SMALL>;IGNORE
+<U0401> <U0401>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0451> <U0401>;<CYRILLIC>;<SMALL>;IGNORE
+<U0404> <U0404>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0454> <U0404>;<CYRILLIC>;<SMALL>;IGNORE
+<U0416> <U0416>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0436> <U0416>;<CYRILLIC>;<SMALL>;IGNORE
+<U0417> <U0417>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0437> <U0417>;<CYRILLIC>;<SMALL>;IGNORE
+<U0418> <U0418>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0438> <U0418>;<CYRILLIC>;<SMALL>;IGNORE
+<U0406> <U0406>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0456> <U0406>;<CYRILLIC>;<SMALL>;IGNORE
+<U0407> <U0407>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0457> <U0407>;<CYRILLIC>;<SMALL>;IGNORE
+<U0408> <U0408>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0458> <U0408>;<CYRILLIC>;<SMALL>;IGNORE
+<U0419> <U0419>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0439> <U0419>;<CYRILLIC>;<SMALL>;IGNORE
+<U041A> <U041A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043A> <U041A>;<CYRILLIC>;<SMALL>;IGNORE
+<U040C> <U040C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045C> <U040C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041B> <U041B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043B> <U041B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0409> <U0409>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0459> <U0409>;<CYRILLIC>;<SMALL>;IGNORE
+<U041C> <U041C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043C> <U041C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041D> <U041D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043D> <U041D>;<CYRILLIC>;<SMALL>;IGNORE
+<U040A> <U040A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045A> <U040A>;<CYRILLIC>;<SMALL>;IGNORE
+<U041E> <U041E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043E> <U041E>;<CYRILLIC>;<SMALL>;IGNORE
+<U041F> <U041F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043F> <U041F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0420> <U0420>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0440> <U0420>;<CYRILLIC>;<SMALL>;IGNORE
+<U0421> <U0421>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0441> <U0421>;<CYRILLIC>;<SMALL>;IGNORE
+<U0422> <U0422>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0442> <U0422>;<CYRILLIC>;<SMALL>;IGNORE
+<U040B> <U040B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045B> <U040B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0423> <U0423>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0443> <U0423>;<CYRILLIC>;<SMALL>;IGNORE
+<U040E> <U040E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045E> <U040E>;<CYRILLIC>;<SMALL>;IGNORE
+<U0424> <U0424>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0444> <U0424>;<CYRILLIC>;<SMALL>;IGNORE
+<U0425> <U0425>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0445> <U0425>;<CYRILLIC>;<SMALL>;IGNORE
+<U0426> <U0426>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0446> <U0426>;<CYRILLIC>;<SMALL>;IGNORE
+<U0405> <U0405>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0455> <U0405>;<CYRILLIC>;<SMALL>;IGNORE
+<U0427> <U0427>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0447> <U0427>;<CYRILLIC>;<SMALL>;IGNORE
+<U040F> <U040F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045F> <U040F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0428> <U0428>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0448> <U0428>;<CYRILLIC>;<SMALL>;IGNORE
+<U0429> <U0429>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0449> <U0429>;<CYRILLIC>;<SMALL>;IGNORE
+<U044A> <U044A>;<CYRILLIC>;<SMALL>;IGNORE
+<U042A> <U044A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042B> <U042B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044B> <U042B>;<CYRILLIC>;<SMALL>;IGNORE
+<U044C> <U044C>;<CYRILLIC>;<SMALL>;IGNORE
+<U042C> <U044C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042D> <U042D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044D> <U042D>;<CYRILLIC>;<SMALL>;IGNORE
+<U042E> <U042E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044E> <U042E>;<CYRILLIC>;<SMALL>;IGNORE
+<U042F> <U042F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044F> <U042F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0462> <U0462>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0463> <U0462>;<CYRILLIC>;<SMALL>;IGNORE
+<U046A> <U046A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U046B> <U046A>;<CYRILLIC>;<SMALL>;IGNORE
+<U0472> <U0472>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0473> <U0472>;<CYRILLIC>;<SMALL>;IGNORE
+<U0474> <U0474>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0475> <U0474>;<CYRILLIC>;<SMALL>;IGNORE
+<U0480> <U0480>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0481> <U0480>;<CYRILLIC>;<SMALL>;IGNORE
+<U05D0> <U05D0>;IGNORE;IGNORE;IGNORE
+<U05D1> <U05D1>;IGNORE;IGNORE;IGNORE
+<U05D2> <U05D2>;IGNORE;IGNORE;IGNORE
+<U05D3> <U05D3>;IGNORE;IGNORE;IGNORE
+<U05D4> <U05D4>;IGNORE;IGNORE;IGNORE
+<U05D5> <U05D5>;IGNORE;IGNORE;IGNORE
+<U05D6> <U05D6>;IGNORE;IGNORE;IGNORE
+<U05D7> <U05D7>;IGNORE;IGNORE;IGNORE
+<U05D8> <U05D8>;IGNORE;IGNORE;IGNORE
+<U05D9> <U05D9>;IGNORE;IGNORE;IGNORE
+<U05DA> <U05DA>;IGNORE;IGNORE;IGNORE
+<U05DB> <U05DB>;IGNORE;IGNORE;IGNORE
+<U05DC> <U05DC>;IGNORE;IGNORE;IGNORE
+<U05DD> <U05DD>;IGNORE;IGNORE;IGNORE
+<U05DE> <U05DE>;IGNORE;IGNORE;IGNORE
+<U05DF> <U05DF>;IGNORE;IGNORE;IGNORE
+<U05E0> <U05E0>;IGNORE;IGNORE;IGNORE
+<U05E1> <U05E1>;IGNORE;IGNORE;IGNORE
+<U05E2> <U05E2>;IGNORE;IGNORE;IGNORE
+<U05E3> <U05E3>;IGNORE;IGNORE;IGNORE
+<U05E4> <U05E4>;IGNORE;IGNORE;IGNORE
+<U05E5> <U05E5>;IGNORE;IGNORE;IGNORE
+<U05E6> <U05E6>;IGNORE;IGNORE;IGNORE
+<U05E7> <U05E7>;IGNORE;IGNORE;IGNORE
+<U05E8> <U05E8>;IGNORE;IGNORE;IGNORE
+<U05E9> <U05E9>;IGNORE;IGNORE;IGNORE
+<U05EA> <U05EA>;IGNORE;IGNORE;IGNORE
+
+% Arabic collating
+
+<U060C> IGNORE;IGNORE;IGNORE;<U060C>
+<U061B> IGNORE;IGNORE;IGNORE;<U061B>
+<U061F> IGNORE;IGNORE;IGNORE;<U061F>
+<U0640> IGNORE;IGNORE;IGNORE;<U0640>
+
+<U0621> <U0621>;<U0621>;IGNORE;IGNORE
+<U0622> <U0622>;<U0622>;IGNORE;IGNORE
+<UFE82> <U0622>;<UFE82>;IGNORE;IGNORE
+<U0623> <U0621>;<U0623>;IGNORE;IGNORE
+<UFE84> <U0621>;<UFE84>;IGNORE;IGNORE
+<U0624> <U0621>;<U0624>;IGNORE;IGNORE
+<U0625> <U0621>;<U0625>;IGNORE;IGNORE
+<UFE88> <U0621>;<UFE88>;IGNORE;IGNORE
+<U0626> <U0621>;<U0626>;IGNORE;IGNORE
+<U0670> <U0670>;<U0670>;IGNORE;IGNORE
+<U0627> <U0627>;<U0627>;IGNORE;IGNORE
+<UFE8D> <U0627>;<UFE8D>;IGNORE;IGNORE
+<UFE8E> <U0627>;<UFE8E>;IGNORE;IGNORE
+<UE016> <U0627>;<UE016>;IGNORE;IGNORE
+<U0628> <U0628>;<U0628>;IGNORE;IGNORE
+<UFE8F> <U0628>;<UFE8F>;IGNORE;IGNORE
+<UFE90> <U0628>;<UFE90>;IGNORE;IGNORE
+<UFE91> <U0628>;<UFE91>;IGNORE;IGNORE
+<UFE92> <U0628>;<UFE92>;IGNORE;IGNORE
+<U067E> <U067E>;<U067E>;IGNORE;IGNORE
+<U06A4> <U06A4>;<U06A4>;IGNORE;IGNORE
+<U0629> <U0629>;<U0629>;IGNORE;IGNORE
+<UFE93> <U0629>;<UFE93>;IGNORE;IGNORE
+<UFE94> <U0629>;<UFE94>;IGNORE;IGNORE
+<U062A> <U0629>;<U062A>;IGNORE;IGNORE
+<UFE95> <U0629>;<UFE95>;IGNORE;IGNORE
+<UFE96> <U0629>;<UFE96>;IGNORE;IGNORE
+<UFE97> <U0629>;<UFE97>;IGNORE;IGNORE
+<UFE98> <U0629>;<UFE98>;IGNORE;IGNORE
+<U062B> <U062B>;<U062B>;IGNORE;IGNORE
+<UFE99> <U062B>;<UFE99>;IGNORE;IGNORE
+<UFE9A> <U062B>;<UFE9A>;IGNORE;IGNORE
+<UFE9B> <U062B>;<UFE9B>;IGNORE;IGNORE
+<UFE9C> <U062B>;<UFE9C>;IGNORE;IGNORE
+<U062C> <U062C>;<U062C>;IGNORE;IGNORE
+<UFE9D> <U062C>;<UFE9D>;IGNORE;IGNORE
+<UFE9E> <U062C>;<UFE9E>;IGNORE;IGNORE
+<UFE9F> <U062C>;<UFE9F>;IGNORE;IGNORE
+<UFEA0> <U062C>;<UFEA0>;IGNORE;IGNORE
+<U062D> <U062D>;<U062D>;IGNORE;IGNORE
+<UFEA1> <U062D>;<UFEA1>;IGNORE;IGNORE
+<UFEA2> <U062D>;<UFEA2>;IGNORE;IGNORE
+<UFEA3> <U062D>;<UFEA3>;IGNORE;IGNORE
+<UFEA4> <U062D>;<UFEA4>;IGNORE;IGNORE
+<U062E> <U062E>;<U062E>;IGNORE;IGNORE
+<UFEA5> <U062E>;<UFEA5>;IGNORE;IGNORE
+<UFEA6> <U062E>;<UFEA6>;IGNORE;IGNORE
+<UFEA7> <U062E>;<UFEA7>;IGNORE;IGNORE
+<UFEA8> <U062E>;<UFEA8>;IGNORE;IGNORE
+<U062F> <U062F>;<U062F>;IGNORE;IGNORE
+<UFEA9> <U062F>;<UFEA9>;IGNORE;IGNORE
+<UFEAA> <U062F>;<UFEAA>;IGNORE;IGNORE
+<U0630> <U0630>;<U0630>;IGNORE;IGNORE
+<UFEAB> <U0630>;<UFEAB>;IGNORE;IGNORE
+<UFEAC> <U0630>;<UFEAC>;IGNORE;IGNORE
+<U0631> <U0631>;<U0631>;IGNORE;IGNORE
+<UFEAD> <U0631>;<UFEAD>;IGNORE;IGNORE
+<UFEAE> <U0631>;<UFEAE>;IGNORE;IGNORE
+<U0632> <U0632>;<U0632>;IGNORE;IGNORE
+<UFEAF> <U0632>;<UFEAF>;IGNORE;IGNORE
+<UFEB0> <U0632>;<UFEB0>;IGNORE;IGNORE
+<U0633> <U0633>;<U0633>;IGNORE;IGNORE
+<UFEB1> <U0633>;<UFEB1>;IGNORE;IGNORE
+<UFEB2> <U0633>;<UFEB2>;IGNORE;IGNORE
+<UFEB3> <U0633>;<UFEB3>;IGNORE;IGNORE
+<UFEB4> <U0633>;<UFEB4>;IGNORE;IGNORE
+<U0634> <U0634>;<U0634>;IGNORE;IGNORE
+<UFEB5> <U0634>;<UFEB5>;IGNORE;IGNORE
+<UFEB6> <U0634>;<UFEB6>;IGNORE;IGNORE
+<UFEB7> <U0634>;<UFEB7>;IGNORE;IGNORE
+<UFEB8> <U0634>;<UFEB8>;IGNORE;IGNORE
+<U0635> <U0635>;<U0635>;IGNORE;IGNORE
+<UFEB9> <U0635>;<UFEB9>;IGNORE;IGNORE
+<UFEBA> <U0635>;<UFEBA>;IGNORE;IGNORE
+<UFEBB> <U0635>;<UFEBB>;IGNORE;IGNORE
+<UFEBC> <U0635>;<UFEBC>;IGNORE;IGNORE
+<U0636> <U0636>;<U0636>;IGNORE;IGNORE
+<UFEBD> <U0636>;<UFEBD>;IGNORE;IGNORE
+<UFEBE> <U0636>;<UFEBE>;IGNORE;IGNORE
+<UFEBF> <U0636>;<UFEBF>;IGNORE;IGNORE
+<UFEC0> <U0636>;<UFEC0>;IGNORE;IGNORE
+<U0637> <U0637>;<U0637>;IGNORE;IGNORE
+<UFEC1> <U0637>;<UFEC1>;IGNORE;IGNORE
+<UFEC2> <U0637>;<UFEC2>;IGNORE;IGNORE
+<UFEC3> <U0637>;<UFEC3>;IGNORE;IGNORE
+<UFEC4> <U0637>;<UFEC4>;IGNORE;IGNORE
+<U0638> <U0638>;<U0638>;IGNORE;IGNORE
+<UFEC5> <U0638>;<UFEC5>;IGNORE;IGNORE
+<UFEC6> <U0638>;<UFEC6>;IGNORE;IGNORE
+<UFEC7> <U0638>;<UFEC7>;IGNORE;IGNORE
+<UFEC8> <U0638>;<UFEC8>;IGNORE;IGNORE
+<U0639> <U0639>;<U0639>;IGNORE;IGNORE
+<UFEC9> <U0639>;<UFEC9>;IGNORE;IGNORE
+<UFECA> <U0639>;<UFECA>;IGNORE;IGNORE
+<UFECB> <U0639>;<UFECB>;IGNORE;IGNORE
+<UFECC> <U0639>;<UFECC>;IGNORE;IGNORE
+<U063A> <U063A>;<U063A>;IGNORE;IGNORE
+<UFECD> <U063A>;<UFECD>;IGNORE;IGNORE
+<UFECE> <U063A>;<UFECE>;IGNORE;IGNORE
+<UFECF> <U063A>;<UFECF>;IGNORE;IGNORE
+<UFED0> <U063A>;<UFED0>;IGNORE;IGNORE
+<U0641> <U0641>;<U0641>;IGNORE;IGNORE
+<UFED1> <U0641>;<UFED1>;IGNORE;IGNORE
+<UFED2> <U0641>;<UFED2>;IGNORE;IGNORE
+<UFED3> <U0641>;<UFED3>;IGNORE;IGNORE
+<UFED4> <U0641>;<UFED4>;IGNORE;IGNORE
+<U0642> <U0642>;<U0642>;IGNORE;IGNORE
+<UFED5> <U0642>;<UFED5>;IGNORE;IGNORE
+<UFED6> <U0642>;<UFED6>;IGNORE;IGNORE
+<UFED7> <U0642>;<UFED7>;IGNORE;IGNORE
+<UFED8> <U0642>;<UFED8>;IGNORE;IGNORE
+<U0643> <U0643>;<U0643>;IGNORE;IGNORE
+<UFED9> <U0643>;<UFED9>;IGNORE;IGNORE
+<UFEDA> <U0643>;<UFEDA>;IGNORE;IGNORE
+<UFEDB> <U0643>;<UFEDB>;IGNORE;IGNORE
+<UFEDC> <U0643>;<UFEDC>;IGNORE;IGNORE
+<U0644> <U0644>;<U0644>;IGNORE;IGNORE
+<UFEDD> <U0644>;<UFEDD>;IGNORE;IGNORE
+<UFEDE> <U0644>;<UFEDE>;IGNORE;IGNORE
+<UFEDF> <U0644>;<UFEDF>;IGNORE;IGNORE
+<UFEE0> <U0644>;<UFEE0>;IGNORE;IGNORE
+<U0645> <U0645>;<U0645>;IGNORE;IGNORE
+<UFEE1> <U0645>;<UFEE1>;IGNORE;IGNORE
+<UFEE2> <U0645>;<UFEE2>;IGNORE;IGNORE
+<UFEE3> <U0645>;<UFEE3>;IGNORE;IGNORE
+<UFEE4> <U0645>;<UFEE4>;IGNORE;IGNORE
+<U0646> <U0646>;<U0646>;IGNORE;IGNORE
+<UFEE5> <U0646>;<UFEE5>;IGNORE;IGNORE
+<UFEE6> <U0646>;<UFEE6>;IGNORE;IGNORE
+<UFEE7> <U0646>;<UFEE7>;IGNORE;IGNORE
+<UFEE8> <U0646>;<UFEE8>;IGNORE;IGNORE
+<U0647> <U0647>;<U0647>;IGNORE;IGNORE
+<UFEE9> <U0647>;<UFEE9>;IGNORE;IGNORE
+<UFEEA> <U0647>;<UFEEA>;IGNORE;IGNORE
+<UFEEB> <U0647>;<UFEEB>;IGNORE;IGNORE
+<UFEEC> <U0647>;<UFEEC>;IGNORE;IGNORE
+<U0648> <U0648>;<U0648>;IGNORE;IGNORE
+<UFEED> <U0648>;<UFEED>;IGNORE;IGNORE
+<UFEEE> <U0648>;<UFEEE>;IGNORE;IGNORE
+<U0649> <U0649>;<U0649>;IGNORE;IGNORE
+<UFEEF> <U0649>;<UFEEF>;IGNORE;IGNORE
+<UFEF0> <U0649>;<UFEF0>;IGNORE;IGNORE
+<U064A> <U064A>;<U064A>;IGNORE;IGNORE
+<UFEF1> <U064A>;<UFEF1>;IGNORE;IGNORE
+<UFEF2> <U064A>;<UFEF2>;IGNORE;IGNORE
+<UFEF3> <U064A>;<UFEF3>;IGNORE;IGNORE
+<UFEF4> <U064A>;<UFEF4>;IGNORE;IGNORE
+
+<U064B> IGNORE;IGNORE;<U064B>;IGNORE
+<U064C> IGNORE;IGNORE;<U064C>;IGNORE
+<U064D> IGNORE;IGNORE;<U064D>;IGNORE
+<U064E> IGNORE;IGNORE;<U064E>;IGNORE
+<U064F> IGNORE;IGNORE;<U064F>;IGNORE
+<U0650> IGNORE;IGNORE;<U0650>;IGNORE
+<U0651> IGNORE;IGNORE;<U0651>;IGNORE
+<UFE7D> IGNORE;IGNORE;<UFE7D>;IGNORE
+<U0652> IGNORE;IGNORE;<U0652>;IGNORE
+
+<U0660> <U0030>;<U0660>;IGNORE;IGNORE
+<U0661> <U0031>;<U0661>;IGNORE;IGNORE
+<U0662> <U0032>;<U0662>;IGNORE;IGNORE
+<U0663> <U0033>;<U0663>;IGNORE;IGNORE
+<U0664> <U0034>;<U0664>;IGNORE;IGNORE
+<U0665> <U0035>;<U0665>;IGNORE;IGNORE
+<U0666> <U0036>;<U0666>;IGNORE;IGNORE
+<U0667> <U0037>;<U0667>;IGNORE;IGNORE
+<U0668> <U0038>;<U0668>;IGNORE;IGNORE
+<U0669> <U0039>;<U0669>;IGNORE;IGNORE
+
+<UFEF5> "<U0644><U0622>";"<U0644><U0622>";"<UFEF5><UFEF5>";IGNORE
+<UFEF6> "<U0644><U0622>";"<U0644><UFE82>";"<UFEF6><UFEF6>";IGNORE
+<UFEF7> "<U0644><U0623>";"<U0644><U0623>";"<UFEF7><UFEF7>";IGNORE
+<UFEF8> "<U0644><U0623>";"<U0644><UFE84>";"<UFEF8><UFEF8>";IGNORE
+<UFEF9> "<U0644><U0625>";"<U0644><U0625>";"<UFEF9><UFEF9>";IGNORE
+<UFEFA> "<U0644><U0625>";"<U0644><UFE88>";"<UFEFA><UFEFA>";IGNORE
+<UFEFB> "<U0644><U0627>";"<U0644><UFE8D>";"<UFEFB><UFEFB>";IGNORE
+<UFEFC> "<U0644><U0627>";"<U0644><UFE8E>";"<UFEFC><UFEFC>";IGNORE
+
+% katakana/hiragana sorting
+% base is katakana, as this is present in most charsets
+% normal before voiced before semi-voiced
+% small vocals before normal vocals
+% katakana before hiragana
+
+<U30A1> <U30A1>;<U30A1>;IGNORE;IGNORE
+<U3041> <U30A1>;<U3041>;IGNORE;IGNORE
+<U30A2> <U30A1>;<U30A2>;IGNORE;IGNORE
+<U3042> <U30A1>;<U3042>;IGNORE;IGNORE
+<U30A3> <U30A3>;<U30A3>;IGNORE;IGNORE
+<U3043> <U30A3>;<U3043>;IGNORE;IGNORE
+<U30A4> <U30A3>;<U30A4>;IGNORE;IGNORE
+<U3044> <U30A3>;<U3044>;IGNORE;IGNORE
+<U30A5> <U30A5>;<U30A5>;IGNORE;IGNORE
+<U3045> <U30A5>;<U3045>;IGNORE;IGNORE
+<U30A6> <U30A5>;<U30A6>;IGNORE;IGNORE
+<U3046> <U30A5>;<U3046>;IGNORE;IGNORE
+<U30F4> <U30A5>;<U30F4>;IGNORE;IGNORE
+<U30A7> <U30A7>;<U30A7>;IGNORE;IGNORE
+<U3047> <U30A7>;<U3047>;IGNORE;IGNORE
+<U30A8> <U30A7>;<U30A8>;IGNORE;IGNORE
+<U3048> <U30A7>;<U3048>;IGNORE;IGNORE
+<U30A9> <U30A9>;<U30A9>;IGNORE;IGNORE
+<U3049> <U30A9>;<U3049>;IGNORE;IGNORE
+<U30AA> <U30A9>;<U30AA>;IGNORE;IGNORE
+<U304A> <U30A9>;<U304A>;IGNORE;IGNORE
+<U30F5> <U30F5>;<U30F5>;IGNORE;IGNORE
+<U30AB> <U30F5>;<U30AB>;IGNORE;IGNORE
+<U304B> <U30F5>;<U304B>;IGNORE;IGNORE
+<U30AC> <U30F5>;<U30AC>;IGNORE;IGNORE
+<U304C> <U30F5>;<U304C>;IGNORE;IGNORE
+<U30AD> <U30AD>;<U30AD>;IGNORE;IGNORE
+<U304D> <U30AD>;<U304D>;IGNORE;IGNORE
+<U30AE> <U30AD>;<U30AE>;IGNORE;IGNORE
+<U304E> <U30AD>;<U304E>;IGNORE;IGNORE
+<U30AF> <U30AF>;<U30AF>;IGNORE;IGNORE
+<U304F> <U30AF>;<U304F>;IGNORE;IGNORE
+<U30B0> <U30AF>;<U30B0>;IGNORE;IGNORE
+<U3050> <U30AF>;<U3050>;IGNORE;IGNORE
+<U30F6> <U30F6>;<U30F6>;IGNORE;IGNORE
+<U30B1> <U30F6>;<U30B1>;IGNORE;IGNORE
+<U3051> <U30F6>;<U3051>;IGNORE;IGNORE
+<U30B2> <U30F6>;<U30B2>;IGNORE;IGNORE
+<U3052> <U30F6>;<U3052>;IGNORE;IGNORE
+<U30B3> <U30B3>;<U30B3>;IGNORE;IGNORE
+<U3053> <U30B3>;<U3053>;IGNORE;IGNORE
+<U30B4> <U30B3>;<U30B4>;IGNORE;IGNORE
+<U3054> <U30B3>;<U3054>;IGNORE;IGNORE
+<U30B5> <U30B5>;<U30B5>;IGNORE;IGNORE
+<U3055> <U30B5>;<U3055>;IGNORE;IGNORE
+<U30B6> <U30B5>;<U30B6>;IGNORE;IGNORE
+<U3056> <U30B5>;<U3056>;IGNORE;IGNORE
+<U30B7> <U30B7>;<U30B7>;IGNORE;IGNORE
+<U3057> <U30B7>;<U3057>;IGNORE;IGNORE
+<U30B8> <U30B7>;<U30B8>;IGNORE;IGNORE
+<U3058> <U30B7>;<U3058>;IGNORE;IGNORE
+<U30B9> <U30B9>;<U30B9>;IGNORE;IGNORE
+<U3059> <U30B9>;<U3059>;IGNORE;IGNORE
+<U30BA> <U30B9>;<U30BA>;IGNORE;IGNORE
+<U305A> <U30B9>;<U305A>;IGNORE;IGNORE
+<U30BB> <U30BB>;<U30BB>;IGNORE;IGNORE
+<U305B> <U30BB>;<U305B>;IGNORE;IGNORE
+<U30BC> <U30BB>;<U30BC>;IGNORE;IGNORE
+<U305C> <U30BB>;<U305C>;IGNORE;IGNORE
+<U30BD> <U30BD>;<U30BD>;IGNORE;IGNORE
+<U305D> <U30BD>;<U305D>;IGNORE;IGNORE
+<U30BE> <U30BD>;<U30BE>;IGNORE;IGNORE
+<U305E> <U30BD>;<U305E>;IGNORE;IGNORE
+<U30BF> <U30BF>;<U30BF>;IGNORE;IGNORE
+<U305F> <U30BF>;<U305F>;IGNORE;IGNORE
+<U30C0> <U30BF>;<U30C0>;IGNORE;IGNORE
+<U3060> <U30BF>;<U3060>;IGNORE;IGNORE
+<U30C1> <U30C1>;<U30C1>;IGNORE;IGNORE
+<U3061> <U30C1>;<U3061>;IGNORE;IGNORE
+<U30C2> <U30C1>;<U30C2>;IGNORE;IGNORE
+<U3062> <U30C1>;<U3062>;IGNORE;IGNORE
+<U30C3> <U30C3>;<U30C3>;IGNORE;IGNORE
+<U3063> <U30C3>;<U3063>;IGNORE;IGNORE
+<U30C4> <U30C3>;<U30C4>;IGNORE;IGNORE
+<U3064> <U30C3>;<U3064>;IGNORE;IGNORE
+<U30C5> <U30C3>;<U30C5>;IGNORE;IGNORE
+<U3065> <U30C3>;<U3065>;IGNORE;IGNORE
+<U30C6> <U30C6>;<U30C6>;IGNORE;IGNORE
+<U3066> <U30C6>;<U3066>;IGNORE;IGNORE
+<U30C7> <U30C6>;<U30C7>;IGNORE;IGNORE
+<U3067> <U30C6>;<U3067>;IGNORE;IGNORE
+<U30C8> <U30C8>;<U30C8>;IGNORE;IGNORE
+<U3068> <U30C8>;<U3068>;IGNORE;IGNORE
+<U30C9> <U30C8>;<U30C9>;IGNORE;IGNORE
+<U3069> <U30C8>;<U3069>;IGNORE;IGNORE
+<U30CA> <U30CA>;<U30CA>;IGNORE;IGNORE
+<U306A> <U30CA>;<U306A>;IGNORE;IGNORE
+<U30CB> <U30CB>;<U30CB>;IGNORE;IGNORE
+<U306B> <U30CB>;<U306B>;IGNORE;IGNORE
+<U30CC> <U30CC>;<U30CC>;IGNORE;IGNORE
+<U306C> <U30CC>;<U306C>;IGNORE;IGNORE
+<U30CD> <U30CD>;<U30CD>;IGNORE;IGNORE
+<U306D> <U30CD>;<U306D>;IGNORE;IGNORE
+<U30CE> <U30CE>;<U30CE>;IGNORE;IGNORE
+<U306E> <U30CE>;<U306E>;IGNORE;IGNORE
+<U30CF> <U30CF>;<U30CF>;IGNORE;IGNORE
+<U306F> <U30CF>;<U306F>;IGNORE;IGNORE
+<U30D0> <U30CF>;<U30D0>;IGNORE;IGNORE
+<U3070> <U30CF>;<U3070>;IGNORE;IGNORE
+<U30D1> <U30CF>;<U30D1>;IGNORE;IGNORE
+<U3071> <U30CF>;<U3071>;IGNORE;IGNORE
+<U30D2> <U30D2>;<U30D2>;IGNORE;IGNORE
+<U3072> <U30D2>;<U3072>;IGNORE;IGNORE
+<U30D3> <U30D2>;<U30D3>;IGNORE;IGNORE
+<U3073> <U30D2>;<U3073>;IGNORE;IGNORE
+<U30D4> <U30D2>;<U30D4>;IGNORE;IGNORE
+<U3074> <U30D2>;<U3074>;IGNORE;IGNORE
+<U30D5> <U30D5>;<U30D5>;IGNORE;IGNORE
+<U3075> <U30D5>;<U3075>;IGNORE;IGNORE
+<U30D6> <U30D5>;<U30D6>;IGNORE;IGNORE
+<U3076> <U30D5>;<U3076>;IGNORE;IGNORE
+<U30D7> <U30D5>;<U30D7>;IGNORE;IGNORE
+<U3077> <U30D5>;<U3077>;IGNORE;IGNORE
+<U30D8> <U30D8>;<U30D8>;IGNORE;IGNORE
+<U3078> <U30D8>;<U3078>;IGNORE;IGNORE
+<U30D9> <U30D8>;<U30D9>;IGNORE;IGNORE
+<U3079> <U30D8>;<U3079>;IGNORE;IGNORE
+<U30DA> <U30D8>;<U30DA>;IGNORE;IGNORE
+<U307A> <U30D8>;<U307A>;IGNORE;IGNORE
+<U30DB> <U30DB>;<U30DB>;IGNORE;IGNORE
+<U307B> <U30DB>;<U307B>;IGNORE;IGNORE
+<U30DC> <U30DB>;<U30DC>;IGNORE;IGNORE
+<U307C> <U30DB>;<U307C>;IGNORE;IGNORE
+<U30DD> <U30DB>;<U30DD>;IGNORE;IGNORE
+<U307D> <U30DB>;<U307D>;IGNORE;IGNORE
+<U30DE> <U30DE>;<U30DE>;IGNORE;IGNORE
+<U307E> <U30DE>;<U307E>;IGNORE;IGNORE
+<U30DF> <U30DF>;<U30DF>;IGNORE;IGNORE
+<U307F> <U30DF>;<U307F>;IGNORE;IGNORE
+<U30E0> <U30E0>;<U30E0>;IGNORE;IGNORE
+<U3080> <U30E0>;<U3080>;IGNORE;IGNORE
+<U30E1> <U30E1>;<U30E1>;IGNORE;IGNORE
+<U3081> <U30E1>;<U3081>;IGNORE;IGNORE
+<U30E2> <U30E2>;<U30E2>;IGNORE;IGNORE
+<U3082> <U30E2>;<U3082>;IGNORE;IGNORE
+<U30E3> <U30E3>;<U30E3>;IGNORE;IGNORE
+<U3083> <U30E3>;<U3083>;IGNORE;IGNORE
+<U30E4> <U30E3>;<U30E4>;IGNORE;IGNORE
+<U3084> <U30E3>;<U3084>;IGNORE;IGNORE
+<U30E5> <U30E5>;<U30E5>;IGNORE;IGNORE
+<U3085> <U30E5>;<U3085>;IGNORE;IGNORE
+<U30E6> <U30E5>;<U30E6>;IGNORE;IGNORE
+<U3086> <U30E5>;<U3086>;IGNORE;IGNORE
+<U30E7> <U30E7>;<U30E7>;IGNORE;IGNORE
+<U3087> <U30E7>;<U3087>;IGNORE;IGNORE
+<U30E8> <U30E7>;<U30E8>;IGNORE;IGNORE
+<U3088> <U30E7>;<U3088>;IGNORE;IGNORE
+<U30E9> <U30E9>;<U30E9>;IGNORE;IGNORE
+<U3089> <U30E9>;<U3089>;IGNORE;IGNORE
+<U30EA> <U30EA>;<U30EA>;IGNORE;IGNORE
+<U308A> <U30EA>;<U308A>;IGNORE;IGNORE
+<U30EB> <U30EB>;<U30EB>;IGNORE;IGNORE
+<U308B> <U30EB>;<U308B>;IGNORE;IGNORE
+<U30EC> <U30EC>;<U30EC>;IGNORE;IGNORE
+<U308C> <U30EC>;<U308C>;IGNORE;IGNORE
+<U30ED> <U30ED>;<U30ED>;IGNORE;IGNORE
+<U308D> <U30ED>;<U308D>;IGNORE;IGNORE
+<U30EE> <U30EE>;<U30EE>;IGNORE;IGNORE
+<U308E> <U30EE>;<U308E>;IGNORE;IGNORE
+<U30EF> <U30EE>;<U30EF>;IGNORE;IGNORE
+<U308F> <U30EE>;<U308F>;IGNORE;IGNORE
+<U30F0> <U30F0>;<U30F0>;IGNORE;IGNORE
+<U3090> <U30F0>;<U3090>;IGNORE;IGNORE
+<U30F1> <U30F1>;<U30F1>;IGNORE;IGNORE
+<U3091> <U30F1>;<U3091>;IGNORE;IGNORE
+<U30F2> <U30F2>;<U30F2>;IGNORE;IGNORE
+<U3092> <U30F2>;<U3092>;IGNORE;IGNORE
+<U30F3> <U30F3>;<U30F3>;IGNORE;IGNORE
+<U3093> <U30F3>;<U3093>;IGNORE;IGNORE
+
+order_end
+
diff --git a/ap/build/uClibc/extra/locale/collation/es_UY b/ap/build/uClibc/extra/locale/collation/es_UY
new file mode 100644
index 0000000..09fd11b
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/es_UY
@@ -0,0 +1 @@
+copy "es_ES"
diff --git a/ap/build/uClibc/extra/locale/collation/es_VE b/ap/build/uClibc/extra/locale/collation/es_VE
new file mode 100644
index 0000000..09fd11b
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/es_VE
@@ -0,0 +1 @@
+copy "es_ES"
diff --git a/ap/build/uClibc/extra/locale/collation/et_EE b/ap/build/uClibc/extra/locale/collation/et_EE
new file mode 100644
index 0000000..88c7aae
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/et_EE
@@ -0,0 +1,2061 @@
+
+% Base collation scheme: 1994-03-22
+
+% Ordering algorithm:
+% 1. Spaces and hyphen (but not soft
+% hyphen) before punctuation
+% characters, punctuation characters
+% before numbers,
+% numbers before letters.
+% 2. Letters with diacritical marks are
+% members of equivalence classes
+% 3. A distinction is made with regards
+% to case as noted below.
+% 4. Special characters are ignored
+% when comparing letters, but then
+% they are considered
+% 5. The alphabets are sorted in order
+% of first appearance in ISO 10646:
+% Latin, Greek, Cyrillic, etc.
+%
+% According to Greek specifications,
+% the steps 2. and 3. above are reversed
+% for the Greek script
+
+% collating symbols
+
+% The collating symbol naming is
+% mostly taken from ISO 10646-1,
+% for example the case and accent
+% names are from this standard.
+
+collating-symbol <CAPITAL>
+collating-symbol <CAPITAL-SMALL>
+collating-symbol <SMALL-CAPITAL>
+collating-symbol <SMALL>
+
+% <CAPITAL-SMALL> and <SMALL-CAPITAL>
+% are for cases like Danish <U0041><U0061>
+% and Spanish <U0043><U0068> being treated
+% as one letter.
+
+% The <a8> ...... <z8> collating
+% symbols have defined weights as
+% the last character in a group of
+% Latin letters. They are used
+% to specify deltas by locales using
+% a locale as the default ordering
+% and by "replace-after" statements
+% specifying the changed placement
+% in an ordering of a character.
+
+collating-symbol <a8>
+collating-symbol <b8>
+collating-symbol <c8>
+collating-symbol <d8>
+collating-symbol <e8>
+collating-symbol <f8>
+collating-symbol <g8>
+collating-symbol <h8>
+collating-symbol <i8>
+collating-symbol <j8>
+collating-symbol <k8>
+collating-symbol <l8>
+collating-symbol <m8>
+collating-symbol <n8>
+collating-symbol <o8>
+collating-symbol <p8>
+collating-symbol <q8>
+collating-symbol <r8>
+collating-symbol <s8>
+collating-symbol <t8>
+collating-symbol <u8>
+collating-symbol <v8>
+collating-symbol <w8>
+collating-symbol <x8>
+collating-symbol <y8>
+collating-symbol <z8>
+
+collating-symbol <NONE>
+collating-symbol <ACUTE>
+collating-symbol <ACUTE+DOT>
+collating-symbol <GRAVE>
+collating-symbol <DOUBLE-GRAVE>
+collating-symbol <BREVE>
+collating-symbol <BREVE+ACUTE>
+collating-symbol <BREVE+GRAVE>
+collating-symbol <BREVE+MACRON>
+collating-symbol <BREVE+HOOK>
+collating-symbol <BREVE+TILDE>
+collating-symbol <BREVE+DOT-BELOW>
+collating-symbol <BREVE-BELOW>
+collating-symbol <INVERTED-BREVE>
+collating-symbol <CIRCUMFLEX>
+collating-symbol <CIRCUMFLEX+ACUTE>
+collating-symbol <CIRCUMFLEX+GRAVE>
+collating-symbol <CIRCUMFLEX+HOOK>
+collating-symbol <CIRCUMFLEX+TILDE>
+collating-symbol <CIRCUMFLEX+DOT-BELOW>
+collating-symbol <CARON>
+collating-symbol <CARON+DIAERESIS>
+collating-symbol <CARON+DOT>
+collating-symbol <RING>
+collating-symbol <RING+ACUTE>
+collating-symbol <RING-BELOW>
+collating-symbol <DIAERESIS>
+collating-symbol <DIAERESIS+MACRON>
+collating-symbol <DIAERESIS+ACUTE>
+collating-symbol <DIAERESIS+GRAVE>
+collating-symbol <DIAERESIS+CARON>
+collating-symbol <DOUBLE-ACUTE>
+collating-symbol <HOOK>
+collating-symbol <TILDE>
+collating-symbol <TILDE+ACUTE>
+collating-symbol <TILDE+DIAERESIS>
+collating-symbol <TILDE-BELOW>
+collating-symbol <DOT>
+collating-symbol <DOT-BELOW>
+collating-symbol <DOT+DOT-BELOW>
+collating-symbol <STROKE>
+collating-symbol <STROKE+ACUTE>
+collating-symbol <CEDILLA>
+collating-symbol <CEDILLA+ACUTE>
+collating-symbol <CEDILLA+GRAVE>
+collating-symbol <CEDILLA+BREVE>
+collating-symbol <OGONEK>
+collating-symbol <OGONEK+MACRON>
+collating-symbol <MACRON>
+collating-symbol <MACRON+ACUTE>
+collating-symbol <MACRON+GRAVE>
+collating-symbol <MACRON+DIAERESIS>
+collating-symbol <MACRON+DIAERESIS-BELOW>
+collating-symbol <MACRON+DOT>
+collating-symbol <MACRON+DOT-BELOW>
+collating-symbol <MACRON+CIRCUMFLEX>
+collating-symbol <LINE-BELOW>
+collating-symbol <HORN>
+collating-symbol <HORN+ACUTE>
+collating-symbol <HORN+GRAVE>
+collating-symbol <HORN+HOOK>
+collating-symbol <HORN+TILDE>
+collating-symbol <HORN+DOT-BELOW>
+collating-symbol <PRECEDED-BY-APOSTROPHE>
+collating-symbol <GREEK>
+collating-symbol <TONOS>
+collating-symbol <DIALYTICA>
+collating-symbol <DIALYTICA+TONOS>
+collating-symbol <CYRILLIC>
+collating-symbol <HIRAGANA>
+collating-symbol <KATAKANA>
+collating-symbol <SPECIAL>
+
+% letter;accent;case;specials
+
+order_start forward;backward;forward;position
+
+% <CAPITAL> or <SMALL> letters first:
+
+<CAPITAL>
+<CAPITAL-SMALL>
+<SMALL-CAPITAL>
+<SMALL>
+
+% Accents:
+
+<NONE>
+<ACUTE>
+<ACUTE+DOT>
+<GRAVE>
+<DOUBLE-GRAVE>
+<BREVE>
+<BREVE+ACUTE>
+<BREVE+GRAVE>
+<BREVE+MACRON>
+<BREVE+HOOK>
+<BREVE+TILDE>
+<BREVE+DOT-BELOW>
+<BREVE-BELOW>
+<INVERTED-BREVE>
+<CIRCUMFLEX>
+<CIRCUMFLEX+ACUTE>
+<CIRCUMFLEX+GRAVE>
+<CIRCUMFLEX+HOOK>
+<CIRCUMFLEX+TILDE>
+<CIRCUMFLEX+DOT-BELOW>
+<CARON>
+<CARON+DIAERESIS>
+<CARON+DOT>
+<RING>
+<RING+ACUTE>
+<RING-BELOW>
+<DIAERESIS>
+<DIAERESIS+MACRON>
+<DIAERESIS+ACUTE>
+<DIAERESIS+GRAVE>
+<DIAERESIS+CARON>
+<DOUBLE-ACUTE>
+<HOOK>
+<TILDE>
+<TILDE+ACUTE>
+<TILDE+DIAERESIS>
+<TILDE-BELOW>
+<DOT>
+<DOT-BELOW>
+<DOT+DOT-BELOW>
+<STROKE>
+<STROKE+ACUTE>
+<CEDILLA>
+<CEDILLA+ACUTE>
+<CEDILLA+GRAVE>
+<CEDILLA+BREVE>
+<OGONEK>
+<OGONEK+MACRON>
+<MACRON>
+<MACRON+ACUTE>
+<MACRON+GRAVE>
+<MACRON+DIAERESIS>
+<MACRON+DIAERESIS-BELOW>
+<MACRON+DOT>
+<MACRON+DOT-BELOW>
+<MACRON+CIRCUMFLEX>
+<LINE-BELOW>
+<HORN>
+<HORN+ACUTE>
+<HORN+GRAVE>
+<HORN+HOOK>
+<HORN+TILDE>
+<HORN+DOT-BELOW>
+<PRECEDED-BY-APOSTROPHE>
+<GREEK>
+<TONOS>
+<DIALYTICA>
+<DIALYTICA+TONOS>
+<CYRILLIC>
+<HIRAGANA>
+<KATAKANA>
+<SPECIAL>
+
+<U00A0> <U00A0>;<U00A0>;<U00A0>;IGNORE
+<U0020> IGNORE;IGNORE;IGNORE;<U0020>
+<U0009> IGNORE;IGNORE;IGNORE;<U0009>
+<U000B> IGNORE;IGNORE;IGNORE;<U000B>
+<U000D> IGNORE;IGNORE;IGNORE;<U000D>
+<U000A> IGNORE;IGNORE;IGNORE;<U000A>
+<U000C> IGNORE;IGNORE;IGNORE;<U000C>
+<U005F> IGNORE;IGNORE;IGNORE;<U005F>
+<U00AF> IGNORE;IGNORE;IGNORE;<U00AF>
+<U00AD> IGNORE;IGNORE;IGNORE;<U00AD>
+<U002D> IGNORE;IGNORE;IGNORE;<U002D>
+<U002C> IGNORE;IGNORE;IGNORE;<U002C>
+<U003B> IGNORE;IGNORE;IGNORE;<U003B>
+<U003A> IGNORE;IGNORE;IGNORE;<U003A>
+<U0021> IGNORE;IGNORE;IGNORE;<U0021>
+<U00A1> IGNORE;IGNORE;IGNORE;<U00A1>
+<U003F> IGNORE;IGNORE;IGNORE;<U003F>
+<U00BF> IGNORE;IGNORE;IGNORE;<U00BF>
+<U002F> IGNORE;IGNORE;IGNORE;<U002F>
+<U002E> IGNORE;IGNORE;IGNORE;<U002E>
+<U00B4> IGNORE;IGNORE;IGNORE;<U00B4>
+<U0060> IGNORE;IGNORE;IGNORE;<U0060>
+<U005E> IGNORE;IGNORE;IGNORE;<U005E>
+<U00A8> IGNORE;IGNORE;IGNORE;<U00A8>
+<U007E> IGNORE;IGNORE;IGNORE;<U007E>
+<U00B7> IGNORE;IGNORE;IGNORE;<U00B7>
+<U00B8> IGNORE;IGNORE;IGNORE;<U00B8>
+<U0027> IGNORE;IGNORE;IGNORE;<U0027>
+<U2018> IGNORE;IGNORE;IGNORE;<U2018>
+<U2019> IGNORE;IGNORE;IGNORE;<U2019>
+<U0022> IGNORE;IGNORE;IGNORE;<U0022>
+<U201C> IGNORE;IGNORE;IGNORE;<U201C>
+<U201D> IGNORE;IGNORE;IGNORE;<U201D>
+<U00AB> IGNORE;IGNORE;IGNORE;<U00AB>
+<U00BB> IGNORE;IGNORE;IGNORE;<U00BB>
+<U0028> IGNORE;IGNORE;IGNORE;<U0028>
+<U207D> IGNORE;IGNORE;IGNORE;<U207D>
+<U0029> IGNORE;IGNORE;IGNORE;<U0029>
+<U207E> IGNORE;IGNORE;IGNORE;<U207E>
+<U005B> IGNORE;IGNORE;IGNORE;<U005B>
+<U005D> IGNORE;IGNORE;IGNORE;<U005D>
+<U007B> IGNORE;IGNORE;IGNORE;<U007B>
+<U007D> IGNORE;IGNORE;IGNORE;<U007D>
+<U00A7> IGNORE;IGNORE;IGNORE;<U00A7>
+<U00B6> IGNORE;IGNORE;IGNORE;<U00B6>
+<U00A9> IGNORE;IGNORE;IGNORE;<U00A9>
+<U00AE> IGNORE;IGNORE;IGNORE;<U00AE>
+<U0040> IGNORE;IGNORE;IGNORE;<U0040>
+<U00A4> IGNORE;IGNORE;IGNORE;<U00A4>
+<U00A2> IGNORE;IGNORE;IGNORE;<U00A2>
+<U0024> IGNORE;IGNORE;IGNORE;<U0024>
+<U00A3> IGNORE;IGNORE;IGNORE;<U00A3>
+<U00A5> IGNORE;IGNORE;IGNORE;<U00A5>
+<U002A> IGNORE;IGNORE;IGNORE;<U002A>
+<U005C> IGNORE;IGNORE;IGNORE;<U005C>
+<U0026> IGNORE;IGNORE;IGNORE;<U0026>
+<U0023> IGNORE;IGNORE;IGNORE;<U0023>
+<U0025> IGNORE;IGNORE;IGNORE;<U0025>
+<U207B> IGNORE;IGNORE;IGNORE;<U207B>
+<U002B> IGNORE;IGNORE;IGNORE;<U002B>
+<U207A> IGNORE;IGNORE;IGNORE;<U207A>
+<U00B1> IGNORE;IGNORE;IGNORE;<U00B1>
+<U00F7> IGNORE;IGNORE;IGNORE;<U00F7>
+<U00D7> IGNORE;IGNORE;IGNORE;<U00D7>
+<U2260> IGNORE;IGNORE;IGNORE;<U2260>
+<U003C> IGNORE;IGNORE;IGNORE;<U003C>
+<U2264> IGNORE;IGNORE;IGNORE;<U2264>
+<U003D> IGNORE;IGNORE;IGNORE;<U003D>
+<U2265> IGNORE;IGNORE;IGNORE;<U2265>
+<U003E> IGNORE;IGNORE;IGNORE;<U003E>
+<U00AC> IGNORE;IGNORE;IGNORE;<U00AC>
+<U007C> IGNORE;IGNORE;IGNORE;<U007C>
+<U00A6> IGNORE;IGNORE;IGNORE;<U00A6>
+<U00B0> IGNORE;IGNORE;IGNORE;<U00B0>
+<U00B5> IGNORE;IGNORE;IGNORE;<U00B5>
+<U02C7> IGNORE;IGNORE;IGNORE;<U02C7>
+<U02D8> IGNORE;IGNORE;IGNORE;<U02D8>
+<U02D9> IGNORE;IGNORE;IGNORE;<U02D9>
+<U02DA> IGNORE;IGNORE;IGNORE;<U02DA>
+<U02DB> IGNORE;IGNORE;IGNORE;<U02DB>
+<U02DC> IGNORE;IGNORE;IGNORE;<U02DC>
+<U02DD> IGNORE;IGNORE;IGNORE;<U02DD>
+<U0374> IGNORE;IGNORE;IGNORE;<U0374>
+<U0375> IGNORE;IGNORE;IGNORE;<U0375>
+<U037A> IGNORE;IGNORE;IGNORE;<U037A>
+<U037E> IGNORE;IGNORE;IGNORE;<U037E>
+<U0384> IGNORE;IGNORE;IGNORE;<U0384>
+<U0385> IGNORE;IGNORE;IGNORE;<U0385>
+<U0387> IGNORE;IGNORE;IGNORE;<U0387>
+<U03D0> IGNORE;IGNORE;IGNORE;<U03D0>
+<U1FBF> IGNORE;IGNORE;IGNORE;<U1FBF>
+<U1FC0> IGNORE;IGNORE;IGNORE;<U1FC0>
+<U1FC1> IGNORE;IGNORE;IGNORE;<U1FC1>
+<U1FCD> IGNORE;IGNORE;IGNORE;<U1FCD>
+<U1FCE> IGNORE;IGNORE;IGNORE;<U1FCE>
+<U1FCF> IGNORE;IGNORE;IGNORE;<U1FCF>
+<U1FDD> IGNORE;IGNORE;IGNORE;<U1FDD>
+<U1FDE> IGNORE;IGNORE;IGNORE;<U1FDE>
+<U1FDF> IGNORE;IGNORE;IGNORE;<U1FDF>
+<U1FED> IGNORE;IGNORE;IGNORE;<U1FED>
+<U1FEF> IGNORE;IGNORE;IGNORE;<U1FEF>
+<U1FFE> IGNORE;IGNORE;IGNORE;<U1FFE>
+<U2002> IGNORE;IGNORE;IGNORE;<U2002>
+<U2003> IGNORE;IGNORE;IGNORE;<U2003>
+<U2004> IGNORE;IGNORE;IGNORE;<U2004>
+<U2005> IGNORE;IGNORE;IGNORE;<U2005>
+<U2006> IGNORE;IGNORE;IGNORE;<U2006>
+<U200E> IGNORE;IGNORE;IGNORE;<U200E>
+<U200F> IGNORE;IGNORE;IGNORE;<U200F>
+<U2009> IGNORE;IGNORE;IGNORE;<U2009>
+<U200A> IGNORE;IGNORE;IGNORE;<U200A>
+<U2010> IGNORE;IGNORE;IGNORE;<U2010>
+<U2013> IGNORE;IGNORE;IGNORE;<U2013>
+<U2014> IGNORE;IGNORE;IGNORE;<U2014>
+<U2015> IGNORE;IGNORE;IGNORE;<U2015>
+<U2016> IGNORE;IGNORE;IGNORE;<U2016>
+<U2017> IGNORE;IGNORE;IGNORE;<U2017>
+<U201A> IGNORE;IGNORE;IGNORE;<U201A>
+<U201B> IGNORE;IGNORE;IGNORE;<U201B>
+<U201E> IGNORE;IGNORE;IGNORE;<U201E>
+<U201F> IGNORE;IGNORE;IGNORE;<U201F>
+<U2020> IGNORE;IGNORE;IGNORE;<U2020>
+<U2021> IGNORE;IGNORE;IGNORE;<U2021>
+<U2219> IGNORE;IGNORE;IGNORE;<U2219>
+<U2025> IGNORE;IGNORE;IGNORE;<U2025>
+<U2026> IGNORE;IGNORE;IGNORE;<U2026>
+<U2030> IGNORE;IGNORE;IGNORE;<U2030>
+<U2032> IGNORE;IGNORE;IGNORE;<U2032>
+<U2033> IGNORE;IGNORE;IGNORE;<U2033>
+<U2034> IGNORE;IGNORE;IGNORE;<U2034>
+<U2035> IGNORE;IGNORE;IGNORE;<U2035>
+<U2036> IGNORE;IGNORE;IGNORE;<U2036>
+<U2037> IGNORE;IGNORE;IGNORE;<U2037>
+<U2038> IGNORE;IGNORE;IGNORE;<U2038>
+<U2039> IGNORE;IGNORE;IGNORE;<U2039>
+<U203A> IGNORE;IGNORE;IGNORE;<U203A>
+<U203B> IGNORE;IGNORE;IGNORE;<U203B>
+<U203C> IGNORE;IGNORE;IGNORE;<U203C>
+<U203E> IGNORE;IGNORE;IGNORE;<U203E>
+<U207C> IGNORE;IGNORE;IGNORE;<U207C>
+<U2080> IGNORE;IGNORE;IGNORE;<U2080>
+<U2081> IGNORE;IGNORE;IGNORE;<U2081>
+<U2082> IGNORE;IGNORE;IGNORE;<U2082>
+<U2083> IGNORE;IGNORE;IGNORE;<U2083>
+<U2084> IGNORE;IGNORE;IGNORE;<U2084>
+<U2085> IGNORE;IGNORE;IGNORE;<U2085>
+<U2086> IGNORE;IGNORE;IGNORE;<U2086>
+<U2087> IGNORE;IGNORE;IGNORE;<U2087>
+<U2088> IGNORE;IGNORE;IGNORE;<U2088>
+<U2089> IGNORE;IGNORE;IGNORE;<U2089>
+<U208A> IGNORE;IGNORE;IGNORE;<U208A>
+<U208B> IGNORE;IGNORE;IGNORE;<U208B>
+<U208C> IGNORE;IGNORE;IGNORE;<U208C>
+<U208D> IGNORE;IGNORE;IGNORE;<U208D>
+<U208E> IGNORE;IGNORE;IGNORE;<U208E>
+<U20A3> IGNORE;IGNORE;IGNORE;<U20A3>
+<U20A4> IGNORE;IGNORE;IGNORE;<U20A4>
+<U20A7> IGNORE;IGNORE;IGNORE;<U20A7>
+<U20A9> IGNORE;IGNORE;IGNORE;<U20A9>
+<U2103> IGNORE;IGNORE;IGNORE;<U2103>
+<U2105> IGNORE;IGNORE;IGNORE;<U2105>
+<U2109> IGNORE;IGNORE;IGNORE;<U2109>
+<U2116> IGNORE;IGNORE;IGNORE;<U2116>
+<U2117> IGNORE;IGNORE;IGNORE;<U2117>
+<U211E> IGNORE;IGNORE;IGNORE;<U211E>
+<U2120> IGNORE;IGNORE;IGNORE;<U2120>
+<U2122> IGNORE;IGNORE;IGNORE;<U2122>
+<U2126> IGNORE;IGNORE;IGNORE;<U2126>
+<U212B> IGNORE;IGNORE;IGNORE;<U212B>
+<U2153> IGNORE;IGNORE;IGNORE;<U2153>
+<U2154> IGNORE;IGNORE;IGNORE;<U2154>
+<U2155> IGNORE;IGNORE;IGNORE;<U2155>
+<U2156> IGNORE;IGNORE;IGNORE;<U2156>
+<U2157> IGNORE;IGNORE;IGNORE;<U2157>
+<U2158> IGNORE;IGNORE;IGNORE;<U2158>
+<U2159> IGNORE;IGNORE;IGNORE;<U2159>
+<U215A> IGNORE;IGNORE;IGNORE;<U215A>
+<U2160> IGNORE;IGNORE;IGNORE;<U2160>
+<U2161> IGNORE;IGNORE;IGNORE;<U2161>
+<U2162> IGNORE;IGNORE;IGNORE;<U2162>
+<U2163> IGNORE;IGNORE;IGNORE;<U2163>
+<U2164> IGNORE;IGNORE;IGNORE;<U2164>
+<U2165> IGNORE;IGNORE;IGNORE;<U2165>
+<U2166> IGNORE;IGNORE;IGNORE;<U2166>
+<U2167> IGNORE;IGNORE;IGNORE;<U2167>
+<U2168> IGNORE;IGNORE;IGNORE;<U2168>
+<U2169> IGNORE;IGNORE;IGNORE;<U2169>
+<U216A> IGNORE;IGNORE;IGNORE;<U216A>
+<U216B> IGNORE;IGNORE;IGNORE;<U216B>
+<U216C> IGNORE;IGNORE;IGNORE;<U216C>
+<U216D> IGNORE;IGNORE;IGNORE;<U216D>
+<U216E> IGNORE;IGNORE;IGNORE;<U216E>
+<U216F> IGNORE;IGNORE;IGNORE;<U216F>
+<U2170> IGNORE;IGNORE;IGNORE;<U2170>
+<U2171> IGNORE;IGNORE;IGNORE;<U2171>
+<U2172> IGNORE;IGNORE;IGNORE;<U2172>
+<U2173> IGNORE;IGNORE;IGNORE;<U2173>
+<U2174> IGNORE;IGNORE;IGNORE;<U2174>
+<U2175> IGNORE;IGNORE;IGNORE;<U2175>
+<U2176> IGNORE;IGNORE;IGNORE;<U2176>
+<U2177> IGNORE;IGNORE;IGNORE;<U2177>
+<U2178> IGNORE;IGNORE;IGNORE;<U2178>
+<U2179> IGNORE;IGNORE;IGNORE;<U2179>
+<U217A> IGNORE;IGNORE;IGNORE;<U217A>
+<U217B> IGNORE;IGNORE;IGNORE;<U217B>
+<U217C> IGNORE;IGNORE;IGNORE;<U217C>
+<U217D> IGNORE;IGNORE;IGNORE;<U217D>
+<U217E> IGNORE;IGNORE;IGNORE;<U217E>
+<U217F> IGNORE;IGNORE;IGNORE;<U217F>
+<U2180> IGNORE;IGNORE;IGNORE;<U2180>
+<U2181> IGNORE;IGNORE;IGNORE;<U2181>
+<U2182> IGNORE;IGNORE;IGNORE;<U2182>
+<U2191> IGNORE;IGNORE;IGNORE;<U2191>
+<U2193> IGNORE;IGNORE;IGNORE;<U2193>
+<U2194> IGNORE;IGNORE;IGNORE;<U2194>
+<U2195> IGNORE;IGNORE;IGNORE;<U2195>
+<U2196> IGNORE;IGNORE;IGNORE;<U2196>
+<U2197> IGNORE;IGNORE;IGNORE;<U2197>
+<U2198> IGNORE;IGNORE;IGNORE;<U2198>
+<U2199> IGNORE;IGNORE;IGNORE;<U2199>
+<U21A8> IGNORE;IGNORE;IGNORE;<U21A8>
+<U21C0> IGNORE;IGNORE;IGNORE;<U21C0>
+<U21D0> IGNORE;IGNORE;IGNORE;<U21D0>
+<U21D2> IGNORE;IGNORE;IGNORE;<U21D2>
+<U21D4> IGNORE;IGNORE;IGNORE;<U21D4>
+<U2200> IGNORE;IGNORE;IGNORE;<U2200>
+<U2202> IGNORE;IGNORE;IGNORE;<U2202>
+<U2203> IGNORE;IGNORE;IGNORE;<U2203>
+<U2205> IGNORE;IGNORE;IGNORE;<U2205>
+<U2206> IGNORE;IGNORE;IGNORE;<U2206>
+<U2207> IGNORE;IGNORE;IGNORE;<U2207>
+<U2208> IGNORE;IGNORE;IGNORE;<U2208>
+<U220B> IGNORE;IGNORE;IGNORE;<U220B>
+<U220F> IGNORE;IGNORE;IGNORE;<U220F>
+<U2211> IGNORE;IGNORE;IGNORE;<U2211>
+<U2212> IGNORE;IGNORE;IGNORE;<U2212>
+<U2213> IGNORE;IGNORE;IGNORE;<U2213>
+<U2214> IGNORE;IGNORE;IGNORE;<U2214>
+<U2044> IGNORE;IGNORE;IGNORE;<U2044>
+<U2217> IGNORE;IGNORE;IGNORE;<U2217>
+<U2218> IGNORE;IGNORE;IGNORE;<U2218>
+<U2022> IGNORE;IGNORE;IGNORE;<U2022>
+<U221A> IGNORE;IGNORE;IGNORE;<U221A>
+<U221D> IGNORE;IGNORE;IGNORE;<U221D>
+<U221E> IGNORE;IGNORE;IGNORE;<U221E>
+<U221F> IGNORE;IGNORE;IGNORE;<U221F>
+<U2220> IGNORE;IGNORE;IGNORE;<U2220>
+<U2225> IGNORE;IGNORE;IGNORE;<U2225>
+<U2227> IGNORE;IGNORE;IGNORE;<U2227>
+<U2228> IGNORE;IGNORE;IGNORE;<U2228>
+<U2229> IGNORE;IGNORE;IGNORE;<U2229>
+<U222A> IGNORE;IGNORE;IGNORE;<U222A>
+<U222B> IGNORE;IGNORE;IGNORE;<U222B>
+<U222C> IGNORE;IGNORE;IGNORE;<U222C>
+<U222E> IGNORE;IGNORE;IGNORE;<U222E>
+<U2234> IGNORE;IGNORE;IGNORE;<U2234>
+<U2235> IGNORE;IGNORE;IGNORE;<U2235>
+<U2236> IGNORE;IGNORE;IGNORE;<U2236>
+<U2237> IGNORE;IGNORE;IGNORE;<U2237>
+<U223C> IGNORE;IGNORE;IGNORE;<U223C>
+<U223E> IGNORE;IGNORE;IGNORE;<U223E>
+<U2243> IGNORE;IGNORE;IGNORE;<U2243>
+<U2245> IGNORE;IGNORE;IGNORE;<U2245>
+<U2248> IGNORE;IGNORE;IGNORE;<U2248>
+<U224C> IGNORE;IGNORE;IGNORE;<U224C>
+<U2253> IGNORE;IGNORE;IGNORE;<U2253>
+<U2261> IGNORE;IGNORE;IGNORE;<U2261>
+<U226A> IGNORE;IGNORE;IGNORE;<U226A>
+<U226B> IGNORE;IGNORE;IGNORE;<U226B>
+<U226E> IGNORE;IGNORE;IGNORE;<U226E>
+<U226F> IGNORE;IGNORE;IGNORE;<U226F>
+<U2282> IGNORE;IGNORE;IGNORE;<U2282>
+<U2283> IGNORE;IGNORE;IGNORE;<U2283>
+<U2286> IGNORE;IGNORE;IGNORE;<U2286>
+<U2287> IGNORE;IGNORE;IGNORE;<U2287>
+<U2299> IGNORE;IGNORE;IGNORE;<U2299>
+<U229A> IGNORE;IGNORE;IGNORE;<U229A>
+<U22A5> IGNORE;IGNORE;IGNORE;<U22A5>
+<U22C5> IGNORE;IGNORE;IGNORE;<U22C5>
+<U22EE> IGNORE;IGNORE;IGNORE;<U22EE>
+<U2302> IGNORE;IGNORE;IGNORE;<U2302>
+<U2308> IGNORE;IGNORE;IGNORE;<U2308>
+<U2309> IGNORE;IGNORE;IGNORE;<U2309>
+<U230A> IGNORE;IGNORE;IGNORE;<U230A>
+<U230B> IGNORE;IGNORE;IGNORE;<U230B>
+<U2310> IGNORE;IGNORE;IGNORE;<U2310>
+<U2312> IGNORE;IGNORE;IGNORE;<U2312>
+<U2315> IGNORE;IGNORE;IGNORE;<U2315>
+<U2320> IGNORE;IGNORE;IGNORE;<U2320>
+<U2321> IGNORE;IGNORE;IGNORE;<U2321>
+<U2423> IGNORE;IGNORE;IGNORE;<U2423>
+<U2440> IGNORE;IGNORE;IGNORE;<U2440>
+<U2441> IGNORE;IGNORE;IGNORE;<U2441>
+<U2442> IGNORE;IGNORE;IGNORE;<U2442>
+<U2443> IGNORE;IGNORE;IGNORE;<U2443>
+<U2446> IGNORE;IGNORE;IGNORE;<U2446>
+<U2447> IGNORE;IGNORE;IGNORE;<U2447>
+<U2448> IGNORE;IGNORE;IGNORE;<U2448>
+<U2449> IGNORE;IGNORE;IGNORE;<U2449>
+<U2460> IGNORE;IGNORE;IGNORE;<U2460>
+<U2461> IGNORE;IGNORE;IGNORE;<U2461>
+<U2462> IGNORE;IGNORE;IGNORE;<U2462>
+<U2463> IGNORE;IGNORE;IGNORE;<U2463>
+<U2464> IGNORE;IGNORE;IGNORE;<U2464>
+<U2465> IGNORE;IGNORE;IGNORE;<U2465>
+<U2466> IGNORE;IGNORE;IGNORE;<U2466>
+<U2467> IGNORE;IGNORE;IGNORE;<U2467>
+<U2468> IGNORE;IGNORE;IGNORE;<U2468>
+<U2469> IGNORE;IGNORE;IGNORE;<U2469>
+<U246A> IGNORE;IGNORE;IGNORE;<U246A>
+<U246B> IGNORE;IGNORE;IGNORE;<U246B>
+<U246C> IGNORE;IGNORE;IGNORE;<U246C>
+<U246D> IGNORE;IGNORE;IGNORE;<U246D>
+<U246E> IGNORE;IGNORE;IGNORE;<U246E>
+<U246F> IGNORE;IGNORE;IGNORE;<U246F>
+<U2470> IGNORE;IGNORE;IGNORE;<U2470>
+<U2471> IGNORE;IGNORE;IGNORE;<U2471>
+<U2472> IGNORE;IGNORE;IGNORE;<U2472>
+<U2473> IGNORE;IGNORE;IGNORE;<U2473>
+<U2474> IGNORE;IGNORE;IGNORE;<U2474>
+<U2475> IGNORE;IGNORE;IGNORE;<U2475>
+<U2476> IGNORE;IGNORE;IGNORE;<U2476>
+<U2477> IGNORE;IGNORE;IGNORE;<U2477>
+<U2478> IGNORE;IGNORE;IGNORE;<U2478>
+<U2479> IGNORE;IGNORE;IGNORE;<U2479>
+<U247A> IGNORE;IGNORE;IGNORE;<U247A>
+<U247B> IGNORE;IGNORE;IGNORE;<U247B>
+<U247C> IGNORE;IGNORE;IGNORE;<U247C>
+<U247D> IGNORE;IGNORE;IGNORE;<U247D>
+<U247E> IGNORE;IGNORE;IGNORE;<U247E>
+<U247F> IGNORE;IGNORE;IGNORE;<U247F>
+<U2480> IGNORE;IGNORE;IGNORE;<U2480>
+<U2481> IGNORE;IGNORE;IGNORE;<U2481>
+<U2482> IGNORE;IGNORE;IGNORE;<U2482>
+<U2483> IGNORE;IGNORE;IGNORE;<U2483>
+<U2484> IGNORE;IGNORE;IGNORE;<U2484>
+<U2485> IGNORE;IGNORE;IGNORE;<U2485>
+<U2486> IGNORE;IGNORE;IGNORE;<U2486>
+<U2487> IGNORE;IGNORE;IGNORE;<U2487>
+<U2488> IGNORE;IGNORE;IGNORE;<U2488>
+<U2489> IGNORE;IGNORE;IGNORE;<U2489>
+<U248A> IGNORE;IGNORE;IGNORE;<U248A>
+<U248B> IGNORE;IGNORE;IGNORE;<U248B>
+<U248C> IGNORE;IGNORE;IGNORE;<U248C>
+<U248D> IGNORE;IGNORE;IGNORE;<U248D>
+<U248E> IGNORE;IGNORE;IGNORE;<U248E>
+<U248F> IGNORE;IGNORE;IGNORE;<U248F>
+<U2490> IGNORE;IGNORE;IGNORE;<U2490>
+<U2491> IGNORE;IGNORE;IGNORE;<U2491>
+<U2492> IGNORE;IGNORE;IGNORE;<U2492>
+<U2493> IGNORE;IGNORE;IGNORE;<U2493>
+<U2494> IGNORE;IGNORE;IGNORE;<U2494>
+<U2495> IGNORE;IGNORE;IGNORE;<U2495>
+<U2496> IGNORE;IGNORE;IGNORE;<U2496>
+<U2497> IGNORE;IGNORE;IGNORE;<U2497>
+<U2498> IGNORE;IGNORE;IGNORE;<U2498>
+<U2499> IGNORE;IGNORE;IGNORE;<U2499>
+<U249A> IGNORE;IGNORE;IGNORE;<U249A>
+<U249B> IGNORE;IGNORE;IGNORE;<U249B>
+<U24EA> IGNORE;IGNORE;IGNORE;<U24EA>
+<U2500> IGNORE;IGNORE;IGNORE;<U2500>
+<U2550> IGNORE;IGNORE;IGNORE;<U2550>
+<U2502> IGNORE;IGNORE;IGNORE;<U2502>
+<U2551> IGNORE;IGNORE;IGNORE;<U2551>
+<U2504> IGNORE;IGNORE;IGNORE;<U2504>
+<U2505> IGNORE;IGNORE;IGNORE;<U2505>
+<U2506> IGNORE;IGNORE;IGNORE;<U2506>
+<U2507> IGNORE;IGNORE;IGNORE;<U2507>
+<U2508> IGNORE;IGNORE;IGNORE;<U2508>
+<U2509> IGNORE;IGNORE;IGNORE;<U2509>
+<U250A> IGNORE;IGNORE;IGNORE;<U250A>
+<U250B> IGNORE;IGNORE;IGNORE;<U250B>
+<U250C> IGNORE;IGNORE;IGNORE;<U250C>
+<U2552> IGNORE;IGNORE;IGNORE;<U2552>
+<U2553> IGNORE;IGNORE;IGNORE;<U2553>
+<U2554> IGNORE;IGNORE;IGNORE;<U2554>
+<U2510> IGNORE;IGNORE;IGNORE;<U2510>
+<U2555> IGNORE;IGNORE;IGNORE;<U2555>
+<U2556> IGNORE;IGNORE;IGNORE;<U2556>
+<U2557> IGNORE;IGNORE;IGNORE;<U2557>
+<U2514> IGNORE;IGNORE;IGNORE;<U2514>
+<U2558> IGNORE;IGNORE;IGNORE;<U2558>
+<U2559> IGNORE;IGNORE;IGNORE;<U2559>
+<U255A> IGNORE;IGNORE;IGNORE;<U255A>
+<U2518> IGNORE;IGNORE;IGNORE;<U2518>
+<U255B> IGNORE;IGNORE;IGNORE;<U255B>
+<U255C> IGNORE;IGNORE;IGNORE;<U255C>
+<U255D> IGNORE;IGNORE;IGNORE;<U255D>
+<U251C> IGNORE;IGNORE;IGNORE;<U251C>
+<U255E> IGNORE;IGNORE;IGNORE;<U255E>
+<U251E> IGNORE;IGNORE;IGNORE;<U251E>
+<U251F> IGNORE;IGNORE;IGNORE;<U251F>
+<U255F> IGNORE;IGNORE;IGNORE;<U255F>
+<U2521> IGNORE;IGNORE;IGNORE;<U2521>
+<U2522> IGNORE;IGNORE;IGNORE;<U2522>
+<U2560> IGNORE;IGNORE;IGNORE;<U2560>
+<U2524> IGNORE;IGNORE;IGNORE;<U2524>
+<U2561> IGNORE;IGNORE;IGNORE;<U2561>
+<U2526> IGNORE;IGNORE;IGNORE;<U2526>
+<U2527> IGNORE;IGNORE;IGNORE;<U2527>
+<U2562> IGNORE;IGNORE;IGNORE;<U2562>
+<U2529> IGNORE;IGNORE;IGNORE;<U2529>
+<U252A> IGNORE;IGNORE;IGNORE;<U252A>
+<U2563> IGNORE;IGNORE;IGNORE;<U2563>
+<U252C> IGNORE;IGNORE;IGNORE;<U252C>
+<U252D> IGNORE;IGNORE;IGNORE;<U252D>
+<U252E> IGNORE;IGNORE;IGNORE;<U252E>
+<U2564> IGNORE;IGNORE;IGNORE;<U2564>
+<U2565> IGNORE;IGNORE;IGNORE;<U2565>
+<U2531> IGNORE;IGNORE;IGNORE;<U2531>
+<U2532> IGNORE;IGNORE;IGNORE;<U2532>
+<U2566> IGNORE;IGNORE;IGNORE;<U2566>
+<U2534> IGNORE;IGNORE;IGNORE;<U2534>
+<U2535> IGNORE;IGNORE;IGNORE;<U2535>
+<U2536> IGNORE;IGNORE;IGNORE;<U2536>
+<U2567> IGNORE;IGNORE;IGNORE;<U2567>
+<U2568> IGNORE;IGNORE;IGNORE;<U2568>
+<U2539> IGNORE;IGNORE;IGNORE;<U2539>
+<U253A> IGNORE;IGNORE;IGNORE;<U253A>
+<U2569> IGNORE;IGNORE;IGNORE;<U2569>
+<U253C> IGNORE;IGNORE;IGNORE;<U253C>
+<U253D> IGNORE;IGNORE;IGNORE;<U253D>
+<U253E> IGNORE;IGNORE;IGNORE;<U253E>
+<U256A> IGNORE;IGNORE;IGNORE;<U256A>
+<U2540> IGNORE;IGNORE;IGNORE;<U2540>
+<U2541> IGNORE;IGNORE;IGNORE;<U2541>
+<U256B> IGNORE;IGNORE;IGNORE;<U256B>
+<U2543> IGNORE;IGNORE;IGNORE;<U2543>
+<U2544> IGNORE;IGNORE;IGNORE;<U2544>
+<U2545> IGNORE;IGNORE;IGNORE;<U2545>
+<U2546> IGNORE;IGNORE;IGNORE;<U2546>
+<U2547> IGNORE;IGNORE;IGNORE;<U2547>
+<U2548> IGNORE;IGNORE;IGNORE;<U2548>
+<U2549> IGNORE;IGNORE;IGNORE;<U2549>
+<U254A> IGNORE;IGNORE;IGNORE;<U254A>
+<U256C> IGNORE;IGNORE;IGNORE;<U256C>
+<U2571> IGNORE;IGNORE;IGNORE;<U2571>
+<U2572> IGNORE;IGNORE;IGNORE;<U2572>
+<U2580> IGNORE;IGNORE;IGNORE;<U2580>
+<U2584> IGNORE;IGNORE;IGNORE;<U2584>
+<U2588> IGNORE;IGNORE;IGNORE;<U2588>
+<U258C> IGNORE;IGNORE;IGNORE;<U258C>
+<U2590> IGNORE;IGNORE;IGNORE;<U2590>
+<U2591> IGNORE;IGNORE;IGNORE;<U2591>
+<U2592> IGNORE;IGNORE;IGNORE;<U2592>
+<U2593> IGNORE;IGNORE;IGNORE;<U2593>
+<U25A0> IGNORE;IGNORE;IGNORE;<U25A0>
+<U25A1> IGNORE;IGNORE;IGNORE;<U25A1>
+<U25A2> IGNORE;IGNORE;IGNORE;<U25A2>
+<U25A3> IGNORE;IGNORE;IGNORE;<U25A3>
+<U25A4> IGNORE;IGNORE;IGNORE;<U25A4>
+<U25A5> IGNORE;IGNORE;IGNORE;<U25A5>
+<U25A6> IGNORE;IGNORE;IGNORE;<U25A6>
+<U25A7> IGNORE;IGNORE;IGNORE;<U25A7>
+<U25A8> IGNORE;IGNORE;IGNORE;<U25A8>
+<U25A9> IGNORE;IGNORE;IGNORE;<U25A9>
+<U25AA> IGNORE;IGNORE;IGNORE;<U25AA>
+<U25AC> IGNORE;IGNORE;IGNORE;<U25AC>
+<U25AD> IGNORE;IGNORE;IGNORE;<U25AD>
+<U25B2> IGNORE;IGNORE;IGNORE;<U25B2>
+<U25B3> IGNORE;IGNORE;IGNORE;<U25B3>
+<U25B7> IGNORE;IGNORE;IGNORE;<U25B7>
+<U25BA> IGNORE;IGNORE;IGNORE;<U25BA>
+<U25BC> IGNORE;IGNORE;IGNORE;<U25BC>
+<U25BD> IGNORE;IGNORE;IGNORE;<U25BD>
+<U25C1> IGNORE;IGNORE;IGNORE;<U25C1>
+<U25C4> IGNORE;IGNORE;IGNORE;<U25C4>
+<U25C6> IGNORE;IGNORE;IGNORE;<U25C6>
+<U25C7> IGNORE;IGNORE;IGNORE;<U25C7>
+<U25CA> IGNORE;IGNORE;IGNORE;<U25CA>
+<U25CB> IGNORE;IGNORE;IGNORE;<U25CB>
+<U25CE> IGNORE;IGNORE;IGNORE;<U25CE>
+<U25CF> IGNORE;IGNORE;IGNORE;<U25CF>
+<U25D0> IGNORE;IGNORE;IGNORE;<U25D0>
+<U25D1> IGNORE;IGNORE;IGNORE;<U25D1>
+<U25D8> IGNORE;IGNORE;IGNORE;<U25D8>
+<U25D9> IGNORE;IGNORE;IGNORE;<U25D9>
+<U25E2> IGNORE;IGNORE;IGNORE;<U25E2>
+<U25E3> IGNORE;IGNORE;IGNORE;<U25E3>
+<U25EF> IGNORE;IGNORE;IGNORE;<U25EF>
+<U2605> IGNORE;IGNORE;IGNORE;<U2605>
+<U2606> IGNORE;IGNORE;IGNORE;<U2606>
+<U260E> IGNORE;IGNORE;IGNORE;<U260E>
+<U260F> IGNORE;IGNORE;IGNORE;<U260F>
+<U261C> IGNORE;IGNORE;IGNORE;<U261C>
+<U261E> IGNORE;IGNORE;IGNORE;<U261E>
+<U263A> IGNORE;IGNORE;IGNORE;<U263A>
+<U263B> IGNORE;IGNORE;IGNORE;<U263B>
+<U263C> IGNORE;IGNORE;IGNORE;<U263C>
+<U2640> IGNORE;IGNORE;IGNORE;<U2640>
+<U2642> IGNORE;IGNORE;IGNORE;<U2642>
+<U2660> IGNORE;IGNORE;IGNORE;<U2660>
+<U2661> IGNORE;IGNORE;IGNORE;<U2661>
+<U2662> IGNORE;IGNORE;IGNORE;<U2662>
+<U2663> IGNORE;IGNORE;IGNORE;<U2663>
+<U2664> IGNORE;IGNORE;IGNORE;<U2664>
+<U2665> IGNORE;IGNORE;IGNORE;<U2665>
+<U2666> IGNORE;IGNORE;IGNORE;<U2666>
+<U2667> IGNORE;IGNORE;IGNORE;<U2667>
+<U2669> IGNORE;IGNORE;IGNORE;<U2669>
+<U266A> IGNORE;IGNORE;IGNORE;<U266A>
+<U266B> IGNORE;IGNORE;IGNORE;<U266B>
+<U266C> IGNORE;IGNORE;IGNORE;<U266C>
+<U266D> IGNORE;IGNORE;IGNORE;<U266D>
+<U266E> IGNORE;IGNORE;IGNORE;<U266E>
+<U266F> IGNORE;IGNORE;IGNORE;<U266F>
+<U2713> IGNORE;IGNORE;IGNORE;<U2713>
+<U2717> IGNORE;IGNORE;IGNORE;<U2717>
+<U2720> IGNORE;IGNORE;IGNORE;<U2720>
+<U3000> IGNORE;IGNORE;IGNORE;<U3000>
+<U3001> IGNORE;IGNORE;IGNORE;<U3001>
+<U3002> IGNORE;IGNORE;IGNORE;<U3002>
+<U3003> IGNORE;IGNORE;IGNORE;<U3003>
+<U3004> IGNORE;IGNORE;IGNORE;<U3004>
+<U3005> IGNORE;IGNORE;IGNORE;<U3005>
+<U3006> IGNORE;IGNORE;IGNORE;<U3006>
+<U3007> IGNORE;IGNORE;IGNORE;<U3007>
+<U300A> IGNORE;IGNORE;IGNORE;<U300A>
+<U300B> IGNORE;IGNORE;IGNORE;<U300B>
+<U300C> IGNORE;IGNORE;IGNORE;<U300C>
+<U300D> IGNORE;IGNORE;IGNORE;<U300D>
+<U300E> IGNORE;IGNORE;IGNORE;<U300E>
+<U300F> IGNORE;IGNORE;IGNORE;<U300F>
+<U3010> IGNORE;IGNORE;IGNORE;<U3010>
+<U3011> IGNORE;IGNORE;IGNORE;<U3011>
+<U3012> IGNORE;IGNORE;IGNORE;<U3012>
+<U3013> IGNORE;IGNORE;IGNORE;<U3013>
+<U3014> IGNORE;IGNORE;IGNORE;<U3014>
+<U3015> IGNORE;IGNORE;IGNORE;<U3015>
+<U3016> IGNORE;IGNORE;IGNORE;<U3016>
+<U3017> IGNORE;IGNORE;IGNORE;<U3017>
+<U301C> IGNORE;IGNORE;IGNORE;<U301C>
+<U3020> IGNORE;IGNORE;IGNORE;<U3020>
+<U309B> IGNORE;IGNORE;IGNORE;<U309B>
+<U309C> IGNORE;IGNORE;IGNORE;<U309C>
+<U309D> IGNORE;IGNORE;IGNORE;<U309D>
+<U309E> IGNORE;IGNORE;IGNORE;<U309E>
+<U30FB> IGNORE;IGNORE;IGNORE;<U30FB>
+<U30FC> IGNORE;IGNORE;IGNORE;<U30FC>
+<U30FD> IGNORE;IGNORE;IGNORE;<U30FD>
+<U30FE> IGNORE;IGNORE;IGNORE;<U30FE>
+<U321C> IGNORE;IGNORE;IGNORE;<U321C>
+<U3220> IGNORE;IGNORE;IGNORE;<U3220>
+<U3221> IGNORE;IGNORE;IGNORE;<U3221>
+<U3222> IGNORE;IGNORE;IGNORE;<U3222>
+<U3223> IGNORE;IGNORE;IGNORE;<U3223>
+<U3224> IGNORE;IGNORE;IGNORE;<U3224>
+<U3225> IGNORE;IGNORE;IGNORE;<U3225>
+<U3226> IGNORE;IGNORE;IGNORE;<U3226>
+<U3227> IGNORE;IGNORE;IGNORE;<U3227>
+<U3228> IGNORE;IGNORE;IGNORE;<U3228>
+<U3229> IGNORE;IGNORE;IGNORE;<U3229>
+<U327F> IGNORE;IGNORE;IGNORE;<U327F>
+<U33C2> IGNORE;IGNORE;IGNORE;<U33C2>
+<U33D8> IGNORE;IGNORE;IGNORE;<U33D8>
+<U0000> IGNORE;IGNORE;IGNORE;<U0000>
+<U0001> IGNORE;IGNORE;IGNORE;<U0001>
+<U0002> IGNORE;IGNORE;IGNORE;<U0002>
+<U0003> IGNORE;IGNORE;IGNORE;<U0003>
+<U0004> IGNORE;IGNORE;IGNORE;<U0004>
+<U0005> IGNORE;IGNORE;IGNORE;<U0005>
+<U0006> IGNORE;IGNORE;IGNORE;<U0006>
+<U0007> IGNORE;IGNORE;IGNORE;<U0007>
+<U0008> IGNORE;IGNORE;IGNORE;<U0008>
+<U000E> IGNORE;IGNORE;IGNORE;<U000E>
+<U000F> IGNORE;IGNORE;IGNORE;<U000F>
+<U0010> IGNORE;IGNORE;IGNORE;<U0010>
+<U0011> IGNORE;IGNORE;IGNORE;<U0011>
+<U0012> IGNORE;IGNORE;IGNORE;<U0012>
+<U0013> IGNORE;IGNORE;IGNORE;<U0013>
+<U0014> IGNORE;IGNORE;IGNORE;<U0014>
+<U0015> IGNORE;IGNORE;IGNORE;<U0015>
+<U0016> IGNORE;IGNORE;IGNORE;<U0016>
+<U0017> IGNORE;IGNORE;IGNORE;<U0017>
+<U0018> IGNORE;IGNORE;IGNORE;<U0018>
+<U0019> IGNORE;IGNORE;IGNORE;<U0019>
+<U001A> IGNORE;IGNORE;IGNORE;<U001A>
+<U001B> IGNORE;IGNORE;IGNORE;<U001B>
+<U001C> IGNORE;IGNORE;IGNORE;<U001C>
+<U001D> IGNORE;IGNORE;IGNORE;<U001D>
+<U001E> IGNORE;IGNORE;IGNORE;<U001E>
+<U001F> IGNORE;IGNORE;IGNORE;<U001F>
+<U007F> IGNORE;IGNORE;IGNORE;<U007F>
+<U0080> IGNORE;IGNORE;IGNORE;<U0080>
+<U0081> IGNORE;IGNORE;IGNORE;<U0081>
+<U0082> IGNORE;IGNORE;IGNORE;<U0082>
+<U0083> IGNORE;IGNORE;IGNORE;<U0083>
+<U0084> IGNORE;IGNORE;IGNORE;<U0084>
+<U0085> IGNORE;IGNORE;IGNORE;<U0085>
+<U0086> IGNORE;IGNORE;IGNORE;<U0086>
+<U0087> IGNORE;IGNORE;IGNORE;<U0087>
+<U0088> IGNORE;IGNORE;IGNORE;<U0088>
+<U0089> IGNORE;IGNORE;IGNORE;<U0089>
+<U008A> IGNORE;IGNORE;IGNORE;<U008A>
+<U008B> IGNORE;IGNORE;IGNORE;<U008B>
+<U008C> IGNORE;IGNORE;IGNORE;<U008C>
+<U008D> IGNORE;IGNORE;IGNORE;<U008D>
+<U008E> IGNORE;IGNORE;IGNORE;<U008E>
+<U008F> IGNORE;IGNORE;IGNORE;<U008F>
+<U0090> IGNORE;IGNORE;IGNORE;<U0090>
+<U0091> IGNORE;IGNORE;IGNORE;<U0091>
+<U0092> IGNORE;IGNORE;IGNORE;<U0092>
+<U0093> IGNORE;IGNORE;IGNORE;<U0093>
+<U0094> IGNORE;IGNORE;IGNORE;<U0094>
+<U0095> IGNORE;IGNORE;IGNORE;<U0095>
+<U0096> IGNORE;IGNORE;IGNORE;<U0096>
+<U0097> IGNORE;IGNORE;IGNORE;<U0097>
+<U0098> IGNORE;IGNORE;IGNORE;<U0098>
+<U0099> IGNORE;IGNORE;IGNORE;<U0099>
+<U009A> IGNORE;IGNORE;IGNORE;<U009A>
+<U009B> IGNORE;IGNORE;IGNORE;<U009B>
+<U009C> IGNORE;IGNORE;IGNORE;<U009C>
+<U009D> IGNORE;IGNORE;IGNORE;<U009D>
+<U009E> IGNORE;IGNORE;IGNORE;<U009E>
+<U009F> IGNORE;IGNORE;IGNORE;<U009F>
+<UE000> IGNORE;IGNORE;IGNORE;<UE000>
+<UE001> IGNORE;IGNORE;IGNORE;<UE001>
+<UE002> IGNORE;IGNORE;IGNORE;<UE002>
+<U0301> IGNORE;IGNORE;IGNORE;<U0301>
+<UE004> IGNORE;IGNORE;IGNORE;<UE004>
+<UE005> IGNORE;IGNORE;IGNORE;<UE005>
+<UE006> IGNORE;IGNORE;IGNORE;<UE006>
+<UE007> IGNORE;IGNORE;IGNORE;<UE007>
+<UE008> IGNORE;IGNORE;IGNORE;<UE008>
+<UE009> IGNORE;IGNORE;IGNORE;<UE009>
+<UE00A> IGNORE;IGNORE;IGNORE;<UE00A>
+<UE00B> IGNORE;IGNORE;IGNORE;<UE00B>
+<UE00C> IGNORE;IGNORE;IGNORE;<UE00C>
+<UE00D> IGNORE;IGNORE;IGNORE;<UE00D>
+<UE00E> IGNORE;IGNORE;IGNORE;<UE00E>
+<UE00F> IGNORE;IGNORE;IGNORE;<UE00F>
+<"=> IGNORE;IGNORE;IGNORE;<"=>
+<UE011> IGNORE;IGNORE;IGNORE;<UE011>
+<UE012> IGNORE;IGNORE;IGNORE;<UE012>
+<UE013> IGNORE;IGNORE;IGNORE;<UE013>
+<UE014> IGNORE;IGNORE;IGNORE;<UE014>
+<UE015> IGNORE;IGNORE;IGNORE;<UE015>
+<UE017> IGNORE;IGNORE;IGNORE;<UE017>
+<UE018> IGNORE;IGNORE;IGNORE;<UE018>
+<UE019> IGNORE;IGNORE;IGNORE;<UE019>
+UNDEFINED IGNORE;IGNORE;IGNORE
+
+<U0030> <U0030>;<U0030>;IGNORE;IGNORE
+<U2070> <U0030>;<U2070>;IGNORE;IGNORE
+<U215B> <U0030>;<U215B>;IGNORE;IGNORE
+<U00BC> <U0030>;<U00BC>;IGNORE;IGNORE
+<U215C> <U0030>;<U215C>;IGNORE;IGNORE
+<U00BD> <U0030>;<U00BD>;IGNORE;IGNORE
+<U215D> <U0030>;<U215D>;IGNORE;IGNORE
+<U00BE> <U0030>;<U00BE>;IGNORE;IGNORE
+<U215E> <U0030>;<U215E>;IGNORE;IGNORE
+<U0031> <U0031>;<U0031>;IGNORE;IGNORE
+<U0032> <U0032>;<U0032>;IGNORE;IGNORE
+<U0033> <U0033>;<U0033>;IGNORE;IGNORE
+<U0034> <U0034>;<U0034>;IGNORE;IGNORE
+<U0035> <U0035>;<U0035>;IGNORE;IGNORE
+<U0036> <U0036>;<U0036>;IGNORE;IGNORE
+<U0037> <U0037>;<U0037>;IGNORE;IGNORE
+<U0038> <U0038>;<U0038>;IGNORE;IGNORE
+<U0039> <U0039>;<U0039>;IGNORE;IGNORE
+<U00B9> <U0031>;<U00B9>;IGNORE;IGNORE
+<U00B2> <U0032>;<U00B2>;IGNORE;IGNORE
+<U00B3> <U0033>;<U00B3>;IGNORE;IGNORE
+<U2074> <U0034>;<U2074>;IGNORE;IGNORE
+<U2075> <U0035>;<U2075>;IGNORE;IGNORE
+<U2076> <U0036>;<U2076>;IGNORE;IGNORE
+<U2077> <U0037>;<U2077>;IGNORE;IGNORE
+<U2078> <U0038>;<U2078>;IGNORE;IGNORE
+<U2079> <U0039>;<U2079>;IGNORE;IGNORE
+<U0041> <U0041>;<NONE>;<CAPITAL>;IGNORE
+<U0061> <U0041>;<NONE>;<SMALL>;IGNORE
+<U00AA> <U0041>;<NONE>;<U00AA>;IGNORE
+<U00C1> <U0041>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E1> <U0041>;<ACUTE>;<SMALL>;IGNORE
+<U00C0> <U0041>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E0> <U0041>;<GRAVE>;<SMALL>;IGNORE
+<U0200> <U0041>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0201> <U0041>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0102> <U0041>;<BREVE>;<CAPITAL>;IGNORE
+<U0103> <U0041>;<BREVE>;<SMALL>;IGNORE
+<U1EAE> <U0041>;<BREVE+ACUTE>;<CAPITAL>;IGNORE
+<U1EAF> <U0041>;<BREVE+ACUTE>;<SMALL>;IGNORE
+<U1EB0> <U0041>;<BREVE+GRAVE>;<CAPITAL>;IGNORE
+<U1EB1> <U0041>;<BREVE+GRAVE>;<SMALL>;IGNORE
+<U1EB2> <U0041>;<BREVE+HOOK>;<CAPITAL>;IGNORE
+<U1EB3> <U0041>;<BREVE+HOOK>;<SMALL>;IGNORE
+<U1EB4> <U0041>;<BREVE+TILDE>;<CAPITAL>;IGNORE
+<U1EB5> <U0041>;<BREVE+TILDE>;<SMALL>;IGNORE
+<U1EB6> <U0041>;<BREVE+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB7> <U0041>;<BREVE+DOT-BELOW>;<SMALL>;IGNORE
+<U0202> <U0041>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0203> <U0041>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00C2> <U0041>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00E2> <U0041>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EA4> <U0041>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EA5> <U0041>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EA6> <U0041>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EA7> <U0041>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EA8> <U0041>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EA9> <U0041>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EAA> <U0041>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EAB> <U0041>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EAC> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EAD> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01CD> <U0041>;<CARON>;<CAPITAL>;IGNORE
+<U01CE> <U0041>;<CARON>;<SMALL>;IGNORE
+<U00C5> <U0041>;<RING>;<CAPITAL>;IGNORE
+<U00E5> <U0041>;<RING>;<SMALL>;IGNORE
+<U01FA> <U0041>;<RING+ACUTE>;<CAPITAL>;IGNORE
+<U01FB> <U0041>;<RING+ACUTE>;<SMALL>;IGNORE
+<U1E00> <U0041>;<RING-BELOW>;<CAPITAL>;IGNORE
+<U1E01> <U0041>;<RING-BELOW>;<SMALL>;IGNORE
+<U01DE> <U0041>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01DF> <U0041>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U1EA2> <U0041>;<HOOK>;<CAPITAL>;IGNORE
+<U1EA3> <U0041>;<HOOK>;<SMALL>;IGNORE
+<U00C3> <U0041>;<TILDE>;<CAPITAL>;IGNORE
+<U00E3> <U0041>;<TILDE>;<SMALL>;IGNORE
+<U1EA0> <U0041>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EA1> <U0041>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0104> <U0041>;<OGONEK>;<CAPITAL>;IGNORE
+<U0105> <U0041>;<OGONEK>;<SMALL>;IGNORE
+<U0100> <U0041>;<MACRON>;<CAPITAL>;IGNORE
+<U0101> <U0041>;<MACRON>;<SMALL>;IGNORE
+<U01E0> <U0041>;<MACRON+DOT>;<CAPITAL>;IGNORE
+<U01E1> <U0041>;<MACRON+DOT>;<SMALL>;IGNORE
+<a8>
+<U00C6> "<U0041><U0045>";"<U00C6><U00C6>";"<CAPITAL><CAPITAL>";IGNORE
+<U00E6> "<U0041><U0045>";"<U00C6><U00C6>";"<SMALL><SMALL>";IGNORE
+<U01FC> "<U0041><U0045>";"<U01FC><U01FC>";"<CAPITAL><CAPITAL>";IGNORE
+<U01FD> "<U0041><U0045>";"<U01FC><U01FC>";"<SMALL><SMALL>";IGNORE
+<U01E2> "<U0041><U0045>";"<U01E2><U01E2>";"<CAPITAL><CAPITAL>";IGNORE
+<U01E3> "<U0041><U0045>";"<U01E2><U01E2>";"<SMALL><SMALL>";IGNORE
+<U0042> <U0042>;<NONE>;<CAPITAL>;IGNORE
+<U0062> <U0042>;<NONE>;<SMALL>;IGNORE
+<U1E02> <U0042>;<DOT>;<CAPITAL>;IGNORE
+<U1E03> <U0042>;<DOT>;<SMALL>;IGNORE
+<U1E04> <U0042>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E05> <U0042>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E06> <U0042>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E07> <U0042>;<LINE-BELOW>;<SMALL>;IGNORE
+<b8>
+<U0043> <U0043>;<NONE>;<CAPITAL>;IGNORE
+<U0063> <U0043>;<NONE>;<SMALL>;IGNORE
+<U0106> <U0043>;<ACUTE>;<CAPITAL>;IGNORE
+<U0107> <U0043>;<ACUTE>;<SMALL>;IGNORE
+<U0108> <U0043>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0109> <U0043>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U010C> <U0043>;<CARON>;<CAPITAL>;IGNORE
+<U010D> <U0043>;<CARON>;<SMALL>;IGNORE
+<U0187> <U0043>;<HOOK>;<CAPITAL>;IGNORE
+<U0188> <U0043>;<HOOK>;<SMALL>;IGNORE
+<U010A> <U0043>;<DOT>;<CAPITAL>;IGNORE
+<U010B> <U0043>;<DOT>;<SMALL>;IGNORE
+<U00C7> <U0043>;<CEDILLA>;<CAPITAL>;IGNORE
+<U00E7> <U0043>;<CEDILLA>;<SMALL>;IGNORE
+<U1E08> <U0043>;<CEDILLA+ACUTE>;<CAPITAL>;IGNORE
+<U1E09> <U0043>;<CEDILLA+ACUTE>;<SMALL>;IGNORE
+<c8>
+<U0044> <U0044>;<NONE>;<CAPITAL>;IGNORE
+<U0064> <U0044>;<NONE>;<SMALL>;IGNORE
+<U010E> <U0044>;<CARON>;<CAPITAL>;IGNORE
+<U010F> <U0044>;<CARON>;<SMALL>;IGNORE
+<U1E0A> <U0044>;<DOT>;<CAPITAL>;IGNORE
+<U1E0B> <U0044>;<DOT>;<SMALL>;IGNORE
+<U1E0C> <U0044>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E0D> <U0044>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0110> <U0044>;<STROKE>;<CAPITAL>;IGNORE
+<U0111> <U0044>;<STROKE>;<SMALL>;IGNORE
+<U1E10> <U0044>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E11> <U0044>;<CEDILLA>;<SMALL>;IGNORE
+<U1E12> <U0044>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E13> <U0044>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E0E> <U0044>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E0F> <U0044>;<LINE-BELOW>;<SMALL>;IGNORE
+<d8>
+<U0045> <U0045>;<NONE>;<CAPITAL>;IGNORE
+<U0065> <U0045>;<NONE>;<SMALL>;IGNORE
+<U00C9> <U0045>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E9> <U0045>;<ACUTE>;<SMALL>;IGNORE
+<U00C8> <U0045>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E8> <U0045>;<GRAVE>;<SMALL>;IGNORE
+<U0204> <U0045>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0205> <U0045>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0114> <U0045>;<BREVE>;<CAPITAL>;IGNORE
+<U0115> <U0045>;<BREVE>;<SMALL>;IGNORE
+<U0206> <U0045>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0207> <U0045>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CA> <U0045>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EA> <U0045>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EBE> <U0045>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EBF> <U0045>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EC0> <U0045>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EC1> <U0045>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EC2> <U0045>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EC3> <U0045>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EC4> <U0045>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EC5> <U0045>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EC6> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EC7> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U011A> <U0045>;<CARON>;<CAPITAL>;IGNORE
+<U011B> <U0045>;<CARON>;<SMALL>;IGNORE
+<U00CB> <U0045>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EB> <U0045>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EBA> <U0045>;<HOOK>;<CAPITAL>;IGNORE
+<U1EBB> <U0045>;<HOOK>;<SMALL>;IGNORE
+<U1EBC> <U0045>;<TILDE>;<CAPITAL>;IGNORE
+<U1EBD> <U0045>;<TILDE>;<SMALL>;IGNORE
+<U1E1A> <U0045>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E1B> <U0045>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0116> <U0045>;<DOT>;<CAPITAL>;IGNORE
+<U0117> <U0045>;<DOT>;<SMALL>;IGNORE
+<U1EB8> <U0045>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB9> <U0045>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E1C> <U0045>;<CEDILLA+BREVE>;<CAPITAL>;IGNORE
+<U1E1D> <U0045>;<CEDILLA+BREVE>;<SMALL>;IGNORE
+<U0118> <U0045>;<OGONEK>;<CAPITAL>;IGNORE
+<U0119> <U0045>;<OGONEK>;<SMALL>;IGNORE
+<U0112> <U0045>;<MACRON>;<CAPITAL>;IGNORE
+<U0113> <U0045>;<MACRON>;<SMALL>;IGNORE
+<U1E16> <U0045>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E17> <U0045>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E14> <U0045>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E15> <U0045>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U1E18> <U0045>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E19> <U0045>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<e8>
+<U0046> <U0046>;<NONE>;<CAPITAL>;IGNORE
+<U0066> <U0046>;<NONE>;<SMALL>;IGNORE
+<U0191> <U0046>;<HOOK>;<CAPITAL>;IGNORE
+<U0192> <U0046>;<HOOK>;<SMALL>;IGNORE
+<U1E1E> <U0046>;<DOT>;<CAPITAL>;IGNORE
+<U1E1F> <U0046>;<DOT>;<SMALL>;IGNORE
+<f8>
+<UFB00> "<U0046><U0046>";"<NONE><NONE>";"<UFB00><UFB00>";IGNORE
+<UFB01> "<U0046><U0049>";"<NONE><NONE>";"<UFB01><UFB01>";IGNORE
+<UFB02> "<U0046><U004C>";"<NONE><NONE>";"<UFB02><UFB02>";IGNORE
+<UFB03> "<U0046><U0046><U0049>";"<NONE><NONE><NONE>";"<UFB03><UFB03><UFB03>";IGNORE
+<UFB04> "<U0046><U0046><U004C>";"<NONE><NONE><NONE>";"<UFB04><UFB04><UFB04>";IGNORE
+<U0047> <U0047>;<NONE>;<CAPITAL>;IGNORE
+<U0067> <U0047>;<NONE>;<SMALL>;IGNORE
+<U01F4> <U0047>;<ACUTE>;<CAPITAL>;IGNORE
+<U01F5> <U0047>;<ACUTE>;<SMALL>;IGNORE
+<U011E> <U0047>;<BREVE>;<CAPITAL>;IGNORE
+<U011F> <U0047>;<BREVE>;<SMALL>;IGNORE
+<U011C> <U0047>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U011D> <U0047>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01E6> <U0047>;<CARON>;<CAPITAL>;IGNORE
+<U01E7> <U0047>;<CARON>;<SMALL>;IGNORE
+<U0120> <U0047>;<DOT>;<CAPITAL>;IGNORE
+<U0121> <U0047>;<DOT>;<SMALL>;IGNORE
+<U01E4> <U0047>;<STROKE>;<CAPITAL>;IGNORE
+<U01E5> <U0047>;<STROKE>;<SMALL>;IGNORE
+<U0122> <U0047>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0123> <U0047>;<CEDILLA>;<SMALL>;IGNORE
+<U1E20> <U0047>;<MACRON>;<CAPITAL>;IGNORE
+<U1E21> <U0047>;<MACRON>;<SMALL>;IGNORE
+<g8>
+<U0048> <U0048>;<NONE>;<CAPITAL>;IGNORE
+<U0068> <U0048>;<NONE>;<SMALL>;IGNORE
+<U1E2A> <U0048>;<BREVE-BELOW>;<CAPITAL>;IGNORE
+<U1E2B> <U0048>;<BREVE-BELOW>;<SMALL>;IGNORE
+<U0124> <U0048>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0125> <U0048>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E26> <U0048>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E27> <U0048>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E22> <U0048>;<DOT>;<CAPITAL>;IGNORE
+<U1E23> <U0048>;<DOT>;<SMALL>;IGNORE
+<U1E24> <U0048>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E25> <U0048>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0126> <U0048>;<STROKE>;<CAPITAL>;IGNORE
+<U0127> <U0048>;<STROKE>;<SMALL>;IGNORE
+<U1E28> <U0048>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E29> <U0048>;<CEDILLA>;<SMALL>;IGNORE
+<h8>
+<U0049> <U0049>;<NONE>;<CAPITAL>;IGNORE
+<U0069> <U0049>;<NONE>;<SMALL>;IGNORE
+<U00CD> <U0049>;<ACUTE>;<CAPITAL>;IGNORE
+<U00ED> <U0049>;<ACUTE>;<SMALL>;IGNORE
+<U00CC> <U0049>;<GRAVE>;<CAPITAL>;IGNORE
+<U00EC> <U0049>;<GRAVE>;<SMALL>;IGNORE
+<U0208> <U0049>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0209> <U0049>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U012C> <U0049>;<BREVE>;<CAPITAL>;IGNORE
+<U012D> <U0049>;<BREVE>;<SMALL>;IGNORE
+<U020A> <U0049>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020B> <U0049>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CE> <U0049>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EE> <U0049>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01CF> <U0049>;<CARON>;<CAPITAL>;IGNORE
+<U01D0> <U0049>;<CARON>;<SMALL>;IGNORE
+<U00CF> <U0049>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EF> <U0049>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E2E> <U0049>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U1E2F> <U0049>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U1EC8> <U0049>;<HOOK>;<CAPITAL>;IGNORE
+<U1EC9> <U0049>;<HOOK>;<SMALL>;IGNORE
+<U0128> <U0049>;<TILDE>;<CAPITAL>;IGNORE
+<U0129> <U0049>;<TILDE>;<SMALL>;IGNORE
+<U1E2C> <U0049>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E2D> <U0049>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0130> <U0049>;<DOT>;<CAPITAL>;IGNORE
+<U0131> <U0049>;<DOT>;<SMALL>;IGNORE
+<U1ECA> <U0049>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECB> <U0049>;<DOT-BELOW>;<SMALL>;IGNORE
+<U012E> <U0049>;<OGONEK>;<CAPITAL>;IGNORE
+<U012F> <U0049>;<OGONEK>;<SMALL>;IGNORE
+<U012A> <U0049>;<MACRON>;<CAPITAL>;IGNORE
+<U012B> <U0049>;<MACRON>;<SMALL>;IGNORE
+<i8>
+<U0132> "<U0049><U004A>";"<U0132><U0132>";"<CAPITAL><CAPITAL>";IGNORE
+<U0133> "<U0049><U004A>";"<U0132><U0132>";"<SMALL><SMALL>";IGNORE
+<U004A> <U004A>;<NONE>;<CAPITAL>;IGNORE
+<U006A> <U004A>;<NONE>;<SMALL>;IGNORE
+<U0134> <U004A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0135> <U004A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<j8>
+<U004B> <U004B>;<NONE>;<CAPITAL>;IGNORE
+<U006B> <U004B>;<NONE>;<SMALL>;IGNORE
+<U1E30> <U004B>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E31> <U004B>;<ACUTE>;<SMALL>;IGNORE
+<U01E8> <U004B>;<CARON>;<CAPITAL>;IGNORE
+<U01E9> <U004B>;<CARON>;<SMALL>;IGNORE
+<U0198> <U004B>;<HOOK>;<CAPITAL>;IGNORE
+<U0199> <U004B>;<HOOK>;<SMALL>;IGNORE
+<U1E32> <U004B>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E33> <U004B>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0136> <U004B>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0137> <U004B>;<CEDILLA>;<SMALL>;IGNORE
+<U1E34> <U004B>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E35> <U004B>;<LINE-BELOW>;<SMALL>;IGNORE
+<k8>
+<U0138> <U004B>;<U0138>;<SMALL>;IGNORE
+<U004C> <U004C>;<NONE>;<CAPITAL>;IGNORE
+<U006C> <U004C>;<NONE>;<SMALL>;IGNORE
+<U0139> <U004C>;<ACUTE>;<CAPITAL>;IGNORE
+<U013A> <U004C>;<ACUTE>;<SMALL>;IGNORE
+<U013D> <U004C>;<CARON>;<CAPITAL>;IGNORE
+<U013E> <U004C>;<CARON>;<SMALL>;IGNORE
+<U013F> <U004C>;<DOT>;<CAPITAL>;IGNORE
+<U0140> <U004C>;<DOT>;<SMALL>;IGNORE
+<U1E36> <U004C>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E37> <U004C>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0141> <U004C>;<STROKE>;<CAPITAL>;IGNORE
+<U0142> <U004C>;<STROKE>;<SMALL>;IGNORE
+<U013B> <U004C>;<CEDILLA>;<CAPITAL>;IGNORE
+<U013C> <U004C>;<CEDILLA>;<SMALL>;IGNORE
+<U1E38> <U004C>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E39> <U004C>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E3C> <U004C>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E3D> <U004C>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E3A> <U004C>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E3B> <U004C>;<LINE-BELOW>;<SMALL>;IGNORE
+<l8>
+<U004D> <U004D>;<NONE>;<CAPITAL>;IGNORE
+<U006D> <U004D>;<NONE>;<SMALL>;IGNORE
+<U1E3E> <U004D>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E3F> <U004D>;<ACUTE>;<SMALL>;IGNORE
+<U1E40> <U004D>;<DOT>;<CAPITAL>;IGNORE
+<U1E41> <U004D>;<DOT>;<SMALL>;IGNORE
+<U1E42> <U004D>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E43> <U004D>;<DOT-BELOW>;<SMALL>;IGNORE
+<m8>
+<U004E> <U004E>;<NONE>;<CAPITAL>;IGNORE
+<U006E> <U004E>;<NONE>;<SMALL>;IGNORE
+<U0143> <U004E>;<ACUTE>;<CAPITAL>;IGNORE
+<U0144> <U004E>;<ACUTE>;<SMALL>;IGNORE
+<U0147> <U004E>;<CARON>;<CAPITAL>;IGNORE
+<U0148> <U004E>;<CARON>;<SMALL>;IGNORE
+<U00D1> <U004E>;<TILDE>;<CAPITAL>;IGNORE
+<U00F1> <U004E>;<TILDE>;<SMALL>;IGNORE
+<U1E44> <U004E>;<DOT>;<CAPITAL>;IGNORE
+<U1E45> <U004E>;<DOT>;<SMALL>;IGNORE
+<U1E46> <U004E>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E47> <U004E>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0145> <U004E>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0146> <U004E>;<CEDILLA>;<SMALL>;IGNORE
+<U1E4A> <U004E>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E4B> <U004E>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E48> <U004E>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E49> <U004E>;<LINE-BELOW>;<SMALL>;IGNORE
+<U0149> <U004E>;<PRECEDED-BY-APOSTROPHE>;<SMALL>;IGNORE
+<n8>
+<U014A> "<U004E><U0047>";"<U014A><U014A>";"<CAPITAL><CAPITAL>";IGNORE
+<U014B> "<U004E><U0047>";"<U014A><U014A>";"<SMALL><SMALL>";IGNORE
+<U004F> <U004F>;<NONE>;<CAPITAL>;IGNORE
+<U006F> <U004F>;<NONE>;<SMALL>;IGNORE
+<U00BA> <U004F>;<NONE>;<U00BA>;IGNORE
+<U00D3> <U004F>;<ACUTE>;<CAPITAL>;IGNORE
+<U00F3> <U004F>;<ACUTE>;<SMALL>;IGNORE
+<U00D2> <U004F>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F2> <U004F>;<GRAVE>;<SMALL>;IGNORE
+<U020C> <U004F>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U020D> <U004F>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U014E> <U004F>;<BREVE>;<CAPITAL>;IGNORE
+<U014F> <U004F>;<BREVE>;<SMALL>;IGNORE
+<U020E> <U004F>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020F> <U004F>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00D4> <U004F>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00F4> <U004F>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1ED0> <U004F>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1ED1> <U004F>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1ED2> <U004F>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1ED3> <U004F>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1ED4> <U004F>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1ED5> <U004F>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1ED6> <U004F>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1ED7> <U004F>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1ED8> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ED9> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01D1> <U004F>;<CARON>;<CAPITAL>;IGNORE
+<U01D2> <U004F>;<CARON>;<SMALL>;IGNORE
+<U0150> <U004F>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0151> <U004F>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1ECE> <U004F>;<HOOK>;<CAPITAL>;IGNORE
+<U1ECF> <U004F>;<HOOK>;<SMALL>;IGNORE
+<U1E4C> <U004F>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E4D> <U004F>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E4E> <U004F>;<TILDE+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E4F> <U004F>;<TILDE+DIAERESIS>;<SMALL>;IGNORE
+<U1ECC> <U004F>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECD> <U004F>;<DOT-BELOW>;<SMALL>;IGNORE
+<U00D8> <U004F>;<STROKE>;<CAPITAL>;IGNORE
+<U00F8> <U004F>;<STROKE>;<SMALL>;IGNORE
+<U01FE> <U004F>;<STROKE+ACUTE>;<CAPITAL>;IGNORE
+<U01FF> <U004F>;<STROKE+ACUTE>;<SMALL>;IGNORE
+<U01EA> <U004F>;<OGONEK>;<CAPITAL>;IGNORE
+<U01EB> <U004F>;<OGONEK>;<SMALL>;IGNORE
+<U01EC> <U004F>;<OGONEK+MACRON>;<CAPITAL>;IGNORE
+<U01ED> <U004F>;<OGONEK+MACRON>;<SMALL>;IGNORE
+<U014C> <U004F>;<MACRON>;<CAPITAL>;IGNORE
+<U014D> <U004F>;<MACRON>;<SMALL>;IGNORE
+<U1E52> <U004F>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E53> <U004F>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E50> <U004F>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E51> <U004F>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U01A0> <U004F>;<HORN>;<CAPITAL>;IGNORE
+<U01A1> <U004F>;<HORN>;<SMALL>;IGNORE
+<U1EDA> <U004F>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EDB> <U004F>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EDC> <U004F>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EDD> <U004F>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EDE> <U004F>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EDF> <U004F>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EE0> <U004F>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EE1> <U004F>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EE2> <U004F>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE3> <U004F>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<o8>
+<U0152> "<U004F><U0045>";"<U0152><U0152>";"<CAPITAL><CAPITAL>";IGNORE
+<U0153> "<U004F><U0045>";"<U0152><U0152>";"<SMALL><SMALL>";IGNORE
+<U0050> <U0050>;<NONE>;<CAPITAL>;IGNORE
+<U0070> <U0050>;<NONE>;<SMALL>;IGNORE
+<U1E54> <U0050>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E55> <U0050>;<ACUTE>;<SMALL>;IGNORE
+<U1E56> <U0050>;<DOT>;<CAPITAL>;IGNORE
+<U1E57> <U0050>;<DOT>;<SMALL>;IGNORE
+<p8>
+<U0051> <U0051>;<NONE>;<CAPITAL>;IGNORE
+<U0071> <U0051>;<NONE>;<SMALL>;IGNORE
+<q8>
+<U0052> <U0052>;<NONE>;<CAPITAL>;IGNORE
+<U0072> <U0052>;<NONE>;<SMALL>;IGNORE
+<U0154> <U0052>;<ACUTE>;<CAPITAL>;IGNORE
+<U0155> <U0052>;<ACUTE>;<SMALL>;IGNORE
+<U0210> <U0052>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0211> <U0052>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0212> <U0052>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0213> <U0052>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U0158> <U0052>;<CARON>;<CAPITAL>;IGNORE
+<U0159> <U0052>;<CARON>;<SMALL>;IGNORE
+<U1E58> <U0052>;<DOT>;<CAPITAL>;IGNORE
+<U1E59> <U0052>;<DOT>;<SMALL>;IGNORE
+<U1E5A> <U0052>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5B> <U0052>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0156> <U0052>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0157> <U0052>;<CEDILLA>;<SMALL>;IGNORE
+<U1E5C> <U0052>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5D> <U0052>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E5E> <U0052>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E5F> <U0052>;<LINE-BELOW>;<SMALL>;IGNORE
+<r8>
+<U0053> <U0053>;<NONE>;<CAPITAL>;IGNORE
+<U0073> <U0053>;<NONE>;<SMALL>;IGNORE
+<UFB06> "<U0053><U0054>";"<NONE><NONE>";"<UFB06><UFB06>";IGNORE
+<U015A> <U0053>;<ACUTE>;<CAPITAL>;IGNORE
+<U015B> <U0053>;<ACUTE>;<SMALL>;IGNORE
+<U1E64> <U0053>;<ACUTE+DOT>;<CAPITAL>;IGNORE
+<U1E65> <U0053>;<ACUTE+DOT>;<SMALL>;IGNORE
+<U015C> <U0053>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U015D> <U0053>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E66> <U0053>;<CARON+DOT>;<CAPITAL>;IGNORE
+<U1E67> <U0053>;<CARON+DOT>;<SMALL>;IGNORE
+<U1E60> <U0053>;<DOT>;<CAPITAL>;IGNORE
+<U1E61> <U0053>;<DOT>;<SMALL>;IGNORE
+<U1E62> <U0053>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E63> <U0053>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E68> <U0053>;<DOT+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E69> <U0053>;<DOT+DOT-BELOW>;<SMALL>;IGNORE
+<U015E> <U0053>;<CEDILLA>;<CAPITAL>;IGNORE
+<U015F> <U0053>;<CEDILLA>;<SMALL>;IGNORE
+<s8>
+<U0160> <U0160>;<CARON>;<CAPITAL>
+<U0161> <U0160>;<CARON>;<SMALL>
+<U005A> <U005A>;<NONE>;<CAPITAL>
+<U007A> <U005A>;<NONE>;<SMALL>
+<U0179> <U005A>;<ACUTE>;<CAPITAL>
+<U017A> <U005A>;<ACUTE>;<SMALL>
+<U017B> <U005A>;<DOT>;<CAPITAL>
+<U017C> <U005A>;<DOT>;<SMALL>
+<U017D> <U005A>;<CARON>;<CAPITAL>
+<U017E> <U005A>;<CARON>;<SMALL>
+<U017F> <U0053>;<U017F>;<SMALL>;IGNORE
+<U00DF> "<U0053><U0053>";"<NONE><NONE>";"<SMALL><U00DF>";IGNORE
+<UFB05> "<U0053><U0054>";"<NONE><NONE>";"<UFB05><UFB05>";IGNORE
+<U0054> <U0054>;<NONE>;<CAPITAL>;IGNORE
+<U0074> <U0054>;<NONE>;<SMALL>;IGNORE
+<U0164> <U0054>;<CARON>;<CAPITAL>;IGNORE
+<U0165> <U0054>;<CARON>;<SMALL>;IGNORE
+<U1E6A> <U0054>;<DOT>;<CAPITAL>;IGNORE
+<U1E6B> <U0054>;<DOT>;<SMALL>;IGNORE
+<U1E6C> <U0054>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E6D> <U0054>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0166> <U0054>;<STROKE>;<CAPITAL>;IGNORE
+<U0167> <U0054>;<STROKE>;<SMALL>;IGNORE
+<U0162> <U0054>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0163> <U0054>;<CEDILLA>;<SMALL>;IGNORE
+<U1E70> <U0054>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E71> <U0054>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E6E> <U0054>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E6F> <U0054>;<LINE-BELOW>;<SMALL>;IGNORE
+<t8>
+<U00DE> "<U0054><U0048>";"<U00DE><U00DE>";"<CAPITAL><CAPITAL>";IGNORE
+<U00FE> "<U0054><U0048>";"<U00DE><U00DE>";"<SMALL><SMALL>";IGNORE
+<U0055> <U0055>;<NONE>;<CAPITAL>;IGNORE
+<U0075> <U0055>;<NONE>;<SMALL>;IGNORE
+<U00DA> <U0055>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FA> <U0055>;<ACUTE>;<SMALL>;IGNORE
+<U00D9> <U0055>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F9> <U0055>;<GRAVE>;<SMALL>;IGNORE
+<U0214> <U0055>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0215> <U0055>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U016C> <U0055>;<BREVE>;<CAPITAL>;IGNORE
+<U016D> <U0055>;<BREVE>;<SMALL>;IGNORE
+<U0216> <U0055>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0217> <U0055>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00DB> <U0055>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00FB> <U0055>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01D3> <U0055>;<CARON>;<CAPITAL>;IGNORE
+<U01D4> <U0055>;<CARON>;<SMALL>;IGNORE
+<U016E> <U0055>;<RING>;<CAPITAL>;IGNORE
+<U016F> <U0055>;<RING>;<SMALL>;IGNORE
+<U01D5> <U0055>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01D6> <U0055>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U01D7> <U0055>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U01D8> <U0055>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U01DB> <U0055>;<DIAERESIS+GRAVE>;<CAPITAL>;IGNORE
+<U01DC> <U0055>;<DIAERESIS+GRAVE>;<SMALL>;IGNORE
+<U01D9> <U0055>;<DIAERESIS+CARON>;<CAPITAL>;IGNORE
+<U01DA> <U0055>;<DIAERESIS+CARON>;<SMALL>;IGNORE
+<U0170> <U0055>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0171> <U0055>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1EE6> <U0055>;<HOOK>;<CAPITAL>;IGNORE
+<U1EE7> <U0055>;<HOOK>;<SMALL>;IGNORE
+<U0168> <U0055>;<TILDE>;<CAPITAL>;IGNORE
+<U0169> <U0055>;<TILDE>;<SMALL>;IGNORE
+<U1E78> <U0055>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E79> <U0055>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E74> <U0055>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E75> <U0055>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U1EE4> <U0055>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE5> <U0055>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0172> <U0055>;<OGONEK>;<CAPITAL>;IGNORE
+<U0173> <U0055>;<OGONEK>;<SMALL>;IGNORE
+<U016A> <U0055>;<MACRON>;<CAPITAL>;IGNORE
+<U016B> <U0055>;<MACRON>;<SMALL>;IGNORE
+<U1E7A> <U0055>;<MACRON+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E7B> <U0055>;<MACRON+DIAERESIS>;<SMALL>;IGNORE
+<U1E72> <U0055>;<MACRON+DIAERESIS-BELOW>;<CAPITAL>;IGNORE
+<U1E73> <U0055>;<MACRON+DIAERESIS-BELOW>;<SMALL>;IGNORE
+<U1E76> <U0055>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E77> <U0055>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U01AF> <U0055>;<HORN>;<CAPITAL>;IGNORE
+<U01B0> <U0055>;<HORN>;<SMALL>;IGNORE
+<U1EE8> <U0055>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EE9> <U0055>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EEA> <U0055>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EEB> <U0055>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EEC> <U0055>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EED> <U0055>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EEE> <U0055>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EEF> <U0055>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EF0> <U0055>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF1> <U0055>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<u8>
+<U0056> <U0056>;<NONE>;<CAPITAL>;IGNORE
+<U0076> <U0056>;<NONE>;<SMALL>;IGNORE
+<U1E7C> <U0056>;<TILDE>;<CAPITAL>;IGNORE
+<U1E7D> <U0056>;<TILDE>;<SMALL>;IGNORE
+<U1E7E> <U0056>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E7F> <U0056>;<DOT-BELOW>;<SMALL>;IGNORE
+<v8>
+<U0057> <U0056>;<U0057>;<NONE>;<CAPITAL>
+<U0077> <U0056>;<U0057>;<NONE>;<SMALL>
+<U1E82> <U0056>;<U0057>;<ACUTE>;<CAPITAL>
+<U1E83> <U0056>;<U0057>;<ACUTE>;<SMALL>
+<U1E80> <U0056>;<U0057>;<GRAVE>;<CAPITAL>
+<U1E81> <U0056>;<U0057>;<GRAVE>;<SMALL>
+<U0174> <U0056>;<U0057>;<CIRCUMFLEX>;<CAPITAL>
+<U0175> <U0056>;<U0057>;<CIRCUMFLEX>;<SMALL>
+<U1E88> <U0056>;<U0057>;<MACRON>;<CAPITAL>
+<U1E89> <U0056>;<U0057>;<MACRON>;<SMALL>
+<U1E86> <U0056>;<U0057>;<DOT>;<CAPITAL>
+<U1E87> <U0056>;<U0057>;<DOT>;<SMALL>
+<U1E84> <U0056>;<U0057>;<DIAERESIS>;<CAPITAL>
+<U1E85> <U0056>;<U0057>;<DIAERESIS>;<SMALL>
+<U00D5> <U00D5>;<TILDE>;<CAPITAL>
+<U00F5> <U00D5>;<TILDE>;<SMALL>
+<U00C4> <U00C4>;<DIAERESIS>;<CAPITAL>
+<U00E4> <U00C4>;<DIAERESIS>;<SMALL>
+<U00D6> <U00D6>;<DIAERESIS>;<CAPITAL>
+<U00F6> <U00D6>;<DIAERESIS>;<SMALL>
+<U00DC> <U00DC>;<DIAERESIS>;<CAPITAL>
+<U00FC> <U00DC>;<DIAERESIS>;<SMALL>
+<w8>
+<U0058> <U0058>;<NONE>;<CAPITAL>;IGNORE
+<U0078> <U0058>;<NONE>;<SMALL>;IGNORE
+<U1E8C> <U0058>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E8D> <U0058>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E8A> <U0058>;<DOT>;<CAPITAL>;IGNORE
+<U1E8B> <U0058>;<DOT>;<SMALL>;IGNORE
+<x8>
+<U0059> <U0059>;<NONE>;<CAPITAL>;IGNORE
+<U0079> <U0059>;<NONE>;<SMALL>;IGNORE
+<U00DD> <U0059>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FD> <U0059>;<ACUTE>;<SMALL>;IGNORE
+<U1EF2> <U0059>;<GRAVE>;<CAPITAL>;IGNORE
+<U1EF3> <U0059>;<GRAVE>;<SMALL>;IGNORE
+<U0176> <U0059>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0177> <U0059>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0178> <U0059>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FF> <U0059>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EF6> <U0059>;<HOOK>;<CAPITAL>;IGNORE
+<U1EF7> <U0059>;<HOOK>;<SMALL>;IGNORE
+<U1EF8> <U0059>;<TILDE>;<CAPITAL>;IGNORE
+<U1EF9> <U0059>;<TILDE>;<SMALL>;IGNORE
+<U1E8E> <U0059>;<DOT>;<CAPITAL>;IGNORE
+<U1E8F> <U0059>;<DOT>;<SMALL>;IGNORE
+<U1EF4> <U0059>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF5> <U0059>;<DOT-BELOW>;<SMALL>;IGNORE
+<y8>
+<U1E90> <U005A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E91> <U005A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E92> <U005A>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E93> <U005A>;<DOT-BELOW>;<SMALL>;IGNORE
+<U01B5> <U005A>;<STROKE>;<CAPITAL>;IGNORE
+<U01B6> <U005A>;<STROKE>;<SMALL>;IGNORE
+<U1E94> <U005A>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E95> <U005A>;<LINE-BELOW>;<SMALL>;IGNORE
+<z8>
+<U0391> <U0391>;<CAPITAL>;<GREEK>;IGNORE
+<U0386> <U0391>;<CAPITAL>;<TONOS>;IGNORE
+<U03B1> <U0391>;<SMALL>;<GREEK>;IGNORE
+<U03AC> <U0391>;<SMALL>;<TONOS>;IGNORE
+<U0392> <U0392>;<CAPITAL>;<GREEK>;IGNORE
+<U03B2> <U0392>;<SMALL>;<GREEK>;IGNORE
+<U0393> <U0393>;<CAPITAL>;<GREEK>;IGNORE
+<U03B3> <U0393>;<SMALL>;<GREEK>;IGNORE
+<U0394> <U0394>;<CAPITAL>;<GREEK>;IGNORE
+<U03B4> <U0394>;<SMALL>;<GREEK>;IGNORE
+<U0395> <U0395>;<CAPITAL>;<GREEK>;IGNORE
+<U0388> <U0395>;<CAPITAL>;<TONOS>;IGNORE
+<U03B5> <U0395>;<SMALL>;<GREEK>;IGNORE
+<U03AD> <U0395>;<SMALL>;<TONOS>;IGNORE
+<U0396> <U0396>;<CAPITAL>;<GREEK>;IGNORE
+<U03B6> <U0396>;<SMALL>;<GREEK>;IGNORE
+<U0397> <U0397>;<CAPITAL>;<GREEK>;IGNORE
+<U0389> <U0397>;<CAPITAL>;<TONOS>;IGNORE
+<U03B7> <U0397>;<SMALL>;<GREEK>;IGNORE
+<U03AE> <U0397>;<SMALL>;<TONOS>;IGNORE
+<U0398> <U0398>;<CAPITAL>;<GREEK>;IGNORE
+<U03B8> <U0398>;<SMALL>;<GREEK>;IGNORE
+<U0399> <U0399>;<CAPITAL>;<GREEK>;IGNORE
+<U038A> <U0399>;<CAPITAL>;<TONOS>;IGNORE
+<U03AA> <U0399>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03B9> <U0399>;<SMALL>;<GREEK>;IGNORE
+<U03AF> <U0399>;<SMALL>;<TONOS>;IGNORE
+<U03CA> <U0399>;<SMALL>;<DIALYTICA>;IGNORE
+<U0390> <U0399>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U039A> <U039A>;<CAPITAL>;<GREEK>;IGNORE
+<U03BA> <U039A>;<SMALL>;<GREEK>;IGNORE
+<U039B> <U039B>;<CAPITAL>;<GREEK>;IGNORE
+<U03BB> <U039B>;<SMALL>;<GREEK>;IGNORE
+<U039C> <U039C>;<CAPITAL>;<GREEK>;IGNORE
+<U03BC> <U039C>;<SMALL>;<GREEK>;IGNORE
+<U039D> <U039D>;<CAPITAL>;<GREEK>;IGNORE
+<U03BD> <U039D>;<SMALL>;<GREEK>;IGNORE
+<U039E> <U039E>;<CAPITAL>;<GREEK>;IGNORE
+<U03BE> <U039E>;<SMALL>;<GREEK>;IGNORE
+<U039F> <U039F>;<CAPITAL>;<GREEK>;IGNORE
+<U038C> <U039F>;<CAPITAL>;<TONOS>;IGNORE
+<U03BF> <U039F>;<SMALL>;<GREEK>;IGNORE
+<U03CC> <U039F>;<SMALL>;<TONOS>;IGNORE
+<U03A0> <U03A0>;<CAPITAL>;<GREEK>;IGNORE
+<U03C0> <U03A0>;<SMALL>;<GREEK>;IGNORE
+<U03A1> <U03A1>;<CAPITAL>;<GREEK>;IGNORE
+<U03C1> <U03A1>;<SMALL>;<GREEK>;IGNORE
+<U03A3> <U03A3>;<CAPITAL>;<GREEK>;IGNORE
+<U03C3> <U03A3>;<SMALL>;<GREEK>;IGNORE
+<U03C2> <U03A3>;<SMALL>;<U03C2>;IGNORE
+<U03A4> <U03A4>;<CAPITAL>;<GREEK>;IGNORE
+<U03C4> <U03A4>;<SMALL>;<GREEK>;IGNORE
+<U03A5> <U03A5>;<CAPITAL>;<GREEK>;IGNORE
+<U038E> <U03A5>;<CAPITAL>;<TONOS>;IGNORE
+<U03AB> <U03A5>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03C5> <U03A5>;<SMALL>;<GREEK>;IGNORE
+<U03CD> <U03A5>;<SMALL>;<TONOS>;IGNORE
+<U03CB> <U03A5>;<SMALL>;<DIALYTICA>;IGNORE
+<U03B0> <U03A5>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U03A6> <U03A6>;<CAPITAL>;<GREEK>;IGNORE
+<U03C6> <U03A6>;<SMALL>;<GREEK>;IGNORE
+<U03A7> <U03A7>;<CAPITAL>;<GREEK>;IGNORE
+<U03C7> <U03A7>;<SMALL>;<GREEK>;IGNORE
+<U03A8> <U03A8>;<CAPITAL>;<GREEK>;IGNORE
+<U03C8> <U03A8>;<SMALL>;<GREEK>;IGNORE
+<U03A9> <U03A9>;<CAPITAL>;<GREEK>;IGNORE
+<U038F> <U03A9>;<CAPITAL>;<TONOS>;IGNORE
+<U03C9> <U03A9>;<SMALL>;<GREEK>;IGNORE
+<U03CE> <U03A9>;<SMALL>;<TONOS>;IGNORE
+<U0410> <U0410>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0430> <U0410>;<CYRILLIC>;<SMALL>;IGNORE
+<U0411> <U0411>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0431> <U0411>;<CYRILLIC>;<SMALL>;IGNORE
+<U0412> <U0412>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0432> <U0412>;<CYRILLIC>;<SMALL>;IGNORE
+<U0413> <U0413>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0433> <U0413>;<CYRILLIC>;<SMALL>;IGNORE
+<U0403> <U0403>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0453> <U0403>;<CYRILLIC>;<SMALL>;IGNORE
+<U0490> <U0490>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0491> <U0490>;<CYRILLIC>;<SMALL>;IGNORE
+<U0414> <U0414>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0434> <U0414>;<CYRILLIC>;<SMALL>;IGNORE
+<U0402> <U0402>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0452> <U0402>;<CYRILLIC>;<SMALL>;IGNORE
+<U0415> <U0415>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0435> <U0415>;<CYRILLIC>;<SMALL>;IGNORE
+<U0401> <U0401>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0451> <U0401>;<CYRILLIC>;<SMALL>;IGNORE
+<U0404> <U0404>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0454> <U0404>;<CYRILLIC>;<SMALL>;IGNORE
+<U0416> <U0416>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0436> <U0416>;<CYRILLIC>;<SMALL>;IGNORE
+<U0417> <U0417>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0437> <U0417>;<CYRILLIC>;<SMALL>;IGNORE
+<U0418> <U0418>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0438> <U0418>;<CYRILLIC>;<SMALL>;IGNORE
+<U0406> <U0406>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0456> <U0406>;<CYRILLIC>;<SMALL>;IGNORE
+<U0407> <U0407>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0457> <U0407>;<CYRILLIC>;<SMALL>;IGNORE
+<U0408> <U0408>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0458> <U0408>;<CYRILLIC>;<SMALL>;IGNORE
+<U0419> <U0419>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0439> <U0419>;<CYRILLIC>;<SMALL>;IGNORE
+<U041A> <U041A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043A> <U041A>;<CYRILLIC>;<SMALL>;IGNORE
+<U040C> <U040C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045C> <U040C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041B> <U041B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043B> <U041B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0409> <U0409>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0459> <U0409>;<CYRILLIC>;<SMALL>;IGNORE
+<U041C> <U041C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043C> <U041C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041D> <U041D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043D> <U041D>;<CYRILLIC>;<SMALL>;IGNORE
+<U040A> <U040A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045A> <U040A>;<CYRILLIC>;<SMALL>;IGNORE
+<U041E> <U041E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043E> <U041E>;<CYRILLIC>;<SMALL>;IGNORE
+<U041F> <U041F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043F> <U041F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0420> <U0420>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0440> <U0420>;<CYRILLIC>;<SMALL>;IGNORE
+<U0421> <U0421>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0441> <U0421>;<CYRILLIC>;<SMALL>;IGNORE
+<U0422> <U0422>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0442> <U0422>;<CYRILLIC>;<SMALL>;IGNORE
+<U040B> <U040B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045B> <U040B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0423> <U0423>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0443> <U0423>;<CYRILLIC>;<SMALL>;IGNORE
+<U040E> <U040E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045E> <U040E>;<CYRILLIC>;<SMALL>;IGNORE
+<U0424> <U0424>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0444> <U0424>;<CYRILLIC>;<SMALL>;IGNORE
+<U0425> <U0425>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0445> <U0425>;<CYRILLIC>;<SMALL>;IGNORE
+<U0426> <U0426>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0446> <U0426>;<CYRILLIC>;<SMALL>;IGNORE
+<U0405> <U0405>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0455> <U0405>;<CYRILLIC>;<SMALL>;IGNORE
+<U0427> <U0427>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0447> <U0427>;<CYRILLIC>;<SMALL>;IGNORE
+<U040F> <U040F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045F> <U040F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0428> <U0428>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0448> <U0428>;<CYRILLIC>;<SMALL>;IGNORE
+<U0429> <U0429>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0449> <U0429>;<CYRILLIC>;<SMALL>;IGNORE
+<U044A> <U044A>;<CYRILLIC>;<SMALL>;IGNORE
+<U042A> <U044A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042B> <U042B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044B> <U042B>;<CYRILLIC>;<SMALL>;IGNORE
+<U044C> <U044C>;<CYRILLIC>;<SMALL>;IGNORE
+<U042C> <U044C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042D> <U042D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044D> <U042D>;<CYRILLIC>;<SMALL>;IGNORE
+<U042E> <U042E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044E> <U042E>;<CYRILLIC>;<SMALL>;IGNORE
+<U042F> <U042F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044F> <U042F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0462> <U0462>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0463> <U0462>;<CYRILLIC>;<SMALL>;IGNORE
+<U046A> <U046A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U046B> <U046A>;<CYRILLIC>;<SMALL>;IGNORE
+<U0472> <U0472>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0473> <U0472>;<CYRILLIC>;<SMALL>;IGNORE
+<U0474> <U0474>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0475> <U0474>;<CYRILLIC>;<SMALL>;IGNORE
+<U0480> <U0480>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0481> <U0480>;<CYRILLIC>;<SMALL>;IGNORE
+<U05D0> <U05D0>;IGNORE;IGNORE;IGNORE
+<U05D1> <U05D1>;IGNORE;IGNORE;IGNORE
+<U05D2> <U05D2>;IGNORE;IGNORE;IGNORE
+<U05D3> <U05D3>;IGNORE;IGNORE;IGNORE
+<U05D4> <U05D4>;IGNORE;IGNORE;IGNORE
+<U05D5> <U05D5>;IGNORE;IGNORE;IGNORE
+<U05D6> <U05D6>;IGNORE;IGNORE;IGNORE
+<U05D7> <U05D7>;IGNORE;IGNORE;IGNORE
+<U05D8> <U05D8>;IGNORE;IGNORE;IGNORE
+<U05D9> <U05D9>;IGNORE;IGNORE;IGNORE
+<U05DA> <U05DA>;IGNORE;IGNORE;IGNORE
+<U05DB> <U05DB>;IGNORE;IGNORE;IGNORE
+<U05DC> <U05DC>;IGNORE;IGNORE;IGNORE
+<U05DD> <U05DD>;IGNORE;IGNORE;IGNORE
+<U05DE> <U05DE>;IGNORE;IGNORE;IGNORE
+<U05DF> <U05DF>;IGNORE;IGNORE;IGNORE
+<U05E0> <U05E0>;IGNORE;IGNORE;IGNORE
+<U05E1> <U05E1>;IGNORE;IGNORE;IGNORE
+<U05E2> <U05E2>;IGNORE;IGNORE;IGNORE
+<U05E3> <U05E3>;IGNORE;IGNORE;IGNORE
+<U05E4> <U05E4>;IGNORE;IGNORE;IGNORE
+<U05E5> <U05E5>;IGNORE;IGNORE;IGNORE
+<U05E6> <U05E6>;IGNORE;IGNORE;IGNORE
+<U05E7> <U05E7>;IGNORE;IGNORE;IGNORE
+<U05E8> <U05E8>;IGNORE;IGNORE;IGNORE
+<U05E9> <U05E9>;IGNORE;IGNORE;IGNORE
+<U05EA> <U05EA>;IGNORE;IGNORE;IGNORE
+
+% Arabic collating
+
+<U060C> IGNORE;IGNORE;IGNORE;<U060C>
+<U061B> IGNORE;IGNORE;IGNORE;<U061B>
+<U061F> IGNORE;IGNORE;IGNORE;<U061F>
+<U0640> IGNORE;IGNORE;IGNORE;<U0640>
+
+<U0621> <U0621>;<U0621>;IGNORE;IGNORE
+<U0622> <U0622>;<U0622>;IGNORE;IGNORE
+<UFE82> <U0622>;<UFE82>;IGNORE;IGNORE
+<U0623> <U0621>;<U0623>;IGNORE;IGNORE
+<UFE84> <U0621>;<UFE84>;IGNORE;IGNORE
+<U0624> <U0621>;<U0624>;IGNORE;IGNORE
+<U0625> <U0621>;<U0625>;IGNORE;IGNORE
+<UFE88> <U0621>;<UFE88>;IGNORE;IGNORE
+<U0626> <U0621>;<U0626>;IGNORE;IGNORE
+<U0670> <U0670>;<U0670>;IGNORE;IGNORE
+<U0627> <U0627>;<U0627>;IGNORE;IGNORE
+<UFE8D> <U0627>;<UFE8D>;IGNORE;IGNORE
+<UFE8E> <U0627>;<UFE8E>;IGNORE;IGNORE
+<UE016> <U0627>;<UE016>;IGNORE;IGNORE
+<U0628> <U0628>;<U0628>;IGNORE;IGNORE
+<UFE8F> <U0628>;<UFE8F>;IGNORE;IGNORE
+<UFE90> <U0628>;<UFE90>;IGNORE;IGNORE
+<UFE91> <U0628>;<UFE91>;IGNORE;IGNORE
+<UFE92> <U0628>;<UFE92>;IGNORE;IGNORE
+<U067E> <U067E>;<U067E>;IGNORE;IGNORE
+<U06A4> <U06A4>;<U06A4>;IGNORE;IGNORE
+<U0629> <U0629>;<U0629>;IGNORE;IGNORE
+<UFE93> <U0629>;<UFE93>;IGNORE;IGNORE
+<UFE94> <U0629>;<UFE94>;IGNORE;IGNORE
+<U062A> <U0629>;<U062A>;IGNORE;IGNORE
+<UFE95> <U0629>;<UFE95>;IGNORE;IGNORE
+<UFE96> <U0629>;<UFE96>;IGNORE;IGNORE
+<UFE97> <U0629>;<UFE97>;IGNORE;IGNORE
+<UFE98> <U0629>;<UFE98>;IGNORE;IGNORE
+<U062B> <U062B>;<U062B>;IGNORE;IGNORE
+<UFE99> <U062B>;<UFE99>;IGNORE;IGNORE
+<UFE9A> <U062B>;<UFE9A>;IGNORE;IGNORE
+<UFE9B> <U062B>;<UFE9B>;IGNORE;IGNORE
+<UFE9C> <U062B>;<UFE9C>;IGNORE;IGNORE
+<U062C> <U062C>;<U062C>;IGNORE;IGNORE
+<UFE9D> <U062C>;<UFE9D>;IGNORE;IGNORE
+<UFE9E> <U062C>;<UFE9E>;IGNORE;IGNORE
+<UFE9F> <U062C>;<UFE9F>;IGNORE;IGNORE
+<UFEA0> <U062C>;<UFEA0>;IGNORE;IGNORE
+<U062D> <U062D>;<U062D>;IGNORE;IGNORE
+<UFEA1> <U062D>;<UFEA1>;IGNORE;IGNORE
+<UFEA2> <U062D>;<UFEA2>;IGNORE;IGNORE
+<UFEA3> <U062D>;<UFEA3>;IGNORE;IGNORE
+<UFEA4> <U062D>;<UFEA4>;IGNORE;IGNORE
+<U062E> <U062E>;<U062E>;IGNORE;IGNORE
+<UFEA5> <U062E>;<UFEA5>;IGNORE;IGNORE
+<UFEA6> <U062E>;<UFEA6>;IGNORE;IGNORE
+<UFEA7> <U062E>;<UFEA7>;IGNORE;IGNORE
+<UFEA8> <U062E>;<UFEA8>;IGNORE;IGNORE
+<U062F> <U062F>;<U062F>;IGNORE;IGNORE
+<UFEA9> <U062F>;<UFEA9>;IGNORE;IGNORE
+<UFEAA> <U062F>;<UFEAA>;IGNORE;IGNORE
+<U0630> <U0630>;<U0630>;IGNORE;IGNORE
+<UFEAB> <U0630>;<UFEAB>;IGNORE;IGNORE
+<UFEAC> <U0630>;<UFEAC>;IGNORE;IGNORE
+<U0631> <U0631>;<U0631>;IGNORE;IGNORE
+<UFEAD> <U0631>;<UFEAD>;IGNORE;IGNORE
+<UFEAE> <U0631>;<UFEAE>;IGNORE;IGNORE
+<U0632> <U0632>;<U0632>;IGNORE;IGNORE
+<UFEAF> <U0632>;<UFEAF>;IGNORE;IGNORE
+<UFEB0> <U0632>;<UFEB0>;IGNORE;IGNORE
+<U0633> <U0633>;<U0633>;IGNORE;IGNORE
+<UFEB1> <U0633>;<UFEB1>;IGNORE;IGNORE
+<UFEB2> <U0633>;<UFEB2>;IGNORE;IGNORE
+<UFEB3> <U0633>;<UFEB3>;IGNORE;IGNORE
+<UFEB4> <U0633>;<UFEB4>;IGNORE;IGNORE
+<U0634> <U0634>;<U0634>;IGNORE;IGNORE
+<UFEB5> <U0634>;<UFEB5>;IGNORE;IGNORE
+<UFEB6> <U0634>;<UFEB6>;IGNORE;IGNORE
+<UFEB7> <U0634>;<UFEB7>;IGNORE;IGNORE
+<UFEB8> <U0634>;<UFEB8>;IGNORE;IGNORE
+<U0635> <U0635>;<U0635>;IGNORE;IGNORE
+<UFEB9> <U0635>;<UFEB9>;IGNORE;IGNORE
+<UFEBA> <U0635>;<UFEBA>;IGNORE;IGNORE
+<UFEBB> <U0635>;<UFEBB>;IGNORE;IGNORE
+<UFEBC> <U0635>;<UFEBC>;IGNORE;IGNORE
+<U0636> <U0636>;<U0636>;IGNORE;IGNORE
+<UFEBD> <U0636>;<UFEBD>;IGNORE;IGNORE
+<UFEBE> <U0636>;<UFEBE>;IGNORE;IGNORE
+<UFEBF> <U0636>;<UFEBF>;IGNORE;IGNORE
+<UFEC0> <U0636>;<UFEC0>;IGNORE;IGNORE
+<U0637> <U0637>;<U0637>;IGNORE;IGNORE
+<UFEC1> <U0637>;<UFEC1>;IGNORE;IGNORE
+<UFEC2> <U0637>;<UFEC2>;IGNORE;IGNORE
+<UFEC3> <U0637>;<UFEC3>;IGNORE;IGNORE
+<UFEC4> <U0637>;<UFEC4>;IGNORE;IGNORE
+<U0638> <U0638>;<U0638>;IGNORE;IGNORE
+<UFEC5> <U0638>;<UFEC5>;IGNORE;IGNORE
+<UFEC6> <U0638>;<UFEC6>;IGNORE;IGNORE
+<UFEC7> <U0638>;<UFEC7>;IGNORE;IGNORE
+<UFEC8> <U0638>;<UFEC8>;IGNORE;IGNORE
+<U0639> <U0639>;<U0639>;IGNORE;IGNORE
+<UFEC9> <U0639>;<UFEC9>;IGNORE;IGNORE
+<UFECA> <U0639>;<UFECA>;IGNORE;IGNORE
+<UFECB> <U0639>;<UFECB>;IGNORE;IGNORE
+<UFECC> <U0639>;<UFECC>;IGNORE;IGNORE
+<U063A> <U063A>;<U063A>;IGNORE;IGNORE
+<UFECD> <U063A>;<UFECD>;IGNORE;IGNORE
+<UFECE> <U063A>;<UFECE>;IGNORE;IGNORE
+<UFECF> <U063A>;<UFECF>;IGNORE;IGNORE
+<UFED0> <U063A>;<UFED0>;IGNORE;IGNORE
+<U0641> <U0641>;<U0641>;IGNORE;IGNORE
+<UFED1> <U0641>;<UFED1>;IGNORE;IGNORE
+<UFED2> <U0641>;<UFED2>;IGNORE;IGNORE
+<UFED3> <U0641>;<UFED3>;IGNORE;IGNORE
+<UFED4> <U0641>;<UFED4>;IGNORE;IGNORE
+<U0642> <U0642>;<U0642>;IGNORE;IGNORE
+<UFED5> <U0642>;<UFED5>;IGNORE;IGNORE
+<UFED6> <U0642>;<UFED6>;IGNORE;IGNORE
+<UFED7> <U0642>;<UFED7>;IGNORE;IGNORE
+<UFED8> <U0642>;<UFED8>;IGNORE;IGNORE
+<U0643> <U0643>;<U0643>;IGNORE;IGNORE
+<UFED9> <U0643>;<UFED9>;IGNORE;IGNORE
+<UFEDA> <U0643>;<UFEDA>;IGNORE;IGNORE
+<UFEDB> <U0643>;<UFEDB>;IGNORE;IGNORE
+<UFEDC> <U0643>;<UFEDC>;IGNORE;IGNORE
+<U0644> <U0644>;<U0644>;IGNORE;IGNORE
+<UFEDD> <U0644>;<UFEDD>;IGNORE;IGNORE
+<UFEDE> <U0644>;<UFEDE>;IGNORE;IGNORE
+<UFEDF> <U0644>;<UFEDF>;IGNORE;IGNORE
+<UFEE0> <U0644>;<UFEE0>;IGNORE;IGNORE
+<U0645> <U0645>;<U0645>;IGNORE;IGNORE
+<UFEE1> <U0645>;<UFEE1>;IGNORE;IGNORE
+<UFEE2> <U0645>;<UFEE2>;IGNORE;IGNORE
+<UFEE3> <U0645>;<UFEE3>;IGNORE;IGNORE
+<UFEE4> <U0645>;<UFEE4>;IGNORE;IGNORE
+<U0646> <U0646>;<U0646>;IGNORE;IGNORE
+<UFEE5> <U0646>;<UFEE5>;IGNORE;IGNORE
+<UFEE6> <U0646>;<UFEE6>;IGNORE;IGNORE
+<UFEE7> <U0646>;<UFEE7>;IGNORE;IGNORE
+<UFEE8> <U0646>;<UFEE8>;IGNORE;IGNORE
+<U0647> <U0647>;<U0647>;IGNORE;IGNORE
+<UFEE9> <U0647>;<UFEE9>;IGNORE;IGNORE
+<UFEEA> <U0647>;<UFEEA>;IGNORE;IGNORE
+<UFEEB> <U0647>;<UFEEB>;IGNORE;IGNORE
+<UFEEC> <U0647>;<UFEEC>;IGNORE;IGNORE
+<U0648> <U0648>;<U0648>;IGNORE;IGNORE
+<UFEED> <U0648>;<UFEED>;IGNORE;IGNORE
+<UFEEE> <U0648>;<UFEEE>;IGNORE;IGNORE
+<U0649> <U0649>;<U0649>;IGNORE;IGNORE
+<UFEEF> <U0649>;<UFEEF>;IGNORE;IGNORE
+<UFEF0> <U0649>;<UFEF0>;IGNORE;IGNORE
+<U064A> <U064A>;<U064A>;IGNORE;IGNORE
+<UFEF1> <U064A>;<UFEF1>;IGNORE;IGNORE
+<UFEF2> <U064A>;<UFEF2>;IGNORE;IGNORE
+<UFEF3> <U064A>;<UFEF3>;IGNORE;IGNORE
+<UFEF4> <U064A>;<UFEF4>;IGNORE;IGNORE
+
+<U064B> IGNORE;IGNORE;<U064B>;IGNORE
+<U064C> IGNORE;IGNORE;<U064C>;IGNORE
+<U064D> IGNORE;IGNORE;<U064D>;IGNORE
+<U064E> IGNORE;IGNORE;<U064E>;IGNORE
+<U064F> IGNORE;IGNORE;<U064F>;IGNORE
+<U0650> IGNORE;IGNORE;<U0650>;IGNORE
+<U0651> IGNORE;IGNORE;<U0651>;IGNORE
+<UFE7D> IGNORE;IGNORE;<UFE7D>;IGNORE
+<U0652> IGNORE;IGNORE;<U0652>;IGNORE
+
+<U0660> <U0030>;<U0660>;IGNORE;IGNORE
+<U0661> <U0031>;<U0661>;IGNORE;IGNORE
+<U0662> <U0032>;<U0662>;IGNORE;IGNORE
+<U0663> <U0033>;<U0663>;IGNORE;IGNORE
+<U0664> <U0034>;<U0664>;IGNORE;IGNORE
+<U0665> <U0035>;<U0665>;IGNORE;IGNORE
+<U0666> <U0036>;<U0666>;IGNORE;IGNORE
+<U0667> <U0037>;<U0667>;IGNORE;IGNORE
+<U0668> <U0038>;<U0668>;IGNORE;IGNORE
+<U0669> <U0039>;<U0669>;IGNORE;IGNORE
+
+<UFEF5> "<U0644><U0622>";"<U0644><U0622>";"<UFEF5><UFEF5>";IGNORE
+<UFEF6> "<U0644><U0622>";"<U0644><UFE82>";"<UFEF6><UFEF6>";IGNORE
+<UFEF7> "<U0644><U0623>";"<U0644><U0623>";"<UFEF7><UFEF7>";IGNORE
+<UFEF8> "<U0644><U0623>";"<U0644><UFE84>";"<UFEF8><UFEF8>";IGNORE
+<UFEF9> "<U0644><U0625>";"<U0644><U0625>";"<UFEF9><UFEF9>";IGNORE
+<UFEFA> "<U0644><U0625>";"<U0644><UFE88>";"<UFEFA><UFEFA>";IGNORE
+<UFEFB> "<U0644><U0627>";"<U0644><UFE8D>";"<UFEFB><UFEFB>";IGNORE
+<UFEFC> "<U0644><U0627>";"<U0644><UFE8E>";"<UFEFC><UFEFC>";IGNORE
+
+% katakana/hiragana sorting
+% base is katakana, as this is present in most charsets
+% normal before voiced before semi-voiced
+% small vocals before normal vocals
+% katakana before hiragana
+
+<U30A1> <U30A1>;<U30A1>;IGNORE;IGNORE
+<U3041> <U30A1>;<U3041>;IGNORE;IGNORE
+<U30A2> <U30A1>;<U30A2>;IGNORE;IGNORE
+<U3042> <U30A1>;<U3042>;IGNORE;IGNORE
+<U30A3> <U30A3>;<U30A3>;IGNORE;IGNORE
+<U3043> <U30A3>;<U3043>;IGNORE;IGNORE
+<U30A4> <U30A3>;<U30A4>;IGNORE;IGNORE
+<U3044> <U30A3>;<U3044>;IGNORE;IGNORE
+<U30A5> <U30A5>;<U30A5>;IGNORE;IGNORE
+<U3045> <U30A5>;<U3045>;IGNORE;IGNORE
+<U30A6> <U30A5>;<U30A6>;IGNORE;IGNORE
+<U3046> <U30A5>;<U3046>;IGNORE;IGNORE
+<U30F4> <U30A5>;<U30F4>;IGNORE;IGNORE
+<U30A7> <U30A7>;<U30A7>;IGNORE;IGNORE
+<U3047> <U30A7>;<U3047>;IGNORE;IGNORE
+<U30A8> <U30A7>;<U30A8>;IGNORE;IGNORE
+<U3048> <U30A7>;<U3048>;IGNORE;IGNORE
+<U30A9> <U30A9>;<U30A9>;IGNORE;IGNORE
+<U3049> <U30A9>;<U3049>;IGNORE;IGNORE
+<U30AA> <U30A9>;<U30AA>;IGNORE;IGNORE
+<U304A> <U30A9>;<U304A>;IGNORE;IGNORE
+<U30F5> <U30F5>;<U30F5>;IGNORE;IGNORE
+<U30AB> <U30F5>;<U30AB>;IGNORE;IGNORE
+<U304B> <U30F5>;<U304B>;IGNORE;IGNORE
+<U30AC> <U30F5>;<U30AC>;IGNORE;IGNORE
+<U304C> <U30F5>;<U304C>;IGNORE;IGNORE
+<U30AD> <U30AD>;<U30AD>;IGNORE;IGNORE
+<U304D> <U30AD>;<U304D>;IGNORE;IGNORE
+<U30AE> <U30AD>;<U30AE>;IGNORE;IGNORE
+<U304E> <U30AD>;<U304E>;IGNORE;IGNORE
+<U30AF> <U30AF>;<U30AF>;IGNORE;IGNORE
+<U304F> <U30AF>;<U304F>;IGNORE;IGNORE
+<U30B0> <U30AF>;<U30B0>;IGNORE;IGNORE
+<U3050> <U30AF>;<U3050>;IGNORE;IGNORE
+<U30F6> <U30F6>;<U30F6>;IGNORE;IGNORE
+<U30B1> <U30F6>;<U30B1>;IGNORE;IGNORE
+<U3051> <U30F6>;<U3051>;IGNORE;IGNORE
+<U30B2> <U30F6>;<U30B2>;IGNORE;IGNORE
+<U3052> <U30F6>;<U3052>;IGNORE;IGNORE
+<U30B3> <U30B3>;<U30B3>;IGNORE;IGNORE
+<U3053> <U30B3>;<U3053>;IGNORE;IGNORE
+<U30B4> <U30B3>;<U30B4>;IGNORE;IGNORE
+<U3054> <U30B3>;<U3054>;IGNORE;IGNORE
+<U30B5> <U30B5>;<U30B5>;IGNORE;IGNORE
+<U3055> <U30B5>;<U3055>;IGNORE;IGNORE
+<U30B6> <U30B5>;<U30B6>;IGNORE;IGNORE
+<U3056> <U30B5>;<U3056>;IGNORE;IGNORE
+<U30B7> <U30B7>;<U30B7>;IGNORE;IGNORE
+<U3057> <U30B7>;<U3057>;IGNORE;IGNORE
+<U30B8> <U30B7>;<U30B8>;IGNORE;IGNORE
+<U3058> <U30B7>;<U3058>;IGNORE;IGNORE
+<U30B9> <U30B9>;<U30B9>;IGNORE;IGNORE
+<U3059> <U30B9>;<U3059>;IGNORE;IGNORE
+<U30BA> <U30B9>;<U30BA>;IGNORE;IGNORE
+<U305A> <U30B9>;<U305A>;IGNORE;IGNORE
+<U30BB> <U30BB>;<U30BB>;IGNORE;IGNORE
+<U305B> <U30BB>;<U305B>;IGNORE;IGNORE
+<U30BC> <U30BB>;<U30BC>;IGNORE;IGNORE
+<U305C> <U30BB>;<U305C>;IGNORE;IGNORE
+<U30BD> <U30BD>;<U30BD>;IGNORE;IGNORE
+<U305D> <U30BD>;<U305D>;IGNORE;IGNORE
+<U30BE> <U30BD>;<U30BE>;IGNORE;IGNORE
+<U305E> <U30BD>;<U305E>;IGNORE;IGNORE
+<U30BF> <U30BF>;<U30BF>;IGNORE;IGNORE
+<U305F> <U30BF>;<U305F>;IGNORE;IGNORE
+<U30C0> <U30BF>;<U30C0>;IGNORE;IGNORE
+<U3060> <U30BF>;<U3060>;IGNORE;IGNORE
+<U30C1> <U30C1>;<U30C1>;IGNORE;IGNORE
+<U3061> <U30C1>;<U3061>;IGNORE;IGNORE
+<U30C2> <U30C1>;<U30C2>;IGNORE;IGNORE
+<U3062> <U30C1>;<U3062>;IGNORE;IGNORE
+<U30C3> <U30C3>;<U30C3>;IGNORE;IGNORE
+<U3063> <U30C3>;<U3063>;IGNORE;IGNORE
+<U30C4> <U30C3>;<U30C4>;IGNORE;IGNORE
+<U3064> <U30C3>;<U3064>;IGNORE;IGNORE
+<U30C5> <U30C3>;<U30C5>;IGNORE;IGNORE
+<U3065> <U30C3>;<U3065>;IGNORE;IGNORE
+<U30C6> <U30C6>;<U30C6>;IGNORE;IGNORE
+<U3066> <U30C6>;<U3066>;IGNORE;IGNORE
+<U30C7> <U30C6>;<U30C7>;IGNORE;IGNORE
+<U3067> <U30C6>;<U3067>;IGNORE;IGNORE
+<U30C8> <U30C8>;<U30C8>;IGNORE;IGNORE
+<U3068> <U30C8>;<U3068>;IGNORE;IGNORE
+<U30C9> <U30C8>;<U30C9>;IGNORE;IGNORE
+<U3069> <U30C8>;<U3069>;IGNORE;IGNORE
+<U30CA> <U30CA>;<U30CA>;IGNORE;IGNORE
+<U306A> <U30CA>;<U306A>;IGNORE;IGNORE
+<U30CB> <U30CB>;<U30CB>;IGNORE;IGNORE
+<U306B> <U30CB>;<U306B>;IGNORE;IGNORE
+<U30CC> <U30CC>;<U30CC>;IGNORE;IGNORE
+<U306C> <U30CC>;<U306C>;IGNORE;IGNORE
+<U30CD> <U30CD>;<U30CD>;IGNORE;IGNORE
+<U306D> <U30CD>;<U306D>;IGNORE;IGNORE
+<U30CE> <U30CE>;<U30CE>;IGNORE;IGNORE
+<U306E> <U30CE>;<U306E>;IGNORE;IGNORE
+<U30CF> <U30CF>;<U30CF>;IGNORE;IGNORE
+<U306F> <U30CF>;<U306F>;IGNORE;IGNORE
+<U30D0> <U30CF>;<U30D0>;IGNORE;IGNORE
+<U3070> <U30CF>;<U3070>;IGNORE;IGNORE
+<U30D1> <U30CF>;<U30D1>;IGNORE;IGNORE
+<U3071> <U30CF>;<U3071>;IGNORE;IGNORE
+<U30D2> <U30D2>;<U30D2>;IGNORE;IGNORE
+<U3072> <U30D2>;<U3072>;IGNORE;IGNORE
+<U30D3> <U30D2>;<U30D3>;IGNORE;IGNORE
+<U3073> <U30D2>;<U3073>;IGNORE;IGNORE
+<U30D4> <U30D2>;<U30D4>;IGNORE;IGNORE
+<U3074> <U30D2>;<U3074>;IGNORE;IGNORE
+<U30D5> <U30D5>;<U30D5>;IGNORE;IGNORE
+<U3075> <U30D5>;<U3075>;IGNORE;IGNORE
+<U30D6> <U30D5>;<U30D6>;IGNORE;IGNORE
+<U3076> <U30D5>;<U3076>;IGNORE;IGNORE
+<U30D7> <U30D5>;<U30D7>;IGNORE;IGNORE
+<U3077> <U30D5>;<U3077>;IGNORE;IGNORE
+<U30D8> <U30D8>;<U30D8>;IGNORE;IGNORE
+<U3078> <U30D8>;<U3078>;IGNORE;IGNORE
+<U30D9> <U30D8>;<U30D9>;IGNORE;IGNORE
+<U3079> <U30D8>;<U3079>;IGNORE;IGNORE
+<U30DA> <U30D8>;<U30DA>;IGNORE;IGNORE
+<U307A> <U30D8>;<U307A>;IGNORE;IGNORE
+<U30DB> <U30DB>;<U30DB>;IGNORE;IGNORE
+<U307B> <U30DB>;<U307B>;IGNORE;IGNORE
+<U30DC> <U30DB>;<U30DC>;IGNORE;IGNORE
+<U307C> <U30DB>;<U307C>;IGNORE;IGNORE
+<U30DD> <U30DB>;<U30DD>;IGNORE;IGNORE
+<U307D> <U30DB>;<U307D>;IGNORE;IGNORE
+<U30DE> <U30DE>;<U30DE>;IGNORE;IGNORE
+<U307E> <U30DE>;<U307E>;IGNORE;IGNORE
+<U30DF> <U30DF>;<U30DF>;IGNORE;IGNORE
+<U307F> <U30DF>;<U307F>;IGNORE;IGNORE
+<U30E0> <U30E0>;<U30E0>;IGNORE;IGNORE
+<U3080> <U30E0>;<U3080>;IGNORE;IGNORE
+<U30E1> <U30E1>;<U30E1>;IGNORE;IGNORE
+<U3081> <U30E1>;<U3081>;IGNORE;IGNORE
+<U30E2> <U30E2>;<U30E2>;IGNORE;IGNORE
+<U3082> <U30E2>;<U3082>;IGNORE;IGNORE
+<U30E3> <U30E3>;<U30E3>;IGNORE;IGNORE
+<U3083> <U30E3>;<U3083>;IGNORE;IGNORE
+<U30E4> <U30E3>;<U30E4>;IGNORE;IGNORE
+<U3084> <U30E3>;<U3084>;IGNORE;IGNORE
+<U30E5> <U30E5>;<U30E5>;IGNORE;IGNORE
+<U3085> <U30E5>;<U3085>;IGNORE;IGNORE
+<U30E6> <U30E5>;<U30E6>;IGNORE;IGNORE
+<U3086> <U30E5>;<U3086>;IGNORE;IGNORE
+<U30E7> <U30E7>;<U30E7>;IGNORE;IGNORE
+<U3087> <U30E7>;<U3087>;IGNORE;IGNORE
+<U30E8> <U30E7>;<U30E8>;IGNORE;IGNORE
+<U3088> <U30E7>;<U3088>;IGNORE;IGNORE
+<U30E9> <U30E9>;<U30E9>;IGNORE;IGNORE
+<U3089> <U30E9>;<U3089>;IGNORE;IGNORE
+<U30EA> <U30EA>;<U30EA>;IGNORE;IGNORE
+<U308A> <U30EA>;<U308A>;IGNORE;IGNORE
+<U30EB> <U30EB>;<U30EB>;IGNORE;IGNORE
+<U308B> <U30EB>;<U308B>;IGNORE;IGNORE
+<U30EC> <U30EC>;<U30EC>;IGNORE;IGNORE
+<U308C> <U30EC>;<U308C>;IGNORE;IGNORE
+<U30ED> <U30ED>;<U30ED>;IGNORE;IGNORE
+<U308D> <U30ED>;<U308D>;IGNORE;IGNORE
+<U30EE> <U30EE>;<U30EE>;IGNORE;IGNORE
+<U308E> <U30EE>;<U308E>;IGNORE;IGNORE
+<U30EF> <U30EE>;<U30EF>;IGNORE;IGNORE
+<U308F> <U30EE>;<U308F>;IGNORE;IGNORE
+<U30F0> <U30F0>;<U30F0>;IGNORE;IGNORE
+<U3090> <U30F0>;<U3090>;IGNORE;IGNORE
+<U30F1> <U30F1>;<U30F1>;IGNORE;IGNORE
+<U3091> <U30F1>;<U3091>;IGNORE;IGNORE
+<U30F2> <U30F2>;<U30F2>;IGNORE;IGNORE
+<U3092> <U30F2>;<U3092>;IGNORE;IGNORE
+<U30F3> <U30F3>;<U30F3>;IGNORE;IGNORE
+<U3093> <U30F3>;<U3093>;IGNORE;IGNORE
+
+order_end
+
diff --git a/ap/build/uClibc/extra/locale/collation/eu_ES b/ap/build/uClibc/extra/locale/collation/eu_ES
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/eu_ES
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/fa_IR b/ap/build/uClibc/extra/locale/collation/fa_IR
new file mode 100644
index 0000000..a171591
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/fa_IR
@@ -0,0 +1,185 @@
+copy "iso14651_t1"
+
+% The Persian alphabet order is: ALEF WITH MADDA ABOVE, ALEF, HAMZA (all
+% kinds), BEH, PEH, TEH, JEEM, TCHEH, HAH, KHAH, DAL, THAL, REH, ZAIN, JEH,
+% SEEN, SHEEN, SAD, DAD, TAH, ZAH, AIN, GHAIN, FEH, QAF, KAF, GAF, LAM,
+% MEEM, NOON, WAW, HEH, YEH.
+% The various kind of HAMZA are sorted as ALEF WITH HAMZA ABOVE, ALEF WITH
+% HAMZA BELOW, WAW WITH HAMZA ABOVE, YEH WITH HAMZA ABOVE.
+
+collating-symbol <AHY> % accent hamza over yeh
+collating-symbol <ADL> % dotless
+collating-symbol <ADO> % with dots over
+collating-symbol <AWO> % with wasla over
+
+collating-symbol <alefmadda>
+collating-symbol <yeh>
+
+% Alternate representations displayed the same
+collating-symbol <ALT1>
+collating-symbol <ALT2>
+
+collating-element <Alef-Madda> from "<U0627><U0653>"
+collating-element <Alef-HamzaBelow> from "<U0627><U0655>"
+collating-element <Waw-Hamza> from "<U0648><U0654>"
+collating-element <AlefMaksura-Hamza> from "<U0649><U0654>"
+collating-element <Yeh-Hamza> from "<U064A><U0654>"
+collating-element <FarsiYeh-Hamza> from "<U06CC><U0654>"
+
+reorder-after <BAS>
+<AHA>
+<AHS>
+<AWO>
+<AHW>
+<AHY>
+<ADL>
+<ADO>
+<AYE>
+<YBA>
+
+reorder-after <LIG>
+<ALT1>
+<ALT2>
+
+reorder-after <th>
+<alefmadda>
+<alef>
+<hamza>
+
+reorder-after <waw>
+<heh>
+<yeh>
+
+% Persian uses fatha, kasra, damma, fathatan, kasratan, dammatan order.
+
+reorder-after <U066D>
+<U064E> IGNORE;IGNORE;IGNORE;<U064E> %<fatha_no>
+<UFE76> IGNORE;IGNORE;IGNORE;<UFE76> %<fatha_is>
+<UFE77> IGNORE;IGNORE;IGNORE;<UFE77> %<fatha_me>
+<U0650> IGNORE;IGNORE;IGNORE;<U0650> %<kasra_no>
+<UFE7A> IGNORE;IGNORE;IGNORE;<UFE7A> %<kasra_is>
+<UFE7B> IGNORE;IGNORE;IGNORE;<UFE7B> %<kasra_me>
+<U064F> IGNORE;IGNORE;IGNORE;<U064F> %<damma_no>
+<UFE78> IGNORE;IGNORE;IGNORE;<UFE78> %<damma_is>
+<UFE79> IGNORE;IGNORE;IGNORE;<UFE79> %<damma_me>
+<U064B> IGNORE;IGNORE;IGNORE;<U064B> %<fathatan_no>
+<UFE70> IGNORE;IGNORE;IGNORE;<UFE70> %<fathatan_is>
+<UFE71> IGNORE;IGNORE;IGNORE;<UFE71> %<fathatan_me>
+<U064D> IGNORE;IGNORE;IGNORE;<U064D> %<kasratan_no>
+<UFE74> IGNORE;IGNORE;IGNORE;<UFE74> %<kasratan_is>
+<U064C> IGNORE;IGNORE;IGNORE;<U064C> %<dammatan_no>
+<UFE72> IGNORE;IGNORE;IGNORE;<UFE72> %<dammatan_is>
+
+reorder-after <UFE7F>
+<U0653> IGNORE;IGNORE;IGNORE;<U0653> %<madda_no>
+<U0654> IGNORE;IGNORE;IGNORE;<U0654> %<hamzaabove_no>
+<U0655> IGNORE;IGNORE;IGNORE;<U0655> %<hamzabelow_no>
+<U0670> IGNORE;IGNORE;IGNORE;<U0670> %<supalef_no>
+
+% Persian digits are sorted before Arabic ones: they are the basic forms.
+reorder-after <U0660>
+<U06F0> <0>;<BAS>;<MIN>;IGNORE
+<U0660> <0>;<PCL>;<MIN>;IGNORE
+<U06F1> <1>;<BAS>;<MIN>;IGNORE
+<U0661> <1>;<PCL>;<MIN>;IGNORE
+<U06F2> <2>;<BAS>;<MIN>;IGNORE
+<U0662> <2>;<PCL>;<MIN>;IGNORE
+<U06F3> <3>;<BAS>;<MIN>;IGNORE
+<U0663> <3>;<PCL>;<MIN>;IGNORE
+<U06F4> <4>;<BAS>;<MIN>;IGNORE
+<U0664> <4>;<PCL>;<MIN>;IGNORE
+<U06F5> <5>;<BAS>;<MIN>;IGNORE
+<U0665> <5>;<PCL>;<MIN>;IGNORE
+<U06F6> <6>;<BAS>;<MIN>;IGNORE
+<U0666> <6>;<PCL>;<MIN>;IGNORE
+<U06F7> <7>;<BAS>;<MIN>;IGNORE
+<U0667> <7>;<PCL>;<MIN>;IGNORE
+<U06F8> <8>;<BAS>;<MIN>;IGNORE
+<U0668> <8>;<PCL>;<MIN>;IGNORE
+<U06F9> <9>;<BAS>;<MIN>;IGNORE
+<U0669> <9>;<PCL>;<MIN>;IGNORE
+
+% And then the letters:
+<U0622> <alefmadda>;<BAS>;<MIN>;IGNORE % Alef With Madda Above
+<Alef-Madda> <alefmadda>;<BAS>;<MIN>;IGNORE
+<U0627> <alef>;<BAS>;<MIN>;IGNORE % Alef
+<U0671> <alef>;<AWO>;<MIN>;IGNORE % Alef Wasla
+<U0621> <hamza>;<BAS>;<MIN>;IGNORE % Hamza
+<U0623> <hamza>;<AHA>;<MIN>;IGNORE % Alef With Hamza Above
+<Alef-Hamza> <hamza>;<AHA>;<MIN>;IGNORE
+<U0625> <hamza>;<AHS>;<MIN>;IGNORE % Alef With Hamza Below
+<Alef-HamzaBelow> <hamza>;<AHS>;<MIN>;IGNORE
+<U0624> <hamza>;<AHW>;<MIN>;IGNORE % Waw With Hamza Above
+<Waw-Hamza> <hamza>;<AHW>;<MIN>;IGNORE
+<U0626> <hamza>;<AHY>;<MIN>;IGNORE % Yeh With Hamza Above
+<FarsiYeh-Hamza> <hamza>;<AHY>;<ALT1>;IGNORE
+<AlefMaksura-Hamza> <hamza>;<AHY>;<ALT2>;IGNORE
+<Yeh-Hamza> <hamza>;<AHY>;<MIN>;IGNORE
+reorder-after <U0642>
+<U06A9> <kaf>;<BAS>;<MIN>;IGNORE % Keheh
+<U0643> <kaf>;<PCL>;<MIN>;IGNORE % Kaf
+reorder-after <U0648>
+<U0647> <heh>;<BAS>;<MIN>;IGNORE % Heh
+<U0629> <heh>;<ADO>;<MIN>;IGNORE % Teh Marbuta
+<U06C0> <heh>;<AHA>;<MIN>;IGNORE % Heh With Yeh Above
+<U06CC> <yeh>;<BAS>;<MIN>;IGNORE % Farsi Yeh
+<U0649> <yeh>;<ADL>;<MIN>;IGNORE % Alef Maksura
+<U064A> <yeh>;<AYE>;<MIN>;IGNORE % Yeh
+
+% Finally the letters in Presentation Form:
+reorder-after <UFE80>
+<UFE81> <alefmadda>;<BAS>;<AIS>;IGNORE
+<UFE82> <alefmadda>;<BAS>;<AFI>;IGNORE
+<UFE8D> <alef>;<BAS>;<AIS>;IGNORE
+<UFE8E> <alef>;<BAS>;<AFI>;IGNORE
+<UFB50> <alef>;<AWO>;<AIS>;IGNORE
+<UFB51> <alef>;<AWO>;<AFI>;IGNORE
+<UFE80> <hamza>;<BAS>;<AIS>;IGNORE
+<UFE83> <hamza>;<AHA>;<AIS>;IGNORE
+<UFE84> <hamza>;<AHA>;<AFI>;IGNORE
+<UFE87> <hamza>;<AHS>;<AIS>;IGNORE
+<UFE88> <hamza>;<AHS>;<AFI>;IGNORE
+<UFE85> <hamza>;<AHW>;<AIS>;IGNORE
+<UFE86> <hamza>;<AHW>;<AFI>;IGNORE
+<U0689> <hamza>;<AHY>;<AIS>;IGNORE
+<U068A> <hamza>;<AHY>;<AFI>;IGNORE
+reorder-after <UFEAE>
+<UFDFC> "<reh><yeh><alef><lam>";"<LIG><LIG><LIG><LIG>";"<AII><AME><AFI><AIS>";IGNORE % Rial Sign
+reorder-after <UFED8>
+<UFB8E> <kaf>;<BAS>;<AIS>;IGNORE
+<UFB8F> <kaf>;<BAS>;<AFI>;IGNORE
+<UFB90> <kaf>;<BAS>;<AII>;IGNORE
+<UFB91> <kaf>;<BAS>;<AME>;IGNORE
+<UFED9> <kaf>;<PCL>;<AIS>;IGNORE
+<UFEDA> <kaf>;<PCL>;<AFI>;IGNORE
+<UFEDB> <kaf>;<PCL>;<AII>;IGNORE
+<UFEDC> <kaf>;<PCL>;<AME>;IGNORE
+reorder-after <UFEEE>
+<UFEE9> <heh>;<BAS>;<AIS>;IGNORE
+<UFEEA> <heh>;<BAS>;<AFI>;IGNORE
+<UFEEB> <heh>;<BAS>;<AII>;IGNORE
+<UFEEC> <heh>;<BAS>;<AME>;IGNORE
+<UFE93> <heh>;<ADO>;<AIS>;IGNORE
+<UFE94> <heh>;<ADO>;<AFI>;IGNORE
+<UFBA4> <heh>;<AHA>;<AIS>;IGNORE
+<UFBA5> <heh>;<AHA>;<AFI>;IGNORE
+<UFBFC> <yeh>;<BAS>;<AIS>;IGNORE
+<UFBFD> <yeh>;<BAS>;<AFI>;IGNORE
+<UFBFE> <yeh>;<BAS>;<AII>;IGNORE
+<UFBFF> <yeh>;<BAS>;<AME>;IGNORE
+<UFEEF> <yeh>;<ADL>;<AIS>;IGNORE
+<UFEF0> <yeh>;<ADL>;<AFI>;IGNORE
+<UFEF1> <yeh>;<AYE>;<AIS>;IGNORE
+<UFEF2> <yeh>;<AYE>;<AFI>;IGNORE
+<UFEF3> <yeh>;<AYE>;<AII>;IGNORE
+<UFEF4> <yeh>;<AYE>;<AME>;IGNORE
+<UFEF5> "<lam><alefmadda>";"<BAS><BAS>";"<AIS><AFI>";IGNORE
+<UFEF6> "<lam><alefmadda>";"<BAS><BAS>";"<AFI><AFI>";IGNORE
+<UFEF7> "<lam><hamza>";"<BAS><AHA>";"<AIS><AFI>";IGNORE
+<UFEF8> "<lam><hamza>";"<BAS><AHA>";"<AFI><AFI>";IGNORE
+<UFEF9> "<lam><hamza>";"<BAS><AHS>";"<AIS><AFI>";IGNORE
+<UFEFA> "<lam><hamza>";"<BAS><AHS>";"<AFI><AFI>";IGNORE
+<UFEFB> "<lam><alef>";"<BAS><BAS>";"<AIS><AFI>";IGNORE
+<UFEFC> "<lam><alef>";"<BAS><BAS>";"<AFI><AFI>";IGNORE
+reorder-end
+
diff --git a/ap/build/uClibc/extra/locale/collation/fi_FI b/ap/build/uClibc/extra/locale/collation/fi_FI
new file mode 100644
index 0000000..f510998
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/fi_FI
@@ -0,0 +1,2062 @@
+
+% Base collation scheme: 1994-03-22
+
+% Ordering algorithm:
+% 1. Spaces and hyphen (but not soft
+% hyphen) before punctuation
+% characters, punctuation characters
+% before numbers,
+% numbers before letters.
+% 2. Letters with diacritical marks are
+% members of equivalence classes
+% 3. A distinction is made with regards
+% to case as noted below.
+% 4. Special characters are ignored
+% when comparing letters, but then
+% they are considered
+% 5. The alphabets are sorted in order
+% of first appearance in ISO 10646:
+% Latin, Greek, Cyrillic, etc.
+%
+% According to Greek specifications,
+% the steps 2. and 3. above are reversed
+% for the Greek script
+
+% collating symbols
+
+% The collating symbol naming is
+% mostly taken from ISO 10646-1,
+% for example the case and accent
+% names are from this standard.
+
+collating-symbol <CAPITAL>
+collating-symbol <CAPITAL-SMALL>
+collating-symbol <SMALL-CAPITAL>
+collating-symbol <SMALL>
+
+% <CAPITAL-SMALL> and <SMALL-CAPITAL>
+% are for cases like Danish <U0041><U0061>
+% and Spanish <U0043><U0068> being treated
+% as one letter.
+
+% The <a8> ...... <z8> collating
+% symbols have defined weights as
+% the last character in a group of
+% Latin letters. They are used
+% to specify deltas by locales using
+% a locale as the default ordering
+% and by "replace-after" statements
+% specifying the changed placement
+% in an ordering of a character.
+
+collating-symbol <a8>
+collating-symbol <b8>
+collating-symbol <c8>
+collating-symbol <d8>
+collating-symbol <e8>
+collating-symbol <f8>
+collating-symbol <g8>
+collating-symbol <h8>
+collating-symbol <i8>
+collating-symbol <j8>
+collating-symbol <k8>
+collating-symbol <l8>
+collating-symbol <m8>
+collating-symbol <n8>
+collating-symbol <o8>
+collating-symbol <p8>
+collating-symbol <q8>
+collating-symbol <r8>
+collating-symbol <s8>
+collating-symbol <t8>
+collating-symbol <u8>
+collating-symbol <v8>
+collating-symbol <w8>
+collating-symbol <x8>
+collating-symbol <y8>
+collating-symbol <z8>
+
+collating-symbol <NONE>
+collating-symbol <ACUTE>
+collating-symbol <ACUTE+DOT>
+collating-symbol <GRAVE>
+collating-symbol <DOUBLE-GRAVE>
+collating-symbol <BREVE>
+collating-symbol <BREVE+ACUTE>
+collating-symbol <BREVE+GRAVE>
+collating-symbol <BREVE+MACRON>
+collating-symbol <BREVE+HOOK>
+collating-symbol <BREVE+TILDE>
+collating-symbol <BREVE+DOT-BELOW>
+collating-symbol <BREVE-BELOW>
+collating-symbol <INVERTED-BREVE>
+collating-symbol <CIRCUMFLEX>
+collating-symbol <CIRCUMFLEX+ACUTE>
+collating-symbol <CIRCUMFLEX+GRAVE>
+collating-symbol <CIRCUMFLEX+HOOK>
+collating-symbol <CIRCUMFLEX+TILDE>
+collating-symbol <CIRCUMFLEX+DOT-BELOW>
+collating-symbol <CARON>
+collating-symbol <CARON+DIAERESIS>
+collating-symbol <CARON+DOT>
+collating-symbol <RING>
+collating-symbol <RING+ACUTE>
+collating-symbol <RING-BELOW>
+collating-symbol <DIAERESIS>
+collating-symbol <DIAERESIS+MACRON>
+collating-symbol <DIAERESIS+ACUTE>
+collating-symbol <DIAERESIS+GRAVE>
+collating-symbol <DIAERESIS+CARON>
+collating-symbol <DOUBLE-ACUTE>
+collating-symbol <HOOK>
+collating-symbol <TILDE>
+collating-symbol <TILDE+ACUTE>
+collating-symbol <TILDE+DIAERESIS>
+collating-symbol <TILDE-BELOW>
+collating-symbol <DOT>
+collating-symbol <DOT-BELOW>
+collating-symbol <DOT+DOT-BELOW>
+collating-symbol <STROKE>
+collating-symbol <STROKE+ACUTE>
+collating-symbol <CEDILLA>
+collating-symbol <CEDILLA+ACUTE>
+collating-symbol <CEDILLA+GRAVE>
+collating-symbol <CEDILLA+BREVE>
+collating-symbol <OGONEK>
+collating-symbol <OGONEK+MACRON>
+collating-symbol <MACRON>
+collating-symbol <MACRON+ACUTE>
+collating-symbol <MACRON+GRAVE>
+collating-symbol <MACRON+DIAERESIS>
+collating-symbol <MACRON+DIAERESIS-BELOW>
+collating-symbol <MACRON+DOT>
+collating-symbol <MACRON+DOT-BELOW>
+collating-symbol <MACRON+CIRCUMFLEX>
+collating-symbol <LINE-BELOW>
+collating-symbol <HORN>
+collating-symbol <HORN+ACUTE>
+collating-symbol <HORN+GRAVE>
+collating-symbol <HORN+HOOK>
+collating-symbol <HORN+TILDE>
+collating-symbol <HORN+DOT-BELOW>
+collating-symbol <PRECEDED-BY-APOSTROPHE>
+collating-symbol <GREEK>
+collating-symbol <TONOS>
+collating-symbol <DIALYTICA>
+collating-symbol <DIALYTICA+TONOS>
+collating-symbol <CYRILLIC>
+collating-symbol <HIRAGANA>
+collating-symbol <KATAKANA>
+collating-symbol <SPECIAL>
+
+% letter;accent;case;specials
+
+order_start forward;backward;forward;position
+
+% <CAPITAL> or <SMALL> letters first:
+
+% <SMALL> before <CAPITAL> letters
+<SMALL>
+<CAPITAL>
+<CAPITAL-SMALL>
+<SMALL-CAPITAL>
+
+% Accents:
+
+<NONE>
+<ACUTE>
+<ACUTE+DOT>
+<GRAVE>
+<DOUBLE-GRAVE>
+<BREVE>
+<BREVE+ACUTE>
+<BREVE+GRAVE>
+<BREVE+MACRON>
+<BREVE+HOOK>
+<BREVE+TILDE>
+<BREVE+DOT-BELOW>
+<BREVE-BELOW>
+<INVERTED-BREVE>
+<CIRCUMFLEX>
+<CIRCUMFLEX+ACUTE>
+<CIRCUMFLEX+GRAVE>
+<CIRCUMFLEX+HOOK>
+<CIRCUMFLEX+TILDE>
+<CIRCUMFLEX+DOT-BELOW>
+<CARON>
+<CARON+DIAERESIS>
+<CARON+DOT>
+<RING>
+<RING+ACUTE>
+<RING-BELOW>
+<DIAERESIS>
+<DIAERESIS+MACRON>
+<DIAERESIS+ACUTE>
+<DIAERESIS+GRAVE>
+<DIAERESIS+CARON>
+<DOUBLE-ACUTE>
+<HOOK>
+<TILDE>
+<TILDE+ACUTE>
+<TILDE+DIAERESIS>
+<TILDE-BELOW>
+<DOT>
+<DOT-BELOW>
+<DOT+DOT-BELOW>
+<STROKE>
+<STROKE+ACUTE>
+<CEDILLA>
+<CEDILLA+ACUTE>
+<CEDILLA+GRAVE>
+<CEDILLA+BREVE>
+<OGONEK>
+<OGONEK+MACRON>
+<MACRON>
+<MACRON+ACUTE>
+<MACRON+GRAVE>
+<MACRON+DIAERESIS>
+<MACRON+DIAERESIS-BELOW>
+<MACRON+DOT>
+<MACRON+DOT-BELOW>
+<MACRON+CIRCUMFLEX>
+<LINE-BELOW>
+<HORN>
+<HORN+ACUTE>
+<HORN+GRAVE>
+<HORN+HOOK>
+<HORN+TILDE>
+<HORN+DOT-BELOW>
+<PRECEDED-BY-APOSTROPHE>
+<GREEK>
+<TONOS>
+<DIALYTICA>
+<DIALYTICA+TONOS>
+<CYRILLIC>
+<HIRAGANA>
+<KATAKANA>
+<SPECIAL>
+
+<U00A0> <U00A0>;<U00A0>;<U00A0>;IGNORE
+<U0020> IGNORE;IGNORE;IGNORE;<U0020>
+<U0009> IGNORE;IGNORE;IGNORE;<U0009>
+<U000B> IGNORE;IGNORE;IGNORE;<U000B>
+<U000D> IGNORE;IGNORE;IGNORE;<U000D>
+<U000A> IGNORE;IGNORE;IGNORE;<U000A>
+<U000C> IGNORE;IGNORE;IGNORE;<U000C>
+<U005F> IGNORE;IGNORE;IGNORE;<U005F>
+<U00AF> IGNORE;IGNORE;IGNORE;<U00AF>
+<U00AD> IGNORE;IGNORE;IGNORE;<U00AD>
+<U002D> IGNORE;IGNORE;IGNORE;<U002D>
+<U002C> IGNORE;IGNORE;IGNORE;<U002C>
+<U003B> IGNORE;IGNORE;IGNORE;<U003B>
+<U003A> IGNORE;IGNORE;IGNORE;<U003A>
+<U0021> IGNORE;IGNORE;IGNORE;<U0021>
+<U00A1> IGNORE;IGNORE;IGNORE;<U00A1>
+<U003F> IGNORE;IGNORE;IGNORE;<U003F>
+<U00BF> IGNORE;IGNORE;IGNORE;<U00BF>
+<U002F> IGNORE;IGNORE;IGNORE;<U002F>
+<U002E> IGNORE;IGNORE;IGNORE;<U002E>
+<U00B4> IGNORE;IGNORE;IGNORE;<U00B4>
+<U0060> IGNORE;IGNORE;IGNORE;<U0060>
+<U005E> IGNORE;IGNORE;IGNORE;<U005E>
+<U00A8> IGNORE;IGNORE;IGNORE;<U00A8>
+<U007E> IGNORE;IGNORE;IGNORE;<U007E>
+<U00B7> IGNORE;IGNORE;IGNORE;<U00B7>
+<U00B8> IGNORE;IGNORE;IGNORE;<U00B8>
+<U0027> IGNORE;IGNORE;IGNORE;<U0027>
+<U2018> IGNORE;IGNORE;IGNORE;<U2018>
+<U2019> IGNORE;IGNORE;IGNORE;<U2019>
+<U0022> IGNORE;IGNORE;IGNORE;<U0022>
+<U201C> IGNORE;IGNORE;IGNORE;<U201C>
+<U201D> IGNORE;IGNORE;IGNORE;<U201D>
+<U00AB> IGNORE;IGNORE;IGNORE;<U00AB>
+<U00BB> IGNORE;IGNORE;IGNORE;<U00BB>
+<U0028> IGNORE;IGNORE;IGNORE;<U0028>
+<U207D> IGNORE;IGNORE;IGNORE;<U207D>
+<U0029> IGNORE;IGNORE;IGNORE;<U0029>
+<U207E> IGNORE;IGNORE;IGNORE;<U207E>
+<U005B> IGNORE;IGNORE;IGNORE;<U005B>
+<U005D> IGNORE;IGNORE;IGNORE;<U005D>
+<U007B> IGNORE;IGNORE;IGNORE;<U007B>
+<U007D> IGNORE;IGNORE;IGNORE;<U007D>
+<U00A7> IGNORE;IGNORE;IGNORE;<U00A7>
+<U00B6> IGNORE;IGNORE;IGNORE;<U00B6>
+<U00A9> IGNORE;IGNORE;IGNORE;<U00A9>
+<U00AE> IGNORE;IGNORE;IGNORE;<U00AE>
+<U0040> IGNORE;IGNORE;IGNORE;<U0040>
+<U00A4> IGNORE;IGNORE;IGNORE;<U00A4>
+<U00A2> IGNORE;IGNORE;IGNORE;<U00A2>
+<U0024> IGNORE;IGNORE;IGNORE;<U0024>
+<U00A3> IGNORE;IGNORE;IGNORE;<U00A3>
+<U00A5> IGNORE;IGNORE;IGNORE;<U00A5>
+<U002A> IGNORE;IGNORE;IGNORE;<U002A>
+<U005C> IGNORE;IGNORE;IGNORE;<U005C>
+<U0026> IGNORE;IGNORE;IGNORE;<U0026>
+<U0023> IGNORE;IGNORE;IGNORE;<U0023>
+<U0025> IGNORE;IGNORE;IGNORE;<U0025>
+<U207B> IGNORE;IGNORE;IGNORE;<U207B>
+<U002B> IGNORE;IGNORE;IGNORE;<U002B>
+<U207A> IGNORE;IGNORE;IGNORE;<U207A>
+<U00B1> IGNORE;IGNORE;IGNORE;<U00B1>
+<U00F7> IGNORE;IGNORE;IGNORE;<U00F7>
+<U00D7> IGNORE;IGNORE;IGNORE;<U00D7>
+<U2260> IGNORE;IGNORE;IGNORE;<U2260>
+<U003C> IGNORE;IGNORE;IGNORE;<U003C>
+<U2264> IGNORE;IGNORE;IGNORE;<U2264>
+<U003D> IGNORE;IGNORE;IGNORE;<U003D>
+<U2265> IGNORE;IGNORE;IGNORE;<U2265>
+<U003E> IGNORE;IGNORE;IGNORE;<U003E>
+<U00AC> IGNORE;IGNORE;IGNORE;<U00AC>
+<U007C> IGNORE;IGNORE;IGNORE;<U007C>
+<U00A6> IGNORE;IGNORE;IGNORE;<U00A6>
+<U00B0> IGNORE;IGNORE;IGNORE;<U00B0>
+<U00B5> IGNORE;IGNORE;IGNORE;<U00B5>
+<U02C7> IGNORE;IGNORE;IGNORE;<U02C7>
+<U02D8> IGNORE;IGNORE;IGNORE;<U02D8>
+<U02D9> IGNORE;IGNORE;IGNORE;<U02D9>
+<U02DA> IGNORE;IGNORE;IGNORE;<U02DA>
+<U02DB> IGNORE;IGNORE;IGNORE;<U02DB>
+<U02DC> IGNORE;IGNORE;IGNORE;<U02DC>
+<U02DD> IGNORE;IGNORE;IGNORE;<U02DD>
+<U0374> IGNORE;IGNORE;IGNORE;<U0374>
+<U0375> IGNORE;IGNORE;IGNORE;<U0375>
+<U037A> IGNORE;IGNORE;IGNORE;<U037A>
+<U037E> IGNORE;IGNORE;IGNORE;<U037E>
+<U0384> IGNORE;IGNORE;IGNORE;<U0384>
+<U0385> IGNORE;IGNORE;IGNORE;<U0385>
+<U0387> IGNORE;IGNORE;IGNORE;<U0387>
+<U03D0> IGNORE;IGNORE;IGNORE;<U03D0>
+<U1FBF> IGNORE;IGNORE;IGNORE;<U1FBF>
+<U1FC0> IGNORE;IGNORE;IGNORE;<U1FC0>
+<U1FC1> IGNORE;IGNORE;IGNORE;<U1FC1>
+<U1FCD> IGNORE;IGNORE;IGNORE;<U1FCD>
+<U1FCE> IGNORE;IGNORE;IGNORE;<U1FCE>
+<U1FCF> IGNORE;IGNORE;IGNORE;<U1FCF>
+<U1FDD> IGNORE;IGNORE;IGNORE;<U1FDD>
+<U1FDE> IGNORE;IGNORE;IGNORE;<U1FDE>
+<U1FDF> IGNORE;IGNORE;IGNORE;<U1FDF>
+<U1FED> IGNORE;IGNORE;IGNORE;<U1FED>
+<U1FEF> IGNORE;IGNORE;IGNORE;<U1FEF>
+<U1FFE> IGNORE;IGNORE;IGNORE;<U1FFE>
+<U2002> IGNORE;IGNORE;IGNORE;<U2002>
+<U2003> IGNORE;IGNORE;IGNORE;<U2003>
+<U2004> IGNORE;IGNORE;IGNORE;<U2004>
+<U2005> IGNORE;IGNORE;IGNORE;<U2005>
+<U2006> IGNORE;IGNORE;IGNORE;<U2006>
+<U200E> IGNORE;IGNORE;IGNORE;<U200E>
+<U200F> IGNORE;IGNORE;IGNORE;<U200F>
+<U2009> IGNORE;IGNORE;IGNORE;<U2009>
+<U200A> IGNORE;IGNORE;IGNORE;<U200A>
+<U2010> IGNORE;IGNORE;IGNORE;<U2010>
+<U2013> IGNORE;IGNORE;IGNORE;<U2013>
+<U2014> IGNORE;IGNORE;IGNORE;<U2014>
+<U2015> IGNORE;IGNORE;IGNORE;<U2015>
+<U2016> IGNORE;IGNORE;IGNORE;<U2016>
+<U2017> IGNORE;IGNORE;IGNORE;<U2017>
+<U201A> IGNORE;IGNORE;IGNORE;<U201A>
+<U201B> IGNORE;IGNORE;IGNORE;<U201B>
+<U201E> IGNORE;IGNORE;IGNORE;<U201E>
+<U201F> IGNORE;IGNORE;IGNORE;<U201F>
+<U2020> IGNORE;IGNORE;IGNORE;<U2020>
+<U2021> IGNORE;IGNORE;IGNORE;<U2021>
+<U2219> IGNORE;IGNORE;IGNORE;<U2219>
+<U2025> IGNORE;IGNORE;IGNORE;<U2025>
+<U2026> IGNORE;IGNORE;IGNORE;<U2026>
+<U2030> IGNORE;IGNORE;IGNORE;<U2030>
+<U2032> IGNORE;IGNORE;IGNORE;<U2032>
+<U2033> IGNORE;IGNORE;IGNORE;<U2033>
+<U2034> IGNORE;IGNORE;IGNORE;<U2034>
+<U2035> IGNORE;IGNORE;IGNORE;<U2035>
+<U2036> IGNORE;IGNORE;IGNORE;<U2036>
+<U2037> IGNORE;IGNORE;IGNORE;<U2037>
+<U2038> IGNORE;IGNORE;IGNORE;<U2038>
+<U2039> IGNORE;IGNORE;IGNORE;<U2039>
+<U203A> IGNORE;IGNORE;IGNORE;<U203A>
+<U203B> IGNORE;IGNORE;IGNORE;<U203B>
+<U203C> IGNORE;IGNORE;IGNORE;<U203C>
+<U203E> IGNORE;IGNORE;IGNORE;<U203E>
+<U207C> IGNORE;IGNORE;IGNORE;<U207C>
+<U2080> IGNORE;IGNORE;IGNORE;<U2080>
+<U2081> IGNORE;IGNORE;IGNORE;<U2081>
+<U2082> IGNORE;IGNORE;IGNORE;<U2082>
+<U2083> IGNORE;IGNORE;IGNORE;<U2083>
+<U2084> IGNORE;IGNORE;IGNORE;<U2084>
+<U2085> IGNORE;IGNORE;IGNORE;<U2085>
+<U2086> IGNORE;IGNORE;IGNORE;<U2086>
+<U2087> IGNORE;IGNORE;IGNORE;<U2087>
+<U2088> IGNORE;IGNORE;IGNORE;<U2088>
+<U2089> IGNORE;IGNORE;IGNORE;<U2089>
+<U208A> IGNORE;IGNORE;IGNORE;<U208A>
+<U208B> IGNORE;IGNORE;IGNORE;<U208B>
+<U208C> IGNORE;IGNORE;IGNORE;<U208C>
+<U208D> IGNORE;IGNORE;IGNORE;<U208D>
+<U208E> IGNORE;IGNORE;IGNORE;<U208E>
+<U20A3> IGNORE;IGNORE;IGNORE;<U20A3>
+<U20A4> IGNORE;IGNORE;IGNORE;<U20A4>
+<U20A7> IGNORE;IGNORE;IGNORE;<U20A7>
+<U20A9> IGNORE;IGNORE;IGNORE;<U20A9>
+<U2103> IGNORE;IGNORE;IGNORE;<U2103>
+<U2105> IGNORE;IGNORE;IGNORE;<U2105>
+<U2109> IGNORE;IGNORE;IGNORE;<U2109>
+<U2116> IGNORE;IGNORE;IGNORE;<U2116>
+<U2117> IGNORE;IGNORE;IGNORE;<U2117>
+<U211E> IGNORE;IGNORE;IGNORE;<U211E>
+<U2120> IGNORE;IGNORE;IGNORE;<U2120>
+<U2122> IGNORE;IGNORE;IGNORE;<U2122>
+<U2126> IGNORE;IGNORE;IGNORE;<U2126>
+<U212B> IGNORE;IGNORE;IGNORE;<U212B>
+<U2153> IGNORE;IGNORE;IGNORE;<U2153>
+<U2154> IGNORE;IGNORE;IGNORE;<U2154>
+<U2155> IGNORE;IGNORE;IGNORE;<U2155>
+<U2156> IGNORE;IGNORE;IGNORE;<U2156>
+<U2157> IGNORE;IGNORE;IGNORE;<U2157>
+<U2158> IGNORE;IGNORE;IGNORE;<U2158>
+<U2159> IGNORE;IGNORE;IGNORE;<U2159>
+<U215A> IGNORE;IGNORE;IGNORE;<U215A>
+<U2160> IGNORE;IGNORE;IGNORE;<U2160>
+<U2161> IGNORE;IGNORE;IGNORE;<U2161>
+<U2162> IGNORE;IGNORE;IGNORE;<U2162>
+<U2163> IGNORE;IGNORE;IGNORE;<U2163>
+<U2164> IGNORE;IGNORE;IGNORE;<U2164>
+<U2165> IGNORE;IGNORE;IGNORE;<U2165>
+<U2166> IGNORE;IGNORE;IGNORE;<U2166>
+<U2167> IGNORE;IGNORE;IGNORE;<U2167>
+<U2168> IGNORE;IGNORE;IGNORE;<U2168>
+<U2169> IGNORE;IGNORE;IGNORE;<U2169>
+<U216A> IGNORE;IGNORE;IGNORE;<U216A>
+<U216B> IGNORE;IGNORE;IGNORE;<U216B>
+<U216C> IGNORE;IGNORE;IGNORE;<U216C>
+<U216D> IGNORE;IGNORE;IGNORE;<U216D>
+<U216E> IGNORE;IGNORE;IGNORE;<U216E>
+<U216F> IGNORE;IGNORE;IGNORE;<U216F>
+<U2170> IGNORE;IGNORE;IGNORE;<U2170>
+<U2171> IGNORE;IGNORE;IGNORE;<U2171>
+<U2172> IGNORE;IGNORE;IGNORE;<U2172>
+<U2173> IGNORE;IGNORE;IGNORE;<U2173>
+<U2174> IGNORE;IGNORE;IGNORE;<U2174>
+<U2175> IGNORE;IGNORE;IGNORE;<U2175>
+<U2176> IGNORE;IGNORE;IGNORE;<U2176>
+<U2177> IGNORE;IGNORE;IGNORE;<U2177>
+<U2178> IGNORE;IGNORE;IGNORE;<U2178>
+<U2179> IGNORE;IGNORE;IGNORE;<U2179>
+<U217A> IGNORE;IGNORE;IGNORE;<U217A>
+<U217B> IGNORE;IGNORE;IGNORE;<U217B>
+<U217C> IGNORE;IGNORE;IGNORE;<U217C>
+<U217D> IGNORE;IGNORE;IGNORE;<U217D>
+<U217E> IGNORE;IGNORE;IGNORE;<U217E>
+<U217F> IGNORE;IGNORE;IGNORE;<U217F>
+<U2180> IGNORE;IGNORE;IGNORE;<U2180>
+<U2181> IGNORE;IGNORE;IGNORE;<U2181>
+<U2182> IGNORE;IGNORE;IGNORE;<U2182>
+<U2191> IGNORE;IGNORE;IGNORE;<U2191>
+<U2193> IGNORE;IGNORE;IGNORE;<U2193>
+<U2194> IGNORE;IGNORE;IGNORE;<U2194>
+<U2195> IGNORE;IGNORE;IGNORE;<U2195>
+<U2196> IGNORE;IGNORE;IGNORE;<U2196>
+<U2197> IGNORE;IGNORE;IGNORE;<U2197>
+<U2198> IGNORE;IGNORE;IGNORE;<U2198>
+<U2199> IGNORE;IGNORE;IGNORE;<U2199>
+<U21A8> IGNORE;IGNORE;IGNORE;<U21A8>
+<U21C0> IGNORE;IGNORE;IGNORE;<U21C0>
+<U21D0> IGNORE;IGNORE;IGNORE;<U21D0>
+<U21D2> IGNORE;IGNORE;IGNORE;<U21D2>
+<U21D4> IGNORE;IGNORE;IGNORE;<U21D4>
+<U2200> IGNORE;IGNORE;IGNORE;<U2200>
+<U2202> IGNORE;IGNORE;IGNORE;<U2202>
+<U2203> IGNORE;IGNORE;IGNORE;<U2203>
+<U2205> IGNORE;IGNORE;IGNORE;<U2205>
+<U2206> IGNORE;IGNORE;IGNORE;<U2206>
+<U2207> IGNORE;IGNORE;IGNORE;<U2207>
+<U2208> IGNORE;IGNORE;IGNORE;<U2208>
+<U220B> IGNORE;IGNORE;IGNORE;<U220B>
+<U220F> IGNORE;IGNORE;IGNORE;<U220F>
+<U2211> IGNORE;IGNORE;IGNORE;<U2211>
+<U2212> IGNORE;IGNORE;IGNORE;<U2212>
+<U2213> IGNORE;IGNORE;IGNORE;<U2213>
+<U2214> IGNORE;IGNORE;IGNORE;<U2214>
+<U2044> IGNORE;IGNORE;IGNORE;<U2044>
+<U2217> IGNORE;IGNORE;IGNORE;<U2217>
+<U2218> IGNORE;IGNORE;IGNORE;<U2218>
+<U2022> IGNORE;IGNORE;IGNORE;<U2022>
+<U221A> IGNORE;IGNORE;IGNORE;<U221A>
+<U221D> IGNORE;IGNORE;IGNORE;<U221D>
+<U221E> IGNORE;IGNORE;IGNORE;<U221E>
+<U221F> IGNORE;IGNORE;IGNORE;<U221F>
+<U2220> IGNORE;IGNORE;IGNORE;<U2220>
+<U2225> IGNORE;IGNORE;IGNORE;<U2225>
+<U2227> IGNORE;IGNORE;IGNORE;<U2227>
+<U2228> IGNORE;IGNORE;IGNORE;<U2228>
+<U2229> IGNORE;IGNORE;IGNORE;<U2229>
+<U222A> IGNORE;IGNORE;IGNORE;<U222A>
+<U222B> IGNORE;IGNORE;IGNORE;<U222B>
+<U222C> IGNORE;IGNORE;IGNORE;<U222C>
+<U222E> IGNORE;IGNORE;IGNORE;<U222E>
+<U2234> IGNORE;IGNORE;IGNORE;<U2234>
+<U2235> IGNORE;IGNORE;IGNORE;<U2235>
+<U2236> IGNORE;IGNORE;IGNORE;<U2236>
+<U2237> IGNORE;IGNORE;IGNORE;<U2237>
+<U223C> IGNORE;IGNORE;IGNORE;<U223C>
+<U223E> IGNORE;IGNORE;IGNORE;<U223E>
+<U2243> IGNORE;IGNORE;IGNORE;<U2243>
+<U2245> IGNORE;IGNORE;IGNORE;<U2245>
+<U2248> IGNORE;IGNORE;IGNORE;<U2248>
+<U224C> IGNORE;IGNORE;IGNORE;<U224C>
+<U2253> IGNORE;IGNORE;IGNORE;<U2253>
+<U2261> IGNORE;IGNORE;IGNORE;<U2261>
+<U226A> IGNORE;IGNORE;IGNORE;<U226A>
+<U226B> IGNORE;IGNORE;IGNORE;<U226B>
+<U226E> IGNORE;IGNORE;IGNORE;<U226E>
+<U226F> IGNORE;IGNORE;IGNORE;<U226F>
+<U2282> IGNORE;IGNORE;IGNORE;<U2282>
+<U2283> IGNORE;IGNORE;IGNORE;<U2283>
+<U2286> IGNORE;IGNORE;IGNORE;<U2286>
+<U2287> IGNORE;IGNORE;IGNORE;<U2287>
+<U2299> IGNORE;IGNORE;IGNORE;<U2299>
+<U229A> IGNORE;IGNORE;IGNORE;<U229A>
+<U22A5> IGNORE;IGNORE;IGNORE;<U22A5>
+<U22C5> IGNORE;IGNORE;IGNORE;<U22C5>
+<U22EE> IGNORE;IGNORE;IGNORE;<U22EE>
+<U2302> IGNORE;IGNORE;IGNORE;<U2302>
+<U2308> IGNORE;IGNORE;IGNORE;<U2308>
+<U2309> IGNORE;IGNORE;IGNORE;<U2309>
+<U230A> IGNORE;IGNORE;IGNORE;<U230A>
+<U230B> IGNORE;IGNORE;IGNORE;<U230B>
+<U2310> IGNORE;IGNORE;IGNORE;<U2310>
+<U2312> IGNORE;IGNORE;IGNORE;<U2312>
+<U2315> IGNORE;IGNORE;IGNORE;<U2315>
+<U2320> IGNORE;IGNORE;IGNORE;<U2320>
+<U2321> IGNORE;IGNORE;IGNORE;<U2321>
+<U2423> IGNORE;IGNORE;IGNORE;<U2423>
+<U2440> IGNORE;IGNORE;IGNORE;<U2440>
+<U2441> IGNORE;IGNORE;IGNORE;<U2441>
+<U2442> IGNORE;IGNORE;IGNORE;<U2442>
+<U2443> IGNORE;IGNORE;IGNORE;<U2443>
+<U2446> IGNORE;IGNORE;IGNORE;<U2446>
+<U2447> IGNORE;IGNORE;IGNORE;<U2447>
+<U2448> IGNORE;IGNORE;IGNORE;<U2448>
+<U2449> IGNORE;IGNORE;IGNORE;<U2449>
+<U2460> IGNORE;IGNORE;IGNORE;<U2460>
+<U2461> IGNORE;IGNORE;IGNORE;<U2461>
+<U2462> IGNORE;IGNORE;IGNORE;<U2462>
+<U2463> IGNORE;IGNORE;IGNORE;<U2463>
+<U2464> IGNORE;IGNORE;IGNORE;<U2464>
+<U2465> IGNORE;IGNORE;IGNORE;<U2465>
+<U2466> IGNORE;IGNORE;IGNORE;<U2466>
+<U2467> IGNORE;IGNORE;IGNORE;<U2467>
+<U2468> IGNORE;IGNORE;IGNORE;<U2468>
+<U2469> IGNORE;IGNORE;IGNORE;<U2469>
+<U246A> IGNORE;IGNORE;IGNORE;<U246A>
+<U246B> IGNORE;IGNORE;IGNORE;<U246B>
+<U246C> IGNORE;IGNORE;IGNORE;<U246C>
+<U246D> IGNORE;IGNORE;IGNORE;<U246D>
+<U246E> IGNORE;IGNORE;IGNORE;<U246E>
+<U246F> IGNORE;IGNORE;IGNORE;<U246F>
+<U2470> IGNORE;IGNORE;IGNORE;<U2470>
+<U2471> IGNORE;IGNORE;IGNORE;<U2471>
+<U2472> IGNORE;IGNORE;IGNORE;<U2472>
+<U2473> IGNORE;IGNORE;IGNORE;<U2473>
+<U2474> IGNORE;IGNORE;IGNORE;<U2474>
+<U2475> IGNORE;IGNORE;IGNORE;<U2475>
+<U2476> IGNORE;IGNORE;IGNORE;<U2476>
+<U2477> IGNORE;IGNORE;IGNORE;<U2477>
+<U2478> IGNORE;IGNORE;IGNORE;<U2478>
+<U2479> IGNORE;IGNORE;IGNORE;<U2479>
+<U247A> IGNORE;IGNORE;IGNORE;<U247A>
+<U247B> IGNORE;IGNORE;IGNORE;<U247B>
+<U247C> IGNORE;IGNORE;IGNORE;<U247C>
+<U247D> IGNORE;IGNORE;IGNORE;<U247D>
+<U247E> IGNORE;IGNORE;IGNORE;<U247E>
+<U247F> IGNORE;IGNORE;IGNORE;<U247F>
+<U2480> IGNORE;IGNORE;IGNORE;<U2480>
+<U2481> IGNORE;IGNORE;IGNORE;<U2481>
+<U2482> IGNORE;IGNORE;IGNORE;<U2482>
+<U2483> IGNORE;IGNORE;IGNORE;<U2483>
+<U2484> IGNORE;IGNORE;IGNORE;<U2484>
+<U2485> IGNORE;IGNORE;IGNORE;<U2485>
+<U2486> IGNORE;IGNORE;IGNORE;<U2486>
+<U2487> IGNORE;IGNORE;IGNORE;<U2487>
+<U2488> IGNORE;IGNORE;IGNORE;<U2488>
+<U2489> IGNORE;IGNORE;IGNORE;<U2489>
+<U248A> IGNORE;IGNORE;IGNORE;<U248A>
+<U248B> IGNORE;IGNORE;IGNORE;<U248B>
+<U248C> IGNORE;IGNORE;IGNORE;<U248C>
+<U248D> IGNORE;IGNORE;IGNORE;<U248D>
+<U248E> IGNORE;IGNORE;IGNORE;<U248E>
+<U248F> IGNORE;IGNORE;IGNORE;<U248F>
+<U2490> IGNORE;IGNORE;IGNORE;<U2490>
+<U2491> IGNORE;IGNORE;IGNORE;<U2491>
+<U2492> IGNORE;IGNORE;IGNORE;<U2492>
+<U2493> IGNORE;IGNORE;IGNORE;<U2493>
+<U2494> IGNORE;IGNORE;IGNORE;<U2494>
+<U2495> IGNORE;IGNORE;IGNORE;<U2495>
+<U2496> IGNORE;IGNORE;IGNORE;<U2496>
+<U2497> IGNORE;IGNORE;IGNORE;<U2497>
+<U2498> IGNORE;IGNORE;IGNORE;<U2498>
+<U2499> IGNORE;IGNORE;IGNORE;<U2499>
+<U249A> IGNORE;IGNORE;IGNORE;<U249A>
+<U249B> IGNORE;IGNORE;IGNORE;<U249B>
+<U24EA> IGNORE;IGNORE;IGNORE;<U24EA>
+<U2500> IGNORE;IGNORE;IGNORE;<U2500>
+<U2550> IGNORE;IGNORE;IGNORE;<U2550>
+<U2502> IGNORE;IGNORE;IGNORE;<U2502>
+<U2551> IGNORE;IGNORE;IGNORE;<U2551>
+<U2504> IGNORE;IGNORE;IGNORE;<U2504>
+<U2505> IGNORE;IGNORE;IGNORE;<U2505>
+<U2506> IGNORE;IGNORE;IGNORE;<U2506>
+<U2507> IGNORE;IGNORE;IGNORE;<U2507>
+<U2508> IGNORE;IGNORE;IGNORE;<U2508>
+<U2509> IGNORE;IGNORE;IGNORE;<U2509>
+<U250A> IGNORE;IGNORE;IGNORE;<U250A>
+<U250B> IGNORE;IGNORE;IGNORE;<U250B>
+<U250C> IGNORE;IGNORE;IGNORE;<U250C>
+<U2552> IGNORE;IGNORE;IGNORE;<U2552>
+<U2553> IGNORE;IGNORE;IGNORE;<U2553>
+<U2554> IGNORE;IGNORE;IGNORE;<U2554>
+<U2510> IGNORE;IGNORE;IGNORE;<U2510>
+<U2555> IGNORE;IGNORE;IGNORE;<U2555>
+<U2556> IGNORE;IGNORE;IGNORE;<U2556>
+<U2557> IGNORE;IGNORE;IGNORE;<U2557>
+<U2514> IGNORE;IGNORE;IGNORE;<U2514>
+<U2558> IGNORE;IGNORE;IGNORE;<U2558>
+<U2559> IGNORE;IGNORE;IGNORE;<U2559>
+<U255A> IGNORE;IGNORE;IGNORE;<U255A>
+<U2518> IGNORE;IGNORE;IGNORE;<U2518>
+<U255B> IGNORE;IGNORE;IGNORE;<U255B>
+<U255C> IGNORE;IGNORE;IGNORE;<U255C>
+<U255D> IGNORE;IGNORE;IGNORE;<U255D>
+<U251C> IGNORE;IGNORE;IGNORE;<U251C>
+<U255E> IGNORE;IGNORE;IGNORE;<U255E>
+<U251E> IGNORE;IGNORE;IGNORE;<U251E>
+<U251F> IGNORE;IGNORE;IGNORE;<U251F>
+<U255F> IGNORE;IGNORE;IGNORE;<U255F>
+<U2521> IGNORE;IGNORE;IGNORE;<U2521>
+<U2522> IGNORE;IGNORE;IGNORE;<U2522>
+<U2560> IGNORE;IGNORE;IGNORE;<U2560>
+<U2524> IGNORE;IGNORE;IGNORE;<U2524>
+<U2561> IGNORE;IGNORE;IGNORE;<U2561>
+<U2526> IGNORE;IGNORE;IGNORE;<U2526>
+<U2527> IGNORE;IGNORE;IGNORE;<U2527>
+<U2562> IGNORE;IGNORE;IGNORE;<U2562>
+<U2529> IGNORE;IGNORE;IGNORE;<U2529>
+<U252A> IGNORE;IGNORE;IGNORE;<U252A>
+<U2563> IGNORE;IGNORE;IGNORE;<U2563>
+<U252C> IGNORE;IGNORE;IGNORE;<U252C>
+<U252D> IGNORE;IGNORE;IGNORE;<U252D>
+<U252E> IGNORE;IGNORE;IGNORE;<U252E>
+<U2564> IGNORE;IGNORE;IGNORE;<U2564>
+<U2565> IGNORE;IGNORE;IGNORE;<U2565>
+<U2531> IGNORE;IGNORE;IGNORE;<U2531>
+<U2532> IGNORE;IGNORE;IGNORE;<U2532>
+<U2566> IGNORE;IGNORE;IGNORE;<U2566>
+<U2534> IGNORE;IGNORE;IGNORE;<U2534>
+<U2535> IGNORE;IGNORE;IGNORE;<U2535>
+<U2536> IGNORE;IGNORE;IGNORE;<U2536>
+<U2567> IGNORE;IGNORE;IGNORE;<U2567>
+<U2568> IGNORE;IGNORE;IGNORE;<U2568>
+<U2539> IGNORE;IGNORE;IGNORE;<U2539>
+<U253A> IGNORE;IGNORE;IGNORE;<U253A>
+<U2569> IGNORE;IGNORE;IGNORE;<U2569>
+<U253C> IGNORE;IGNORE;IGNORE;<U253C>
+<U253D> IGNORE;IGNORE;IGNORE;<U253D>
+<U253E> IGNORE;IGNORE;IGNORE;<U253E>
+<U256A> IGNORE;IGNORE;IGNORE;<U256A>
+<U2540> IGNORE;IGNORE;IGNORE;<U2540>
+<U2541> IGNORE;IGNORE;IGNORE;<U2541>
+<U256B> IGNORE;IGNORE;IGNORE;<U256B>
+<U2543> IGNORE;IGNORE;IGNORE;<U2543>
+<U2544> IGNORE;IGNORE;IGNORE;<U2544>
+<U2545> IGNORE;IGNORE;IGNORE;<U2545>
+<U2546> IGNORE;IGNORE;IGNORE;<U2546>
+<U2547> IGNORE;IGNORE;IGNORE;<U2547>
+<U2548> IGNORE;IGNORE;IGNORE;<U2548>
+<U2549> IGNORE;IGNORE;IGNORE;<U2549>
+<U254A> IGNORE;IGNORE;IGNORE;<U254A>
+<U256C> IGNORE;IGNORE;IGNORE;<U256C>
+<U2571> IGNORE;IGNORE;IGNORE;<U2571>
+<U2572> IGNORE;IGNORE;IGNORE;<U2572>
+<U2580> IGNORE;IGNORE;IGNORE;<U2580>
+<U2584> IGNORE;IGNORE;IGNORE;<U2584>
+<U2588> IGNORE;IGNORE;IGNORE;<U2588>
+<U258C> IGNORE;IGNORE;IGNORE;<U258C>
+<U2590> IGNORE;IGNORE;IGNORE;<U2590>
+<U2591> IGNORE;IGNORE;IGNORE;<U2591>
+<U2592> IGNORE;IGNORE;IGNORE;<U2592>
+<U2593> IGNORE;IGNORE;IGNORE;<U2593>
+<U25A0> IGNORE;IGNORE;IGNORE;<U25A0>
+<U25A1> IGNORE;IGNORE;IGNORE;<U25A1>
+<U25A2> IGNORE;IGNORE;IGNORE;<U25A2>
+<U25A3> IGNORE;IGNORE;IGNORE;<U25A3>
+<U25A4> IGNORE;IGNORE;IGNORE;<U25A4>
+<U25A5> IGNORE;IGNORE;IGNORE;<U25A5>
+<U25A6> IGNORE;IGNORE;IGNORE;<U25A6>
+<U25A7> IGNORE;IGNORE;IGNORE;<U25A7>
+<U25A8> IGNORE;IGNORE;IGNORE;<U25A8>
+<U25A9> IGNORE;IGNORE;IGNORE;<U25A9>
+<U25AA> IGNORE;IGNORE;IGNORE;<U25AA>
+<U25AC> IGNORE;IGNORE;IGNORE;<U25AC>
+<U25AD> IGNORE;IGNORE;IGNORE;<U25AD>
+<U25B2> IGNORE;IGNORE;IGNORE;<U25B2>
+<U25B3> IGNORE;IGNORE;IGNORE;<U25B3>
+<U25B7> IGNORE;IGNORE;IGNORE;<U25B7>
+<U25BA> IGNORE;IGNORE;IGNORE;<U25BA>
+<U25BC> IGNORE;IGNORE;IGNORE;<U25BC>
+<U25BD> IGNORE;IGNORE;IGNORE;<U25BD>
+<U25C1> IGNORE;IGNORE;IGNORE;<U25C1>
+<U25C4> IGNORE;IGNORE;IGNORE;<U25C4>
+<U25C6> IGNORE;IGNORE;IGNORE;<U25C6>
+<U25C7> IGNORE;IGNORE;IGNORE;<U25C7>
+<U25CA> IGNORE;IGNORE;IGNORE;<U25CA>
+<U25CB> IGNORE;IGNORE;IGNORE;<U25CB>
+<U25CE> IGNORE;IGNORE;IGNORE;<U25CE>
+<U25CF> IGNORE;IGNORE;IGNORE;<U25CF>
+<U25D0> IGNORE;IGNORE;IGNORE;<U25D0>
+<U25D1> IGNORE;IGNORE;IGNORE;<U25D1>
+<U25D8> IGNORE;IGNORE;IGNORE;<U25D8>
+<U25D9> IGNORE;IGNORE;IGNORE;<U25D9>
+<U25E2> IGNORE;IGNORE;IGNORE;<U25E2>
+<U25E3> IGNORE;IGNORE;IGNORE;<U25E3>
+<U25EF> IGNORE;IGNORE;IGNORE;<U25EF>
+<U2605> IGNORE;IGNORE;IGNORE;<U2605>
+<U2606> IGNORE;IGNORE;IGNORE;<U2606>
+<U260E> IGNORE;IGNORE;IGNORE;<U260E>
+<U260F> IGNORE;IGNORE;IGNORE;<U260F>
+<U261C> IGNORE;IGNORE;IGNORE;<U261C>
+<U261E> IGNORE;IGNORE;IGNORE;<U261E>
+<U263A> IGNORE;IGNORE;IGNORE;<U263A>
+<U263B> IGNORE;IGNORE;IGNORE;<U263B>
+<U263C> IGNORE;IGNORE;IGNORE;<U263C>
+<U2640> IGNORE;IGNORE;IGNORE;<U2640>
+<U2642> IGNORE;IGNORE;IGNORE;<U2642>
+<U2660> IGNORE;IGNORE;IGNORE;<U2660>
+<U2661> IGNORE;IGNORE;IGNORE;<U2661>
+<U2662> IGNORE;IGNORE;IGNORE;<U2662>
+<U2663> IGNORE;IGNORE;IGNORE;<U2663>
+<U2664> IGNORE;IGNORE;IGNORE;<U2664>
+<U2665> IGNORE;IGNORE;IGNORE;<U2665>
+<U2666> IGNORE;IGNORE;IGNORE;<U2666>
+<U2667> IGNORE;IGNORE;IGNORE;<U2667>
+<U2669> IGNORE;IGNORE;IGNORE;<U2669>
+<U266A> IGNORE;IGNORE;IGNORE;<U266A>
+<U266B> IGNORE;IGNORE;IGNORE;<U266B>
+<U266C> IGNORE;IGNORE;IGNORE;<U266C>
+<U266D> IGNORE;IGNORE;IGNORE;<U266D>
+<U266E> IGNORE;IGNORE;IGNORE;<U266E>
+<U266F> IGNORE;IGNORE;IGNORE;<U266F>
+<U2713> IGNORE;IGNORE;IGNORE;<U2713>
+<U2717> IGNORE;IGNORE;IGNORE;<U2717>
+<U2720> IGNORE;IGNORE;IGNORE;<U2720>
+<U3000> IGNORE;IGNORE;IGNORE;<U3000>
+<U3001> IGNORE;IGNORE;IGNORE;<U3001>
+<U3002> IGNORE;IGNORE;IGNORE;<U3002>
+<U3003> IGNORE;IGNORE;IGNORE;<U3003>
+<U3004> IGNORE;IGNORE;IGNORE;<U3004>
+<U3005> IGNORE;IGNORE;IGNORE;<U3005>
+<U3006> IGNORE;IGNORE;IGNORE;<U3006>
+<U3007> IGNORE;IGNORE;IGNORE;<U3007>
+<U300A> IGNORE;IGNORE;IGNORE;<U300A>
+<U300B> IGNORE;IGNORE;IGNORE;<U300B>
+<U300C> IGNORE;IGNORE;IGNORE;<U300C>
+<U300D> IGNORE;IGNORE;IGNORE;<U300D>
+<U300E> IGNORE;IGNORE;IGNORE;<U300E>
+<U300F> IGNORE;IGNORE;IGNORE;<U300F>
+<U3010> IGNORE;IGNORE;IGNORE;<U3010>
+<U3011> IGNORE;IGNORE;IGNORE;<U3011>
+<U3012> IGNORE;IGNORE;IGNORE;<U3012>
+<U3013> IGNORE;IGNORE;IGNORE;<U3013>
+<U3014> IGNORE;IGNORE;IGNORE;<U3014>
+<U3015> IGNORE;IGNORE;IGNORE;<U3015>
+<U3016> IGNORE;IGNORE;IGNORE;<U3016>
+<U3017> IGNORE;IGNORE;IGNORE;<U3017>
+<U301C> IGNORE;IGNORE;IGNORE;<U301C>
+<U3020> IGNORE;IGNORE;IGNORE;<U3020>
+<U309B> IGNORE;IGNORE;IGNORE;<U309B>
+<U309C> IGNORE;IGNORE;IGNORE;<U309C>
+<U309D> IGNORE;IGNORE;IGNORE;<U309D>
+<U309E> IGNORE;IGNORE;IGNORE;<U309E>
+<U30FB> IGNORE;IGNORE;IGNORE;<U30FB>
+<U30FC> IGNORE;IGNORE;IGNORE;<U30FC>
+<U30FD> IGNORE;IGNORE;IGNORE;<U30FD>
+<U30FE> IGNORE;IGNORE;IGNORE;<U30FE>
+<U321C> IGNORE;IGNORE;IGNORE;<U321C>
+<U3220> IGNORE;IGNORE;IGNORE;<U3220>
+<U3221> IGNORE;IGNORE;IGNORE;<U3221>
+<U3222> IGNORE;IGNORE;IGNORE;<U3222>
+<U3223> IGNORE;IGNORE;IGNORE;<U3223>
+<U3224> IGNORE;IGNORE;IGNORE;<U3224>
+<U3225> IGNORE;IGNORE;IGNORE;<U3225>
+<U3226> IGNORE;IGNORE;IGNORE;<U3226>
+<U3227> IGNORE;IGNORE;IGNORE;<U3227>
+<U3228> IGNORE;IGNORE;IGNORE;<U3228>
+<U3229> IGNORE;IGNORE;IGNORE;<U3229>
+<U327F> IGNORE;IGNORE;IGNORE;<U327F>
+<U33C2> IGNORE;IGNORE;IGNORE;<U33C2>
+<U33D8> IGNORE;IGNORE;IGNORE;<U33D8>
+<U0000> IGNORE;IGNORE;IGNORE;<U0000>
+<U0001> IGNORE;IGNORE;IGNORE;<U0001>
+<U0002> IGNORE;IGNORE;IGNORE;<U0002>
+<U0003> IGNORE;IGNORE;IGNORE;<U0003>
+<U0004> IGNORE;IGNORE;IGNORE;<U0004>
+<U0005> IGNORE;IGNORE;IGNORE;<U0005>
+<U0006> IGNORE;IGNORE;IGNORE;<U0006>
+<U0007> IGNORE;IGNORE;IGNORE;<U0007>
+<U0008> IGNORE;IGNORE;IGNORE;<U0008>
+<U000E> IGNORE;IGNORE;IGNORE;<U000E>
+<U000F> IGNORE;IGNORE;IGNORE;<U000F>
+<U0010> IGNORE;IGNORE;IGNORE;<U0010>
+<U0011> IGNORE;IGNORE;IGNORE;<U0011>
+<U0012> IGNORE;IGNORE;IGNORE;<U0012>
+<U0013> IGNORE;IGNORE;IGNORE;<U0013>
+<U0014> IGNORE;IGNORE;IGNORE;<U0014>
+<U0015> IGNORE;IGNORE;IGNORE;<U0015>
+<U0016> IGNORE;IGNORE;IGNORE;<U0016>
+<U0017> IGNORE;IGNORE;IGNORE;<U0017>
+<U0018> IGNORE;IGNORE;IGNORE;<U0018>
+<U0019> IGNORE;IGNORE;IGNORE;<U0019>
+<U001A> IGNORE;IGNORE;IGNORE;<U001A>
+<U001B> IGNORE;IGNORE;IGNORE;<U001B>
+<U001C> IGNORE;IGNORE;IGNORE;<U001C>
+<U001D> IGNORE;IGNORE;IGNORE;<U001D>
+<U001E> IGNORE;IGNORE;IGNORE;<U001E>
+<U001F> IGNORE;IGNORE;IGNORE;<U001F>
+<U007F> IGNORE;IGNORE;IGNORE;<U007F>
+<U0080> IGNORE;IGNORE;IGNORE;<U0080>
+<U0081> IGNORE;IGNORE;IGNORE;<U0081>
+<U0082> IGNORE;IGNORE;IGNORE;<U0082>
+<U0083> IGNORE;IGNORE;IGNORE;<U0083>
+<U0084> IGNORE;IGNORE;IGNORE;<U0084>
+<U0085> IGNORE;IGNORE;IGNORE;<U0085>
+<U0086> IGNORE;IGNORE;IGNORE;<U0086>
+<U0087> IGNORE;IGNORE;IGNORE;<U0087>
+<U0088> IGNORE;IGNORE;IGNORE;<U0088>
+<U0089> IGNORE;IGNORE;IGNORE;<U0089>
+<U008A> IGNORE;IGNORE;IGNORE;<U008A>
+<U008B> IGNORE;IGNORE;IGNORE;<U008B>
+<U008C> IGNORE;IGNORE;IGNORE;<U008C>
+<U008D> IGNORE;IGNORE;IGNORE;<U008D>
+<U008E> IGNORE;IGNORE;IGNORE;<U008E>
+<U008F> IGNORE;IGNORE;IGNORE;<U008F>
+<U0090> IGNORE;IGNORE;IGNORE;<U0090>
+<U0091> IGNORE;IGNORE;IGNORE;<U0091>
+<U0092> IGNORE;IGNORE;IGNORE;<U0092>
+<U0093> IGNORE;IGNORE;IGNORE;<U0093>
+<U0094> IGNORE;IGNORE;IGNORE;<U0094>
+<U0095> IGNORE;IGNORE;IGNORE;<U0095>
+<U0096> IGNORE;IGNORE;IGNORE;<U0096>
+<U0097> IGNORE;IGNORE;IGNORE;<U0097>
+<U0098> IGNORE;IGNORE;IGNORE;<U0098>
+<U0099> IGNORE;IGNORE;IGNORE;<U0099>
+<U009A> IGNORE;IGNORE;IGNORE;<U009A>
+<U009B> IGNORE;IGNORE;IGNORE;<U009B>
+<U009C> IGNORE;IGNORE;IGNORE;<U009C>
+<U009D> IGNORE;IGNORE;IGNORE;<U009D>
+<U009E> IGNORE;IGNORE;IGNORE;<U009E>
+<U009F> IGNORE;IGNORE;IGNORE;<U009F>
+<UE000> IGNORE;IGNORE;IGNORE;<UE000>
+<UE001> IGNORE;IGNORE;IGNORE;<UE001>
+<UE002> IGNORE;IGNORE;IGNORE;<UE002>
+<U0301> IGNORE;IGNORE;IGNORE;<U0301>
+<UE004> IGNORE;IGNORE;IGNORE;<UE004>
+<UE005> IGNORE;IGNORE;IGNORE;<UE005>
+<UE006> IGNORE;IGNORE;IGNORE;<UE006>
+<UE007> IGNORE;IGNORE;IGNORE;<UE007>
+<UE008> IGNORE;IGNORE;IGNORE;<UE008>
+<UE009> IGNORE;IGNORE;IGNORE;<UE009>
+<UE00A> IGNORE;IGNORE;IGNORE;<UE00A>
+<UE00B> IGNORE;IGNORE;IGNORE;<UE00B>
+<UE00C> IGNORE;IGNORE;IGNORE;<UE00C>
+<UE00D> IGNORE;IGNORE;IGNORE;<UE00D>
+<UE00E> IGNORE;IGNORE;IGNORE;<UE00E>
+<UE00F> IGNORE;IGNORE;IGNORE;<UE00F>
+<"=> IGNORE;IGNORE;IGNORE;<"=>
+<UE011> IGNORE;IGNORE;IGNORE;<UE011>
+<UE012> IGNORE;IGNORE;IGNORE;<UE012>
+<UE013> IGNORE;IGNORE;IGNORE;<UE013>
+<UE014> IGNORE;IGNORE;IGNORE;<UE014>
+<UE015> IGNORE;IGNORE;IGNORE;<UE015>
+<UE017> IGNORE;IGNORE;IGNORE;<UE017>
+<UE018> IGNORE;IGNORE;IGNORE;<UE018>
+<UE019> IGNORE;IGNORE;IGNORE;<UE019>
+UNDEFINED IGNORE;IGNORE;IGNORE
+
+<U0041> <U0041>;<NONE>;<CAPITAL>;IGNORE
+<U0061> <U0041>;<NONE>;<SMALL>;IGNORE
+<U00AA> <U0041>;<NONE>;<U00AA>;IGNORE
+<U00C1> <U0041>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E1> <U0041>;<ACUTE>;<SMALL>;IGNORE
+<U00C0> <U0041>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E0> <U0041>;<GRAVE>;<SMALL>;IGNORE
+<U0200> <U0041>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0201> <U0041>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0102> <U0041>;<BREVE>;<CAPITAL>;IGNORE
+<U0103> <U0041>;<BREVE>;<SMALL>;IGNORE
+<U1EAE> <U0041>;<BREVE+ACUTE>;<CAPITAL>;IGNORE
+<U1EAF> <U0041>;<BREVE+ACUTE>;<SMALL>;IGNORE
+<U1EB0> <U0041>;<BREVE+GRAVE>;<CAPITAL>;IGNORE
+<U1EB1> <U0041>;<BREVE+GRAVE>;<SMALL>;IGNORE
+<U1EB2> <U0041>;<BREVE+HOOK>;<CAPITAL>;IGNORE
+<U1EB3> <U0041>;<BREVE+HOOK>;<SMALL>;IGNORE
+<U1EB4> <U0041>;<BREVE+TILDE>;<CAPITAL>;IGNORE
+<U1EB5> <U0041>;<BREVE+TILDE>;<SMALL>;IGNORE
+<U1EB6> <U0041>;<BREVE+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB7> <U0041>;<BREVE+DOT-BELOW>;<SMALL>;IGNORE
+<U0202> <U0041>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0203> <U0041>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00C2> <U0041>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00E2> <U0041>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EA4> <U0041>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EA5> <U0041>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EA6> <U0041>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EA7> <U0041>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EA8> <U0041>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EA9> <U0041>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EAA> <U0041>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EAB> <U0041>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EAC> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EAD> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01CD> <U0041>;<CARON>;<CAPITAL>;IGNORE
+<U01CE> <U0041>;<CARON>;<SMALL>;IGNORE
+<U1E00> <U0041>;<RING-BELOW>;<CAPITAL>;IGNORE
+<U1E01> <U0041>;<RING-BELOW>;<SMALL>;IGNORE
+<U01DE> <U0041>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01DF> <U0041>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U1EA2> <U0041>;<HOOK>;<CAPITAL>;IGNORE
+<U1EA3> <U0041>;<HOOK>;<SMALL>;IGNORE
+<U00C3> <U0041>;<TILDE>;<CAPITAL>;IGNORE
+<U00E3> <U0041>;<TILDE>;<SMALL>;IGNORE
+<U1EA0> <U0041>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EA1> <U0041>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0104> <U0041>;<OGONEK>;<CAPITAL>;IGNORE
+<U0105> <U0041>;<OGONEK>;<SMALL>;IGNORE
+<U0100> <U0041>;<MACRON>;<CAPITAL>;IGNORE
+<U0101> <U0041>;<MACRON>;<SMALL>;IGNORE
+<U01E0> <U0041>;<MACRON+DOT>;<CAPITAL>;IGNORE
+<U01E1> <U0041>;<MACRON+DOT>;<SMALL>;IGNORE
+<a8>
+<U0042> <U0042>;<NONE>;<CAPITAL>;IGNORE
+<U0062> <U0042>;<NONE>;<SMALL>;IGNORE
+<U1E02> <U0042>;<DOT>;<CAPITAL>;IGNORE
+<U1E03> <U0042>;<DOT>;<SMALL>;IGNORE
+<U1E04> <U0042>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E05> <U0042>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E06> <U0042>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E07> <U0042>;<LINE-BELOW>;<SMALL>;IGNORE
+<b8>
+<U0043> <U0043>;<NONE>;<CAPITAL>;IGNORE
+<U0063> <U0043>;<NONE>;<SMALL>;IGNORE
+<U0106> <U0043>;<ACUTE>;<CAPITAL>;IGNORE
+<U0107> <U0043>;<ACUTE>;<SMALL>;IGNORE
+<U0108> <U0043>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0109> <U0043>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U010C> <U0043>;<CARON>;<CAPITAL>;IGNORE
+<U010D> <U0043>;<CARON>;<SMALL>;IGNORE
+<U0187> <U0043>;<HOOK>;<CAPITAL>;IGNORE
+<U0188> <U0043>;<HOOK>;<SMALL>;IGNORE
+<U010A> <U0043>;<DOT>;<CAPITAL>;IGNORE
+<U010B> <U0043>;<DOT>;<SMALL>;IGNORE
+<U00C7> <U0043>;<CEDILLA>;<CAPITAL>;IGNORE
+<U00E7> <U0043>;<CEDILLA>;<SMALL>;IGNORE
+<U1E08> <U0043>;<CEDILLA+ACUTE>;<CAPITAL>;IGNORE
+<U1E09> <U0043>;<CEDILLA+ACUTE>;<SMALL>;IGNORE
+<c8>
+<U0044> <U0044>;<NONE>;<CAPITAL>;IGNORE
+<U0064> <U0044>;<NONE>;<SMALL>;IGNORE
+<U010E> <U0044>;<CARON>;<CAPITAL>;IGNORE
+<U010F> <U0044>;<CARON>;<SMALL>;IGNORE
+<U1E0A> <U0044>;<DOT>;<CAPITAL>;IGNORE
+<U1E0B> <U0044>;<DOT>;<SMALL>;IGNORE
+<U1E0C> <U0044>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E0D> <U0044>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0110> <U0044>;<STROKE>;<CAPITAL>;IGNORE
+<U0111> <U0044>;<STROKE>;<SMALL>;IGNORE
+<U1E10> <U0044>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E11> <U0044>;<CEDILLA>;<SMALL>;IGNORE
+<U1E12> <U0044>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E13> <U0044>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E0E> <U0044>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E0F> <U0044>;<LINE-BELOW>;<SMALL>;IGNORE
+<d8>
+<U0045> <U0045>;<NONE>;<CAPITAL>;IGNORE
+<U0065> <U0045>;<NONE>;<SMALL>;IGNORE
+<U00C9> <U0045>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E9> <U0045>;<ACUTE>;<SMALL>;IGNORE
+<U00C8> <U0045>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E8> <U0045>;<GRAVE>;<SMALL>;IGNORE
+<U0204> <U0045>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0205> <U0045>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0114> <U0045>;<BREVE>;<CAPITAL>;IGNORE
+<U0115> <U0045>;<BREVE>;<SMALL>;IGNORE
+<U0206> <U0045>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0207> <U0045>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CA> <U0045>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EA> <U0045>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EBE> <U0045>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EBF> <U0045>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EC0> <U0045>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EC1> <U0045>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EC2> <U0045>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EC3> <U0045>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EC4> <U0045>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EC5> <U0045>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EC6> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EC7> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U011A> <U0045>;<CARON>;<CAPITAL>;IGNORE
+<U011B> <U0045>;<CARON>;<SMALL>;IGNORE
+<U00CB> <U0045>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EB> <U0045>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EBA> <U0045>;<HOOK>;<CAPITAL>;IGNORE
+<U1EBB> <U0045>;<HOOK>;<SMALL>;IGNORE
+<U1EBC> <U0045>;<TILDE>;<CAPITAL>;IGNORE
+<U1EBD> <U0045>;<TILDE>;<SMALL>;IGNORE
+<U1E1A> <U0045>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E1B> <U0045>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0116> <U0045>;<DOT>;<CAPITAL>;IGNORE
+<U0117> <U0045>;<DOT>;<SMALL>;IGNORE
+<U1EB8> <U0045>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB9> <U0045>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E1C> <U0045>;<CEDILLA+BREVE>;<CAPITAL>;IGNORE
+<U1E1D> <U0045>;<CEDILLA+BREVE>;<SMALL>;IGNORE
+<U0118> <U0045>;<OGONEK>;<CAPITAL>;IGNORE
+<U0119> <U0045>;<OGONEK>;<SMALL>;IGNORE
+<U0112> <U0045>;<MACRON>;<CAPITAL>;IGNORE
+<U0113> <U0045>;<MACRON>;<SMALL>;IGNORE
+<U1E16> <U0045>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E17> <U0045>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E14> <U0045>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E15> <U0045>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U1E18> <U0045>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E19> <U0045>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<e8>
+<U0046> <U0046>;<NONE>;<CAPITAL>;IGNORE
+<U0066> <U0046>;<NONE>;<SMALL>;IGNORE
+<U0191> <U0046>;<HOOK>;<CAPITAL>;IGNORE
+<U0192> <U0046>;<HOOK>;<SMALL>;IGNORE
+<U1E1E> <U0046>;<DOT>;<CAPITAL>;IGNORE
+<U1E1F> <U0046>;<DOT>;<SMALL>;IGNORE
+<f8>
+<UFB00> "<U0046><U0046>";"<NONE><NONE>";"<UFB00><UFB00>";IGNORE
+<UFB01> "<U0046><U0049>";"<NONE><NONE>";"<UFB01><UFB01>";IGNORE
+<UFB02> "<U0046><U004C>";"<NONE><NONE>";"<UFB02><UFB02>";IGNORE
+<UFB03> "<U0046><U0046><U0049>";"<NONE><NONE><NONE>";"<UFB03><UFB03><UFB03>";IGNORE
+<UFB04> "<U0046><U0046><U004C>";"<NONE><NONE><NONE>";"<UFB04><UFB04><UFB04>";IGNORE
+<U0047> <U0047>;<NONE>;<CAPITAL>;IGNORE
+<U0067> <U0047>;<NONE>;<SMALL>;IGNORE
+<U01F4> <U0047>;<ACUTE>;<CAPITAL>;IGNORE
+<U01F5> <U0047>;<ACUTE>;<SMALL>;IGNORE
+<U011E> <U0047>;<BREVE>;<CAPITAL>;IGNORE
+<U011F> <U0047>;<BREVE>;<SMALL>;IGNORE
+<U011C> <U0047>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U011D> <U0047>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01E6> <U0047>;<CARON>;<CAPITAL>;IGNORE
+<U01E7> <U0047>;<CARON>;<SMALL>;IGNORE
+<U0120> <U0047>;<DOT>;<CAPITAL>;IGNORE
+<U0121> <U0047>;<DOT>;<SMALL>;IGNORE
+<U01E4> <U0047>;<STROKE>;<CAPITAL>;IGNORE
+<U01E5> <U0047>;<STROKE>;<SMALL>;IGNORE
+<U0122> <U0047>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0123> <U0047>;<CEDILLA>;<SMALL>;IGNORE
+<U1E20> <U0047>;<MACRON>;<CAPITAL>;IGNORE
+<U1E21> <U0047>;<MACRON>;<SMALL>;IGNORE
+<g8>
+<U0048> <U0048>;<NONE>;<CAPITAL>;IGNORE
+<U0068> <U0048>;<NONE>;<SMALL>;IGNORE
+<U1E2A> <U0048>;<BREVE-BELOW>;<CAPITAL>;IGNORE
+<U1E2B> <U0048>;<BREVE-BELOW>;<SMALL>;IGNORE
+<U0124> <U0048>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0125> <U0048>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E26> <U0048>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E27> <U0048>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E22> <U0048>;<DOT>;<CAPITAL>;IGNORE
+<U1E23> <U0048>;<DOT>;<SMALL>;IGNORE
+<U1E24> <U0048>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E25> <U0048>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0126> <U0048>;<STROKE>;<CAPITAL>;IGNORE
+<U0127> <U0048>;<STROKE>;<SMALL>;IGNORE
+<U1E28> <U0048>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E29> <U0048>;<CEDILLA>;<SMALL>;IGNORE
+<h8>
+<U0049> <U0049>;<NONE>;<CAPITAL>;IGNORE
+<U0069> <U0049>;<NONE>;<SMALL>;IGNORE
+<U00CD> <U0049>;<ACUTE>;<CAPITAL>;IGNORE
+<U00ED> <U0049>;<ACUTE>;<SMALL>;IGNORE
+<U00CC> <U0049>;<GRAVE>;<CAPITAL>;IGNORE
+<U00EC> <U0049>;<GRAVE>;<SMALL>;IGNORE
+<U0208> <U0049>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0209> <U0049>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U012C> <U0049>;<BREVE>;<CAPITAL>;IGNORE
+<U012D> <U0049>;<BREVE>;<SMALL>;IGNORE
+<U020A> <U0049>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020B> <U0049>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CE> <U0049>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EE> <U0049>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01CF> <U0049>;<CARON>;<CAPITAL>;IGNORE
+<U01D0> <U0049>;<CARON>;<SMALL>;IGNORE
+<U00CF> <U0049>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EF> <U0049>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E2E> <U0049>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U1E2F> <U0049>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U1EC8> <U0049>;<HOOK>;<CAPITAL>;IGNORE
+<U1EC9> <U0049>;<HOOK>;<SMALL>;IGNORE
+<U0128> <U0049>;<TILDE>;<CAPITAL>;IGNORE
+<U0129> <U0049>;<TILDE>;<SMALL>;IGNORE
+<U1E2C> <U0049>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E2D> <U0049>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0130> <U0049>;<DOT>;<CAPITAL>;IGNORE
+<U0131> <U0049>;<DOT>;<SMALL>;IGNORE
+<U1ECA> <U0049>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECB> <U0049>;<DOT-BELOW>;<SMALL>;IGNORE
+<U012E> <U0049>;<OGONEK>;<CAPITAL>;IGNORE
+<U012F> <U0049>;<OGONEK>;<SMALL>;IGNORE
+<U012A> <U0049>;<MACRON>;<CAPITAL>;IGNORE
+<U012B> <U0049>;<MACRON>;<SMALL>;IGNORE
+<i8>
+<U0132> "<U0049><U004A>";"<U0132><U0132>";"<CAPITAL><CAPITAL>";IGNORE
+<U0133> "<U0049><U004A>";"<U0132><U0132>";"<SMALL><SMALL>";IGNORE
+<U004A> <U004A>;<NONE>;<CAPITAL>;IGNORE
+<U006A> <U004A>;<NONE>;<SMALL>;IGNORE
+<U0134> <U004A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0135> <U004A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<j8>
+<U004B> <U004B>;<NONE>;<CAPITAL>;IGNORE
+<U006B> <U004B>;<NONE>;<SMALL>;IGNORE
+<U1E30> <U004B>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E31> <U004B>;<ACUTE>;<SMALL>;IGNORE
+<U01E8> <U004B>;<CARON>;<CAPITAL>;IGNORE
+<U01E9> <U004B>;<CARON>;<SMALL>;IGNORE
+<U0198> <U004B>;<HOOK>;<CAPITAL>;IGNORE
+<U0199> <U004B>;<HOOK>;<SMALL>;IGNORE
+<U1E32> <U004B>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E33> <U004B>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0136> <U004B>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0137> <U004B>;<CEDILLA>;<SMALL>;IGNORE
+<U1E34> <U004B>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E35> <U004B>;<LINE-BELOW>;<SMALL>;IGNORE
+<k8>
+<U0138> <U004B>;<U0138>;<SMALL>;IGNORE
+<U004C> <U004C>;<NONE>;<CAPITAL>;IGNORE
+<U006C> <U004C>;<NONE>;<SMALL>;IGNORE
+<U0139> <U004C>;<ACUTE>;<CAPITAL>;IGNORE
+<U013A> <U004C>;<ACUTE>;<SMALL>;IGNORE
+<U013D> <U004C>;<CARON>;<CAPITAL>;IGNORE
+<U013E> <U004C>;<CARON>;<SMALL>;IGNORE
+<U013F> <U004C>;<DOT>;<CAPITAL>;IGNORE
+<U0140> <U004C>;<DOT>;<SMALL>;IGNORE
+<U1E36> <U004C>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E37> <U004C>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0141> <U004C>;<STROKE>;<CAPITAL>;IGNORE
+<U0142> <U004C>;<STROKE>;<SMALL>;IGNORE
+<U013B> <U004C>;<CEDILLA>;<CAPITAL>;IGNORE
+<U013C> <U004C>;<CEDILLA>;<SMALL>;IGNORE
+<U1E38> <U004C>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E39> <U004C>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E3C> <U004C>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E3D> <U004C>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E3A> <U004C>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E3B> <U004C>;<LINE-BELOW>;<SMALL>;IGNORE
+<l8>
+<U004D> <U004D>;<NONE>;<CAPITAL>;IGNORE
+<U006D> <U004D>;<NONE>;<SMALL>;IGNORE
+<U1E3E> <U004D>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E3F> <U004D>;<ACUTE>;<SMALL>;IGNORE
+<U1E40> <U004D>;<DOT>;<CAPITAL>;IGNORE
+<U1E41> <U004D>;<DOT>;<SMALL>;IGNORE
+<U1E42> <U004D>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E43> <U004D>;<DOT-BELOW>;<SMALL>;IGNORE
+<m8>
+<U004E> <U004E>;<NONE>;<CAPITAL>;IGNORE
+<U006E> <U004E>;<NONE>;<SMALL>;IGNORE
+<U0143> <U004E>;<ACUTE>;<CAPITAL>;IGNORE
+<U0144> <U004E>;<ACUTE>;<SMALL>;IGNORE
+<U0147> <U004E>;<CARON>;<CAPITAL>;IGNORE
+<U0148> <U004E>;<CARON>;<SMALL>;IGNORE
+<U00D1> <U004E>;<TILDE>;<CAPITAL>;IGNORE
+<U00F1> <U004E>;<TILDE>;<SMALL>;IGNORE
+<U1E44> <U004E>;<DOT>;<CAPITAL>;IGNORE
+<U1E45> <U004E>;<DOT>;<SMALL>;IGNORE
+<U1E46> <U004E>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E47> <U004E>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0145> <U004E>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0146> <U004E>;<CEDILLA>;<SMALL>;IGNORE
+<U1E4A> <U004E>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E4B> <U004E>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E48> <U004E>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E49> <U004E>;<LINE-BELOW>;<SMALL>;IGNORE
+<U0149> <U004E>;<PRECEDED-BY-APOSTROPHE>;<SMALL>;IGNORE
+<n8>
+<U014A> "<U004E><U0047>";"<U014A><U014A>";"<CAPITAL><CAPITAL>";IGNORE
+<U014B> "<U004E><U0047>";"<U014A><U014A>";"<SMALL><SMALL>";IGNORE
+<U004F> <U004F>;<NONE>;<CAPITAL>;IGNORE
+<U006F> <U004F>;<NONE>;<SMALL>;IGNORE
+<U00BA> <U004F>;<NONE>;<U00BA>;IGNORE
+<U00D3> <U004F>;<ACUTE>;<CAPITAL>;IGNORE
+<U00F3> <U004F>;<ACUTE>;<SMALL>;IGNORE
+<U00D2> <U004F>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F2> <U004F>;<GRAVE>;<SMALL>;IGNORE
+<U020C> <U004F>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U020D> <U004F>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U014E> <U004F>;<BREVE>;<CAPITAL>;IGNORE
+<U014F> <U004F>;<BREVE>;<SMALL>;IGNORE
+<U020E> <U004F>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020F> <U004F>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00D4> <U004F>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00F4> <U004F>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1ED0> <U004F>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1ED1> <U004F>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1ED2> <U004F>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1ED3> <U004F>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1ED4> <U004F>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1ED5> <U004F>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1ED6> <U004F>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1ED7> <U004F>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1ED8> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ED9> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01D1> <U004F>;<CARON>;<CAPITAL>;IGNORE
+<U01D2> <U004F>;<CARON>;<SMALL>;IGNORE
+<U0150> <U004F>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0151> <U004F>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1ECE> <U004F>;<HOOK>;<CAPITAL>;IGNORE
+<U1ECF> <U004F>;<HOOK>;<SMALL>;IGNORE
+<U1E4C> <U004F>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E4D> <U004F>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E4E> <U004F>;<TILDE+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E4F> <U004F>;<TILDE+DIAERESIS>;<SMALL>;IGNORE
+<U1ECC> <U004F>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECD> <U004F>;<DOT-BELOW>;<SMALL>;IGNORE
+<U01EA> <U004F>;<OGONEK>;<CAPITAL>;IGNORE
+<U01EB> <U004F>;<OGONEK>;<SMALL>;IGNORE
+<U01EC> <U004F>;<OGONEK+MACRON>;<CAPITAL>;IGNORE
+<U01ED> <U004F>;<OGONEK+MACRON>;<SMALL>;IGNORE
+<U014C> <U004F>;<MACRON>;<CAPITAL>;IGNORE
+<U014D> <U004F>;<MACRON>;<SMALL>;IGNORE
+<U1E52> <U004F>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E53> <U004F>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E50> <U004F>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E51> <U004F>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U01A0> <U004F>;<HORN>;<CAPITAL>;IGNORE
+<U01A1> <U004F>;<HORN>;<SMALL>;IGNORE
+<U1EDA> <U004F>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EDB> <U004F>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EDC> <U004F>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EDD> <U004F>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EDE> <U004F>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EDF> <U004F>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EE0> <U004F>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EE1> <U004F>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EE2> <U004F>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE3> <U004F>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<o8>
+<U0152> "<U004F><U0045>";"<U0152><U0152>";"<CAPITAL><CAPITAL>";IGNORE
+<U0153> "<U004F><U0045>";"<U0152><U0152>";"<SMALL><SMALL>";IGNORE
+<U0050> <U0050>;<NONE>;<CAPITAL>;IGNORE
+<U0070> <U0050>;<NONE>;<SMALL>;IGNORE
+<U1E54> <U0050>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E55> <U0050>;<ACUTE>;<SMALL>;IGNORE
+<U1E56> <U0050>;<DOT>;<CAPITAL>;IGNORE
+<U1E57> <U0050>;<DOT>;<SMALL>;IGNORE
+<p8>
+<U0051> <U0051>;<NONE>;<CAPITAL>;IGNORE
+<U0071> <U0051>;<NONE>;<SMALL>;IGNORE
+<q8>
+<U0052> <U0052>;<NONE>;<CAPITAL>;IGNORE
+<U0072> <U0052>;<NONE>;<SMALL>;IGNORE
+<U0154> <U0052>;<ACUTE>;<CAPITAL>;IGNORE
+<U0155> <U0052>;<ACUTE>;<SMALL>;IGNORE
+<U0210> <U0052>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0211> <U0052>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0212> <U0052>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0213> <U0052>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U0158> <U0052>;<CARON>;<CAPITAL>;IGNORE
+<U0159> <U0052>;<CARON>;<SMALL>;IGNORE
+<U1E58> <U0052>;<DOT>;<CAPITAL>;IGNORE
+<U1E59> <U0052>;<DOT>;<SMALL>;IGNORE
+<U1E5A> <U0052>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5B> <U0052>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0156> <U0052>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0157> <U0052>;<CEDILLA>;<SMALL>;IGNORE
+<U1E5C> <U0052>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5D> <U0052>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E5E> <U0052>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E5F> <U0052>;<LINE-BELOW>;<SMALL>;IGNORE
+<r8>
+<U0053> <U0053>;<NONE>;<CAPITAL>;IGNORE
+<U0073> <U0053>;<NONE>;<SMALL>;IGNORE
+<UFB06> "<U0053><U0054>";"<NONE><NONE>";"<UFB06><UFB06>";IGNORE
+<U015A> <U0053>;<ACUTE>;<CAPITAL>;IGNORE
+<U015B> <U0053>;<ACUTE>;<SMALL>;IGNORE
+<U1E64> <U0053>;<ACUTE+DOT>;<CAPITAL>;IGNORE
+<U1E65> <U0053>;<ACUTE+DOT>;<SMALL>;IGNORE
+<U015C> <U0053>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U015D> <U0053>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0160> <U0053>;<CARON>;<CAPITAL>;IGNORE
+<U0161> <U0053>;<CARON>;<SMALL>;IGNORE
+<U1E66> <U0053>;<CARON+DOT>;<CAPITAL>;IGNORE
+<U1E67> <U0053>;<CARON+DOT>;<SMALL>;IGNORE
+<U1E60> <U0053>;<DOT>;<CAPITAL>;IGNORE
+<U1E61> <U0053>;<DOT>;<SMALL>;IGNORE
+<U1E62> <U0053>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E63> <U0053>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E68> <U0053>;<DOT+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E69> <U0053>;<DOT+DOT-BELOW>;<SMALL>;IGNORE
+<U015E> <U0053>;<CEDILLA>;<CAPITAL>;IGNORE
+<U015F> <U0053>;<CEDILLA>;<SMALL>;IGNORE
+<s8>
+<U017F> <U0053>;<U017F>;<SMALL>;IGNORE
+<U00DF> "<U0053><U0053>";"<NONE><NONE>";"<SMALL><U00DF>";IGNORE
+<UFB05> "<U0053><U0054>";"<NONE><NONE>";"<UFB05><UFB05>";IGNORE
+<U0054> <U0054>;<NONE>;<CAPITAL>;IGNORE
+<U0074> <U0054>;<NONE>;<SMALL>;IGNORE
+<U0164> <U0054>;<CARON>;<CAPITAL>;IGNORE
+<U0165> <U0054>;<CARON>;<SMALL>;IGNORE
+<U1E6A> <U0054>;<DOT>;<CAPITAL>;IGNORE
+<U1E6B> <U0054>;<DOT>;<SMALL>;IGNORE
+<U1E6C> <U0054>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E6D> <U0054>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0166> <U0054>;<STROKE>;<CAPITAL>;IGNORE
+<U0167> <U0054>;<STROKE>;<SMALL>;IGNORE
+<U0162> <U0054>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0163> <U0054>;<CEDILLA>;<SMALL>;IGNORE
+<U1E70> <U0054>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E71> <U0054>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E6E> <U0054>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E6F> <U0054>;<LINE-BELOW>;<SMALL>;IGNORE
+<t8>
+<U00DE> "<U0054><U0048>";"<U00DE><U00DE>";"<CAPITAL><CAPITAL>";IGNORE
+<U00FE> "<U0054><U0048>";"<U00DE><U00DE>";"<SMALL><SMALL>";IGNORE
+<U0055> <U0055>;<NONE>;<CAPITAL>;IGNORE
+<U0075> <U0055>;<NONE>;<SMALL>;IGNORE
+<U00DA> <U0055>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FA> <U0055>;<ACUTE>;<SMALL>;IGNORE
+<U00D9> <U0055>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F9> <U0055>;<GRAVE>;<SMALL>;IGNORE
+<U0214> <U0055>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0215> <U0055>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U016C> <U0055>;<BREVE>;<CAPITAL>;IGNORE
+<U016D> <U0055>;<BREVE>;<SMALL>;IGNORE
+<U0216> <U0055>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0217> <U0055>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00DB> <U0055>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00FB> <U0055>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01D3> <U0055>;<CARON>;<CAPITAL>;IGNORE
+<U01D4> <U0055>;<CARON>;<SMALL>;IGNORE
+<U016E> <U0055>;<RING>;<CAPITAL>;IGNORE
+<U016F> <U0055>;<RING>;<SMALL>;IGNORE
+<U01D5> <U0055>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01D6> <U0055>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U01D7> <U0055>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U01D8> <U0055>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U01DB> <U0055>;<DIAERESIS+GRAVE>;<CAPITAL>;IGNORE
+<U01DC> <U0055>;<DIAERESIS+GRAVE>;<SMALL>;IGNORE
+<U01D9> <U0055>;<DIAERESIS+CARON>;<CAPITAL>;IGNORE
+<U01DA> <U0055>;<DIAERESIS+CARON>;<SMALL>;IGNORE
+<U0170> <U0055>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0171> <U0055>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1EE6> <U0055>;<HOOK>;<CAPITAL>;IGNORE
+<U1EE7> <U0055>;<HOOK>;<SMALL>;IGNORE
+<U0168> <U0055>;<TILDE>;<CAPITAL>;IGNORE
+<U0169> <U0055>;<TILDE>;<SMALL>;IGNORE
+<U1E78> <U0055>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E79> <U0055>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E74> <U0055>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E75> <U0055>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U1EE4> <U0055>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE5> <U0055>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0172> <U0055>;<OGONEK>;<CAPITAL>;IGNORE
+<U0173> <U0055>;<OGONEK>;<SMALL>;IGNORE
+<U016A> <U0055>;<MACRON>;<CAPITAL>;IGNORE
+<U016B> <U0055>;<MACRON>;<SMALL>;IGNORE
+<U1E7A> <U0055>;<MACRON+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E7B> <U0055>;<MACRON+DIAERESIS>;<SMALL>;IGNORE
+<U1E72> <U0055>;<MACRON+DIAERESIS-BELOW>;<CAPITAL>;IGNORE
+<U1E73> <U0055>;<MACRON+DIAERESIS-BELOW>;<SMALL>;IGNORE
+<U1E76> <U0055>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E77> <U0055>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U01AF> <U0055>;<HORN>;<CAPITAL>;IGNORE
+<U01B0> <U0055>;<HORN>;<SMALL>;IGNORE
+<U1EE8> <U0055>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EE9> <U0055>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EEA> <U0055>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EEB> <U0055>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EEC> <U0055>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EED> <U0055>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EEE> <U0055>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EEF> <U0055>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EF0> <U0055>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF1> <U0055>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<u8>
+<v8>
+<U0056> <U0056>;<U0056>;<NONE>;<CAPITAL>
+<U0076> <U0056>;<U0056>;<NONE>;<SMALL>
+<U1E7C> <U0056>;<U0056>;<TILDE>;<CAPITAL>
+<U1E7D> <U0056>;<U0056>;<TILDE>;<SMALL>
+<U1E7E> <U0056>;<U0056>;<DOT-BELOW>;<CAPITAL>
+<U1E7F> <U0056>;<U0056>;<DOT-BELOW>;<SMALL>
+<U0057> <U0057>;<U0057>;<NONE>;<CAPITAL>
+<U0077> <U0057>;<U0057>;<NONE>;<SMALL>
+<U1E82> <U0057>;<U0057>;<ACUTE>;<CAPITAL>
+<U1E83> <U0057>;<U0057>;<ACUTE>;<SMALL>
+<U1E80> <U0057>;<U0057>;<GRAVE>;<CAPITAL>
+<U1E81> <U0057>;<U0057>;<GRAVE>;<SMALL>
+<U0174> <U0057>;<U0057>;<CIRCUMFLEX>;<CAPITAL>
+<U0175> <U0057>;<U0057>;<CIRCUMFLEX>;<SMALL>
+<U1E84> <U0057>;<U0057>;<DIAERESIS>;<CAPITAL>
+<U1E85> <U0057>;<U0057>;<DIAERESIS>;<SMALL>
+<U1E86> <U0057>;<U0057>;<DOT>;<CAPITAL>
+<U1E87> <U0057>;<U0057>;<DOT>;<SMALL>
+<U1E88> <U0057>;<U0057>;<DOT-BELOW>;<CAPITAL>
+<U1E89> <U0057>;<U0057>;<DOT-BELOW>;<SMALL>
+<w8>
+<U0058> <U0058>;<NONE>;<CAPITAL>;IGNORE
+<U0078> <U0058>;<NONE>;<SMALL>;IGNORE
+<U1E8C> <U0058>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E8D> <U0058>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E8A> <U0058>;<DOT>;<CAPITAL>;IGNORE
+<U1E8B> <U0058>;<DOT>;<SMALL>;IGNORE
+<x8>
+<U0059> <U0059>;<NONE>;<CAPITAL>;IGNORE
+<U0079> <U0059>;<NONE>;<SMALL>;IGNORE
+<U00DD> <U0059>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FD> <U0059>;<ACUTE>;<SMALL>;IGNORE
+<U1EF2> <U0059>;<GRAVE>;<CAPITAL>;IGNORE
+<U1EF3> <U0059>;<GRAVE>;<SMALL>;IGNORE
+<U0176> <U0059>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0177> <U0059>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0178> <U0059>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FF> <U0059>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EF6> <U0059>;<HOOK>;<CAPITAL>;IGNORE
+<U1EF7> <U0059>;<HOOK>;<SMALL>;IGNORE
+<U1EF8> <U0059>;<TILDE>;<CAPITAL>;IGNORE
+<U1EF9> <U0059>;<TILDE>;<SMALL>;IGNORE
+<U1E8E> <U0059>;<DOT>;<CAPITAL>;IGNORE
+<U1E8F> <U0059>;<DOT>;<SMALL>;IGNORE
+<U1EF4> <U0059>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF5> <U0059>;<DOT-BELOW>;<SMALL>;IGNORE
+<y8>
+<U00DC> <U0059>;<SPECIAL>;<CAPITAL>;IGNORE
+<U00FC> <U0059>;<SPECIAL>;<SMALL>;IGNORE
+<U005A> <U005A>;<NONE>;<CAPITAL>;IGNORE
+<U007A> <U005A>;<NONE>;<SMALL>;IGNORE
+<U0179> <U005A>;<ACUTE>;<CAPITAL>;IGNORE
+<U017A> <U005A>;<ACUTE>;<SMALL>;IGNORE
+<U1E90> <U005A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E91> <U005A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U017D> <U005A>;<CARON>;<CAPITAL>;IGNORE
+<U017E> <U005A>;<CARON>;<SMALL>;IGNORE
+<U017B> <U005A>;<DOT>;<CAPITAL>;IGNORE
+<U017C> <U005A>;<DOT>;<SMALL>;IGNORE
+<U1E92> <U005A>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E93> <U005A>;<DOT-BELOW>;<SMALL>;IGNORE
+<U01B5> <U005A>;<STROKE>;<CAPITAL>;IGNORE
+<U01B6> <U005A>;<STROKE>;<SMALL>;IGNORE
+<U1E94> <U005A>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E95> <U005A>;<LINE-BELOW>;<SMALL>;IGNORE
+<z8>
+<U00C5> <U00C5>;<NONE>;<CAPITAL>;IGNORE
+<U00E5> <U00C5>;<NONE>;<SMALL>;IGNORE
+<U01FA> <U00C5>;<ACUTE>;<CAPITAL>;IGNORE
+<U01FB> <U00C5>;<ACUTE>;<SMALL>;IGNORE
+<U00C4> <U00C4>;<NONE>;<CAPITAL>;IGNORE
+<U00E4> <U00C4>;<NONE>;<SMALL>;IGNORE
+<U00C6> <U00C4>;<U00C6>;<CAPITAL>;IGNORE
+<U00E6> <U00C4>;<U00C6>;<SMALL>;IGNORE
+<U01FC> <U00C4>;<U01FC>;<CAPITAL>;IGNORE
+<U01FD> <U00C4>;<U01FC>;<SMALL>;IGNORE
+<U01E2> <U00C4>;<U01E2>;<CAPITAL>;IGNORE
+<U01E3> <U00C4>;<U01E2>;<SMALL>;IGNORE
+<U00D6> <U00D6>;<NONE>;<CAPITAL>;IGNORE
+<U00F6> <U00D6>;<NONE>;<SMALL>;IGNORE
+<U00D8> <U00D6>;<U00D8>;<CAPITAL>;IGNORE
+<U00F8> <U00D6>;<U00D8>;<SMALL>;IGNORE
+<U01FE> <U00D6>;<U01FE>;<CAPITAL>;IGNORE
+<U01FF> <U00D6>;<U01FE>;<SMALL>;IGNORE
+<U00D5> <U00D6>;<TILDE>;<CAPITAL>;IGNORE
+<U00F5> <U00D6>;<TILDE>;<SMALL>;IGNORE
+<U0391> <U0391>;<CAPITAL>;<GREEK>;IGNORE
+<U0386> <U0391>;<CAPITAL>;<TONOS>;IGNORE
+<U03B1> <U0391>;<SMALL>;<GREEK>;IGNORE
+<U03AC> <U0391>;<SMALL>;<TONOS>;IGNORE
+<U0392> <U0392>;<CAPITAL>;<GREEK>;IGNORE
+<U03B2> <U0392>;<SMALL>;<GREEK>;IGNORE
+<U0393> <U0393>;<CAPITAL>;<GREEK>;IGNORE
+<U03B3> <U0393>;<SMALL>;<GREEK>;IGNORE
+<U0394> <U0394>;<CAPITAL>;<GREEK>;IGNORE
+<U03B4> <U0394>;<SMALL>;<GREEK>;IGNORE
+<U0395> <U0395>;<CAPITAL>;<GREEK>;IGNORE
+<U0388> <U0395>;<CAPITAL>;<TONOS>;IGNORE
+<U03B5> <U0395>;<SMALL>;<GREEK>;IGNORE
+<U03AD> <U0395>;<SMALL>;<TONOS>;IGNORE
+<U0396> <U0396>;<CAPITAL>;<GREEK>;IGNORE
+<U03B6> <U0396>;<SMALL>;<GREEK>;IGNORE
+<U0397> <U0397>;<CAPITAL>;<GREEK>;IGNORE
+<U0389> <U0397>;<CAPITAL>;<TONOS>;IGNORE
+<U03B7> <U0397>;<SMALL>;<GREEK>;IGNORE
+<U03AE> <U0397>;<SMALL>;<TONOS>;IGNORE
+<U0398> <U0398>;<CAPITAL>;<GREEK>;IGNORE
+<U03B8> <U0398>;<SMALL>;<GREEK>;IGNORE
+<U0399> <U0399>;<CAPITAL>;<GREEK>;IGNORE
+<U038A> <U0399>;<CAPITAL>;<TONOS>;IGNORE
+<U03AA> <U0399>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03B9> <U0399>;<SMALL>;<GREEK>;IGNORE
+<U03AF> <U0399>;<SMALL>;<TONOS>;IGNORE
+<U03CA> <U0399>;<SMALL>;<DIALYTICA>;IGNORE
+<U0390> <U0399>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U039A> <U039A>;<CAPITAL>;<GREEK>;IGNORE
+<U03BA> <U039A>;<SMALL>;<GREEK>;IGNORE
+<U039B> <U039B>;<CAPITAL>;<GREEK>;IGNORE
+<U03BB> <U039B>;<SMALL>;<GREEK>;IGNORE
+<U039C> <U039C>;<CAPITAL>;<GREEK>;IGNORE
+<U03BC> <U039C>;<SMALL>;<GREEK>;IGNORE
+<U039D> <U039D>;<CAPITAL>;<GREEK>;IGNORE
+<U03BD> <U039D>;<SMALL>;<GREEK>;IGNORE
+<U039E> <U039E>;<CAPITAL>;<GREEK>;IGNORE
+<U03BE> <U039E>;<SMALL>;<GREEK>;IGNORE
+<U039F> <U039F>;<CAPITAL>;<GREEK>;IGNORE
+<U038C> <U039F>;<CAPITAL>;<TONOS>;IGNORE
+<U03BF> <U039F>;<SMALL>;<GREEK>;IGNORE
+<U03CC> <U039F>;<SMALL>;<TONOS>;IGNORE
+<U03A0> <U03A0>;<CAPITAL>;<GREEK>;IGNORE
+<U03C0> <U03A0>;<SMALL>;<GREEK>;IGNORE
+<U03A1> <U03A1>;<CAPITAL>;<GREEK>;IGNORE
+<U03C1> <U03A1>;<SMALL>;<GREEK>;IGNORE
+<U03A3> <U03A3>;<CAPITAL>;<GREEK>;IGNORE
+<U03C3> <U03A3>;<SMALL>;<GREEK>;IGNORE
+<U03C2> <U03A3>;<SMALL>;<U03C2>;IGNORE
+<U03A4> <U03A4>;<CAPITAL>;<GREEK>;IGNORE
+<U03C4> <U03A4>;<SMALL>;<GREEK>;IGNORE
+<U03A5> <U03A5>;<CAPITAL>;<GREEK>;IGNORE
+<U038E> <U03A5>;<CAPITAL>;<TONOS>;IGNORE
+<U03AB> <U03A5>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03C5> <U03A5>;<SMALL>;<GREEK>;IGNORE
+<U03CD> <U03A5>;<SMALL>;<TONOS>;IGNORE
+<U03CB> <U03A5>;<SMALL>;<DIALYTICA>;IGNORE
+<U03B0> <U03A5>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U03A6> <U03A6>;<CAPITAL>;<GREEK>;IGNORE
+<U03C6> <U03A6>;<SMALL>;<GREEK>;IGNORE
+<U03A7> <U03A7>;<CAPITAL>;<GREEK>;IGNORE
+<U03C7> <U03A7>;<SMALL>;<GREEK>;IGNORE
+<U03A8> <U03A8>;<CAPITAL>;<GREEK>;IGNORE
+<U03C8> <U03A8>;<SMALL>;<GREEK>;IGNORE
+<U03A9> <U03A9>;<CAPITAL>;<GREEK>;IGNORE
+<U038F> <U03A9>;<CAPITAL>;<TONOS>;IGNORE
+<U03C9> <U03A9>;<SMALL>;<GREEK>;IGNORE
+<U03CE> <U03A9>;<SMALL>;<TONOS>;IGNORE
+<U0410> <U0410>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0430> <U0410>;<CYRILLIC>;<SMALL>;IGNORE
+<U0411> <U0411>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0431> <U0411>;<CYRILLIC>;<SMALL>;IGNORE
+<U0412> <U0412>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0432> <U0412>;<CYRILLIC>;<SMALL>;IGNORE
+<U0413> <U0413>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0433> <U0413>;<CYRILLIC>;<SMALL>;IGNORE
+<U0403> <U0403>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0453> <U0403>;<CYRILLIC>;<SMALL>;IGNORE
+<U0490> <U0490>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0491> <U0490>;<CYRILLIC>;<SMALL>;IGNORE
+<U0414> <U0414>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0434> <U0414>;<CYRILLIC>;<SMALL>;IGNORE
+<U0402> <U0402>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0452> <U0402>;<CYRILLIC>;<SMALL>;IGNORE
+<U0415> <U0415>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0435> <U0415>;<CYRILLIC>;<SMALL>;IGNORE
+<U0401> <U0401>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0451> <U0401>;<CYRILLIC>;<SMALL>;IGNORE
+<U0404> <U0404>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0454> <U0404>;<CYRILLIC>;<SMALL>;IGNORE
+<U0416> <U0416>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0436> <U0416>;<CYRILLIC>;<SMALL>;IGNORE
+<U0417> <U0417>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0437> <U0417>;<CYRILLIC>;<SMALL>;IGNORE
+<U0418> <U0418>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0438> <U0418>;<CYRILLIC>;<SMALL>;IGNORE
+<U0406> <U0406>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0456> <U0406>;<CYRILLIC>;<SMALL>;IGNORE
+<U0407> <U0407>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0457> <U0407>;<CYRILLIC>;<SMALL>;IGNORE
+<U0408> <U0408>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0458> <U0408>;<CYRILLIC>;<SMALL>;IGNORE
+<U0419> <U0419>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0439> <U0419>;<CYRILLIC>;<SMALL>;IGNORE
+<U041A> <U041A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043A> <U041A>;<CYRILLIC>;<SMALL>;IGNORE
+<U040C> <U040C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045C> <U040C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041B> <U041B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043B> <U041B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0409> <U0409>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0459> <U0409>;<CYRILLIC>;<SMALL>;IGNORE
+<U041C> <U041C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043C> <U041C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041D> <U041D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043D> <U041D>;<CYRILLIC>;<SMALL>;IGNORE
+<U040A> <U040A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045A> <U040A>;<CYRILLIC>;<SMALL>;IGNORE
+<U041E> <U041E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043E> <U041E>;<CYRILLIC>;<SMALL>;IGNORE
+<U041F> <U041F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043F> <U041F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0420> <U0420>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0440> <U0420>;<CYRILLIC>;<SMALL>;IGNORE
+<U0421> <U0421>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0441> <U0421>;<CYRILLIC>;<SMALL>;IGNORE
+<U0422> <U0422>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0442> <U0422>;<CYRILLIC>;<SMALL>;IGNORE
+<U040B> <U040B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045B> <U040B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0423> <U0423>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0443> <U0423>;<CYRILLIC>;<SMALL>;IGNORE
+<U040E> <U040E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045E> <U040E>;<CYRILLIC>;<SMALL>;IGNORE
+<U0424> <U0424>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0444> <U0424>;<CYRILLIC>;<SMALL>;IGNORE
+<U0425> <U0425>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0445> <U0425>;<CYRILLIC>;<SMALL>;IGNORE
+<U0426> <U0426>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0446> <U0426>;<CYRILLIC>;<SMALL>;IGNORE
+<U0405> <U0405>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0455> <U0405>;<CYRILLIC>;<SMALL>;IGNORE
+<U0427> <U0427>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0447> <U0427>;<CYRILLIC>;<SMALL>;IGNORE
+<U040F> <U040F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045F> <U040F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0428> <U0428>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0448> <U0428>;<CYRILLIC>;<SMALL>;IGNORE
+<U0429> <U0429>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0449> <U0429>;<CYRILLIC>;<SMALL>;IGNORE
+<U044A> <U044A>;<CYRILLIC>;<SMALL>;IGNORE
+<U042A> <U044A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042B> <U042B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044B> <U042B>;<CYRILLIC>;<SMALL>;IGNORE
+<U044C> <U044C>;<CYRILLIC>;<SMALL>;IGNORE
+<U042C> <U044C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042D> <U042D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044D> <U042D>;<CYRILLIC>;<SMALL>;IGNORE
+<U042E> <U042E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044E> <U042E>;<CYRILLIC>;<SMALL>;IGNORE
+<U042F> <U042F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044F> <U042F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0462> <U0462>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0463> <U0462>;<CYRILLIC>;<SMALL>;IGNORE
+<U046A> <U046A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U046B> <U046A>;<CYRILLIC>;<SMALL>;IGNORE
+<U0472> <U0472>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0473> <U0472>;<CYRILLIC>;<SMALL>;IGNORE
+<U0474> <U0474>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0475> <U0474>;<CYRILLIC>;<SMALL>;IGNORE
+<U0480> <U0480>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0481> <U0480>;<CYRILLIC>;<SMALL>;IGNORE
+<U05D0> <U05D0>;IGNORE;IGNORE;IGNORE
+<U05D1> <U05D1>;IGNORE;IGNORE;IGNORE
+<U05D2> <U05D2>;IGNORE;IGNORE;IGNORE
+<U05D3> <U05D3>;IGNORE;IGNORE;IGNORE
+<U05D4> <U05D4>;IGNORE;IGNORE;IGNORE
+<U05D5> <U05D5>;IGNORE;IGNORE;IGNORE
+<U05D6> <U05D6>;IGNORE;IGNORE;IGNORE
+<U05D7> <U05D7>;IGNORE;IGNORE;IGNORE
+<U05D8> <U05D8>;IGNORE;IGNORE;IGNORE
+<U05D9> <U05D9>;IGNORE;IGNORE;IGNORE
+<U05DA> <U05DA>;IGNORE;IGNORE;IGNORE
+<U05DB> <U05DB>;IGNORE;IGNORE;IGNORE
+<U05DC> <U05DC>;IGNORE;IGNORE;IGNORE
+<U05DD> <U05DD>;IGNORE;IGNORE;IGNORE
+<U05DE> <U05DE>;IGNORE;IGNORE;IGNORE
+<U05DF> <U05DF>;IGNORE;IGNORE;IGNORE
+<U05E0> <U05E0>;IGNORE;IGNORE;IGNORE
+<U05E1> <U05E1>;IGNORE;IGNORE;IGNORE
+<U05E2> <U05E2>;IGNORE;IGNORE;IGNORE
+<U05E3> <U05E3>;IGNORE;IGNORE;IGNORE
+<U05E4> <U05E4>;IGNORE;IGNORE;IGNORE
+<U05E5> <U05E5>;IGNORE;IGNORE;IGNORE
+<U05E6> <U05E6>;IGNORE;IGNORE;IGNORE
+<U05E7> <U05E7>;IGNORE;IGNORE;IGNORE
+<U05E8> <U05E8>;IGNORE;IGNORE;IGNORE
+<U05E9> <U05E9>;IGNORE;IGNORE;IGNORE
+<U05EA> <U05EA>;IGNORE;IGNORE;IGNORE
+
+% Arabic collating
+
+<U060C> IGNORE;IGNORE;IGNORE;<U060C>
+<U061B> IGNORE;IGNORE;IGNORE;<U061B>
+<U061F> IGNORE;IGNORE;IGNORE;<U061F>
+<U0640> IGNORE;IGNORE;IGNORE;<U0640>
+
+<U0621> <U0621>;<U0621>;IGNORE;IGNORE
+<U0622> <U0622>;<U0622>;IGNORE;IGNORE
+<UFE82> <U0622>;<UFE82>;IGNORE;IGNORE
+<U0623> <U0621>;<U0623>;IGNORE;IGNORE
+<UFE84> <U0621>;<UFE84>;IGNORE;IGNORE
+<U0624> <U0621>;<U0624>;IGNORE;IGNORE
+<U0625> <U0621>;<U0625>;IGNORE;IGNORE
+<UFE88> <U0621>;<UFE88>;IGNORE;IGNORE
+<U0626> <U0621>;<U0626>;IGNORE;IGNORE
+<U0670> <U0670>;<U0670>;IGNORE;IGNORE
+<U0627> <U0627>;<U0627>;IGNORE;IGNORE
+<UFE8D> <U0627>;<UFE8D>;IGNORE;IGNORE
+<UFE8E> <U0627>;<UFE8E>;IGNORE;IGNORE
+<UE016> <U0627>;<UE016>;IGNORE;IGNORE
+<U0628> <U0628>;<U0628>;IGNORE;IGNORE
+<UFE8F> <U0628>;<UFE8F>;IGNORE;IGNORE
+<UFE90> <U0628>;<UFE90>;IGNORE;IGNORE
+<UFE91> <U0628>;<UFE91>;IGNORE;IGNORE
+<UFE92> <U0628>;<UFE92>;IGNORE;IGNORE
+<U067E> <U067E>;<U067E>;IGNORE;IGNORE
+<U06A4> <U06A4>;<U06A4>;IGNORE;IGNORE
+<U0629> <U0629>;<U0629>;IGNORE;IGNORE
+<UFE93> <U0629>;<UFE93>;IGNORE;IGNORE
+<UFE94> <U0629>;<UFE94>;IGNORE;IGNORE
+<U062A> <U0629>;<U062A>;IGNORE;IGNORE
+<UFE95> <U0629>;<UFE95>;IGNORE;IGNORE
+<UFE96> <U0629>;<UFE96>;IGNORE;IGNORE
+<UFE97> <U0629>;<UFE97>;IGNORE;IGNORE
+<UFE98> <U0629>;<UFE98>;IGNORE;IGNORE
+<U062B> <U062B>;<U062B>;IGNORE;IGNORE
+<UFE99> <U062B>;<UFE99>;IGNORE;IGNORE
+<UFE9A> <U062B>;<UFE9A>;IGNORE;IGNORE
+<UFE9B> <U062B>;<UFE9B>;IGNORE;IGNORE
+<UFE9C> <U062B>;<UFE9C>;IGNORE;IGNORE
+<U062C> <U062C>;<U062C>;IGNORE;IGNORE
+<UFE9D> <U062C>;<UFE9D>;IGNORE;IGNORE
+<UFE9E> <U062C>;<UFE9E>;IGNORE;IGNORE
+<UFE9F> <U062C>;<UFE9F>;IGNORE;IGNORE
+<UFEA0> <U062C>;<UFEA0>;IGNORE;IGNORE
+<U062D> <U062D>;<U062D>;IGNORE;IGNORE
+<UFEA1> <U062D>;<UFEA1>;IGNORE;IGNORE
+<UFEA2> <U062D>;<UFEA2>;IGNORE;IGNORE
+<UFEA3> <U062D>;<UFEA3>;IGNORE;IGNORE
+<UFEA4> <U062D>;<UFEA4>;IGNORE;IGNORE
+<U062E> <U062E>;<U062E>;IGNORE;IGNORE
+<UFEA5> <U062E>;<UFEA5>;IGNORE;IGNORE
+<UFEA6> <U062E>;<UFEA6>;IGNORE;IGNORE
+<UFEA7> <U062E>;<UFEA7>;IGNORE;IGNORE
+<UFEA8> <U062E>;<UFEA8>;IGNORE;IGNORE
+<U062F> <U062F>;<U062F>;IGNORE;IGNORE
+<UFEA9> <U062F>;<UFEA9>;IGNORE;IGNORE
+<UFEAA> <U062F>;<UFEAA>;IGNORE;IGNORE
+<U0630> <U0630>;<U0630>;IGNORE;IGNORE
+<UFEAB> <U0630>;<UFEAB>;IGNORE;IGNORE
+<UFEAC> <U0630>;<UFEAC>;IGNORE;IGNORE
+<U0631> <U0631>;<U0631>;IGNORE;IGNORE
+<UFEAD> <U0631>;<UFEAD>;IGNORE;IGNORE
+<UFEAE> <U0631>;<UFEAE>;IGNORE;IGNORE
+<U0632> <U0632>;<U0632>;IGNORE;IGNORE
+<UFEAF> <U0632>;<UFEAF>;IGNORE;IGNORE
+<UFEB0> <U0632>;<UFEB0>;IGNORE;IGNORE
+<U0633> <U0633>;<U0633>;IGNORE;IGNORE
+<UFEB1> <U0633>;<UFEB1>;IGNORE;IGNORE
+<UFEB2> <U0633>;<UFEB2>;IGNORE;IGNORE
+<UFEB3> <U0633>;<UFEB3>;IGNORE;IGNORE
+<UFEB4> <U0633>;<UFEB4>;IGNORE;IGNORE
+<U0634> <U0634>;<U0634>;IGNORE;IGNORE
+<UFEB5> <U0634>;<UFEB5>;IGNORE;IGNORE
+<UFEB6> <U0634>;<UFEB6>;IGNORE;IGNORE
+<UFEB7> <U0634>;<UFEB7>;IGNORE;IGNORE
+<UFEB8> <U0634>;<UFEB8>;IGNORE;IGNORE
+<U0635> <U0635>;<U0635>;IGNORE;IGNORE
+<UFEB9> <U0635>;<UFEB9>;IGNORE;IGNORE
+<UFEBA> <U0635>;<UFEBA>;IGNORE;IGNORE
+<UFEBB> <U0635>;<UFEBB>;IGNORE;IGNORE
+<UFEBC> <U0635>;<UFEBC>;IGNORE;IGNORE
+<U0636> <U0636>;<U0636>;IGNORE;IGNORE
+<UFEBD> <U0636>;<UFEBD>;IGNORE;IGNORE
+<UFEBE> <U0636>;<UFEBE>;IGNORE;IGNORE
+<UFEBF> <U0636>;<UFEBF>;IGNORE;IGNORE
+<UFEC0> <U0636>;<UFEC0>;IGNORE;IGNORE
+<U0637> <U0637>;<U0637>;IGNORE;IGNORE
+<UFEC1> <U0637>;<UFEC1>;IGNORE;IGNORE
+<UFEC2> <U0637>;<UFEC2>;IGNORE;IGNORE
+<UFEC3> <U0637>;<UFEC3>;IGNORE;IGNORE
+<UFEC4> <U0637>;<UFEC4>;IGNORE;IGNORE
+<U0638> <U0638>;<U0638>;IGNORE;IGNORE
+<UFEC5> <U0638>;<UFEC5>;IGNORE;IGNORE
+<UFEC6> <U0638>;<UFEC6>;IGNORE;IGNORE
+<UFEC7> <U0638>;<UFEC7>;IGNORE;IGNORE
+<UFEC8> <U0638>;<UFEC8>;IGNORE;IGNORE
+<U0639> <U0639>;<U0639>;IGNORE;IGNORE
+<UFEC9> <U0639>;<UFEC9>;IGNORE;IGNORE
+<UFECA> <U0639>;<UFECA>;IGNORE;IGNORE
+<UFECB> <U0639>;<UFECB>;IGNORE;IGNORE
+<UFECC> <U0639>;<UFECC>;IGNORE;IGNORE
+<U063A> <U063A>;<U063A>;IGNORE;IGNORE
+<UFECD> <U063A>;<UFECD>;IGNORE;IGNORE
+<UFECE> <U063A>;<UFECE>;IGNORE;IGNORE
+<UFECF> <U063A>;<UFECF>;IGNORE;IGNORE
+<UFED0> <U063A>;<UFED0>;IGNORE;IGNORE
+<U0641> <U0641>;<U0641>;IGNORE;IGNORE
+<UFED1> <U0641>;<UFED1>;IGNORE;IGNORE
+<UFED2> <U0641>;<UFED2>;IGNORE;IGNORE
+<UFED3> <U0641>;<UFED3>;IGNORE;IGNORE
+<UFED4> <U0641>;<UFED4>;IGNORE;IGNORE
+<U0642> <U0642>;<U0642>;IGNORE;IGNORE
+<UFED5> <U0642>;<UFED5>;IGNORE;IGNORE
+<UFED6> <U0642>;<UFED6>;IGNORE;IGNORE
+<UFED7> <U0642>;<UFED7>;IGNORE;IGNORE
+<UFED8> <U0642>;<UFED8>;IGNORE;IGNORE
+<U0643> <U0643>;<U0643>;IGNORE;IGNORE
+<UFED9> <U0643>;<UFED9>;IGNORE;IGNORE
+<UFEDA> <U0643>;<UFEDA>;IGNORE;IGNORE
+<UFEDB> <U0643>;<UFEDB>;IGNORE;IGNORE
+<UFEDC> <U0643>;<UFEDC>;IGNORE;IGNORE
+<U0644> <U0644>;<U0644>;IGNORE;IGNORE
+<UFEDD> <U0644>;<UFEDD>;IGNORE;IGNORE
+<UFEDE> <U0644>;<UFEDE>;IGNORE;IGNORE
+<UFEDF> <U0644>;<UFEDF>;IGNORE;IGNORE
+<UFEE0> <U0644>;<UFEE0>;IGNORE;IGNORE
+<U0645> <U0645>;<U0645>;IGNORE;IGNORE
+<UFEE1> <U0645>;<UFEE1>;IGNORE;IGNORE
+<UFEE2> <U0645>;<UFEE2>;IGNORE;IGNORE
+<UFEE3> <U0645>;<UFEE3>;IGNORE;IGNORE
+<UFEE4> <U0645>;<UFEE4>;IGNORE;IGNORE
+<U0646> <U0646>;<U0646>;IGNORE;IGNORE
+<UFEE5> <U0646>;<UFEE5>;IGNORE;IGNORE
+<UFEE6> <U0646>;<UFEE6>;IGNORE;IGNORE
+<UFEE7> <U0646>;<UFEE7>;IGNORE;IGNORE
+<UFEE8> <U0646>;<UFEE8>;IGNORE;IGNORE
+<U0647> <U0647>;<U0647>;IGNORE;IGNORE
+<UFEE9> <U0647>;<UFEE9>;IGNORE;IGNORE
+<UFEEA> <U0647>;<UFEEA>;IGNORE;IGNORE
+<UFEEB> <U0647>;<UFEEB>;IGNORE;IGNORE
+<UFEEC> <U0647>;<UFEEC>;IGNORE;IGNORE
+<U0648> <U0648>;<U0648>;IGNORE;IGNORE
+<UFEED> <U0648>;<UFEED>;IGNORE;IGNORE
+<UFEEE> <U0648>;<UFEEE>;IGNORE;IGNORE
+<U0649> <U0649>;<U0649>;IGNORE;IGNORE
+<UFEEF> <U0649>;<UFEEF>;IGNORE;IGNORE
+<UFEF0> <U0649>;<UFEF0>;IGNORE;IGNORE
+<U064A> <U064A>;<U064A>;IGNORE;IGNORE
+<UFEF1> <U064A>;<UFEF1>;IGNORE;IGNORE
+<UFEF2> <U064A>;<UFEF2>;IGNORE;IGNORE
+<UFEF3> <U064A>;<UFEF3>;IGNORE;IGNORE
+<UFEF4> <U064A>;<UFEF4>;IGNORE;IGNORE
+
+<U064B> IGNORE;IGNORE;<U064B>;IGNORE
+<U064C> IGNORE;IGNORE;<U064C>;IGNORE
+<U064D> IGNORE;IGNORE;<U064D>;IGNORE
+<U064E> IGNORE;IGNORE;<U064E>;IGNORE
+<U064F> IGNORE;IGNORE;<U064F>;IGNORE
+<U0650> IGNORE;IGNORE;<U0650>;IGNORE
+<U0651> IGNORE;IGNORE;<U0651>;IGNORE
+<UFE7D> IGNORE;IGNORE;<UFE7D>;IGNORE
+<U0652> IGNORE;IGNORE;<U0652>;IGNORE
+
+<U0660> <U0030>;<U0660>;IGNORE;IGNORE
+<U0661> <U0031>;<U0661>;IGNORE;IGNORE
+<U0662> <U0032>;<U0662>;IGNORE;IGNORE
+<U0663> <U0033>;<U0663>;IGNORE;IGNORE
+<U0664> <U0034>;<U0664>;IGNORE;IGNORE
+<U0665> <U0035>;<U0665>;IGNORE;IGNORE
+<U0666> <U0036>;<U0666>;IGNORE;IGNORE
+<U0667> <U0037>;<U0667>;IGNORE;IGNORE
+<U0668> <U0038>;<U0668>;IGNORE;IGNORE
+<U0669> <U0039>;<U0669>;IGNORE;IGNORE
+
+<UFEF5> "<U0644><U0622>";"<U0644><U0622>";"<UFEF5><UFEF5>";IGNORE
+<UFEF6> "<U0644><U0622>";"<U0644><UFE82>";"<UFEF6><UFEF6>";IGNORE
+<UFEF7> "<U0644><U0623>";"<U0644><U0623>";"<UFEF7><UFEF7>";IGNORE
+<UFEF8> "<U0644><U0623>";"<U0644><UFE84>";"<UFEF8><UFEF8>";IGNORE
+<UFEF9> "<U0644><U0625>";"<U0644><U0625>";"<UFEF9><UFEF9>";IGNORE
+<UFEFA> "<U0644><U0625>";"<U0644><UFE88>";"<UFEFA><UFEFA>";IGNORE
+<UFEFB> "<U0644><U0627>";"<U0644><UFE8D>";"<UFEFB><UFEFB>";IGNORE
+<UFEFC> "<U0644><U0627>";"<U0644><UFE8E>";"<UFEFC><UFEFC>";IGNORE
+
+% katakana/hiragana sorting
+% base is katakana, as this is present in most charsets
+% normal before voiced before semi-voiced
+% small vocals before normal vocals
+% katakana before hiragana
+
+<U30A1> <U30A1>;<U30A1>;IGNORE;IGNORE
+<U3041> <U30A1>;<U3041>;IGNORE;IGNORE
+<U30A2> <U30A1>;<U30A2>;IGNORE;IGNORE
+<U3042> <U30A1>;<U3042>;IGNORE;IGNORE
+<U30A3> <U30A3>;<U30A3>;IGNORE;IGNORE
+<U3043> <U30A3>;<U3043>;IGNORE;IGNORE
+<U30A4> <U30A3>;<U30A4>;IGNORE;IGNORE
+<U3044> <U30A3>;<U3044>;IGNORE;IGNORE
+<U30A5> <U30A5>;<U30A5>;IGNORE;IGNORE
+<U3045> <U30A5>;<U3045>;IGNORE;IGNORE
+<U30A6> <U30A5>;<U30A6>;IGNORE;IGNORE
+<U3046> <U30A5>;<U3046>;IGNORE;IGNORE
+<U30F4> <U30A5>;<U30F4>;IGNORE;IGNORE
+<U30A7> <U30A7>;<U30A7>;IGNORE;IGNORE
+<U3047> <U30A7>;<U3047>;IGNORE;IGNORE
+<U30A8> <U30A7>;<U30A8>;IGNORE;IGNORE
+<U3048> <U30A7>;<U3048>;IGNORE;IGNORE
+<U30A9> <U30A9>;<U30A9>;IGNORE;IGNORE
+<U3049> <U30A9>;<U3049>;IGNORE;IGNORE
+<U30AA> <U30A9>;<U30AA>;IGNORE;IGNORE
+<U304A> <U30A9>;<U304A>;IGNORE;IGNORE
+<U30F5> <U30F5>;<U30F5>;IGNORE;IGNORE
+<U30AB> <U30F5>;<U30AB>;IGNORE;IGNORE
+<U304B> <U30F5>;<U304B>;IGNORE;IGNORE
+<U30AC> <U30F5>;<U30AC>;IGNORE;IGNORE
+<U304C> <U30F5>;<U304C>;IGNORE;IGNORE
+<U30AD> <U30AD>;<U30AD>;IGNORE;IGNORE
+<U304D> <U30AD>;<U304D>;IGNORE;IGNORE
+<U30AE> <U30AD>;<U30AE>;IGNORE;IGNORE
+<U304E> <U30AD>;<U304E>;IGNORE;IGNORE
+<U30AF> <U30AF>;<U30AF>;IGNORE;IGNORE
+<U304F> <U30AF>;<U304F>;IGNORE;IGNORE
+<U30B0> <U30AF>;<U30B0>;IGNORE;IGNORE
+<U3050> <U30AF>;<U3050>;IGNORE;IGNORE
+<U30F6> <U30F6>;<U30F6>;IGNORE;IGNORE
+<U30B1> <U30F6>;<U30B1>;IGNORE;IGNORE
+<U3051> <U30F6>;<U3051>;IGNORE;IGNORE
+<U30B2> <U30F6>;<U30B2>;IGNORE;IGNORE
+<U3052> <U30F6>;<U3052>;IGNORE;IGNORE
+<U30B3> <U30B3>;<U30B3>;IGNORE;IGNORE
+<U3053> <U30B3>;<U3053>;IGNORE;IGNORE
+<U30B4> <U30B3>;<U30B4>;IGNORE;IGNORE
+<U3054> <U30B3>;<U3054>;IGNORE;IGNORE
+<U30B5> <U30B5>;<U30B5>;IGNORE;IGNORE
+<U3055> <U30B5>;<U3055>;IGNORE;IGNORE
+<U30B6> <U30B5>;<U30B6>;IGNORE;IGNORE
+<U3056> <U30B5>;<U3056>;IGNORE;IGNORE
+<U30B7> <U30B7>;<U30B7>;IGNORE;IGNORE
+<U3057> <U30B7>;<U3057>;IGNORE;IGNORE
+<U30B8> <U30B7>;<U30B8>;IGNORE;IGNORE
+<U3058> <U30B7>;<U3058>;IGNORE;IGNORE
+<U30B9> <U30B9>;<U30B9>;IGNORE;IGNORE
+<U3059> <U30B9>;<U3059>;IGNORE;IGNORE
+<U30BA> <U30B9>;<U30BA>;IGNORE;IGNORE
+<U305A> <U30B9>;<U305A>;IGNORE;IGNORE
+<U30BB> <U30BB>;<U30BB>;IGNORE;IGNORE
+<U305B> <U30BB>;<U305B>;IGNORE;IGNORE
+<U30BC> <U30BB>;<U30BC>;IGNORE;IGNORE
+<U305C> <U30BB>;<U305C>;IGNORE;IGNORE
+<U30BD> <U30BD>;<U30BD>;IGNORE;IGNORE
+<U305D> <U30BD>;<U305D>;IGNORE;IGNORE
+<U30BE> <U30BD>;<U30BE>;IGNORE;IGNORE
+<U305E> <U30BD>;<U305E>;IGNORE;IGNORE
+<U30BF> <U30BF>;<U30BF>;IGNORE;IGNORE
+<U305F> <U30BF>;<U305F>;IGNORE;IGNORE
+<U30C0> <U30BF>;<U30C0>;IGNORE;IGNORE
+<U3060> <U30BF>;<U3060>;IGNORE;IGNORE
+<U30C1> <U30C1>;<U30C1>;IGNORE;IGNORE
+<U3061> <U30C1>;<U3061>;IGNORE;IGNORE
+<U30C2> <U30C1>;<U30C2>;IGNORE;IGNORE
+<U3062> <U30C1>;<U3062>;IGNORE;IGNORE
+<U30C3> <U30C3>;<U30C3>;IGNORE;IGNORE
+<U3063> <U30C3>;<U3063>;IGNORE;IGNORE
+<U30C4> <U30C3>;<U30C4>;IGNORE;IGNORE
+<U3064> <U30C3>;<U3064>;IGNORE;IGNORE
+<U30C5> <U30C3>;<U30C5>;IGNORE;IGNORE
+<U3065> <U30C3>;<U3065>;IGNORE;IGNORE
+<U30C6> <U30C6>;<U30C6>;IGNORE;IGNORE
+<U3066> <U30C6>;<U3066>;IGNORE;IGNORE
+<U30C7> <U30C6>;<U30C7>;IGNORE;IGNORE
+<U3067> <U30C6>;<U3067>;IGNORE;IGNORE
+<U30C8> <U30C8>;<U30C8>;IGNORE;IGNORE
+<U3068> <U30C8>;<U3068>;IGNORE;IGNORE
+<U30C9> <U30C8>;<U30C9>;IGNORE;IGNORE
+<U3069> <U30C8>;<U3069>;IGNORE;IGNORE
+<U30CA> <U30CA>;<U30CA>;IGNORE;IGNORE
+<U306A> <U30CA>;<U306A>;IGNORE;IGNORE
+<U30CB> <U30CB>;<U30CB>;IGNORE;IGNORE
+<U306B> <U30CB>;<U306B>;IGNORE;IGNORE
+<U30CC> <U30CC>;<U30CC>;IGNORE;IGNORE
+<U306C> <U30CC>;<U306C>;IGNORE;IGNORE
+<U30CD> <U30CD>;<U30CD>;IGNORE;IGNORE
+<U306D> <U30CD>;<U306D>;IGNORE;IGNORE
+<U30CE> <U30CE>;<U30CE>;IGNORE;IGNORE
+<U306E> <U30CE>;<U306E>;IGNORE;IGNORE
+<U30CF> <U30CF>;<U30CF>;IGNORE;IGNORE
+<U306F> <U30CF>;<U306F>;IGNORE;IGNORE
+<U30D0> <U30CF>;<U30D0>;IGNORE;IGNORE
+<U3070> <U30CF>;<U3070>;IGNORE;IGNORE
+<U30D1> <U30CF>;<U30D1>;IGNORE;IGNORE
+<U3071> <U30CF>;<U3071>;IGNORE;IGNORE
+<U30D2> <U30D2>;<U30D2>;IGNORE;IGNORE
+<U3072> <U30D2>;<U3072>;IGNORE;IGNORE
+<U30D3> <U30D2>;<U30D3>;IGNORE;IGNORE
+<U3073> <U30D2>;<U3073>;IGNORE;IGNORE
+<U30D4> <U30D2>;<U30D4>;IGNORE;IGNORE
+<U3074> <U30D2>;<U3074>;IGNORE;IGNORE
+<U30D5> <U30D5>;<U30D5>;IGNORE;IGNORE
+<U3075> <U30D5>;<U3075>;IGNORE;IGNORE
+<U30D6> <U30D5>;<U30D6>;IGNORE;IGNORE
+<U3076> <U30D5>;<U3076>;IGNORE;IGNORE
+<U30D7> <U30D5>;<U30D7>;IGNORE;IGNORE
+<U3077> <U30D5>;<U3077>;IGNORE;IGNORE
+<U30D8> <U30D8>;<U30D8>;IGNORE;IGNORE
+<U3078> <U30D8>;<U3078>;IGNORE;IGNORE
+<U30D9> <U30D8>;<U30D9>;IGNORE;IGNORE
+<U3079> <U30D8>;<U3079>;IGNORE;IGNORE
+<U30DA> <U30D8>;<U30DA>;IGNORE;IGNORE
+<U307A> <U30D8>;<U307A>;IGNORE;IGNORE
+<U30DB> <U30DB>;<U30DB>;IGNORE;IGNORE
+<U307B> <U30DB>;<U307B>;IGNORE;IGNORE
+<U30DC> <U30DB>;<U30DC>;IGNORE;IGNORE
+<U307C> <U30DB>;<U307C>;IGNORE;IGNORE
+<U30DD> <U30DB>;<U30DD>;IGNORE;IGNORE
+<U307D> <U30DB>;<U307D>;IGNORE;IGNORE
+<U30DE> <U30DE>;<U30DE>;IGNORE;IGNORE
+<U307E> <U30DE>;<U307E>;IGNORE;IGNORE
+<U30DF> <U30DF>;<U30DF>;IGNORE;IGNORE
+<U307F> <U30DF>;<U307F>;IGNORE;IGNORE
+<U30E0> <U30E0>;<U30E0>;IGNORE;IGNORE
+<U3080> <U30E0>;<U3080>;IGNORE;IGNORE
+<U30E1> <U30E1>;<U30E1>;IGNORE;IGNORE
+<U3081> <U30E1>;<U3081>;IGNORE;IGNORE
+<U30E2> <U30E2>;<U30E2>;IGNORE;IGNORE
+<U3082> <U30E2>;<U3082>;IGNORE;IGNORE
+<U30E3> <U30E3>;<U30E3>;IGNORE;IGNORE
+<U3083> <U30E3>;<U3083>;IGNORE;IGNORE
+<U30E4> <U30E3>;<U30E4>;IGNORE;IGNORE
+<U3084> <U30E3>;<U3084>;IGNORE;IGNORE
+<U30E5> <U30E5>;<U30E5>;IGNORE;IGNORE
+<U3085> <U30E5>;<U3085>;IGNORE;IGNORE
+<U30E6> <U30E5>;<U30E6>;IGNORE;IGNORE
+<U3086> <U30E5>;<U3086>;IGNORE;IGNORE
+<U30E7> <U30E7>;<U30E7>;IGNORE;IGNORE
+<U3087> <U30E7>;<U3087>;IGNORE;IGNORE
+<U30E8> <U30E7>;<U30E8>;IGNORE;IGNORE
+<U3088> <U30E7>;<U3088>;IGNORE;IGNORE
+<U30E9> <U30E9>;<U30E9>;IGNORE;IGNORE
+<U3089> <U30E9>;<U3089>;IGNORE;IGNORE
+<U30EA> <U30EA>;<U30EA>;IGNORE;IGNORE
+<U308A> <U30EA>;<U308A>;IGNORE;IGNORE
+<U30EB> <U30EB>;<U30EB>;IGNORE;IGNORE
+<U308B> <U30EB>;<U308B>;IGNORE;IGNORE
+<U30EC> <U30EC>;<U30EC>;IGNORE;IGNORE
+<U308C> <U30EC>;<U308C>;IGNORE;IGNORE
+<U30ED> <U30ED>;<U30ED>;IGNORE;IGNORE
+<U308D> <U30ED>;<U308D>;IGNORE;IGNORE
+<U30EE> <U30EE>;<U30EE>;IGNORE;IGNORE
+<U308E> <U30EE>;<U308E>;IGNORE;IGNORE
+<U30EF> <U30EE>;<U30EF>;IGNORE;IGNORE
+<U308F> <U30EE>;<U308F>;IGNORE;IGNORE
+<U30F0> <U30F0>;<U30F0>;IGNORE;IGNORE
+<U3090> <U30F0>;<U3090>;IGNORE;IGNORE
+<U30F1> <U30F1>;<U30F1>;IGNORE;IGNORE
+<U3091> <U30F1>;<U3091>;IGNORE;IGNORE
+<U30F2> <U30F2>;<U30F2>;IGNORE;IGNORE
+<U3092> <U30F2>;<U3092>;IGNORE;IGNORE
+<U30F3> <U30F3>;<U30F3>;IGNORE;IGNORE
+<U3093> <U30F3>;<U3093>;IGNORE;IGNORE
+<U0030> <U0030>;<U0030>;IGNORE;IGNORE
+<U2070> <U0030>;<U2070>;IGNORE;IGNORE
+<U215B> <U0030>;<U215B>;IGNORE;IGNORE
+<U00BC> <U0030>;<U00BC>;IGNORE;IGNORE
+<U215C> <U0030>;<U215C>;IGNORE;IGNORE
+<U00BD> <U0030>;<U00BD>;IGNORE;IGNORE
+<U215D> <U0030>;<U215D>;IGNORE;IGNORE
+<U00BE> <U0030>;<U00BE>;IGNORE;IGNORE
+<U215E> <U0030>;<U215E>;IGNORE;IGNORE
+<U0031> <U0031>;<U0031>;IGNORE;IGNORE
+<U0032> <U0032>;<U0032>;IGNORE;IGNORE
+<U0033> <U0033>;<U0033>;IGNORE;IGNORE
+<U0034> <U0034>;<U0034>;IGNORE;IGNORE
+<U0035> <U0035>;<U0035>;IGNORE;IGNORE
+<U0036> <U0036>;<U0036>;IGNORE;IGNORE
+<U0037> <U0037>;<U0037>;IGNORE;IGNORE
+<U0038> <U0038>;<U0038>;IGNORE;IGNORE
+<U0039> <U0039>;<U0039>;IGNORE;IGNORE
+<U00B9> <U0031>;<U00B9>;IGNORE;IGNORE
+<U00B2> <U0032>;<U00B2>;IGNORE;IGNORE
+<U00B3> <U0033>;<U00B3>;IGNORE;IGNORE
+<U2074> <U0034>;<U2074>;IGNORE;IGNORE
+<U2075> <U0035>;<U2075>;IGNORE;IGNORE
+<U2076> <U0036>;<U2076>;IGNORE;IGNORE
+<U2077> <U0037>;<U2077>;IGNORE;IGNORE
+<U2078> <U0038>;<U2078>;IGNORE;IGNORE
+<U2079> <U0039>;<U2079>;IGNORE;IGNORE
+
+order_end
+
diff --git a/ap/build/uClibc/extra/locale/collation/fo_FO b/ap/build/uClibc/extra/locale/collation/fo_FO
new file mode 100644
index 0000000..b7628e7
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/fo_FO
@@ -0,0 +1 @@
+copy "da_DK"
diff --git a/ap/build/uClibc/extra/locale/collation/fr_BE b/ap/build/uClibc/extra/locale/collation/fr_BE
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/fr_BE
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/fr_CA b/ap/build/uClibc/extra/locale/collation/fr_CA
new file mode 100644
index 0000000..c911095
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/fr_CA
@@ -0,0 +1 @@
+copy "en_CA"
diff --git a/ap/build/uClibc/extra/locale/collation/fr_CH b/ap/build/uClibc/extra/locale/collation/fr_CH
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/fr_CH
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/fr_FR b/ap/build/uClibc/extra/locale/collation/fr_FR
new file mode 100644
index 0000000..5314a57
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/fr_FR
@@ -0,0 +1,2 @@
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/fr_LU b/ap/build/uClibc/extra/locale/collation/fr_LU
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/fr_LU
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/ga_IE b/ap/build/uClibc/extra/locale/collation/ga_IE
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ga_IE
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/gd_GB b/ap/build/uClibc/extra/locale/collation/gd_GB
new file mode 100644
index 0000000..d66184e
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/gd_GB
@@ -0,0 +1 @@
+copy "en_DK"
diff --git a/ap/build/uClibc/extra/locale/collation/gl_ES b/ap/build/uClibc/extra/locale/collation/gl_ES
new file mode 100644
index 0000000..09fd11b
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/gl_ES
@@ -0,0 +1 @@
+copy "es_ES"
diff --git a/ap/build/uClibc/extra/locale/collation/gv_GB b/ap/build/uClibc/extra/locale/collation/gv_GB
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/gv_GB
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/he_IL b/ap/build/uClibc/extra/locale/collation/he_IL
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/he_IL
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/hi_IN b/ap/build/uClibc/extra/locale/collation/hi_IN
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/hi_IN
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/hr_HR b/ap/build/uClibc/extra/locale/collation/hr_HR
new file mode 100644
index 0000000..0929ea7
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/hr_HR
@@ -0,0 +1,2085 @@
+collating-element <D-Z<> from "<U0044><U017D>"
+collating-element <D-z<> from "<U0044><U017E>"
+collating-element <d-Z<> from "<U0064><U017D>"
+collating-element <d-z<> from "<U0064><U017E>"
+collating-element <L-J> from "<U004C><U004A>"
+collating-element <L-j> from "<U004C><U006A>"
+collating-element <l-J> from "<U006C><U004A>"
+collating-element <l-j> from "<U006C><U006A>"
+collating-element <N-J> from "<U004E><U004A>"
+collating-element <N-j> from "<U004E><U006A>"
+collating-element <n-J> from "<U006E><U004A>"
+collating-element <n-j> from "<U006E><U006A>"
+
+% Base collation scheme: 1994-03-22
+
+% Ordering algorithm:
+% 1. Spaces and hyphen (but not soft
+% hyphen) before punctuation
+% characters, punctuation characters
+% before numbers,
+% numbers before letters.
+% 2. Letters with diacritical marks are
+% members of equivalence classes
+% 3. A distinction is made with regards
+% to case as noted below.
+% 4. Special characters are ignored
+% when comparing letters, but then
+% they are considered
+% 5. The alphabets are sorted in order
+% of first appearance in ISO 10646:
+% Latin, Greek, Cyrillic, etc.
+%
+% According to Greek specifications,
+% the steps 2. and 3. above are reversed
+% for the Greek script
+
+% collating symbols
+
+% The collating symbol naming is
+% mostly taken from ISO 10646-1,
+% for example the case and accent
+% names are from this standard.
+
+collating-symbol <CAPITAL>
+collating-symbol <CAPITAL-SMALL>
+collating-symbol <SMALL-CAPITAL>
+collating-symbol <SMALL>
+
+% <CAPITAL-SMALL> and <SMALL-CAPITAL>
+% are for cases like Danish <U0041><U0061>
+% and Spanish <U0043><U0068> being treated
+% as one letter.
+
+% The <a8> ...... <z8> collating
+% symbols have defined weights as
+% the last character in a group of
+% Latin letters. They are used
+% to specify deltas by locales using
+% a locale as the default ordering
+% and by "replace-after" statements
+% specifying the changed placement
+% in an ordering of a character.
+
+collating-symbol <a8>
+collating-symbol <b8>
+collating-symbol <c8>
+collating-symbol <d8>
+collating-symbol <e8>
+collating-symbol <f8>
+collating-symbol <g8>
+collating-symbol <h8>
+collating-symbol <i8>
+collating-symbol <j8>
+collating-symbol <k8>
+collating-symbol <l8>
+collating-symbol <m8>
+collating-symbol <n8>
+collating-symbol <o8>
+collating-symbol <p8>
+collating-symbol <q8>
+collating-symbol <r8>
+collating-symbol <s8>
+collating-symbol <t8>
+collating-symbol <u8>
+collating-symbol <v8>
+collating-symbol <w8>
+collating-symbol <x8>
+collating-symbol <y8>
+collating-symbol <z8>
+
+collating-symbol <NONE>
+collating-symbol <ACUTE>
+collating-symbol <ACUTE+DOT>
+collating-symbol <GRAVE>
+collating-symbol <DOUBLE-GRAVE>
+collating-symbol <BREVE>
+collating-symbol <BREVE+ACUTE>
+collating-symbol <BREVE+GRAVE>
+collating-symbol <BREVE+MACRON>
+collating-symbol <BREVE+HOOK>
+collating-symbol <BREVE+TILDE>
+collating-symbol <BREVE+DOT-BELOW>
+collating-symbol <BREVE-BELOW>
+collating-symbol <INVERTED-BREVE>
+collating-symbol <CIRCUMFLEX>
+collating-symbol <CIRCUMFLEX+ACUTE>
+collating-symbol <CIRCUMFLEX+GRAVE>
+collating-symbol <CIRCUMFLEX+HOOK>
+collating-symbol <CIRCUMFLEX+TILDE>
+collating-symbol <CIRCUMFLEX+DOT-BELOW>
+collating-symbol <CARON>
+collating-symbol <CARON+DIAERESIS>
+collating-symbol <CARON+DOT>
+collating-symbol <RING>
+collating-symbol <RING+ACUTE>
+collating-symbol <RING-BELOW>
+collating-symbol <DIAERESIS>
+collating-symbol <DIAERESIS+MACRON>
+collating-symbol <DIAERESIS+ACUTE>
+collating-symbol <DIAERESIS+GRAVE>
+collating-symbol <DIAERESIS+CARON>
+collating-symbol <DOUBLE-ACUTE>
+collating-symbol <HOOK>
+collating-symbol <TILDE>
+collating-symbol <TILDE+ACUTE>
+collating-symbol <TILDE+DIAERESIS>
+collating-symbol <TILDE-BELOW>
+collating-symbol <DOT>
+collating-symbol <DOT-BELOW>
+collating-symbol <DOT+DOT-BELOW>
+collating-symbol <STROKE>
+collating-symbol <STROKE+ACUTE>
+collating-symbol <CEDILLA>
+collating-symbol <CEDILLA+ACUTE>
+collating-symbol <CEDILLA+GRAVE>
+collating-symbol <CEDILLA+BREVE>
+collating-symbol <OGONEK>
+collating-symbol <OGONEK+MACRON>
+collating-symbol <MACRON>
+collating-symbol <MACRON+ACUTE>
+collating-symbol <MACRON+GRAVE>
+collating-symbol <MACRON+DIAERESIS>
+collating-symbol <MACRON+DIAERESIS-BELOW>
+collating-symbol <MACRON+DOT>
+collating-symbol <MACRON+DOT-BELOW>
+collating-symbol <MACRON+CIRCUMFLEX>
+collating-symbol <LINE-BELOW>
+collating-symbol <HORN>
+collating-symbol <HORN+ACUTE>
+collating-symbol <HORN+GRAVE>
+collating-symbol <HORN+HOOK>
+collating-symbol <HORN+TILDE>
+collating-symbol <HORN+DOT-BELOW>
+collating-symbol <PRECEDED-BY-APOSTROPHE>
+collating-symbol <GREEK>
+collating-symbol <TONOS>
+collating-symbol <DIALYTICA>
+collating-symbol <DIALYTICA+TONOS>
+collating-symbol <CYRILLIC>
+collating-symbol <HIRAGANA>
+collating-symbol <KATAKANA>
+collating-symbol <SPECIAL>
+
+% letter;accent;case;specials
+
+order_start forward;backward;forward;position
+
+% <CAPITAL> or <SMALL> letters first:
+
+<SMALL>
+<SMALL-CAPITAL>
+<CAPITAL-SMALL>
+<CAPITAL>
+
+% Accents:
+
+<NONE>
+<ACUTE>
+<ACUTE+DOT>
+<GRAVE>
+<DOUBLE-GRAVE>
+<BREVE>
+<BREVE+ACUTE>
+<BREVE+GRAVE>
+<BREVE+MACRON>
+<BREVE+HOOK>
+<BREVE+TILDE>
+<BREVE+DOT-BELOW>
+<BREVE-BELOW>
+<INVERTED-BREVE>
+<CIRCUMFLEX>
+<CIRCUMFLEX+ACUTE>
+<CIRCUMFLEX+GRAVE>
+<CIRCUMFLEX+HOOK>
+<CIRCUMFLEX+TILDE>
+<CIRCUMFLEX+DOT-BELOW>
+<CARON>
+<CARON+DIAERESIS>
+<CARON+DOT>
+<RING>
+<RING+ACUTE>
+<RING-BELOW>
+<DIAERESIS>
+<DIAERESIS+MACRON>
+<DIAERESIS+ACUTE>
+<DIAERESIS+GRAVE>
+<DIAERESIS+CARON>
+<DOUBLE-ACUTE>
+<HOOK>
+<TILDE>
+<TILDE+ACUTE>
+<TILDE+DIAERESIS>
+<TILDE-BELOW>
+<DOT>
+<DOT-BELOW>
+<DOT+DOT-BELOW>
+<STROKE>
+<STROKE+ACUTE>
+<CEDILLA>
+<CEDILLA+ACUTE>
+<CEDILLA+GRAVE>
+<CEDILLA+BREVE>
+<OGONEK>
+<OGONEK+MACRON>
+<MACRON>
+<MACRON+ACUTE>
+<MACRON+GRAVE>
+<MACRON+DIAERESIS>
+<MACRON+DIAERESIS-BELOW>
+<MACRON+DOT>
+<MACRON+DOT-BELOW>
+<MACRON+CIRCUMFLEX>
+<LINE-BELOW>
+<HORN>
+<HORN+ACUTE>
+<HORN+GRAVE>
+<HORN+HOOK>
+<HORN+TILDE>
+<HORN+DOT-BELOW>
+<PRECEDED-BY-APOSTROPHE>
+<GREEK>
+<TONOS>
+<DIALYTICA>
+<DIALYTICA+TONOS>
+<CYRILLIC>
+<HIRAGANA>
+<KATAKANA>
+<SPECIAL>
+
+<U00A0> <U00A0>;<U00A0>;<U00A0>;IGNORE
+<U0020> IGNORE;IGNORE;IGNORE;<U0020>
+<U0009> IGNORE;IGNORE;IGNORE;<U0009>
+<U000B> IGNORE;IGNORE;IGNORE;<U000B>
+<U000D> IGNORE;IGNORE;IGNORE;<U000D>
+<U000A> IGNORE;IGNORE;IGNORE;<U000A>
+<U000C> IGNORE;IGNORE;IGNORE;<U000C>
+<U005F> IGNORE;IGNORE;IGNORE;<U005F>
+<U00AF> IGNORE;IGNORE;IGNORE;<U00AF>
+<U00AD> IGNORE;IGNORE;IGNORE;<U00AD>
+<U002D> IGNORE;IGNORE;IGNORE;<U002D>
+<U002C> IGNORE;IGNORE;IGNORE;<U002C>
+<U003B> IGNORE;IGNORE;IGNORE;<U003B>
+<U003A> IGNORE;IGNORE;IGNORE;<U003A>
+<U0021> IGNORE;IGNORE;IGNORE;<U0021>
+<U00A1> IGNORE;IGNORE;IGNORE;<U00A1>
+<U003F> IGNORE;IGNORE;IGNORE;<U003F>
+<U00BF> IGNORE;IGNORE;IGNORE;<U00BF>
+<U002F> IGNORE;IGNORE;IGNORE;<U002F>
+<U002E> IGNORE;IGNORE;IGNORE;<U002E>
+<U00B4> IGNORE;IGNORE;IGNORE;<U00B4>
+<U0060> IGNORE;IGNORE;IGNORE;<U0060>
+<U005E> IGNORE;IGNORE;IGNORE;<U005E>
+<U00A8> IGNORE;IGNORE;IGNORE;<U00A8>
+<U007E> IGNORE;IGNORE;IGNORE;<U007E>
+<U00B7> IGNORE;IGNORE;IGNORE;<U00B7>
+<U00B8> IGNORE;IGNORE;IGNORE;<U00B8>
+<U0027> IGNORE;IGNORE;IGNORE;<U0027>
+<U2018> IGNORE;IGNORE;IGNORE;<U2018>
+<U2019> IGNORE;IGNORE;IGNORE;<U2019>
+<U0022> IGNORE;IGNORE;IGNORE;<U0022>
+<U201C> IGNORE;IGNORE;IGNORE;<U201C>
+<U201D> IGNORE;IGNORE;IGNORE;<U201D>
+<U00AB> IGNORE;IGNORE;IGNORE;<U00AB>
+<U00BB> IGNORE;IGNORE;IGNORE;<U00BB>
+<U0028> IGNORE;IGNORE;IGNORE;<U0028>
+<U207D> IGNORE;IGNORE;IGNORE;<U207D>
+<U0029> IGNORE;IGNORE;IGNORE;<U0029>
+<U207E> IGNORE;IGNORE;IGNORE;<U207E>
+<U005B> IGNORE;IGNORE;IGNORE;<U005B>
+<U005D> IGNORE;IGNORE;IGNORE;<U005D>
+<U007B> IGNORE;IGNORE;IGNORE;<U007B>
+<U007D> IGNORE;IGNORE;IGNORE;<U007D>
+<U00A7> IGNORE;IGNORE;IGNORE;<U00A7>
+<U00B6> IGNORE;IGNORE;IGNORE;<U00B6>
+<U00A9> IGNORE;IGNORE;IGNORE;<U00A9>
+<U00AE> IGNORE;IGNORE;IGNORE;<U00AE>
+<U0040> IGNORE;IGNORE;IGNORE;<U0040>
+<U00A4> IGNORE;IGNORE;IGNORE;<U00A4>
+<U00A2> IGNORE;IGNORE;IGNORE;<U00A2>
+<U0024> IGNORE;IGNORE;IGNORE;<U0024>
+<U00A3> IGNORE;IGNORE;IGNORE;<U00A3>
+<U00A5> IGNORE;IGNORE;IGNORE;<U00A5>
+<U002A> IGNORE;IGNORE;IGNORE;<U002A>
+<U005C> IGNORE;IGNORE;IGNORE;<U005C>
+<U0026> IGNORE;IGNORE;IGNORE;<U0026>
+<U0023> IGNORE;IGNORE;IGNORE;<U0023>
+<U0025> IGNORE;IGNORE;IGNORE;<U0025>
+<U207B> IGNORE;IGNORE;IGNORE;<U207B>
+<U002B> IGNORE;IGNORE;IGNORE;<U002B>
+<U207A> IGNORE;IGNORE;IGNORE;<U207A>
+<U00B1> IGNORE;IGNORE;IGNORE;<U00B1>
+<U00F7> IGNORE;IGNORE;IGNORE;<U00F7>
+<U00D7> IGNORE;IGNORE;IGNORE;<U00D7>
+<U2260> IGNORE;IGNORE;IGNORE;<U2260>
+<U003C> IGNORE;IGNORE;IGNORE;<U003C>
+<U2264> IGNORE;IGNORE;IGNORE;<U2264>
+<U003D> IGNORE;IGNORE;IGNORE;<U003D>
+<U2265> IGNORE;IGNORE;IGNORE;<U2265>
+<U003E> IGNORE;IGNORE;IGNORE;<U003E>
+<U00AC> IGNORE;IGNORE;IGNORE;<U00AC>
+<U007C> IGNORE;IGNORE;IGNORE;<U007C>
+<U00A6> IGNORE;IGNORE;IGNORE;<U00A6>
+<U00B0> IGNORE;IGNORE;IGNORE;<U00B0>
+<U00B5> IGNORE;IGNORE;IGNORE;<U00B5>
+<U02C7> IGNORE;IGNORE;IGNORE;<U02C7>
+<U02D8> IGNORE;IGNORE;IGNORE;<U02D8>
+<U02D9> IGNORE;IGNORE;IGNORE;<U02D9>
+<U02DA> IGNORE;IGNORE;IGNORE;<U02DA>
+<U02DB> IGNORE;IGNORE;IGNORE;<U02DB>
+<U02DC> IGNORE;IGNORE;IGNORE;<U02DC>
+<U02DD> IGNORE;IGNORE;IGNORE;<U02DD>
+<U0374> IGNORE;IGNORE;IGNORE;<U0374>
+<U0375> IGNORE;IGNORE;IGNORE;<U0375>
+<U037A> IGNORE;IGNORE;IGNORE;<U037A>
+<U037E> IGNORE;IGNORE;IGNORE;<U037E>
+<U0384> IGNORE;IGNORE;IGNORE;<U0384>
+<U0385> IGNORE;IGNORE;IGNORE;<U0385>
+<U0387> IGNORE;IGNORE;IGNORE;<U0387>
+<U03D0> IGNORE;IGNORE;IGNORE;<U03D0>
+<U1FBF> IGNORE;IGNORE;IGNORE;<U1FBF>
+<U1FC0> IGNORE;IGNORE;IGNORE;<U1FC0>
+<U1FC1> IGNORE;IGNORE;IGNORE;<U1FC1>
+<U1FCD> IGNORE;IGNORE;IGNORE;<U1FCD>
+<U1FCE> IGNORE;IGNORE;IGNORE;<U1FCE>
+<U1FCF> IGNORE;IGNORE;IGNORE;<U1FCF>
+<U1FDD> IGNORE;IGNORE;IGNORE;<U1FDD>
+<U1FDE> IGNORE;IGNORE;IGNORE;<U1FDE>
+<U1FDF> IGNORE;IGNORE;IGNORE;<U1FDF>
+<U1FED> IGNORE;IGNORE;IGNORE;<U1FED>
+<U1FEF> IGNORE;IGNORE;IGNORE;<U1FEF>
+<U1FFE> IGNORE;IGNORE;IGNORE;<U1FFE>
+<U2002> IGNORE;IGNORE;IGNORE;<U2002>
+<U2003> IGNORE;IGNORE;IGNORE;<U2003>
+<U2004> IGNORE;IGNORE;IGNORE;<U2004>
+<U2005> IGNORE;IGNORE;IGNORE;<U2005>
+<U2006> IGNORE;IGNORE;IGNORE;<U2006>
+<U200E> IGNORE;IGNORE;IGNORE;<U200E>
+<U200F> IGNORE;IGNORE;IGNORE;<U200F>
+<U2009> IGNORE;IGNORE;IGNORE;<U2009>
+<U200A> IGNORE;IGNORE;IGNORE;<U200A>
+<U2010> IGNORE;IGNORE;IGNORE;<U2010>
+<U2013> IGNORE;IGNORE;IGNORE;<U2013>
+<U2014> IGNORE;IGNORE;IGNORE;<U2014>
+<U2015> IGNORE;IGNORE;IGNORE;<U2015>
+<U2016> IGNORE;IGNORE;IGNORE;<U2016>
+<U2017> IGNORE;IGNORE;IGNORE;<U2017>
+<U201A> IGNORE;IGNORE;IGNORE;<U201A>
+<U201B> IGNORE;IGNORE;IGNORE;<U201B>
+<U201E> IGNORE;IGNORE;IGNORE;<U201E>
+<U201F> IGNORE;IGNORE;IGNORE;<U201F>
+<U2020> IGNORE;IGNORE;IGNORE;<U2020>
+<U2021> IGNORE;IGNORE;IGNORE;<U2021>
+<U2219> IGNORE;IGNORE;IGNORE;<U2219>
+<U2025> IGNORE;IGNORE;IGNORE;<U2025>
+<U2026> IGNORE;IGNORE;IGNORE;<U2026>
+<U2030> IGNORE;IGNORE;IGNORE;<U2030>
+<U2032> IGNORE;IGNORE;IGNORE;<U2032>
+<U2033> IGNORE;IGNORE;IGNORE;<U2033>
+<U2034> IGNORE;IGNORE;IGNORE;<U2034>
+<U2035> IGNORE;IGNORE;IGNORE;<U2035>
+<U2036> IGNORE;IGNORE;IGNORE;<U2036>
+<U2037> IGNORE;IGNORE;IGNORE;<U2037>
+<U2038> IGNORE;IGNORE;IGNORE;<U2038>
+<U2039> IGNORE;IGNORE;IGNORE;<U2039>
+<U203A> IGNORE;IGNORE;IGNORE;<U203A>
+<U203B> IGNORE;IGNORE;IGNORE;<U203B>
+<U203C> IGNORE;IGNORE;IGNORE;<U203C>
+<U203E> IGNORE;IGNORE;IGNORE;<U203E>
+<U207C> IGNORE;IGNORE;IGNORE;<U207C>
+<U2080> IGNORE;IGNORE;IGNORE;<U2080>
+<U2081> IGNORE;IGNORE;IGNORE;<U2081>
+<U2082> IGNORE;IGNORE;IGNORE;<U2082>
+<U2083> IGNORE;IGNORE;IGNORE;<U2083>
+<U2084> IGNORE;IGNORE;IGNORE;<U2084>
+<U2085> IGNORE;IGNORE;IGNORE;<U2085>
+<U2086> IGNORE;IGNORE;IGNORE;<U2086>
+<U2087> IGNORE;IGNORE;IGNORE;<U2087>
+<U2088> IGNORE;IGNORE;IGNORE;<U2088>
+<U2089> IGNORE;IGNORE;IGNORE;<U2089>
+<U208A> IGNORE;IGNORE;IGNORE;<U208A>
+<U208B> IGNORE;IGNORE;IGNORE;<U208B>
+<U208C> IGNORE;IGNORE;IGNORE;<U208C>
+<U208D> IGNORE;IGNORE;IGNORE;<U208D>
+<U208E> IGNORE;IGNORE;IGNORE;<U208E>
+<U20A3> IGNORE;IGNORE;IGNORE;<U20A3>
+<U20A4> IGNORE;IGNORE;IGNORE;<U20A4>
+<U20A7> IGNORE;IGNORE;IGNORE;<U20A7>
+<U20A9> IGNORE;IGNORE;IGNORE;<U20A9>
+<U2103> IGNORE;IGNORE;IGNORE;<U2103>
+<U2105> IGNORE;IGNORE;IGNORE;<U2105>
+<U2109> IGNORE;IGNORE;IGNORE;<U2109>
+<U2116> IGNORE;IGNORE;IGNORE;<U2116>
+<U2117> IGNORE;IGNORE;IGNORE;<U2117>
+<U211E> IGNORE;IGNORE;IGNORE;<U211E>
+<U2120> IGNORE;IGNORE;IGNORE;<U2120>
+<U2122> IGNORE;IGNORE;IGNORE;<U2122>
+<U2126> IGNORE;IGNORE;IGNORE;<U2126>
+<U212B> IGNORE;IGNORE;IGNORE;<U212B>
+<U2153> IGNORE;IGNORE;IGNORE;<U2153>
+<U2154> IGNORE;IGNORE;IGNORE;<U2154>
+<U2155> IGNORE;IGNORE;IGNORE;<U2155>
+<U2156> IGNORE;IGNORE;IGNORE;<U2156>
+<U2157> IGNORE;IGNORE;IGNORE;<U2157>
+<U2158> IGNORE;IGNORE;IGNORE;<U2158>
+<U2159> IGNORE;IGNORE;IGNORE;<U2159>
+<U215A> IGNORE;IGNORE;IGNORE;<U215A>
+<U2160> IGNORE;IGNORE;IGNORE;<U2160>
+<U2161> IGNORE;IGNORE;IGNORE;<U2161>
+<U2162> IGNORE;IGNORE;IGNORE;<U2162>
+<U2163> IGNORE;IGNORE;IGNORE;<U2163>
+<U2164> IGNORE;IGNORE;IGNORE;<U2164>
+<U2165> IGNORE;IGNORE;IGNORE;<U2165>
+<U2166> IGNORE;IGNORE;IGNORE;<U2166>
+<U2167> IGNORE;IGNORE;IGNORE;<U2167>
+<U2168> IGNORE;IGNORE;IGNORE;<U2168>
+<U2169> IGNORE;IGNORE;IGNORE;<U2169>
+<U216A> IGNORE;IGNORE;IGNORE;<U216A>
+<U216B> IGNORE;IGNORE;IGNORE;<U216B>
+<U216C> IGNORE;IGNORE;IGNORE;<U216C>
+<U216D> IGNORE;IGNORE;IGNORE;<U216D>
+<U216E> IGNORE;IGNORE;IGNORE;<U216E>
+<U216F> IGNORE;IGNORE;IGNORE;<U216F>
+<U2170> IGNORE;IGNORE;IGNORE;<U2170>
+<U2171> IGNORE;IGNORE;IGNORE;<U2171>
+<U2172> IGNORE;IGNORE;IGNORE;<U2172>
+<U2173> IGNORE;IGNORE;IGNORE;<U2173>
+<U2174> IGNORE;IGNORE;IGNORE;<U2174>
+<U2175> IGNORE;IGNORE;IGNORE;<U2175>
+<U2176> IGNORE;IGNORE;IGNORE;<U2176>
+<U2177> IGNORE;IGNORE;IGNORE;<U2177>
+<U2178> IGNORE;IGNORE;IGNORE;<U2178>
+<U2179> IGNORE;IGNORE;IGNORE;<U2179>
+<U217A> IGNORE;IGNORE;IGNORE;<U217A>
+<U217B> IGNORE;IGNORE;IGNORE;<U217B>
+<U217C> IGNORE;IGNORE;IGNORE;<U217C>
+<U217D> IGNORE;IGNORE;IGNORE;<U217D>
+<U217E> IGNORE;IGNORE;IGNORE;<U217E>
+<U217F> IGNORE;IGNORE;IGNORE;<U217F>
+<U2180> IGNORE;IGNORE;IGNORE;<U2180>
+<U2181> IGNORE;IGNORE;IGNORE;<U2181>
+<U2182> IGNORE;IGNORE;IGNORE;<U2182>
+<U2191> IGNORE;IGNORE;IGNORE;<U2191>
+<U2193> IGNORE;IGNORE;IGNORE;<U2193>
+<U2194> IGNORE;IGNORE;IGNORE;<U2194>
+<U2195> IGNORE;IGNORE;IGNORE;<U2195>
+<U2196> IGNORE;IGNORE;IGNORE;<U2196>
+<U2197> IGNORE;IGNORE;IGNORE;<U2197>
+<U2198> IGNORE;IGNORE;IGNORE;<U2198>
+<U2199> IGNORE;IGNORE;IGNORE;<U2199>
+<U21A8> IGNORE;IGNORE;IGNORE;<U21A8>
+<U21C0> IGNORE;IGNORE;IGNORE;<U21C0>
+<U21D0> IGNORE;IGNORE;IGNORE;<U21D0>
+<U21D2> IGNORE;IGNORE;IGNORE;<U21D2>
+<U21D4> IGNORE;IGNORE;IGNORE;<U21D4>
+<U2200> IGNORE;IGNORE;IGNORE;<U2200>
+<U2202> IGNORE;IGNORE;IGNORE;<U2202>
+<U2203> IGNORE;IGNORE;IGNORE;<U2203>
+<U2205> IGNORE;IGNORE;IGNORE;<U2205>
+<U2206> IGNORE;IGNORE;IGNORE;<U2206>
+<U2207> IGNORE;IGNORE;IGNORE;<U2207>
+<U2208> IGNORE;IGNORE;IGNORE;<U2208>
+<U220B> IGNORE;IGNORE;IGNORE;<U220B>
+<U220F> IGNORE;IGNORE;IGNORE;<U220F>
+<U2211> IGNORE;IGNORE;IGNORE;<U2211>
+<U2212> IGNORE;IGNORE;IGNORE;<U2212>
+<U2213> IGNORE;IGNORE;IGNORE;<U2213>
+<U2214> IGNORE;IGNORE;IGNORE;<U2214>
+<U2044> IGNORE;IGNORE;IGNORE;<U2044>
+<U2217> IGNORE;IGNORE;IGNORE;<U2217>
+<U2218> IGNORE;IGNORE;IGNORE;<U2218>
+<U2022> IGNORE;IGNORE;IGNORE;<U2022>
+<U221A> IGNORE;IGNORE;IGNORE;<U221A>
+<U221D> IGNORE;IGNORE;IGNORE;<U221D>
+<U221E> IGNORE;IGNORE;IGNORE;<U221E>
+<U221F> IGNORE;IGNORE;IGNORE;<U221F>
+<U2220> IGNORE;IGNORE;IGNORE;<U2220>
+<U2225> IGNORE;IGNORE;IGNORE;<U2225>
+<U2227> IGNORE;IGNORE;IGNORE;<U2227>
+<U2228> IGNORE;IGNORE;IGNORE;<U2228>
+<U2229> IGNORE;IGNORE;IGNORE;<U2229>
+<U222A> IGNORE;IGNORE;IGNORE;<U222A>
+<U222B> IGNORE;IGNORE;IGNORE;<U222B>
+<U222C> IGNORE;IGNORE;IGNORE;<U222C>
+<U222E> IGNORE;IGNORE;IGNORE;<U222E>
+<U2234> IGNORE;IGNORE;IGNORE;<U2234>
+<U2235> IGNORE;IGNORE;IGNORE;<U2235>
+<U2236> IGNORE;IGNORE;IGNORE;<U2236>
+<U2237> IGNORE;IGNORE;IGNORE;<U2237>
+<U223C> IGNORE;IGNORE;IGNORE;<U223C>
+<U223E> IGNORE;IGNORE;IGNORE;<U223E>
+<U2243> IGNORE;IGNORE;IGNORE;<U2243>
+<U2245> IGNORE;IGNORE;IGNORE;<U2245>
+<U2248> IGNORE;IGNORE;IGNORE;<U2248>
+<U224C> IGNORE;IGNORE;IGNORE;<U224C>
+<U2253> IGNORE;IGNORE;IGNORE;<U2253>
+<U2261> IGNORE;IGNORE;IGNORE;<U2261>
+<U226A> IGNORE;IGNORE;IGNORE;<U226A>
+<U226B> IGNORE;IGNORE;IGNORE;<U226B>
+<U226E> IGNORE;IGNORE;IGNORE;<U226E>
+<U226F> IGNORE;IGNORE;IGNORE;<U226F>
+<U2282> IGNORE;IGNORE;IGNORE;<U2282>
+<U2283> IGNORE;IGNORE;IGNORE;<U2283>
+<U2286> IGNORE;IGNORE;IGNORE;<U2286>
+<U2287> IGNORE;IGNORE;IGNORE;<U2287>
+<U2299> IGNORE;IGNORE;IGNORE;<U2299>
+<U229A> IGNORE;IGNORE;IGNORE;<U229A>
+<U22A5> IGNORE;IGNORE;IGNORE;<U22A5>
+<U22C5> IGNORE;IGNORE;IGNORE;<U22C5>
+<U22EE> IGNORE;IGNORE;IGNORE;<U22EE>
+<U2302> IGNORE;IGNORE;IGNORE;<U2302>
+<U2308> IGNORE;IGNORE;IGNORE;<U2308>
+<U2309> IGNORE;IGNORE;IGNORE;<U2309>
+<U230A> IGNORE;IGNORE;IGNORE;<U230A>
+<U230B> IGNORE;IGNORE;IGNORE;<U230B>
+<U2310> IGNORE;IGNORE;IGNORE;<U2310>
+<U2312> IGNORE;IGNORE;IGNORE;<U2312>
+<U2315> IGNORE;IGNORE;IGNORE;<U2315>
+<U2320> IGNORE;IGNORE;IGNORE;<U2320>
+<U2321> IGNORE;IGNORE;IGNORE;<U2321>
+<U2423> IGNORE;IGNORE;IGNORE;<U2423>
+<U2440> IGNORE;IGNORE;IGNORE;<U2440>
+<U2441> IGNORE;IGNORE;IGNORE;<U2441>
+<U2442> IGNORE;IGNORE;IGNORE;<U2442>
+<U2443> IGNORE;IGNORE;IGNORE;<U2443>
+<U2446> IGNORE;IGNORE;IGNORE;<U2446>
+<U2447> IGNORE;IGNORE;IGNORE;<U2447>
+<U2448> IGNORE;IGNORE;IGNORE;<U2448>
+<U2449> IGNORE;IGNORE;IGNORE;<U2449>
+<U2460> IGNORE;IGNORE;IGNORE;<U2460>
+<U2461> IGNORE;IGNORE;IGNORE;<U2461>
+<U2462> IGNORE;IGNORE;IGNORE;<U2462>
+<U2463> IGNORE;IGNORE;IGNORE;<U2463>
+<U2464> IGNORE;IGNORE;IGNORE;<U2464>
+<U2465> IGNORE;IGNORE;IGNORE;<U2465>
+<U2466> IGNORE;IGNORE;IGNORE;<U2466>
+<U2467> IGNORE;IGNORE;IGNORE;<U2467>
+<U2468> IGNORE;IGNORE;IGNORE;<U2468>
+<U2469> IGNORE;IGNORE;IGNORE;<U2469>
+<U246A> IGNORE;IGNORE;IGNORE;<U246A>
+<U246B> IGNORE;IGNORE;IGNORE;<U246B>
+<U246C> IGNORE;IGNORE;IGNORE;<U246C>
+<U246D> IGNORE;IGNORE;IGNORE;<U246D>
+<U246E> IGNORE;IGNORE;IGNORE;<U246E>
+<U246F> IGNORE;IGNORE;IGNORE;<U246F>
+<U2470> IGNORE;IGNORE;IGNORE;<U2470>
+<U2471> IGNORE;IGNORE;IGNORE;<U2471>
+<U2472> IGNORE;IGNORE;IGNORE;<U2472>
+<U2473> IGNORE;IGNORE;IGNORE;<U2473>
+<U2474> IGNORE;IGNORE;IGNORE;<U2474>
+<U2475> IGNORE;IGNORE;IGNORE;<U2475>
+<U2476> IGNORE;IGNORE;IGNORE;<U2476>
+<U2477> IGNORE;IGNORE;IGNORE;<U2477>
+<U2478> IGNORE;IGNORE;IGNORE;<U2478>
+<U2479> IGNORE;IGNORE;IGNORE;<U2479>
+<U247A> IGNORE;IGNORE;IGNORE;<U247A>
+<U247B> IGNORE;IGNORE;IGNORE;<U247B>
+<U247C> IGNORE;IGNORE;IGNORE;<U247C>
+<U247D> IGNORE;IGNORE;IGNORE;<U247D>
+<U247E> IGNORE;IGNORE;IGNORE;<U247E>
+<U247F> IGNORE;IGNORE;IGNORE;<U247F>
+<U2480> IGNORE;IGNORE;IGNORE;<U2480>
+<U2481> IGNORE;IGNORE;IGNORE;<U2481>
+<U2482> IGNORE;IGNORE;IGNORE;<U2482>
+<U2483> IGNORE;IGNORE;IGNORE;<U2483>
+<U2484> IGNORE;IGNORE;IGNORE;<U2484>
+<U2485> IGNORE;IGNORE;IGNORE;<U2485>
+<U2486> IGNORE;IGNORE;IGNORE;<U2486>
+<U2487> IGNORE;IGNORE;IGNORE;<U2487>
+<U2488> IGNORE;IGNORE;IGNORE;<U2488>
+<U2489> IGNORE;IGNORE;IGNORE;<U2489>
+<U248A> IGNORE;IGNORE;IGNORE;<U248A>
+<U248B> IGNORE;IGNORE;IGNORE;<U248B>
+<U248C> IGNORE;IGNORE;IGNORE;<U248C>
+<U248D> IGNORE;IGNORE;IGNORE;<U248D>
+<U248E> IGNORE;IGNORE;IGNORE;<U248E>
+<U248F> IGNORE;IGNORE;IGNORE;<U248F>
+<U2490> IGNORE;IGNORE;IGNORE;<U2490>
+<U2491> IGNORE;IGNORE;IGNORE;<U2491>
+<U2492> IGNORE;IGNORE;IGNORE;<U2492>
+<U2493> IGNORE;IGNORE;IGNORE;<U2493>
+<U2494> IGNORE;IGNORE;IGNORE;<U2494>
+<U2495> IGNORE;IGNORE;IGNORE;<U2495>
+<U2496> IGNORE;IGNORE;IGNORE;<U2496>
+<U2497> IGNORE;IGNORE;IGNORE;<U2497>
+<U2498> IGNORE;IGNORE;IGNORE;<U2498>
+<U2499> IGNORE;IGNORE;IGNORE;<U2499>
+<U249A> IGNORE;IGNORE;IGNORE;<U249A>
+<U249B> IGNORE;IGNORE;IGNORE;<U249B>
+<U24EA> IGNORE;IGNORE;IGNORE;<U24EA>
+<U2500> IGNORE;IGNORE;IGNORE;<U2500>
+<U2550> IGNORE;IGNORE;IGNORE;<U2550>
+<U2502> IGNORE;IGNORE;IGNORE;<U2502>
+<U2551> IGNORE;IGNORE;IGNORE;<U2551>
+<U2504> IGNORE;IGNORE;IGNORE;<U2504>
+<U2505> IGNORE;IGNORE;IGNORE;<U2505>
+<U2506> IGNORE;IGNORE;IGNORE;<U2506>
+<U2507> IGNORE;IGNORE;IGNORE;<U2507>
+<U2508> IGNORE;IGNORE;IGNORE;<U2508>
+<U2509> IGNORE;IGNORE;IGNORE;<U2509>
+<U250A> IGNORE;IGNORE;IGNORE;<U250A>
+<U250B> IGNORE;IGNORE;IGNORE;<U250B>
+<U250C> IGNORE;IGNORE;IGNORE;<U250C>
+<U2552> IGNORE;IGNORE;IGNORE;<U2552>
+<U2553> IGNORE;IGNORE;IGNORE;<U2553>
+<U2554> IGNORE;IGNORE;IGNORE;<U2554>
+<U2510> IGNORE;IGNORE;IGNORE;<U2510>
+<U2555> IGNORE;IGNORE;IGNORE;<U2555>
+<U2556> IGNORE;IGNORE;IGNORE;<U2556>
+<U2557> IGNORE;IGNORE;IGNORE;<U2557>
+<U2514> IGNORE;IGNORE;IGNORE;<U2514>
+<U2558> IGNORE;IGNORE;IGNORE;<U2558>
+<U2559> IGNORE;IGNORE;IGNORE;<U2559>
+<U255A> IGNORE;IGNORE;IGNORE;<U255A>
+<U2518> IGNORE;IGNORE;IGNORE;<U2518>
+<U255B> IGNORE;IGNORE;IGNORE;<U255B>
+<U255C> IGNORE;IGNORE;IGNORE;<U255C>
+<U255D> IGNORE;IGNORE;IGNORE;<U255D>
+<U251C> IGNORE;IGNORE;IGNORE;<U251C>
+<U255E> IGNORE;IGNORE;IGNORE;<U255E>
+<U251E> IGNORE;IGNORE;IGNORE;<U251E>
+<U251F> IGNORE;IGNORE;IGNORE;<U251F>
+<U255F> IGNORE;IGNORE;IGNORE;<U255F>
+<U2521> IGNORE;IGNORE;IGNORE;<U2521>
+<U2522> IGNORE;IGNORE;IGNORE;<U2522>
+<U2560> IGNORE;IGNORE;IGNORE;<U2560>
+<U2524> IGNORE;IGNORE;IGNORE;<U2524>
+<U2561> IGNORE;IGNORE;IGNORE;<U2561>
+<U2526> IGNORE;IGNORE;IGNORE;<U2526>
+<U2527> IGNORE;IGNORE;IGNORE;<U2527>
+<U2562> IGNORE;IGNORE;IGNORE;<U2562>
+<U2529> IGNORE;IGNORE;IGNORE;<U2529>
+<U252A> IGNORE;IGNORE;IGNORE;<U252A>
+<U2563> IGNORE;IGNORE;IGNORE;<U2563>
+<U252C> IGNORE;IGNORE;IGNORE;<U252C>
+<U252D> IGNORE;IGNORE;IGNORE;<U252D>
+<U252E> IGNORE;IGNORE;IGNORE;<U252E>
+<U2564> IGNORE;IGNORE;IGNORE;<U2564>
+<U2565> IGNORE;IGNORE;IGNORE;<U2565>
+<U2531> IGNORE;IGNORE;IGNORE;<U2531>
+<U2532> IGNORE;IGNORE;IGNORE;<U2532>
+<U2566> IGNORE;IGNORE;IGNORE;<U2566>
+<U2534> IGNORE;IGNORE;IGNORE;<U2534>
+<U2535> IGNORE;IGNORE;IGNORE;<U2535>
+<U2536> IGNORE;IGNORE;IGNORE;<U2536>
+<U2567> IGNORE;IGNORE;IGNORE;<U2567>
+<U2568> IGNORE;IGNORE;IGNORE;<U2568>
+<U2539> IGNORE;IGNORE;IGNORE;<U2539>
+<U253A> IGNORE;IGNORE;IGNORE;<U253A>
+<U2569> IGNORE;IGNORE;IGNORE;<U2569>
+<U253C> IGNORE;IGNORE;IGNORE;<U253C>
+<U253D> IGNORE;IGNORE;IGNORE;<U253D>
+<U253E> IGNORE;IGNORE;IGNORE;<U253E>
+<U256A> IGNORE;IGNORE;IGNORE;<U256A>
+<U2540> IGNORE;IGNORE;IGNORE;<U2540>
+<U2541> IGNORE;IGNORE;IGNORE;<U2541>
+<U256B> IGNORE;IGNORE;IGNORE;<U256B>
+<U2543> IGNORE;IGNORE;IGNORE;<U2543>
+<U2544> IGNORE;IGNORE;IGNORE;<U2544>
+<U2545> IGNORE;IGNORE;IGNORE;<U2545>
+<U2546> IGNORE;IGNORE;IGNORE;<U2546>
+<U2547> IGNORE;IGNORE;IGNORE;<U2547>
+<U2548> IGNORE;IGNORE;IGNORE;<U2548>
+<U2549> IGNORE;IGNORE;IGNORE;<U2549>
+<U254A> IGNORE;IGNORE;IGNORE;<U254A>
+<U256C> IGNORE;IGNORE;IGNORE;<U256C>
+<U2571> IGNORE;IGNORE;IGNORE;<U2571>
+<U2572> IGNORE;IGNORE;IGNORE;<U2572>
+<U2580> IGNORE;IGNORE;IGNORE;<U2580>
+<U2584> IGNORE;IGNORE;IGNORE;<U2584>
+<U2588> IGNORE;IGNORE;IGNORE;<U2588>
+<U258C> IGNORE;IGNORE;IGNORE;<U258C>
+<U2590> IGNORE;IGNORE;IGNORE;<U2590>
+<U2591> IGNORE;IGNORE;IGNORE;<U2591>
+<U2592> IGNORE;IGNORE;IGNORE;<U2592>
+<U2593> IGNORE;IGNORE;IGNORE;<U2593>
+<U25A0> IGNORE;IGNORE;IGNORE;<U25A0>
+<U25A1> IGNORE;IGNORE;IGNORE;<U25A1>
+<U25A2> IGNORE;IGNORE;IGNORE;<U25A2>
+<U25A3> IGNORE;IGNORE;IGNORE;<U25A3>
+<U25A4> IGNORE;IGNORE;IGNORE;<U25A4>
+<U25A5> IGNORE;IGNORE;IGNORE;<U25A5>
+<U25A6> IGNORE;IGNORE;IGNORE;<U25A6>
+<U25A7> IGNORE;IGNORE;IGNORE;<U25A7>
+<U25A8> IGNORE;IGNORE;IGNORE;<U25A8>
+<U25A9> IGNORE;IGNORE;IGNORE;<U25A9>
+<U25AA> IGNORE;IGNORE;IGNORE;<U25AA>
+<U25AC> IGNORE;IGNORE;IGNORE;<U25AC>
+<U25AD> IGNORE;IGNORE;IGNORE;<U25AD>
+<U25B2> IGNORE;IGNORE;IGNORE;<U25B2>
+<U25B3> IGNORE;IGNORE;IGNORE;<U25B3>
+<U25B7> IGNORE;IGNORE;IGNORE;<U25B7>
+<U25BA> IGNORE;IGNORE;IGNORE;<U25BA>
+<U25BC> IGNORE;IGNORE;IGNORE;<U25BC>
+<U25BD> IGNORE;IGNORE;IGNORE;<U25BD>
+<U25C1> IGNORE;IGNORE;IGNORE;<U25C1>
+<U25C4> IGNORE;IGNORE;IGNORE;<U25C4>
+<U25C6> IGNORE;IGNORE;IGNORE;<U25C6>
+<U25C7> IGNORE;IGNORE;IGNORE;<U25C7>
+<U25CA> IGNORE;IGNORE;IGNORE;<U25CA>
+<U25CB> IGNORE;IGNORE;IGNORE;<U25CB>
+<U25CE> IGNORE;IGNORE;IGNORE;<U25CE>
+<U25CF> IGNORE;IGNORE;IGNORE;<U25CF>
+<U25D0> IGNORE;IGNORE;IGNORE;<U25D0>
+<U25D1> IGNORE;IGNORE;IGNORE;<U25D1>
+<U25D8> IGNORE;IGNORE;IGNORE;<U25D8>
+<U25D9> IGNORE;IGNORE;IGNORE;<U25D9>
+<U25E2> IGNORE;IGNORE;IGNORE;<U25E2>
+<U25E3> IGNORE;IGNORE;IGNORE;<U25E3>
+<U25EF> IGNORE;IGNORE;IGNORE;<U25EF>
+<U2605> IGNORE;IGNORE;IGNORE;<U2605>
+<U2606> IGNORE;IGNORE;IGNORE;<U2606>
+<U260E> IGNORE;IGNORE;IGNORE;<U260E>
+<U260F> IGNORE;IGNORE;IGNORE;<U260F>
+<U261C> IGNORE;IGNORE;IGNORE;<U261C>
+<U261E> IGNORE;IGNORE;IGNORE;<U261E>
+<U263A> IGNORE;IGNORE;IGNORE;<U263A>
+<U263B> IGNORE;IGNORE;IGNORE;<U263B>
+<U263C> IGNORE;IGNORE;IGNORE;<U263C>
+<U2640> IGNORE;IGNORE;IGNORE;<U2640>
+<U2642> IGNORE;IGNORE;IGNORE;<U2642>
+<U2660> IGNORE;IGNORE;IGNORE;<U2660>
+<U2661> IGNORE;IGNORE;IGNORE;<U2661>
+<U2662> IGNORE;IGNORE;IGNORE;<U2662>
+<U2663> IGNORE;IGNORE;IGNORE;<U2663>
+<U2664> IGNORE;IGNORE;IGNORE;<U2664>
+<U2665> IGNORE;IGNORE;IGNORE;<U2665>
+<U2666> IGNORE;IGNORE;IGNORE;<U2666>
+<U2667> IGNORE;IGNORE;IGNORE;<U2667>
+<U2669> IGNORE;IGNORE;IGNORE;<U2669>
+<U266A> IGNORE;IGNORE;IGNORE;<U266A>
+<U266B> IGNORE;IGNORE;IGNORE;<U266B>
+<U266C> IGNORE;IGNORE;IGNORE;<U266C>
+<U266D> IGNORE;IGNORE;IGNORE;<U266D>
+<U266E> IGNORE;IGNORE;IGNORE;<U266E>
+<U266F> IGNORE;IGNORE;IGNORE;<U266F>
+<U2713> IGNORE;IGNORE;IGNORE;<U2713>
+<U2717> IGNORE;IGNORE;IGNORE;<U2717>
+<U2720> IGNORE;IGNORE;IGNORE;<U2720>
+<U3000> IGNORE;IGNORE;IGNORE;<U3000>
+<U3001> IGNORE;IGNORE;IGNORE;<U3001>
+<U3002> IGNORE;IGNORE;IGNORE;<U3002>
+<U3003> IGNORE;IGNORE;IGNORE;<U3003>
+<U3004> IGNORE;IGNORE;IGNORE;<U3004>
+<U3005> IGNORE;IGNORE;IGNORE;<U3005>
+<U3006> IGNORE;IGNORE;IGNORE;<U3006>
+<U3007> IGNORE;IGNORE;IGNORE;<U3007>
+<U300A> IGNORE;IGNORE;IGNORE;<U300A>
+<U300B> IGNORE;IGNORE;IGNORE;<U300B>
+<U300C> IGNORE;IGNORE;IGNORE;<U300C>
+<U300D> IGNORE;IGNORE;IGNORE;<U300D>
+<U300E> IGNORE;IGNORE;IGNORE;<U300E>
+<U300F> IGNORE;IGNORE;IGNORE;<U300F>
+<U3010> IGNORE;IGNORE;IGNORE;<U3010>
+<U3011> IGNORE;IGNORE;IGNORE;<U3011>
+<U3012> IGNORE;IGNORE;IGNORE;<U3012>
+<U3013> IGNORE;IGNORE;IGNORE;<U3013>
+<U3014> IGNORE;IGNORE;IGNORE;<U3014>
+<U3015> IGNORE;IGNORE;IGNORE;<U3015>
+<U3016> IGNORE;IGNORE;IGNORE;<U3016>
+<U3017> IGNORE;IGNORE;IGNORE;<U3017>
+<U301C> IGNORE;IGNORE;IGNORE;<U301C>
+<U3020> IGNORE;IGNORE;IGNORE;<U3020>
+<U309B> IGNORE;IGNORE;IGNORE;<U309B>
+<U309C> IGNORE;IGNORE;IGNORE;<U309C>
+<U309D> IGNORE;IGNORE;IGNORE;<U309D>
+<U309E> IGNORE;IGNORE;IGNORE;<U309E>
+<U30FB> IGNORE;IGNORE;IGNORE;<U30FB>
+<U30FC> IGNORE;IGNORE;IGNORE;<U30FC>
+<U30FD> IGNORE;IGNORE;IGNORE;<U30FD>
+<U30FE> IGNORE;IGNORE;IGNORE;<U30FE>
+<U321C> IGNORE;IGNORE;IGNORE;<U321C>
+<U3220> IGNORE;IGNORE;IGNORE;<U3220>
+<U3221> IGNORE;IGNORE;IGNORE;<U3221>
+<U3222> IGNORE;IGNORE;IGNORE;<U3222>
+<U3223> IGNORE;IGNORE;IGNORE;<U3223>
+<U3224> IGNORE;IGNORE;IGNORE;<U3224>
+<U3225> IGNORE;IGNORE;IGNORE;<U3225>
+<U3226> IGNORE;IGNORE;IGNORE;<U3226>
+<U3227> IGNORE;IGNORE;IGNORE;<U3227>
+<U3228> IGNORE;IGNORE;IGNORE;<U3228>
+<U3229> IGNORE;IGNORE;IGNORE;<U3229>
+<U327F> IGNORE;IGNORE;IGNORE;<U327F>
+<U33C2> IGNORE;IGNORE;IGNORE;<U33C2>
+<U33D8> IGNORE;IGNORE;IGNORE;<U33D8>
+<U0000> IGNORE;IGNORE;IGNORE;<U0000>
+<U0001> IGNORE;IGNORE;IGNORE;<U0001>
+<U0002> IGNORE;IGNORE;IGNORE;<U0002>
+<U0003> IGNORE;IGNORE;IGNORE;<U0003>
+<U0004> IGNORE;IGNORE;IGNORE;<U0004>
+<U0005> IGNORE;IGNORE;IGNORE;<U0005>
+<U0006> IGNORE;IGNORE;IGNORE;<U0006>
+<U0007> IGNORE;IGNORE;IGNORE;<U0007>
+<U0008> IGNORE;IGNORE;IGNORE;<U0008>
+<U000E> IGNORE;IGNORE;IGNORE;<U000E>
+<U000F> IGNORE;IGNORE;IGNORE;<U000F>
+<U0010> IGNORE;IGNORE;IGNORE;<U0010>
+<U0011> IGNORE;IGNORE;IGNORE;<U0011>
+<U0012> IGNORE;IGNORE;IGNORE;<U0012>
+<U0013> IGNORE;IGNORE;IGNORE;<U0013>
+<U0014> IGNORE;IGNORE;IGNORE;<U0014>
+<U0015> IGNORE;IGNORE;IGNORE;<U0015>
+<U0016> IGNORE;IGNORE;IGNORE;<U0016>
+<U0017> IGNORE;IGNORE;IGNORE;<U0017>
+<U0018> IGNORE;IGNORE;IGNORE;<U0018>
+<U0019> IGNORE;IGNORE;IGNORE;<U0019>
+<U001A> IGNORE;IGNORE;IGNORE;<U001A>
+<U001B> IGNORE;IGNORE;IGNORE;<U001B>
+<U001C> IGNORE;IGNORE;IGNORE;<U001C>
+<U001D> IGNORE;IGNORE;IGNORE;<U001D>
+<U001E> IGNORE;IGNORE;IGNORE;<U001E>
+<U001F> IGNORE;IGNORE;IGNORE;<U001F>
+<U007F> IGNORE;IGNORE;IGNORE;<U007F>
+<U0080> IGNORE;IGNORE;IGNORE;<U0080>
+<U0081> IGNORE;IGNORE;IGNORE;<U0081>
+<U0082> IGNORE;IGNORE;IGNORE;<U0082>
+<U0083> IGNORE;IGNORE;IGNORE;<U0083>
+<U0084> IGNORE;IGNORE;IGNORE;<U0084>
+<U0085> IGNORE;IGNORE;IGNORE;<U0085>
+<U0086> IGNORE;IGNORE;IGNORE;<U0086>
+<U0087> IGNORE;IGNORE;IGNORE;<U0087>
+<U0088> IGNORE;IGNORE;IGNORE;<U0088>
+<U0089> IGNORE;IGNORE;IGNORE;<U0089>
+<U008A> IGNORE;IGNORE;IGNORE;<U008A>
+<U008B> IGNORE;IGNORE;IGNORE;<U008B>
+<U008C> IGNORE;IGNORE;IGNORE;<U008C>
+<U008D> IGNORE;IGNORE;IGNORE;<U008D>
+<U008E> IGNORE;IGNORE;IGNORE;<U008E>
+<U008F> IGNORE;IGNORE;IGNORE;<U008F>
+<U0090> IGNORE;IGNORE;IGNORE;<U0090>
+<U0091> IGNORE;IGNORE;IGNORE;<U0091>
+<U0092> IGNORE;IGNORE;IGNORE;<U0092>
+<U0093> IGNORE;IGNORE;IGNORE;<U0093>
+<U0094> IGNORE;IGNORE;IGNORE;<U0094>
+<U0095> IGNORE;IGNORE;IGNORE;<U0095>
+<U0096> IGNORE;IGNORE;IGNORE;<U0096>
+<U0097> IGNORE;IGNORE;IGNORE;<U0097>
+<U0098> IGNORE;IGNORE;IGNORE;<U0098>
+<U0099> IGNORE;IGNORE;IGNORE;<U0099>
+<U009A> IGNORE;IGNORE;IGNORE;<U009A>
+<U009B> IGNORE;IGNORE;IGNORE;<U009B>
+<U009C> IGNORE;IGNORE;IGNORE;<U009C>
+<U009D> IGNORE;IGNORE;IGNORE;<U009D>
+<U009E> IGNORE;IGNORE;IGNORE;<U009E>
+<U009F> IGNORE;IGNORE;IGNORE;<U009F>
+<UE000> IGNORE;IGNORE;IGNORE;<UE000>
+<UE001> IGNORE;IGNORE;IGNORE;<UE001>
+<UE002> IGNORE;IGNORE;IGNORE;<UE002>
+<U0301> IGNORE;IGNORE;IGNORE;<U0301>
+<UE004> IGNORE;IGNORE;IGNORE;<UE004>
+<UE005> IGNORE;IGNORE;IGNORE;<UE005>
+<UE006> IGNORE;IGNORE;IGNORE;<UE006>
+<UE007> IGNORE;IGNORE;IGNORE;<UE007>
+<UE008> IGNORE;IGNORE;IGNORE;<UE008>
+<UE009> IGNORE;IGNORE;IGNORE;<UE009>
+<UE00A> IGNORE;IGNORE;IGNORE;<UE00A>
+<UE00B> IGNORE;IGNORE;IGNORE;<UE00B>
+<UE00C> IGNORE;IGNORE;IGNORE;<UE00C>
+<UE00D> IGNORE;IGNORE;IGNORE;<UE00D>
+<UE00E> IGNORE;IGNORE;IGNORE;<UE00E>
+<UE00F> IGNORE;IGNORE;IGNORE;<UE00F>
+<"=> IGNORE;IGNORE;IGNORE;<"=>
+<UE011> IGNORE;IGNORE;IGNORE;<UE011>
+<UE012> IGNORE;IGNORE;IGNORE;<UE012>
+<UE013> IGNORE;IGNORE;IGNORE;<UE013>
+<UE014> IGNORE;IGNORE;IGNORE;<UE014>
+<UE015> IGNORE;IGNORE;IGNORE;<UE015>
+<UE017> IGNORE;IGNORE;IGNORE;<UE017>
+<UE018> IGNORE;IGNORE;IGNORE;<UE018>
+<UE019> IGNORE;IGNORE;IGNORE;<UE019>
+UNDEFINED IGNORE;IGNORE;IGNORE
+
+<U0030> <U0030>;<U0030>;IGNORE;IGNORE
+<U2070> <U0030>;<U2070>;IGNORE;IGNORE
+<U215B> <U0030>;<U215B>;IGNORE;IGNORE
+<U00BC> <U0030>;<U00BC>;IGNORE;IGNORE
+<U215C> <U0030>;<U215C>;IGNORE;IGNORE
+<U00BD> <U0030>;<U00BD>;IGNORE;IGNORE
+<U215D> <U0030>;<U215D>;IGNORE;IGNORE
+<U00BE> <U0030>;<U00BE>;IGNORE;IGNORE
+<U215E> <U0030>;<U215E>;IGNORE;IGNORE
+<U0031> <U0031>;<U0031>;IGNORE;IGNORE
+<U0032> <U0032>;<U0032>;IGNORE;IGNORE
+<U0033> <U0033>;<U0033>;IGNORE;IGNORE
+<U0034> <U0034>;<U0034>;IGNORE;IGNORE
+<U0035> <U0035>;<U0035>;IGNORE;IGNORE
+<U0036> <U0036>;<U0036>;IGNORE;IGNORE
+<U0037> <U0037>;<U0037>;IGNORE;IGNORE
+<U0038> <U0038>;<U0038>;IGNORE;IGNORE
+<U0039> <U0039>;<U0039>;IGNORE;IGNORE
+<U00B9> <U0031>;<U00B9>;IGNORE;IGNORE
+<U00B2> <U0032>;<U00B2>;IGNORE;IGNORE
+<U00B3> <U0033>;<U00B3>;IGNORE;IGNORE
+<U2074> <U0034>;<U2074>;IGNORE;IGNORE
+<U2075> <U0035>;<U2075>;IGNORE;IGNORE
+<U2076> <U0036>;<U2076>;IGNORE;IGNORE
+<U2077> <U0037>;<U2077>;IGNORE;IGNORE
+<U2078> <U0038>;<U2078>;IGNORE;IGNORE
+<U2079> <U0039>;<U2079>;IGNORE;IGNORE
+<U0041> <U0041>;<NONE>;<CAPITAL>;IGNORE
+<U0061> <U0041>;<NONE>;<SMALL>;IGNORE
+<U00AA> <U0041>;<NONE>;<U00AA>;IGNORE
+<U00C1> <U0041>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E1> <U0041>;<ACUTE>;<SMALL>;IGNORE
+<U00C0> <U0041>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E0> <U0041>;<GRAVE>;<SMALL>;IGNORE
+<U0200> <U0041>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0201> <U0041>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0102> <U0041>;<BREVE>;<CAPITAL>;IGNORE
+<U0103> <U0041>;<BREVE>;<SMALL>;IGNORE
+<U1EAE> <U0041>;<BREVE+ACUTE>;<CAPITAL>;IGNORE
+<U1EAF> <U0041>;<BREVE+ACUTE>;<SMALL>;IGNORE
+<U1EB0> <U0041>;<BREVE+GRAVE>;<CAPITAL>;IGNORE
+<U1EB1> <U0041>;<BREVE+GRAVE>;<SMALL>;IGNORE
+<U1EB2> <U0041>;<BREVE+HOOK>;<CAPITAL>;IGNORE
+<U1EB3> <U0041>;<BREVE+HOOK>;<SMALL>;IGNORE
+<U1EB4> <U0041>;<BREVE+TILDE>;<CAPITAL>;IGNORE
+<U1EB5> <U0041>;<BREVE+TILDE>;<SMALL>;IGNORE
+<U1EB6> <U0041>;<BREVE+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB7> <U0041>;<BREVE+DOT-BELOW>;<SMALL>;IGNORE
+<U0202> <U0041>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0203> <U0041>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00C2> <U0041>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00E2> <U0041>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EA4> <U0041>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EA5> <U0041>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EA6> <U0041>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EA7> <U0041>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EA8> <U0041>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EA9> <U0041>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EAA> <U0041>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EAB> <U0041>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EAC> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EAD> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01CD> <U0041>;<CARON>;<CAPITAL>;IGNORE
+<U01CE> <U0041>;<CARON>;<SMALL>;IGNORE
+<U00C5> <U0041>;<RING>;<CAPITAL>;IGNORE
+<U00E5> <U0041>;<RING>;<SMALL>;IGNORE
+<U01FA> <U0041>;<RING+ACUTE>;<CAPITAL>;IGNORE
+<U01FB> <U0041>;<RING+ACUTE>;<SMALL>;IGNORE
+<U1E00> <U0041>;<RING-BELOW>;<CAPITAL>;IGNORE
+<U1E01> <U0041>;<RING-BELOW>;<SMALL>;IGNORE
+<U00C4> <U0041>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00E4> <U0041>;<DIAERESIS>;<SMALL>;IGNORE
+<U01DE> <U0041>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01DF> <U0041>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U1EA2> <U0041>;<HOOK>;<CAPITAL>;IGNORE
+<U1EA3> <U0041>;<HOOK>;<SMALL>;IGNORE
+<U00C3> <U0041>;<TILDE>;<CAPITAL>;IGNORE
+<U00E3> <U0041>;<TILDE>;<SMALL>;IGNORE
+<U1EA0> <U0041>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EA1> <U0041>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0104> <U0041>;<OGONEK>;<CAPITAL>;IGNORE
+<U0105> <U0041>;<OGONEK>;<SMALL>;IGNORE
+<U0100> <U0041>;<MACRON>;<CAPITAL>;IGNORE
+<U0101> <U0041>;<MACRON>;<SMALL>;IGNORE
+<U01E0> <U0041>;<MACRON+DOT>;<CAPITAL>;IGNORE
+<U01E1> <U0041>;<MACRON+DOT>;<SMALL>;IGNORE
+<a8>
+<U00C6> "<U0041><U0045>";"<U00C6><U00C6>";"<CAPITAL><CAPITAL>";IGNORE
+<U00E6> "<U0041><U0045>";"<U00C6><U00C6>";"<SMALL><SMALL>";IGNORE
+<U01FC> "<U0041><U0045>";"<U01FC><U01FC>";"<CAPITAL><CAPITAL>";IGNORE
+<U01FD> "<U0041><U0045>";"<U01FC><U01FC>";"<SMALL><SMALL>";IGNORE
+<U01E2> "<U0041><U0045>";"<U01E2><U01E2>";"<CAPITAL><CAPITAL>";IGNORE
+<U01E3> "<U0041><U0045>";"<U01E2><U01E2>";"<SMALL><SMALL>";IGNORE
+<U0042> <U0042>;<NONE>;<CAPITAL>;IGNORE
+<U0062> <U0042>;<NONE>;<SMALL>;IGNORE
+<U1E02> <U0042>;<DOT>;<CAPITAL>;IGNORE
+<U1E03> <U0042>;<DOT>;<SMALL>;IGNORE
+<U1E04> <U0042>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E05> <U0042>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E06> <U0042>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E07> <U0042>;<LINE-BELOW>;<SMALL>;IGNORE
+<b8>
+<U0043> <U0043>;<NONE>;<CAPITAL>;IGNORE
+<U0063> <U0043>;<NONE>;<SMALL>;IGNORE
+<U0108> <U0043>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0109> <U0043>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0187> <U0043>;<HOOK>;<CAPITAL>;IGNORE
+<U0188> <U0043>;<HOOK>;<SMALL>;IGNORE
+<U010A> <U0043>;<DOT>;<CAPITAL>;IGNORE
+<U010B> <U0043>;<DOT>;<SMALL>;IGNORE
+<U00C7> <U0043>;<CEDILLA>;<CAPITAL>;IGNORE
+<U00E7> <U0043>;<CEDILLA>;<SMALL>;IGNORE
+<U1E08> <U0043>;<CEDILLA+ACUTE>;<CAPITAL>;IGNORE
+<U1E09> <U0043>;<CEDILLA+ACUTE>;<SMALL>;IGNORE
+<c8>
+<U010C> <U010C>;<NONE>;<CAPITAL>;IGNORE
+<U010D> <U010C>;<NONE>;<SMALL>;IGNORE
+<U0106> <U0106>;<NONE>;<CAPITAL>;IGNORE
+<U0107> <U0106>;<NONE>;<SMALL>;IGNORE
+<U0044> <U0044>;<NONE>;<CAPITAL>;IGNORE
+<U0064> <U0044>;<NONE>;<SMALL>;IGNORE
+<U010E> <U0044>;<CARON>;<CAPITAL>;IGNORE
+<U010F> <U0044>;<CARON>;<SMALL>;IGNORE
+<U1E0A> <U0044>;<DOT>;<CAPITAL>;IGNORE
+<U1E0B> <U0044>;<DOT>;<SMALL>;IGNORE
+<U1E0C> <U0044>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E0D> <U0044>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E10> <U0044>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E11> <U0044>;<CEDILLA>;<SMALL>;IGNORE
+<U1E12> <U0044>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E13> <U0044>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E0E> <U0044>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E0F> <U0044>;<LINE-BELOW>;<SMALL>;IGNORE
+<d8>
+<D-Z<> <D-Z<>;<NONE>;<CAPITAL>;IGNORE
+<D-z<> <D-Z<>;<NONE>;<CAPITAL-SMALL>;IGNORE
+<d-Z<> <D-Z<>;<NONE>;<SMALL-CAPITAL>;IGNORE
+<d-z<> <D-Z<>;<NONE>;<SMALL>;IGNORE
+<U0110> <U0110>;<NONE>;<CAPITAL>;IGNORE
+<U0111> <U0110>;<NONE>;<SMALL>;IGNORE
+<U0045> <U0045>;<NONE>;<CAPITAL>;IGNORE
+<U0065> <U0045>;<NONE>;<SMALL>;IGNORE
+<U00C9> <U0045>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E9> <U0045>;<ACUTE>;<SMALL>;IGNORE
+<U00C8> <U0045>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E8> <U0045>;<GRAVE>;<SMALL>;IGNORE
+<U0204> <U0045>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0205> <U0045>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0114> <U0045>;<BREVE>;<CAPITAL>;IGNORE
+<U0115> <U0045>;<BREVE>;<SMALL>;IGNORE
+<U0206> <U0045>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0207> <U0045>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CA> <U0045>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EA> <U0045>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EBE> <U0045>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EBF> <U0045>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EC0> <U0045>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EC1> <U0045>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EC2> <U0045>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EC3> <U0045>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EC4> <U0045>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EC5> <U0045>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EC6> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EC7> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U011A> <U0045>;<CARON>;<CAPITAL>;IGNORE
+<U011B> <U0045>;<CARON>;<SMALL>;IGNORE
+<U00CB> <U0045>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EB> <U0045>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EBA> <U0045>;<HOOK>;<CAPITAL>;IGNORE
+<U1EBB> <U0045>;<HOOK>;<SMALL>;IGNORE
+<U1EBC> <U0045>;<TILDE>;<CAPITAL>;IGNORE
+<U1EBD> <U0045>;<TILDE>;<SMALL>;IGNORE
+<U1E1A> <U0045>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E1B> <U0045>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0116> <U0045>;<DOT>;<CAPITAL>;IGNORE
+<U0117> <U0045>;<DOT>;<SMALL>;IGNORE
+<U1EB8> <U0045>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB9> <U0045>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E1C> <U0045>;<CEDILLA+BREVE>;<CAPITAL>;IGNORE
+<U1E1D> <U0045>;<CEDILLA+BREVE>;<SMALL>;IGNORE
+<U0118> <U0045>;<OGONEK>;<CAPITAL>;IGNORE
+<U0119> <U0045>;<OGONEK>;<SMALL>;IGNORE
+<U0112> <U0045>;<MACRON>;<CAPITAL>;IGNORE
+<U0113> <U0045>;<MACRON>;<SMALL>;IGNORE
+<U1E16> <U0045>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E17> <U0045>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E14> <U0045>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E15> <U0045>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U1E18> <U0045>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E19> <U0045>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<e8>
+<U0046> <U0046>;<NONE>;<CAPITAL>;IGNORE
+<U0066> <U0046>;<NONE>;<SMALL>;IGNORE
+<U0191> <U0046>;<HOOK>;<CAPITAL>;IGNORE
+<U0192> <U0046>;<HOOK>;<SMALL>;IGNORE
+<U1E1E> <U0046>;<DOT>;<CAPITAL>;IGNORE
+<U1E1F> <U0046>;<DOT>;<SMALL>;IGNORE
+<f8>
+<UFB00> "<U0046><U0046>";"<NONE><NONE>";"<UFB00><UFB00>";IGNORE
+<UFB01> "<U0046><U0049>";"<NONE><NONE>";"<UFB01><UFB01>";IGNORE
+<UFB02> "<U0046><U004C>";"<NONE><NONE>";"<UFB02><UFB02>";IGNORE
+<UFB03> "<U0046><U0046><U0049>";"<NONE><NONE><NONE>";"<UFB03><UFB03><UFB03>";IGNORE
+<UFB04> "<U0046><U0046><U004C>";"<NONE><NONE><NONE>";"<UFB04><UFB04><UFB04>";IGNORE
+<U0047> <U0047>;<NONE>;<CAPITAL>;IGNORE
+<U0067> <U0047>;<NONE>;<SMALL>;IGNORE
+<U01F4> <U0047>;<ACUTE>;<CAPITAL>;IGNORE
+<U01F5> <U0047>;<ACUTE>;<SMALL>;IGNORE
+<U011E> <U0047>;<BREVE>;<CAPITAL>;IGNORE
+<U011F> <U0047>;<BREVE>;<SMALL>;IGNORE
+<U011C> <U0047>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U011D> <U0047>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01E6> <U0047>;<CARON>;<CAPITAL>;IGNORE
+<U01E7> <U0047>;<CARON>;<SMALL>;IGNORE
+<U0120> <U0047>;<DOT>;<CAPITAL>;IGNORE
+<U0121> <U0047>;<DOT>;<SMALL>;IGNORE
+<U01E4> <U0047>;<STROKE>;<CAPITAL>;IGNORE
+<U01E5> <U0047>;<STROKE>;<SMALL>;IGNORE
+<U0122> <U0047>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0123> <U0047>;<CEDILLA>;<SMALL>;IGNORE
+<U1E20> <U0047>;<MACRON>;<CAPITAL>;IGNORE
+<U1E21> <U0047>;<MACRON>;<SMALL>;IGNORE
+<g8>
+<U0048> <U0048>;<NONE>;<CAPITAL>;IGNORE
+<U0068> <U0048>;<NONE>;<SMALL>;IGNORE
+<U1E2A> <U0048>;<BREVE-BELOW>;<CAPITAL>;IGNORE
+<U1E2B> <U0048>;<BREVE-BELOW>;<SMALL>;IGNORE
+<U0124> <U0048>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0125> <U0048>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E26> <U0048>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E27> <U0048>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E22> <U0048>;<DOT>;<CAPITAL>;IGNORE
+<U1E23> <U0048>;<DOT>;<SMALL>;IGNORE
+<U1E24> <U0048>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E25> <U0048>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0126> <U0048>;<STROKE>;<CAPITAL>;IGNORE
+<U0127> <U0048>;<STROKE>;<SMALL>;IGNORE
+<U1E28> <U0048>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E29> <U0048>;<CEDILLA>;<SMALL>;IGNORE
+<h8>
+<U0049> <U0049>;<NONE>;<CAPITAL>;IGNORE
+<U0069> <U0049>;<NONE>;<SMALL>;IGNORE
+<U00CD> <U0049>;<ACUTE>;<CAPITAL>;IGNORE
+<U00ED> <U0049>;<ACUTE>;<SMALL>;IGNORE
+<U00CC> <U0049>;<GRAVE>;<CAPITAL>;IGNORE
+<U00EC> <U0049>;<GRAVE>;<SMALL>;IGNORE
+<U0208> <U0049>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0209> <U0049>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U012C> <U0049>;<BREVE>;<CAPITAL>;IGNORE
+<U012D> <U0049>;<BREVE>;<SMALL>;IGNORE
+<U020A> <U0049>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020B> <U0049>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CE> <U0049>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EE> <U0049>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01CF> <U0049>;<CARON>;<CAPITAL>;IGNORE
+<U01D0> <U0049>;<CARON>;<SMALL>;IGNORE
+<U00CF> <U0049>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EF> <U0049>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E2E> <U0049>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U1E2F> <U0049>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U1EC8> <U0049>;<HOOK>;<CAPITAL>;IGNORE
+<U1EC9> <U0049>;<HOOK>;<SMALL>;IGNORE
+<U0128> <U0049>;<TILDE>;<CAPITAL>;IGNORE
+<U0129> <U0049>;<TILDE>;<SMALL>;IGNORE
+<U1E2C> <U0049>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E2D> <U0049>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0130> <U0049>;<DOT>;<CAPITAL>;IGNORE
+<U0131> <U0049>;<DOT>;<SMALL>;IGNORE
+<U1ECA> <U0049>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECB> <U0049>;<DOT-BELOW>;<SMALL>;IGNORE
+<U012E> <U0049>;<OGONEK>;<CAPITAL>;IGNORE
+<U012F> <U0049>;<OGONEK>;<SMALL>;IGNORE
+<U012A> <U0049>;<MACRON>;<CAPITAL>;IGNORE
+<U012B> <U0049>;<MACRON>;<SMALL>;IGNORE
+<i8>
+<U0132> "<U0049><U004A>";"<U0132><U0132>";"<CAPITAL><CAPITAL>";IGNORE
+<U0133> "<U0049><U004A>";"<U0132><U0132>";"<SMALL><SMALL>";IGNORE
+<U004A> <U004A>;<NONE>;<CAPITAL>;IGNORE
+<U006A> <U004A>;<NONE>;<SMALL>;IGNORE
+<U0134> <U004A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0135> <U004A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<j8>
+<U004B> <U004B>;<NONE>;<CAPITAL>;IGNORE
+<U006B> <U004B>;<NONE>;<SMALL>;IGNORE
+<U1E30> <U004B>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E31> <U004B>;<ACUTE>;<SMALL>;IGNORE
+<U01E8> <U004B>;<CARON>;<CAPITAL>;IGNORE
+<U01E9> <U004B>;<CARON>;<SMALL>;IGNORE
+<U0198> <U004B>;<HOOK>;<CAPITAL>;IGNORE
+<U0199> <U004B>;<HOOK>;<SMALL>;IGNORE
+<U1E32> <U004B>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E33> <U004B>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0136> <U004B>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0137> <U004B>;<CEDILLA>;<SMALL>;IGNORE
+<U1E34> <U004B>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E35> <U004B>;<LINE-BELOW>;<SMALL>;IGNORE
+<k8>
+<U0138> <U004B>;<U0138>;<SMALL>;IGNORE
+<U004C> <U004C>;<NONE>;<CAPITAL>;IGNORE
+<U006C> <U004C>;<NONE>;<SMALL>;IGNORE
+<U0139> <U004C>;<ACUTE>;<CAPITAL>;IGNORE
+<U013A> <U004C>;<ACUTE>;<SMALL>;IGNORE
+<U013D> <U004C>;<CARON>;<CAPITAL>;IGNORE
+<U013E> <U004C>;<CARON>;<SMALL>;IGNORE
+<U013F> <U004C>;<DOT>;<CAPITAL>;IGNORE
+<U0140> <U004C>;<DOT>;<SMALL>;IGNORE
+<U1E36> <U004C>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E37> <U004C>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0141> <U004C>;<STROKE>;<CAPITAL>;IGNORE
+<U0142> <U004C>;<STROKE>;<SMALL>;IGNORE
+<U013B> <U004C>;<CEDILLA>;<CAPITAL>;IGNORE
+<U013C> <U004C>;<CEDILLA>;<SMALL>;IGNORE
+<U1E38> <U004C>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E39> <U004C>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E3C> <U004C>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E3D> <U004C>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E3A> <U004C>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E3B> <U004C>;<LINE-BELOW>;<SMALL>;IGNORE
+<l8>
+<L-J> <L-J>;<NONE>;<CAPITAL>;IGNORE
+<L-j> <L-J>;<NONE>;<CAPITAL-SMALL>;IGNORE
+<l-J> <L-J>;<NONE>;<SMALL-CAPITAL>;IGNORE
+<l-j> <L-J>;<NONE>;<SMALL>;IGNORE
+<U004D> <U004D>;<NONE>;<CAPITAL>;IGNORE
+<U006D> <U004D>;<NONE>;<SMALL>;IGNORE
+<U1E3E> <U004D>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E3F> <U004D>;<ACUTE>;<SMALL>;IGNORE
+<U1E40> <U004D>;<DOT>;<CAPITAL>;IGNORE
+<U1E41> <U004D>;<DOT>;<SMALL>;IGNORE
+<U1E42> <U004D>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E43> <U004D>;<DOT-BELOW>;<SMALL>;IGNORE
+<m8>
+<U004E> <U004E>;<NONE>;<CAPITAL>;IGNORE
+<U006E> <U004E>;<NONE>;<SMALL>;IGNORE
+<U0143> <U004E>;<ACUTE>;<CAPITAL>;IGNORE
+<U0144> <U004E>;<ACUTE>;<SMALL>;IGNORE
+<U0147> <U004E>;<CARON>;<CAPITAL>;IGNORE
+<U0148> <U004E>;<CARON>;<SMALL>;IGNORE
+<U00D1> <U004E>;<TILDE>;<CAPITAL>;IGNORE
+<U00F1> <U004E>;<TILDE>;<SMALL>;IGNORE
+<U1E44> <U004E>;<DOT>;<CAPITAL>;IGNORE
+<U1E45> <U004E>;<DOT>;<SMALL>;IGNORE
+<U1E46> <U004E>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E47> <U004E>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0145> <U004E>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0146> <U004E>;<CEDILLA>;<SMALL>;IGNORE
+<U1E4A> <U004E>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E4B> <U004E>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E48> <U004E>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E49> <U004E>;<LINE-BELOW>;<SMALL>;IGNORE
+<U0149> <U004E>;<PRECEDED-BY-APOSTROPHE>;<SMALL>;IGNORE
+<n8>
+<N-J> <N-J>;<NONE>;<CAPITAL>;IGNORE
+<N-j> <N-J>;<NONE>;<CAPITAL-SMALL>;IGNORE
+<n-J> <N-J>;<NONE>;<SMALL-CAPITAL>;IGNORE
+<n-j> <N-J>;<NONE>;<SMALL>;IGNORE
+<U014A> "<U004E><U0047>";"<U014A><U014A>";"<CAPITAL><CAPITAL>";IGNORE
+<U014B> "<U004E><U0047>";"<U014A><U014A>";"<SMALL><SMALL>";IGNORE
+<U004F> <U004F>;<NONE>;<CAPITAL>;IGNORE
+<U006F> <U004F>;<NONE>;<SMALL>;IGNORE
+<U00BA> <U004F>;<NONE>;<U00BA>;IGNORE
+<U00D3> <U004F>;<ACUTE>;<CAPITAL>;IGNORE
+<U00F3> <U004F>;<ACUTE>;<SMALL>;IGNORE
+<U00D2> <U004F>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F2> <U004F>;<GRAVE>;<SMALL>;IGNORE
+<U020C> <U004F>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U020D> <U004F>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U014E> <U004F>;<BREVE>;<CAPITAL>;IGNORE
+<U014F> <U004F>;<BREVE>;<SMALL>;IGNORE
+<U020E> <U004F>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020F> <U004F>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00D4> <U004F>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00F4> <U004F>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1ED0> <U004F>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1ED1> <U004F>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1ED2> <U004F>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1ED3> <U004F>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1ED4> <U004F>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1ED5> <U004F>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1ED6> <U004F>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1ED7> <U004F>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1ED8> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ED9> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01D1> <U004F>;<CARON>;<CAPITAL>;IGNORE
+<U01D2> <U004F>;<CARON>;<SMALL>;IGNORE
+<U00D6> <U004F>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00F6> <U004F>;<DIAERESIS>;<SMALL>;IGNORE
+<U0150> <U004F>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0151> <U004F>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1ECE> <U004F>;<HOOK>;<CAPITAL>;IGNORE
+<U1ECF> <U004F>;<HOOK>;<SMALL>;IGNORE
+<U00D5> <U004F>;<TILDE>;<CAPITAL>;IGNORE
+<U00F5> <U004F>;<TILDE>;<SMALL>;IGNORE
+<U1E4C> <U004F>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E4D> <U004F>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E4E> <U004F>;<TILDE+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E4F> <U004F>;<TILDE+DIAERESIS>;<SMALL>;IGNORE
+<U1ECC> <U004F>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECD> <U004F>;<DOT-BELOW>;<SMALL>;IGNORE
+<U00D8> <U004F>;<STROKE>;<CAPITAL>;IGNORE
+<U00F8> <U004F>;<STROKE>;<SMALL>;IGNORE
+<U01FE> <U004F>;<STROKE+ACUTE>;<CAPITAL>;IGNORE
+<U01FF> <U004F>;<STROKE+ACUTE>;<SMALL>;IGNORE
+<U01EA> <U004F>;<OGONEK>;<CAPITAL>;IGNORE
+<U01EB> <U004F>;<OGONEK>;<SMALL>;IGNORE
+<U01EC> <U004F>;<OGONEK+MACRON>;<CAPITAL>;IGNORE
+<U01ED> <U004F>;<OGONEK+MACRON>;<SMALL>;IGNORE
+<U014C> <U004F>;<MACRON>;<CAPITAL>;IGNORE
+<U014D> <U004F>;<MACRON>;<SMALL>;IGNORE
+<U1E52> <U004F>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E53> <U004F>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E50> <U004F>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E51> <U004F>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U01A0> <U004F>;<HORN>;<CAPITAL>;IGNORE
+<U01A1> <U004F>;<HORN>;<SMALL>;IGNORE
+<U1EDA> <U004F>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EDB> <U004F>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EDC> <U004F>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EDD> <U004F>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EDE> <U004F>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EDF> <U004F>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EE0> <U004F>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EE1> <U004F>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EE2> <U004F>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE3> <U004F>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<o8>
+<U0152> "<U004F><U0045>";"<U0152><U0152>";"<CAPITAL><CAPITAL>";IGNORE
+<U0153> "<U004F><U0045>";"<U0152><U0152>";"<SMALL><SMALL>";IGNORE
+<U0050> <U0050>;<NONE>;<CAPITAL>;IGNORE
+<U0070> <U0050>;<NONE>;<SMALL>;IGNORE
+<U1E54> <U0050>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E55> <U0050>;<ACUTE>;<SMALL>;IGNORE
+<U1E56> <U0050>;<DOT>;<CAPITAL>;IGNORE
+<U1E57> <U0050>;<DOT>;<SMALL>;IGNORE
+<p8>
+<U0051> <U0051>;<NONE>;<CAPITAL>;IGNORE
+<U0071> <U0051>;<NONE>;<SMALL>;IGNORE
+<q8>
+<U0052> <U0052>;<NONE>;<CAPITAL>;IGNORE
+<U0072> <U0052>;<NONE>;<SMALL>;IGNORE
+<U0154> <U0052>;<ACUTE>;<CAPITAL>;IGNORE
+<U0155> <U0052>;<ACUTE>;<SMALL>;IGNORE
+<U0210> <U0052>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0211> <U0052>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0212> <U0052>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0213> <U0052>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U0158> <U0052>;<CARON>;<CAPITAL>;IGNORE
+<U0159> <U0052>;<CARON>;<SMALL>;IGNORE
+<U1E58> <U0052>;<DOT>;<CAPITAL>;IGNORE
+<U1E59> <U0052>;<DOT>;<SMALL>;IGNORE
+<U1E5A> <U0052>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5B> <U0052>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0156> <U0052>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0157> <U0052>;<CEDILLA>;<SMALL>;IGNORE
+<U1E5C> <U0052>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5D> <U0052>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E5E> <U0052>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E5F> <U0052>;<LINE-BELOW>;<SMALL>;IGNORE
+<r8>
+<U0053> <U0053>;<NONE>;<CAPITAL>;IGNORE
+<U0073> <U0053>;<NONE>;<SMALL>;IGNORE
+<UFB06> "<U0053><U0054>";"<NONE><NONE>";"<UFB06><UFB06>";IGNORE
+<U015A> <U0053>;<ACUTE>;<CAPITAL>;IGNORE
+<U015B> <U0053>;<ACUTE>;<SMALL>;IGNORE
+<U1E64> <U0053>;<ACUTE+DOT>;<CAPITAL>;IGNORE
+<U1E65> <U0053>;<ACUTE+DOT>;<SMALL>;IGNORE
+<U015C> <U0053>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U015D> <U0053>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E66> <U0053>;<CARON+DOT>;<CAPITAL>;IGNORE
+<U1E67> <U0053>;<CARON+DOT>;<SMALL>;IGNORE
+<U1E60> <U0053>;<DOT>;<CAPITAL>;IGNORE
+<U1E61> <U0053>;<DOT>;<SMALL>;IGNORE
+<U1E62> <U0053>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E63> <U0053>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E68> <U0053>;<DOT+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E69> <U0053>;<DOT+DOT-BELOW>;<SMALL>;IGNORE
+<U015E> <U0053>;<CEDILLA>;<CAPITAL>;IGNORE
+<U015F> <U0053>;<CEDILLA>;<SMALL>;IGNORE
+<s8>
+<U0160> <U0160>;<NONE>;<CAPITAL>;IGNORE
+<U0161> <U0160>;<NONE>;<SMALL>;IGNORE
+<U017F> <U0053>;<U017F>;<SMALL>;IGNORE
+<U00DF> "<U0053><U0053>";"<NONE><NONE>";"<SMALL><U00DF>";IGNORE
+<UFB05> "<U0053><U0054>";"<NONE><NONE>";"<UFB05><UFB05>";IGNORE
+<U0054> <U0054>;<NONE>;<CAPITAL>;IGNORE
+<U0074> <U0054>;<NONE>;<SMALL>;IGNORE
+<U0164> <U0054>;<CARON>;<CAPITAL>;IGNORE
+<U0165> <U0054>;<CARON>;<SMALL>;IGNORE
+<U1E6A> <U0054>;<DOT>;<CAPITAL>;IGNORE
+<U1E6B> <U0054>;<DOT>;<SMALL>;IGNORE
+<U1E6C> <U0054>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E6D> <U0054>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0166> <U0054>;<STROKE>;<CAPITAL>;IGNORE
+<U0167> <U0054>;<STROKE>;<SMALL>;IGNORE
+<U0162> <U0054>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0163> <U0054>;<CEDILLA>;<SMALL>;IGNORE
+<U1E70> <U0054>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E71> <U0054>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E6E> <U0054>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E6F> <U0054>;<LINE-BELOW>;<SMALL>;IGNORE
+<t8>
+<U00DE> "<U0054><U0048>";"<U00DE><U00DE>";"<CAPITAL><CAPITAL>";IGNORE
+<U00FE> "<U0054><U0048>";"<U00DE><U00DE>";"<SMALL><SMALL>";IGNORE
+<U0055> <U0055>;<NONE>;<CAPITAL>;IGNORE
+<U0075> <U0055>;<NONE>;<SMALL>;IGNORE
+<U00DA> <U0055>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FA> <U0055>;<ACUTE>;<SMALL>;IGNORE
+<U00D9> <U0055>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F9> <U0055>;<GRAVE>;<SMALL>;IGNORE
+<U0214> <U0055>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0215> <U0055>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U016C> <U0055>;<BREVE>;<CAPITAL>;IGNORE
+<U016D> <U0055>;<BREVE>;<SMALL>;IGNORE
+<U0216> <U0055>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0217> <U0055>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00DB> <U0055>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00FB> <U0055>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01D3> <U0055>;<CARON>;<CAPITAL>;IGNORE
+<U01D4> <U0055>;<CARON>;<SMALL>;IGNORE
+<U016E> <U0055>;<RING>;<CAPITAL>;IGNORE
+<U016F> <U0055>;<RING>;<SMALL>;IGNORE
+<U00DC> <U0055>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FC> <U0055>;<DIAERESIS>;<SMALL>;IGNORE
+<U01D5> <U0055>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01D6> <U0055>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U01D7> <U0055>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U01D8> <U0055>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U01DB> <U0055>;<DIAERESIS+GRAVE>;<CAPITAL>;IGNORE
+<U01DC> <U0055>;<DIAERESIS+GRAVE>;<SMALL>;IGNORE
+<U01D9> <U0055>;<DIAERESIS+CARON>;<CAPITAL>;IGNORE
+<U01DA> <U0055>;<DIAERESIS+CARON>;<SMALL>;IGNORE
+<U0170> <U0055>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0171> <U0055>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1EE6> <U0055>;<HOOK>;<CAPITAL>;IGNORE
+<U1EE7> <U0055>;<HOOK>;<SMALL>;IGNORE
+<U0168> <U0055>;<TILDE>;<CAPITAL>;IGNORE
+<U0169> <U0055>;<TILDE>;<SMALL>;IGNORE
+<U1E78> <U0055>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E79> <U0055>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E74> <U0055>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E75> <U0055>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U1EE4> <U0055>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE5> <U0055>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0172> <U0055>;<OGONEK>;<CAPITAL>;IGNORE
+<U0173> <U0055>;<OGONEK>;<SMALL>;IGNORE
+<U016A> <U0055>;<MACRON>;<CAPITAL>;IGNORE
+<U016B> <U0055>;<MACRON>;<SMALL>;IGNORE
+<U1E7A> <U0055>;<MACRON+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E7B> <U0055>;<MACRON+DIAERESIS>;<SMALL>;IGNORE
+<U1E72> <U0055>;<MACRON+DIAERESIS-BELOW>;<CAPITAL>;IGNORE
+<U1E73> <U0055>;<MACRON+DIAERESIS-BELOW>;<SMALL>;IGNORE
+<U1E76> <U0055>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E77> <U0055>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U01AF> <U0055>;<HORN>;<CAPITAL>;IGNORE
+<U01B0> <U0055>;<HORN>;<SMALL>;IGNORE
+<U1EE8> <U0055>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EE9> <U0055>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EEA> <U0055>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EEB> <U0055>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EEC> <U0055>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EED> <U0055>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EEE> <U0055>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EEF> <U0055>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EF0> <U0055>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF1> <U0055>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<u8>
+<U0056> <U0056>;<NONE>;<CAPITAL>;IGNORE
+<U0076> <U0056>;<NONE>;<SMALL>;IGNORE
+<U1E7C> <U0056>;<TILDE>;<CAPITAL>;IGNORE
+<U1E7D> <U0056>;<TILDE>;<SMALL>;IGNORE
+<U1E7E> <U0056>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E7F> <U0056>;<DOT-BELOW>;<SMALL>;IGNORE
+<v8>
+<U0057> <U0057>;<NONE>;<CAPITAL>;IGNORE
+<U0077> <U0057>;<NONE>;<SMALL>;IGNORE
+<U1E82> <U0057>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E83> <U0057>;<ACUTE>;<SMALL>;IGNORE
+<U1E80> <U0057>;<GRAVE>;<CAPITAL>;IGNORE
+<U1E81> <U0057>;<GRAVE>;<SMALL>;IGNORE
+<U0174> <U0057>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0175> <U0057>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E84> <U0057>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E85> <U0057>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E86> <U0057>;<DOT>;<CAPITAL>;IGNORE
+<U1E87> <U0057>;<DOT>;<SMALL>;IGNORE
+<U1E88> <U0057>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E89> <U0057>;<DOT-BELOW>;<SMALL>;IGNORE
+<w8>
+<U0058> <U0058>;<NONE>;<CAPITAL>;IGNORE
+<U0078> <U0058>;<NONE>;<SMALL>;IGNORE
+<U1E8C> <U0058>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E8D> <U0058>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E8A> <U0058>;<DOT>;<CAPITAL>;IGNORE
+<U1E8B> <U0058>;<DOT>;<SMALL>;IGNORE
+<x8>
+<U0059> <U0059>;<NONE>;<CAPITAL>;IGNORE
+<U0079> <U0059>;<NONE>;<SMALL>;IGNORE
+<U00DD> <U0059>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FD> <U0059>;<ACUTE>;<SMALL>;IGNORE
+<U1EF2> <U0059>;<GRAVE>;<CAPITAL>;IGNORE
+<U1EF3> <U0059>;<GRAVE>;<SMALL>;IGNORE
+<U0176> <U0059>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0177> <U0059>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0178> <U0059>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FF> <U0059>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EF6> <U0059>;<HOOK>;<CAPITAL>;IGNORE
+<U1EF7> <U0059>;<HOOK>;<SMALL>;IGNORE
+<U1EF8> <U0059>;<TILDE>;<CAPITAL>;IGNORE
+<U1EF9> <U0059>;<TILDE>;<SMALL>;IGNORE
+<U1E8E> <U0059>;<DOT>;<CAPITAL>;IGNORE
+<U1E8F> <U0059>;<DOT>;<SMALL>;IGNORE
+<U1EF4> <U0059>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF5> <U0059>;<DOT-BELOW>;<SMALL>;IGNORE
+<y8>
+<U005A> <U005A>;<NONE>;<CAPITAL>;IGNORE
+<U007A> <U005A>;<NONE>;<SMALL>;IGNORE
+<U0179> <U005A>;<ACUTE>;<CAPITAL>;IGNORE
+<U017A> <U005A>;<ACUTE>;<SMALL>;IGNORE
+<U1E90> <U005A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E91> <U005A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U017B> <U005A>;<DOT>;<CAPITAL>;IGNORE
+<U017C> <U005A>;<DOT>;<SMALL>;IGNORE
+<U1E92> <U005A>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E93> <U005A>;<DOT-BELOW>;<SMALL>;IGNORE
+<U01B5> <U005A>;<STROKE>;<CAPITAL>;IGNORE
+<U01B6> <U005A>;<STROKE>;<SMALL>;IGNORE
+<U1E94> <U005A>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E95> <U005A>;<LINE-BELOW>;<SMALL>;IGNORE
+<z8>
+<U017D> <U017D>;<NONE>;<CAPITAL>;IGNORE
+<U017E> <U017D>;<NONE>;<SMALL>;IGNORE
+<U0391> <U0391>;<CAPITAL>;<GREEK>;IGNORE
+<U0386> <U0391>;<CAPITAL>;<TONOS>;IGNORE
+<U03B1> <U0391>;<SMALL>;<GREEK>;IGNORE
+<U03AC> <U0391>;<SMALL>;<TONOS>;IGNORE
+<U0392> <U0392>;<CAPITAL>;<GREEK>;IGNORE
+<U03B2> <U0392>;<SMALL>;<GREEK>;IGNORE
+<U0393> <U0393>;<CAPITAL>;<GREEK>;IGNORE
+<U03B3> <U0393>;<SMALL>;<GREEK>;IGNORE
+<U0394> <U0394>;<CAPITAL>;<GREEK>;IGNORE
+<U03B4> <U0394>;<SMALL>;<GREEK>;IGNORE
+<U0395> <U0395>;<CAPITAL>;<GREEK>;IGNORE
+<U0388> <U0395>;<CAPITAL>;<TONOS>;IGNORE
+<U03B5> <U0395>;<SMALL>;<GREEK>;IGNORE
+<U03AD> <U0395>;<SMALL>;<TONOS>;IGNORE
+<U0396> <U0396>;<CAPITAL>;<GREEK>;IGNORE
+<U03B6> <U0396>;<SMALL>;<GREEK>;IGNORE
+<U0397> <U0397>;<CAPITAL>;<GREEK>;IGNORE
+<U0389> <U0397>;<CAPITAL>;<TONOS>;IGNORE
+<U03B7> <U0397>;<SMALL>;<GREEK>;IGNORE
+<U03AE> <U0397>;<SMALL>;<TONOS>;IGNORE
+<U0398> <U0398>;<CAPITAL>;<GREEK>;IGNORE
+<U03B8> <U0398>;<SMALL>;<GREEK>;IGNORE
+<U0399> <U0399>;<CAPITAL>;<GREEK>;IGNORE
+<U038A> <U0399>;<CAPITAL>;<TONOS>;IGNORE
+<U03AA> <U0399>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03B9> <U0399>;<SMALL>;<GREEK>;IGNORE
+<U03AF> <U0399>;<SMALL>;<TONOS>;IGNORE
+<U03CA> <U0399>;<SMALL>;<DIALYTICA>;IGNORE
+<U0390> <U0399>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U039A> <U039A>;<CAPITAL>;<GREEK>;IGNORE
+<U03BA> <U039A>;<SMALL>;<GREEK>;IGNORE
+<U039B> <U039B>;<CAPITAL>;<GREEK>;IGNORE
+<U03BB> <U039B>;<SMALL>;<GREEK>;IGNORE
+<U039C> <U039C>;<CAPITAL>;<GREEK>;IGNORE
+<U03BC> <U039C>;<SMALL>;<GREEK>;IGNORE
+<U039D> <U039D>;<CAPITAL>;<GREEK>;IGNORE
+<U03BD> <U039D>;<SMALL>;<GREEK>;IGNORE
+<U039E> <U039E>;<CAPITAL>;<GREEK>;IGNORE
+<U03BE> <U039E>;<SMALL>;<GREEK>;IGNORE
+<U039F> <U039F>;<CAPITAL>;<GREEK>;IGNORE
+<U038C> <U039F>;<CAPITAL>;<TONOS>;IGNORE
+<U03BF> <U039F>;<SMALL>;<GREEK>;IGNORE
+<U03CC> <U039F>;<SMALL>;<TONOS>;IGNORE
+<U03A0> <U03A0>;<CAPITAL>;<GREEK>;IGNORE
+<U03C0> <U03A0>;<SMALL>;<GREEK>;IGNORE
+<U03A1> <U03A1>;<CAPITAL>;<GREEK>;IGNORE
+<U03C1> <U03A1>;<SMALL>;<GREEK>;IGNORE
+<U03A3> <U03A3>;<CAPITAL>;<GREEK>;IGNORE
+<U03C3> <U03A3>;<SMALL>;<GREEK>;IGNORE
+<U03C2> <U03A3>;<SMALL>;<U03C2>;IGNORE
+<U03A4> <U03A4>;<CAPITAL>;<GREEK>;IGNORE
+<U03C4> <U03A4>;<SMALL>;<GREEK>;IGNORE
+<U03A5> <U03A5>;<CAPITAL>;<GREEK>;IGNORE
+<U038E> <U03A5>;<CAPITAL>;<TONOS>;IGNORE
+<U03AB> <U03A5>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03C5> <U03A5>;<SMALL>;<GREEK>;IGNORE
+<U03CD> <U03A5>;<SMALL>;<TONOS>;IGNORE
+<U03CB> <U03A5>;<SMALL>;<DIALYTICA>;IGNORE
+<U03B0> <U03A5>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U03A6> <U03A6>;<CAPITAL>;<GREEK>;IGNORE
+<U03C6> <U03A6>;<SMALL>;<GREEK>;IGNORE
+<U03A7> <U03A7>;<CAPITAL>;<GREEK>;IGNORE
+<U03C7> <U03A7>;<SMALL>;<GREEK>;IGNORE
+<U03A8> <U03A8>;<CAPITAL>;<GREEK>;IGNORE
+<U03C8> <U03A8>;<SMALL>;<GREEK>;IGNORE
+<U03A9> <U03A9>;<CAPITAL>;<GREEK>;IGNORE
+<U038F> <U03A9>;<CAPITAL>;<TONOS>;IGNORE
+<U03C9> <U03A9>;<SMALL>;<GREEK>;IGNORE
+<U03CE> <U03A9>;<SMALL>;<TONOS>;IGNORE
+<U0410> <U0410>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0430> <U0410>;<CYRILLIC>;<SMALL>;IGNORE
+<U0411> <U0411>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0431> <U0411>;<CYRILLIC>;<SMALL>;IGNORE
+<U0412> <U0412>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0432> <U0412>;<CYRILLIC>;<SMALL>;IGNORE
+<U0413> <U0413>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0433> <U0413>;<CYRILLIC>;<SMALL>;IGNORE
+<U0403> <U0403>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0453> <U0403>;<CYRILLIC>;<SMALL>;IGNORE
+<U0490> <U0490>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0491> <U0490>;<CYRILLIC>;<SMALL>;IGNORE
+<U0414> <U0414>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0434> <U0414>;<CYRILLIC>;<SMALL>;IGNORE
+<U0402> <U0402>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0452> <U0402>;<CYRILLIC>;<SMALL>;IGNORE
+<U0415> <U0415>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0435> <U0415>;<CYRILLIC>;<SMALL>;IGNORE
+<U0401> <U0401>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0451> <U0401>;<CYRILLIC>;<SMALL>;IGNORE
+<U0404> <U0404>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0454> <U0404>;<CYRILLIC>;<SMALL>;IGNORE
+<U0416> <U0416>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0436> <U0416>;<CYRILLIC>;<SMALL>;IGNORE
+<U0417> <U0417>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0437> <U0417>;<CYRILLIC>;<SMALL>;IGNORE
+<U0418> <U0418>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0438> <U0418>;<CYRILLIC>;<SMALL>;IGNORE
+<U0406> <U0406>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0456> <U0406>;<CYRILLIC>;<SMALL>;IGNORE
+<U0407> <U0407>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0457> <U0407>;<CYRILLIC>;<SMALL>;IGNORE
+<U0408> <U0408>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0458> <U0408>;<CYRILLIC>;<SMALL>;IGNORE
+<U0419> <U0419>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0439> <U0419>;<CYRILLIC>;<SMALL>;IGNORE
+<U041A> <U041A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043A> <U041A>;<CYRILLIC>;<SMALL>;IGNORE
+<U040C> <U040C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045C> <U040C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041B> <U041B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043B> <U041B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0409> <U0409>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0459> <U0409>;<CYRILLIC>;<SMALL>;IGNORE
+<U041C> <U041C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043C> <U041C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041D> <U041D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043D> <U041D>;<CYRILLIC>;<SMALL>;IGNORE
+<U040A> <U040A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045A> <U040A>;<CYRILLIC>;<SMALL>;IGNORE
+<U041E> <U041E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043E> <U041E>;<CYRILLIC>;<SMALL>;IGNORE
+<U041F> <U041F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043F> <U041F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0420> <U0420>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0440> <U0420>;<CYRILLIC>;<SMALL>;IGNORE
+<U0421> <U0421>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0441> <U0421>;<CYRILLIC>;<SMALL>;IGNORE
+<U0422> <U0422>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0442> <U0422>;<CYRILLIC>;<SMALL>;IGNORE
+<U040B> <U040B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045B> <U040B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0423> <U0423>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0443> <U0423>;<CYRILLIC>;<SMALL>;IGNORE
+<U040E> <U040E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045E> <U040E>;<CYRILLIC>;<SMALL>;IGNORE
+<U0424> <U0424>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0444> <U0424>;<CYRILLIC>;<SMALL>;IGNORE
+<U0425> <U0425>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0445> <U0425>;<CYRILLIC>;<SMALL>;IGNORE
+<U0426> <U0426>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0446> <U0426>;<CYRILLIC>;<SMALL>;IGNORE
+<U0405> <U0405>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0455> <U0405>;<CYRILLIC>;<SMALL>;IGNORE
+<U0427> <U0427>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0447> <U0427>;<CYRILLIC>;<SMALL>;IGNORE
+<U040F> <U040F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045F> <U040F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0428> <U0428>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0448> <U0428>;<CYRILLIC>;<SMALL>;IGNORE
+<U0429> <U0429>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0449> <U0429>;<CYRILLIC>;<SMALL>;IGNORE
+<U044A> <U044A>;<CYRILLIC>;<SMALL>;IGNORE
+<U042A> <U044A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042B> <U042B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044B> <U042B>;<CYRILLIC>;<SMALL>;IGNORE
+<U044C> <U044C>;<CYRILLIC>;<SMALL>;IGNORE
+<U042C> <U044C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042D> <U042D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044D> <U042D>;<CYRILLIC>;<SMALL>;IGNORE
+<U042E> <U042E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044E> <U042E>;<CYRILLIC>;<SMALL>;IGNORE
+<U042F> <U042F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044F> <U042F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0462> <U0462>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0463> <U0462>;<CYRILLIC>;<SMALL>;IGNORE
+<U046A> <U046A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U046B> <U046A>;<CYRILLIC>;<SMALL>;IGNORE
+<U0472> <U0472>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0473> <U0472>;<CYRILLIC>;<SMALL>;IGNORE
+<U0474> <U0474>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0475> <U0474>;<CYRILLIC>;<SMALL>;IGNORE
+<U0480> <U0480>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0481> <U0480>;<CYRILLIC>;<SMALL>;IGNORE
+<U05D0> <U05D0>;IGNORE;IGNORE;IGNORE
+<U05D1> <U05D1>;IGNORE;IGNORE;IGNORE
+<U05D2> <U05D2>;IGNORE;IGNORE;IGNORE
+<U05D3> <U05D3>;IGNORE;IGNORE;IGNORE
+<U05D4> <U05D4>;IGNORE;IGNORE;IGNORE
+<U05D5> <U05D5>;IGNORE;IGNORE;IGNORE
+<U05D6> <U05D6>;IGNORE;IGNORE;IGNORE
+<U05D7> <U05D7>;IGNORE;IGNORE;IGNORE
+<U05D8> <U05D8>;IGNORE;IGNORE;IGNORE
+<U05D9> <U05D9>;IGNORE;IGNORE;IGNORE
+<U05DA> <U05DA>;IGNORE;IGNORE;IGNORE
+<U05DB> <U05DB>;IGNORE;IGNORE;IGNORE
+<U05DC> <U05DC>;IGNORE;IGNORE;IGNORE
+<U05DD> <U05DD>;IGNORE;IGNORE;IGNORE
+<U05DE> <U05DE>;IGNORE;IGNORE;IGNORE
+<U05DF> <U05DF>;IGNORE;IGNORE;IGNORE
+<U05E0> <U05E0>;IGNORE;IGNORE;IGNORE
+<U05E1> <U05E1>;IGNORE;IGNORE;IGNORE
+<U05E2> <U05E2>;IGNORE;IGNORE;IGNORE
+<U05E3> <U05E3>;IGNORE;IGNORE;IGNORE
+<U05E4> <U05E4>;IGNORE;IGNORE;IGNORE
+<U05E5> <U05E5>;IGNORE;IGNORE;IGNORE
+<U05E6> <U05E6>;IGNORE;IGNORE;IGNORE
+<U05E7> <U05E7>;IGNORE;IGNORE;IGNORE
+<U05E8> <U05E8>;IGNORE;IGNORE;IGNORE
+<U05E9> <U05E9>;IGNORE;IGNORE;IGNORE
+<U05EA> <U05EA>;IGNORE;IGNORE;IGNORE
+
+% Arabic collating
+
+<U060C> IGNORE;IGNORE;IGNORE;<U060C>
+<U061B> IGNORE;IGNORE;IGNORE;<U061B>
+<U061F> IGNORE;IGNORE;IGNORE;<U061F>
+<U0640> IGNORE;IGNORE;IGNORE;<U0640>
+
+<U0621> <U0621>;<U0621>;IGNORE;IGNORE
+<U0622> <U0622>;<U0622>;IGNORE;IGNORE
+<UFE82> <U0622>;<UFE82>;IGNORE;IGNORE
+<U0623> <U0621>;<U0623>;IGNORE;IGNORE
+<UFE84> <U0621>;<UFE84>;IGNORE;IGNORE
+<U0624> <U0621>;<U0624>;IGNORE;IGNORE
+<U0625> <U0621>;<U0625>;IGNORE;IGNORE
+<UFE88> <U0621>;<UFE88>;IGNORE;IGNORE
+<U0626> <U0621>;<U0626>;IGNORE;IGNORE
+<U0670> <U0670>;<U0670>;IGNORE;IGNORE
+<U0627> <U0627>;<U0627>;IGNORE;IGNORE
+<UFE8D> <U0627>;<UFE8D>;IGNORE;IGNORE
+<UFE8E> <U0627>;<UFE8E>;IGNORE;IGNORE
+<UE016> <U0627>;<UE016>;IGNORE;IGNORE
+<U0628> <U0628>;<U0628>;IGNORE;IGNORE
+<UFE8F> <U0628>;<UFE8F>;IGNORE;IGNORE
+<UFE90> <U0628>;<UFE90>;IGNORE;IGNORE
+<UFE91> <U0628>;<UFE91>;IGNORE;IGNORE
+<UFE92> <U0628>;<UFE92>;IGNORE;IGNORE
+<U067E> <U067E>;<U067E>;IGNORE;IGNORE
+<U06A4> <U06A4>;<U06A4>;IGNORE;IGNORE
+<U0629> <U0629>;<U0629>;IGNORE;IGNORE
+<UFE93> <U0629>;<UFE93>;IGNORE;IGNORE
+<UFE94> <U0629>;<UFE94>;IGNORE;IGNORE
+<U062A> <U0629>;<U062A>;IGNORE;IGNORE
+<UFE95> <U0629>;<UFE95>;IGNORE;IGNORE
+<UFE96> <U0629>;<UFE96>;IGNORE;IGNORE
+<UFE97> <U0629>;<UFE97>;IGNORE;IGNORE
+<UFE98> <U0629>;<UFE98>;IGNORE;IGNORE
+<U062B> <U062B>;<U062B>;IGNORE;IGNORE
+<UFE99> <U062B>;<UFE99>;IGNORE;IGNORE
+<UFE9A> <U062B>;<UFE9A>;IGNORE;IGNORE
+<UFE9B> <U062B>;<UFE9B>;IGNORE;IGNORE
+<UFE9C> <U062B>;<UFE9C>;IGNORE;IGNORE
+<U062C> <U062C>;<U062C>;IGNORE;IGNORE
+<UFE9D> <U062C>;<UFE9D>;IGNORE;IGNORE
+<UFE9E> <U062C>;<UFE9E>;IGNORE;IGNORE
+<UFE9F> <U062C>;<UFE9F>;IGNORE;IGNORE
+<UFEA0> <U062C>;<UFEA0>;IGNORE;IGNORE
+<U062D> <U062D>;<U062D>;IGNORE;IGNORE
+<UFEA1> <U062D>;<UFEA1>;IGNORE;IGNORE
+<UFEA2> <U062D>;<UFEA2>;IGNORE;IGNORE
+<UFEA3> <U062D>;<UFEA3>;IGNORE;IGNORE
+<UFEA4> <U062D>;<UFEA4>;IGNORE;IGNORE
+<U062E> <U062E>;<U062E>;IGNORE;IGNORE
+<UFEA5> <U062E>;<UFEA5>;IGNORE;IGNORE
+<UFEA6> <U062E>;<UFEA6>;IGNORE;IGNORE
+<UFEA7> <U062E>;<UFEA7>;IGNORE;IGNORE
+<UFEA8> <U062E>;<UFEA8>;IGNORE;IGNORE
+<U062F> <U062F>;<U062F>;IGNORE;IGNORE
+<UFEA9> <U062F>;<UFEA9>;IGNORE;IGNORE
+<UFEAA> <U062F>;<UFEAA>;IGNORE;IGNORE
+<U0630> <U0630>;<U0630>;IGNORE;IGNORE
+<UFEAB> <U0630>;<UFEAB>;IGNORE;IGNORE
+<UFEAC> <U0630>;<UFEAC>;IGNORE;IGNORE
+<U0631> <U0631>;<U0631>;IGNORE;IGNORE
+<UFEAD> <U0631>;<UFEAD>;IGNORE;IGNORE
+<UFEAE> <U0631>;<UFEAE>;IGNORE;IGNORE
+<U0632> <U0632>;<U0632>;IGNORE;IGNORE
+<UFEAF> <U0632>;<UFEAF>;IGNORE;IGNORE
+<UFEB0> <U0632>;<UFEB0>;IGNORE;IGNORE
+<U0633> <U0633>;<U0633>;IGNORE;IGNORE
+<UFEB1> <U0633>;<UFEB1>;IGNORE;IGNORE
+<UFEB2> <U0633>;<UFEB2>;IGNORE;IGNORE
+<UFEB3> <U0633>;<UFEB3>;IGNORE;IGNORE
+<UFEB4> <U0633>;<UFEB4>;IGNORE;IGNORE
+<U0634> <U0634>;<U0634>;IGNORE;IGNORE
+<UFEB5> <U0634>;<UFEB5>;IGNORE;IGNORE
+<UFEB6> <U0634>;<UFEB6>;IGNORE;IGNORE
+<UFEB7> <U0634>;<UFEB7>;IGNORE;IGNORE
+<UFEB8> <U0634>;<UFEB8>;IGNORE;IGNORE
+<U0635> <U0635>;<U0635>;IGNORE;IGNORE
+<UFEB9> <U0635>;<UFEB9>;IGNORE;IGNORE
+<UFEBA> <U0635>;<UFEBA>;IGNORE;IGNORE
+<UFEBB> <U0635>;<UFEBB>;IGNORE;IGNORE
+<UFEBC> <U0635>;<UFEBC>;IGNORE;IGNORE
+<U0636> <U0636>;<U0636>;IGNORE;IGNORE
+<UFEBD> <U0636>;<UFEBD>;IGNORE;IGNORE
+<UFEBE> <U0636>;<UFEBE>;IGNORE;IGNORE
+<UFEBF> <U0636>;<UFEBF>;IGNORE;IGNORE
+<UFEC0> <U0636>;<UFEC0>;IGNORE;IGNORE
+<U0637> <U0637>;<U0637>;IGNORE;IGNORE
+<UFEC1> <U0637>;<UFEC1>;IGNORE;IGNORE
+<UFEC2> <U0637>;<UFEC2>;IGNORE;IGNORE
+<UFEC3> <U0637>;<UFEC3>;IGNORE;IGNORE
+<UFEC4> <U0637>;<UFEC4>;IGNORE;IGNORE
+<U0638> <U0638>;<U0638>;IGNORE;IGNORE
+<UFEC5> <U0638>;<UFEC5>;IGNORE;IGNORE
+<UFEC6> <U0638>;<UFEC6>;IGNORE;IGNORE
+<UFEC7> <U0638>;<UFEC7>;IGNORE;IGNORE
+<UFEC8> <U0638>;<UFEC8>;IGNORE;IGNORE
+<U0639> <U0639>;<U0639>;IGNORE;IGNORE
+<UFEC9> <U0639>;<UFEC9>;IGNORE;IGNORE
+<UFECA> <U0639>;<UFECA>;IGNORE;IGNORE
+<UFECB> <U0639>;<UFECB>;IGNORE;IGNORE
+<UFECC> <U0639>;<UFECC>;IGNORE;IGNORE
+<U063A> <U063A>;<U063A>;IGNORE;IGNORE
+<UFECD> <U063A>;<UFECD>;IGNORE;IGNORE
+<UFECE> <U063A>;<UFECE>;IGNORE;IGNORE
+<UFECF> <U063A>;<UFECF>;IGNORE;IGNORE
+<UFED0> <U063A>;<UFED0>;IGNORE;IGNORE
+<U0641> <U0641>;<U0641>;IGNORE;IGNORE
+<UFED1> <U0641>;<UFED1>;IGNORE;IGNORE
+<UFED2> <U0641>;<UFED2>;IGNORE;IGNORE
+<UFED3> <U0641>;<UFED3>;IGNORE;IGNORE
+<UFED4> <U0641>;<UFED4>;IGNORE;IGNORE
+<U0642> <U0642>;<U0642>;IGNORE;IGNORE
+<UFED5> <U0642>;<UFED5>;IGNORE;IGNORE
+<UFED6> <U0642>;<UFED6>;IGNORE;IGNORE
+<UFED7> <U0642>;<UFED7>;IGNORE;IGNORE
+<UFED8> <U0642>;<UFED8>;IGNORE;IGNORE
+<U0643> <U0643>;<U0643>;IGNORE;IGNORE
+<UFED9> <U0643>;<UFED9>;IGNORE;IGNORE
+<UFEDA> <U0643>;<UFEDA>;IGNORE;IGNORE
+<UFEDB> <U0643>;<UFEDB>;IGNORE;IGNORE
+<UFEDC> <U0643>;<UFEDC>;IGNORE;IGNORE
+<U0644> <U0644>;<U0644>;IGNORE;IGNORE
+<UFEDD> <U0644>;<UFEDD>;IGNORE;IGNORE
+<UFEDE> <U0644>;<UFEDE>;IGNORE;IGNORE
+<UFEDF> <U0644>;<UFEDF>;IGNORE;IGNORE
+<UFEE0> <U0644>;<UFEE0>;IGNORE;IGNORE
+<U0645> <U0645>;<U0645>;IGNORE;IGNORE
+<UFEE1> <U0645>;<UFEE1>;IGNORE;IGNORE
+<UFEE2> <U0645>;<UFEE2>;IGNORE;IGNORE
+<UFEE3> <U0645>;<UFEE3>;IGNORE;IGNORE
+<UFEE4> <U0645>;<UFEE4>;IGNORE;IGNORE
+<U0646> <U0646>;<U0646>;IGNORE;IGNORE
+<UFEE5> <U0646>;<UFEE5>;IGNORE;IGNORE
+<UFEE6> <U0646>;<UFEE6>;IGNORE;IGNORE
+<UFEE7> <U0646>;<UFEE7>;IGNORE;IGNORE
+<UFEE8> <U0646>;<UFEE8>;IGNORE;IGNORE
+<U0647> <U0647>;<U0647>;IGNORE;IGNORE
+<UFEE9> <U0647>;<UFEE9>;IGNORE;IGNORE
+<UFEEA> <U0647>;<UFEEA>;IGNORE;IGNORE
+<UFEEB> <U0647>;<UFEEB>;IGNORE;IGNORE
+<UFEEC> <U0647>;<UFEEC>;IGNORE;IGNORE
+<U0648> <U0648>;<U0648>;IGNORE;IGNORE
+<UFEED> <U0648>;<UFEED>;IGNORE;IGNORE
+<UFEEE> <U0648>;<UFEEE>;IGNORE;IGNORE
+<U0649> <U0649>;<U0649>;IGNORE;IGNORE
+<UFEEF> <U0649>;<UFEEF>;IGNORE;IGNORE
+<UFEF0> <U0649>;<UFEF0>;IGNORE;IGNORE
+<U064A> <U064A>;<U064A>;IGNORE;IGNORE
+<UFEF1> <U064A>;<UFEF1>;IGNORE;IGNORE
+<UFEF2> <U064A>;<UFEF2>;IGNORE;IGNORE
+<UFEF3> <U064A>;<UFEF3>;IGNORE;IGNORE
+<UFEF4> <U064A>;<UFEF4>;IGNORE;IGNORE
+
+<U064B> IGNORE;IGNORE;<U064B>;IGNORE
+<U064C> IGNORE;IGNORE;<U064C>;IGNORE
+<U064D> IGNORE;IGNORE;<U064D>;IGNORE
+<U064E> IGNORE;IGNORE;<U064E>;IGNORE
+<U064F> IGNORE;IGNORE;<U064F>;IGNORE
+<U0650> IGNORE;IGNORE;<U0650>;IGNORE
+<U0651> IGNORE;IGNORE;<U0651>;IGNORE
+<UFE7D> IGNORE;IGNORE;<UFE7D>;IGNORE
+<U0652> IGNORE;IGNORE;<U0652>;IGNORE
+
+<U0660> <U0030>;<U0660>;IGNORE;IGNORE
+<U0661> <U0031>;<U0661>;IGNORE;IGNORE
+<U0662> <U0032>;<U0662>;IGNORE;IGNORE
+<U0663> <U0033>;<U0663>;IGNORE;IGNORE
+<U0664> <U0034>;<U0664>;IGNORE;IGNORE
+<U0665> <U0035>;<U0665>;IGNORE;IGNORE
+<U0666> <U0036>;<U0666>;IGNORE;IGNORE
+<U0667> <U0037>;<U0667>;IGNORE;IGNORE
+<U0668> <U0038>;<U0668>;IGNORE;IGNORE
+<U0669> <U0039>;<U0669>;IGNORE;IGNORE
+
+<UFEF5> "<U0644><U0622>";"<U0644><U0622>";"<UFEF5><UFEF5>";IGNORE
+<UFEF6> "<U0644><U0622>";"<U0644><UFE82>";"<UFEF6><UFEF6>";IGNORE
+<UFEF7> "<U0644><U0623>";"<U0644><U0623>";"<UFEF7><UFEF7>";IGNORE
+<UFEF8> "<U0644><U0623>";"<U0644><UFE84>";"<UFEF8><UFEF8>";IGNORE
+<UFEF9> "<U0644><U0625>";"<U0644><U0625>";"<UFEF9><UFEF9>";IGNORE
+<UFEFA> "<U0644><U0625>";"<U0644><UFE88>";"<UFEFA><UFEFA>";IGNORE
+<UFEFB> "<U0644><U0627>";"<U0644><UFE8D>";"<UFEFB><UFEFB>";IGNORE
+<UFEFC> "<U0644><U0627>";"<U0644><UFE8E>";"<UFEFC><UFEFC>";IGNORE
+
+% katakana/hiragana sorting
+% base is katakana, as this is present in most charsets
+% normal before voiced before semi-voiced
+% small vocals before normal vocals
+% katakana before hiragana
+
+<U30A1> <U30A1>;<U30A1>;IGNORE;IGNORE
+<U3041> <U30A1>;<U3041>;IGNORE;IGNORE
+<U30A2> <U30A1>;<U30A2>;IGNORE;IGNORE
+<U3042> <U30A1>;<U3042>;IGNORE;IGNORE
+<U30A3> <U30A3>;<U30A3>;IGNORE;IGNORE
+<U3043> <U30A3>;<U3043>;IGNORE;IGNORE
+<U30A4> <U30A3>;<U30A4>;IGNORE;IGNORE
+<U3044> <U30A3>;<U3044>;IGNORE;IGNORE
+<U30A5> <U30A5>;<U30A5>;IGNORE;IGNORE
+<U3045> <U30A5>;<U3045>;IGNORE;IGNORE
+<U30A6> <U30A5>;<U30A6>;IGNORE;IGNORE
+<U3046> <U30A5>;<U3046>;IGNORE;IGNORE
+<U30F4> <U30A5>;<U30F4>;IGNORE;IGNORE
+<U30A7> <U30A7>;<U30A7>;IGNORE;IGNORE
+<U3047> <U30A7>;<U3047>;IGNORE;IGNORE
+<U30A8> <U30A7>;<U30A8>;IGNORE;IGNORE
+<U3048> <U30A7>;<U3048>;IGNORE;IGNORE
+<U30A9> <U30A9>;<U30A9>;IGNORE;IGNORE
+<U3049> <U30A9>;<U3049>;IGNORE;IGNORE
+<U30AA> <U30A9>;<U30AA>;IGNORE;IGNORE
+<U304A> <U30A9>;<U304A>;IGNORE;IGNORE
+<U30F5> <U30F5>;<U30F5>;IGNORE;IGNORE
+<U30AB> <U30F5>;<U30AB>;IGNORE;IGNORE
+<U304B> <U30F5>;<U304B>;IGNORE;IGNORE
+<U30AC> <U30F5>;<U30AC>;IGNORE;IGNORE
+<U304C> <U30F5>;<U304C>;IGNORE;IGNORE
+<U30AD> <U30AD>;<U30AD>;IGNORE;IGNORE
+<U304D> <U30AD>;<U304D>;IGNORE;IGNORE
+<U30AE> <U30AD>;<U30AE>;IGNORE;IGNORE
+<U304E> <U30AD>;<U304E>;IGNORE;IGNORE
+<U30AF> <U30AF>;<U30AF>;IGNORE;IGNORE
+<U304F> <U30AF>;<U304F>;IGNORE;IGNORE
+<U30B0> <U30AF>;<U30B0>;IGNORE;IGNORE
+<U3050> <U30AF>;<U3050>;IGNORE;IGNORE
+<U30F6> <U30F6>;<U30F6>;IGNORE;IGNORE
+<U30B1> <U30F6>;<U30B1>;IGNORE;IGNORE
+<U3051> <U30F6>;<U3051>;IGNORE;IGNORE
+<U30B2> <U30F6>;<U30B2>;IGNORE;IGNORE
+<U3052> <U30F6>;<U3052>;IGNORE;IGNORE
+<U30B3> <U30B3>;<U30B3>;IGNORE;IGNORE
+<U3053> <U30B3>;<U3053>;IGNORE;IGNORE
+<U30B4> <U30B3>;<U30B4>;IGNORE;IGNORE
+<U3054> <U30B3>;<U3054>;IGNORE;IGNORE
+<U30B5> <U30B5>;<U30B5>;IGNORE;IGNORE
+<U3055> <U30B5>;<U3055>;IGNORE;IGNORE
+<U30B6> <U30B5>;<U30B6>;IGNORE;IGNORE
+<U3056> <U30B5>;<U3056>;IGNORE;IGNORE
+<U30B7> <U30B7>;<U30B7>;IGNORE;IGNORE
+<U3057> <U30B7>;<U3057>;IGNORE;IGNORE
+<U30B8> <U30B7>;<U30B8>;IGNORE;IGNORE
+<U3058> <U30B7>;<U3058>;IGNORE;IGNORE
+<U30B9> <U30B9>;<U30B9>;IGNORE;IGNORE
+<U3059> <U30B9>;<U3059>;IGNORE;IGNORE
+<U30BA> <U30B9>;<U30BA>;IGNORE;IGNORE
+<U305A> <U30B9>;<U305A>;IGNORE;IGNORE
+<U30BB> <U30BB>;<U30BB>;IGNORE;IGNORE
+<U305B> <U30BB>;<U305B>;IGNORE;IGNORE
+<U30BC> <U30BB>;<U30BC>;IGNORE;IGNORE
+<U305C> <U30BB>;<U305C>;IGNORE;IGNORE
+<U30BD> <U30BD>;<U30BD>;IGNORE;IGNORE
+<U305D> <U30BD>;<U305D>;IGNORE;IGNORE
+<U30BE> <U30BD>;<U30BE>;IGNORE;IGNORE
+<U305E> <U30BD>;<U305E>;IGNORE;IGNORE
+<U30BF> <U30BF>;<U30BF>;IGNORE;IGNORE
+<U305F> <U30BF>;<U305F>;IGNORE;IGNORE
+<U30C0> <U30BF>;<U30C0>;IGNORE;IGNORE
+<U3060> <U30BF>;<U3060>;IGNORE;IGNORE
+<U30C1> <U30C1>;<U30C1>;IGNORE;IGNORE
+<U3061> <U30C1>;<U3061>;IGNORE;IGNORE
+<U30C2> <U30C1>;<U30C2>;IGNORE;IGNORE
+<U3062> <U30C1>;<U3062>;IGNORE;IGNORE
+<U30C3> <U30C3>;<U30C3>;IGNORE;IGNORE
+<U3063> <U30C3>;<U3063>;IGNORE;IGNORE
+<U30C4> <U30C3>;<U30C4>;IGNORE;IGNORE
+<U3064> <U30C3>;<U3064>;IGNORE;IGNORE
+<U30C5> <U30C3>;<U30C5>;IGNORE;IGNORE
+<U3065> <U30C3>;<U3065>;IGNORE;IGNORE
+<U30C6> <U30C6>;<U30C6>;IGNORE;IGNORE
+<U3066> <U30C6>;<U3066>;IGNORE;IGNORE
+<U30C7> <U30C6>;<U30C7>;IGNORE;IGNORE
+<U3067> <U30C6>;<U3067>;IGNORE;IGNORE
+<U30C8> <U30C8>;<U30C8>;IGNORE;IGNORE
+<U3068> <U30C8>;<U3068>;IGNORE;IGNORE
+<U30C9> <U30C8>;<U30C9>;IGNORE;IGNORE
+<U3069> <U30C8>;<U3069>;IGNORE;IGNORE
+<U30CA> <U30CA>;<U30CA>;IGNORE;IGNORE
+<U306A> <U30CA>;<U306A>;IGNORE;IGNORE
+<U30CB> <U30CB>;<U30CB>;IGNORE;IGNORE
+<U306B> <U30CB>;<U306B>;IGNORE;IGNORE
+<U30CC> <U30CC>;<U30CC>;IGNORE;IGNORE
+<U306C> <U30CC>;<U306C>;IGNORE;IGNORE
+<U30CD> <U30CD>;<U30CD>;IGNORE;IGNORE
+<U306D> <U30CD>;<U306D>;IGNORE;IGNORE
+<U30CE> <U30CE>;<U30CE>;IGNORE;IGNORE
+<U306E> <U30CE>;<U306E>;IGNORE;IGNORE
+<U30CF> <U30CF>;<U30CF>;IGNORE;IGNORE
+<U306F> <U30CF>;<U306F>;IGNORE;IGNORE
+<U30D0> <U30CF>;<U30D0>;IGNORE;IGNORE
+<U3070> <U30CF>;<U3070>;IGNORE;IGNORE
+<U30D1> <U30CF>;<U30D1>;IGNORE;IGNORE
+<U3071> <U30CF>;<U3071>;IGNORE;IGNORE
+<U30D2> <U30D2>;<U30D2>;IGNORE;IGNORE
+<U3072> <U30D2>;<U3072>;IGNORE;IGNORE
+<U30D3> <U30D2>;<U30D3>;IGNORE;IGNORE
+<U3073> <U30D2>;<U3073>;IGNORE;IGNORE
+<U30D4> <U30D2>;<U30D4>;IGNORE;IGNORE
+<U3074> <U30D2>;<U3074>;IGNORE;IGNORE
+<U30D5> <U30D5>;<U30D5>;IGNORE;IGNORE
+<U3075> <U30D5>;<U3075>;IGNORE;IGNORE
+<U30D6> <U30D5>;<U30D6>;IGNORE;IGNORE
+<U3076> <U30D5>;<U3076>;IGNORE;IGNORE
+<U30D7> <U30D5>;<U30D7>;IGNORE;IGNORE
+<U3077> <U30D5>;<U3077>;IGNORE;IGNORE
+<U30D8> <U30D8>;<U30D8>;IGNORE;IGNORE
+<U3078> <U30D8>;<U3078>;IGNORE;IGNORE
+<U30D9> <U30D8>;<U30D9>;IGNORE;IGNORE
+<U3079> <U30D8>;<U3079>;IGNORE;IGNORE
+<U30DA> <U30D8>;<U30DA>;IGNORE;IGNORE
+<U307A> <U30D8>;<U307A>;IGNORE;IGNORE
+<U30DB> <U30DB>;<U30DB>;IGNORE;IGNORE
+<U307B> <U30DB>;<U307B>;IGNORE;IGNORE
+<U30DC> <U30DB>;<U30DC>;IGNORE;IGNORE
+<U307C> <U30DB>;<U307C>;IGNORE;IGNORE
+<U30DD> <U30DB>;<U30DD>;IGNORE;IGNORE
+<U307D> <U30DB>;<U307D>;IGNORE;IGNORE
+<U30DE> <U30DE>;<U30DE>;IGNORE;IGNORE
+<U307E> <U30DE>;<U307E>;IGNORE;IGNORE
+<U30DF> <U30DF>;<U30DF>;IGNORE;IGNORE
+<U307F> <U30DF>;<U307F>;IGNORE;IGNORE
+<U30E0> <U30E0>;<U30E0>;IGNORE;IGNORE
+<U3080> <U30E0>;<U3080>;IGNORE;IGNORE
+<U30E1> <U30E1>;<U30E1>;IGNORE;IGNORE
+<U3081> <U30E1>;<U3081>;IGNORE;IGNORE
+<U30E2> <U30E2>;<U30E2>;IGNORE;IGNORE
+<U3082> <U30E2>;<U3082>;IGNORE;IGNORE
+<U30E3> <U30E3>;<U30E3>;IGNORE;IGNORE
+<U3083> <U30E3>;<U3083>;IGNORE;IGNORE
+<U30E4> <U30E3>;<U30E4>;IGNORE;IGNORE
+<U3084> <U30E3>;<U3084>;IGNORE;IGNORE
+<U30E5> <U30E5>;<U30E5>;IGNORE;IGNORE
+<U3085> <U30E5>;<U3085>;IGNORE;IGNORE
+<U30E6> <U30E5>;<U30E6>;IGNORE;IGNORE
+<U3086> <U30E5>;<U3086>;IGNORE;IGNORE
+<U30E7> <U30E7>;<U30E7>;IGNORE;IGNORE
+<U3087> <U30E7>;<U3087>;IGNORE;IGNORE
+<U30E8> <U30E7>;<U30E8>;IGNORE;IGNORE
+<U3088> <U30E7>;<U3088>;IGNORE;IGNORE
+<U30E9> <U30E9>;<U30E9>;IGNORE;IGNORE
+<U3089> <U30E9>;<U3089>;IGNORE;IGNORE
+<U30EA> <U30EA>;<U30EA>;IGNORE;IGNORE
+<U308A> <U30EA>;<U308A>;IGNORE;IGNORE
+<U30EB> <U30EB>;<U30EB>;IGNORE;IGNORE
+<U308B> <U30EB>;<U308B>;IGNORE;IGNORE
+<U30EC> <U30EC>;<U30EC>;IGNORE;IGNORE
+<U308C> <U30EC>;<U308C>;IGNORE;IGNORE
+<U30ED> <U30ED>;<U30ED>;IGNORE;IGNORE
+<U308D> <U30ED>;<U308D>;IGNORE;IGNORE
+<U30EE> <U30EE>;<U30EE>;IGNORE;IGNORE
+<U308E> <U30EE>;<U308E>;IGNORE;IGNORE
+<U30EF> <U30EE>;<U30EF>;IGNORE;IGNORE
+<U308F> <U30EE>;<U308F>;IGNORE;IGNORE
+<U30F0> <U30F0>;<U30F0>;IGNORE;IGNORE
+<U3090> <U30F0>;<U3090>;IGNORE;IGNORE
+<U30F1> <U30F1>;<U30F1>;IGNORE;IGNORE
+<U3091> <U30F1>;<U3091>;IGNORE;IGNORE
+<U30F2> <U30F2>;<U30F2>;IGNORE;IGNORE
+<U3092> <U30F2>;<U3092>;IGNORE;IGNORE
+<U30F3> <U30F3>;<U30F3>;IGNORE;IGNORE
+<U3093> <U30F3>;<U3093>;IGNORE;IGNORE
+
+order_end
+
diff --git a/ap/build/uClibc/extra/locale/collation/hu_HU b/ap/build/uClibc/extra/locale/collation/hu_HU
new file mode 100644
index 0000000..e87bb76
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/hu_HU
@@ -0,0 +1,357 @@
+copy "iso14651_t1"
+
+%% a b c cs d dz dzs e f g gy h i j k l ly m n ny o o: p q
+%% r s sz t ty u u: v w x y z zs
+%%
+%% a' e' i' o' u' are sorted as if they were unaccented
+%% o" and u" are sorted as if they were o: and u:
+
+collating-symbol <odouble>
+collating-symbol <udouble>
+
+collating-symbol <cs>
+collating-element <C-S> from "<U0043><U0053>"
+collating-element <C-s> from "<U0043><U0073>"
+collating-element <c-S> from "<U0063><U0053>"
+collating-element <c-s> from "<U0063><U0073>"
+collating-element <C-C-S> from "<U0043><U0043><U0053>"
+collating-element <C-C-s> from "<U0043><U0043><U0073>"
+collating-element <C-c-S> from "<U0043><U0063><U0053>"
+collating-element <C-c-s> from "<U0043><U0063><U0073>"
+collating-element <c-C-S> from "<U0063><U0043><U0053>"
+collating-element <c-C-s> from "<U0063><U0043><U0073>"
+collating-element <c-c-S> from "<U0063><U0063><U0053>"
+collating-element <c-c-s> from "<U0063><U0063><U0073>"
+
+collating-symbol <dz>
+collating-element <D-Z> from "<U0044><U005A>"
+collating-element <D-z> from "<U0044><U007A>"
+collating-element <d-Z> from "<U0064><U005A>"
+collating-element <d-z> from "<U0064><U007A>"
+collating-element <D-D-Z> from "<U0044><U0044><U005A>"
+collating-element <D-D-z> from "<U0044><U0044><U007A>"
+collating-element <D-d-Z> from "<U0044><U0064><U005A>"
+collating-element <D-d-z> from "<U0044><U0064><U007A>"
+collating-element <d-D-Z> from "<U0064><U0044><U005A>"
+collating-element <d-D-z> from "<U0064><U0044><U007A>"
+collating-element <d-d-Z> from "<U0064><U0064><U005A>"
+collating-element <d-d-z> from "<U0064><U0064><U007A>"
+
+collating-symbol <dzs>
+collating-element <D-Z-S> from "<U0044><U005A><U0053>"
+collating-element <D-Z-s> from "<U0044><U005A><U0073>"
+collating-element <D-z-S> from "<U0044><U007A><U0053>"
+collating-element <D-z-s> from "<U0044><U007A><U0073>"
+collating-element <d-Z-S> from "<U0064><U005A><U0053>"
+collating-element <d-Z-s> from "<U0064><U005A><U0073>"
+collating-element <d-z-S> from "<U0064><U007A><U0053>"
+collating-element <d-z-s> from "<U0064><U007A><U0073>"
+collating-element <D-D-Z-S> from "<U0044><U0044><U005A><U0053>"
+collating-element <D-D-Z-s> from "<U0044><U0044><U005A><U0073>"
+collating-element <D-D-z-S> from "<U0044><U0044><U007A><U0053>"
+collating-element <D-D-z-s> from "<U0044><U0044><U007A><U0073>"
+collating-element <D-d-Z-S> from "<U0044><U0064><U005A><U0053>"
+collating-element <D-d-Z-s> from "<U0044><U0064><U005A><U0073>"
+collating-element <D-d-z-S> from "<U0044><U0064><U007A><U0053>"
+collating-element <D-d-z-s> from "<U0044><U0064><U007A><U0073>"
+collating-element <d-D-Z-S> from "<U0064><U0044><U005A><U0053>"
+collating-element <d-D-Z-s> from "<U0064><U0044><U005A><U0073>"
+collating-element <d-D-z-S> from "<U0064><U0044><U007A><U0053>"
+collating-element <d-D-z-s> from "<U0064><U0044><U007A><U0073>"
+collating-element <d-d-Z-S> from "<U0064><U0064><U005A><U0053>"
+collating-element <d-d-Z-s> from "<U0064><U0064><U005A><U0073>"
+collating-element <d-d-z-S> from "<U0064><U0064><U007A><U0053>"
+collating-element <d-d-z-s> from "<U0064><U0064><U007A><U0073>"
+
+collating-symbol <gy>
+collating-element <G-Y> from "<U0047><U0059>"
+collating-element <G-y> from "<U0047><U0079>"
+collating-element <g-Y> from "<U0067><U0059>"
+collating-element <g-y> from "<U0067><U0079>"
+collating-element <G-G-Y> from "<U0047><U0047><U0059>"
+collating-element <G-G-y> from "<U0047><U0047><U0079>"
+collating-element <G-g-Y> from "<U0047><U0067><U0059>"
+collating-element <G-g-y> from "<U0047><U0067><U0079>"
+collating-element <g-G-Y> from "<U0067><U0047><U0059>"
+collating-element <g-G-y> from "<U0067><U0047><U0079>"
+collating-element <g-g-Y> from "<U0067><U0067><U0059>"
+collating-element <g-g-y> from "<U0067><U0067><U0079>"
+
+collating-symbol <ly>
+collating-element <L-Y> from "<U004C><U0059>"
+collating-element <L-y> from "<U004C><U0079>"
+collating-element <l-Y> from "<U006C><U0059>"
+collating-element <l-y> from "<U006C><U0079>"
+collating-element <L-L-Y> from "<U004C><U004C><U0059>"
+collating-element <L-L-y> from "<U004C><U004C><U0079>"
+collating-element <L-l-Y> from "<U004C><U006C><U0059>"
+collating-element <L-l-y> from "<U004C><U006C><U0079>"
+collating-element <l-L-Y> from "<U006C><U004C><U0059>"
+collating-element <l-L-y> from "<U006C><U004C><U0079>"
+collating-element <l-l-Y> from "<U006C><U006C><U0059>"
+collating-element <l-l-y> from "<U006C><U006C><U0079>"
+
+collating-symbol <ny>
+collating-element <N-Y> from "<U004E><U0059>"
+collating-element <N-y> from "<U004E><U0079>"
+collating-element <n-Y> from "<U006E><U0059>"
+collating-element <n-y> from "<U006E><U0079>"
+collating-element <N-N-Y> from "<U004E><U004E><U0059>"
+collating-element <N-N-y> from "<U004E><U004E><U0079>"
+collating-element <N-n-Y> from "<U004E><U006E><U0059>"
+collating-element <N-n-y> from "<U004E><U006E><U0079>"
+collating-element <n-N-Y> from "<U006E><U004E><U0059>"
+collating-element <n-N-y> from "<U006E><U004E><U0079>"
+collating-element <n-n-Y> from "<U006E><U006E><U0059>"
+collating-element <n-n-y> from "<U006E><U006E><U0079>"
+
+collating-symbol <sz>
+collating-element <S-Z> from "<U0053><U005A>"
+collating-element <S-z> from "<U0053><U007A>"
+collating-element <s-Z> from "<U0073><U005A>"
+collating-element <s-z> from "<U0073><U007A>"
+collating-element <S-S-Z> from "<U0053><U0053><U005A>"
+collating-element <S-S-z> from "<U0053><U0053><U007A>"
+collating-element <S-s-Z> from "<U0053><U0073><U005A>"
+collating-element <S-s-z> from "<U0053><U0073><U007A>"
+collating-element <s-S-Z> from "<U0073><U0053><U005A>"
+collating-element <s-S-z> from "<U0073><U0053><U007A>"
+collating-element <s-s-Z> from "<U0073><U0073><U005A>"
+collating-element <s-s-z> from "<U0073><U0073><U007A>"
+
+collating-symbol <ty>
+collating-element <T-Y> from "<U0054><U0059>"
+collating-element <T-y> from "<U0054><U0079>"
+collating-element <t-Y> from "<U0074><U0059>"
+collating-element <t-y> from "<U0074><U0079>"
+collating-element <T-T-Y> from "<U0054><U0054><U0059>"
+collating-element <T-T-y> from "<U0054><U0054><U0079>"
+collating-element <T-t-Y> from "<U0054><U0074><U0059>"
+collating-element <T-t-y> from "<U0054><U0074><U0079>"
+collating-element <t-T-Y> from "<U0074><U0054><U0059>"
+collating-element <t-T-y> from "<U0074><U0054><U0079>"
+collating-element <t-t-Y> from "<U0074><U0074><U0059>"
+collating-element <t-t-y> from "<U0074><U0074><U0079>"
+
+collating-symbol <zs>
+collating-element <Z-S> from "<U005A><U0053>"
+collating-element <Z-s> from "<U005A><U0073>"
+collating-element <z-S> from "<U007A><U0053>"
+collating-element <z-s> from "<U007A><U0073>"
+collating-element <Z-Z-S> from "<U005A><U005A><U0053>"
+collating-element <Z-Z-s> from "<U005A><U005A><U0073>"
+collating-element <Z-z-S> from "<U005A><U007A><U0053>"
+collating-element <Z-z-s> from "<U005A><U007A><U0073>"
+collating-element <z-Z-S> from "<U007A><U005A><U0053>"
+collating-element <z-Z-s> from "<U007A><U005A><U0073>"
+collating-element <z-z-S> from "<U007A><U007A><U0053>"
+collating-element <z-z-s> from "<U007A><U007A><U0073>"
+
+collating-symbol <CAP-MIN>
+collating-symbol <MIN-CAP>
+collating-symbol <CAP-CAP-CAP>
+collating-symbol <CAP-CAP-MIN>
+collating-symbol <CAP-MIN-CAP>
+collating-symbol <CAP-MIN-MIN>
+collating-symbol <MIN-CAP-CAP>
+collating-symbol <MIN-CAP-MIN>
+collating-symbol <MIN-MIN-CAP>
+collating-symbol <MIN-MIN-MIN>
+
+reorder-after <MIN>
+<MIN-CAP>
+<MIN-MIN-MIN>
+<MIN-MIN-CAP>
+<MIN-CAP-MIN>
+<MIN-CAP-CAP>
+
+reorder-after <CAP>
+<CAP-MIN>
+<CAP-MIN-MIN>
+<CAP-MIN-CAP>
+<CAP-CAP-MIN>
+<CAP-CAP-CAP>
+
+reorder-after <c>
+<cs>
+reorder-after <d>
+<dz>
+<dzs>
+reorder-after <g>
+<gy>
+reorder-after <l>
+<ly>
+reorder-after <n>
+<ny>
+reorder-after <o>
+<odouble>
+reorder-after <s>
+<sz>
+reorder-after <t>
+<ty>
+reorder-after <u>
+<udouble>
+reorder-after <z>
+<zs>
+
+reorder-after <o>
+<U00F6> <odouble>;<REU>;<MIN>;IGNORE
+<U0151> <odouble>;<DAC>;<MIN>;IGNORE
+<U00D6> <odouble>;<REU>;<CAP>;IGNORE
+<U0150> <odouble>;<DAC>;<CAP>;IGNORE
+
+reorder-after <u>
+<U00FC> <udouble>;<REU>;<MIN>;IGNORE
+<U0171> <udouble>;<DAC>;<MIN>;IGNORE
+<U00DC> <udouble>;<REU>;<CAP>;IGNORE
+<U0170> <udouble>;<DAC>;<CAP>;IGNORE
+
+reorder-after <U0043>
+<C-S> <cs>;<BAS>;<CAP>;IGNORE
+<C-s> <cs>;<BAS>;<CAP-MIN>;IGNORE
+<C-C-S> "<cs><cs>";"<BAS><BAS>";"<CAP><CAP>";IGNORE
+<C-C-s> "<cs><cs>";"<BAS><BAS>";"<CAP><CAP-MIN>";IGNORE
+<C-c-S> "<cs><cs>";"<BAS><BAS>";"<CAP><MIN-CAP>";IGNORE
+<C-c-s> "<cs><cs>";"<BAS><BAS>";"<CAP><MIN>";IGNORE
+reorder-after <U0063>
+<c-S> <cs>;<BAS>;<MIN-CAP>;IGNORE
+<c-s> <cs>;<BAS>;<MIN>;IGNORE
+<c-C-S> "<cs><cs>";"<BAS><BAS>";"<MIN><CAP>";IGNORE
+<c-C-s> "<cs><cs>";"<BAS><BAS>";"<MIN><CAP-MIN>";IGNORE
+<c-c-S> "<cs><cs>";"<BAS><BAS>";"<MIN><MIN-CAP>";IGNORE
+<c-c-s> "<cs><cs>";"<BAS><BAS>";"<MIN><MIN>";IGNORE
+
+reorder-after <U0044>
+<D-Z> <dz>;<BAS>;<CAP>;IGNORE
+<D-z> <dz>;<BAS>;<CAP-MIN>;IGNORE
+<D-D-Z> "<dz><dz>";"<BAS><BAS>";"<CAP><CAP>";IGNORE
+<D-D-z> "<dz><dz>";"<BAS><BAS>";"<CAP><CAP-MIN>";IGNORE
+<D-d-Z> "<dz><dz>";"<BAS><BAS>";"<CAP><MIN-CAP>";IGNORE
+<D-d-z> "<dz><dz>";"<BAS><BAS>";"<CAP><MIN>";IGNORE
+reorder-after <U0064>
+<d-Z> <dz>;<BAS>;<MIN-CAP>;IGNORE
+<d-z> <dz>;<BAS>;<MIN>;IGNORE
+<d-D-Z> "<dz><dz>";"<BAS><BAS>";"<MIN><CAP>";IGNORE
+<d-D-z> "<dz><dz>";"<BAS><BAS>";"<MIN><CAP-MIN>";IGNORE
+<d-d-Z> "<dz><dz>";"<BAS><BAS>";"<MIN><MIN-CAP>";IGNORE
+<d-d-z> "<dz><dz>";"<BAS><BAS>";"<MIN><MIN>";IGNORE
+
+reorder-after <U0044>
+<D-Z-S> <dzs>;<BAS>;<CAP-CAP-CAP>;IGNORE
+<D-Z-s> <dzs>;<BAS>;<CAP-CAP-MIN>;IGNORE
+<D-z-S> <dzs>;<BAS>;<CAP-MIN-CAP>;IGNORE
+<D-z-s> <dzs>;<BAS>;<CAP-MIN-MIN>;IGNORE
+<D-D-Z-S> "<dzs><dzs>";"<BAS><BAS>";"<CAP><CAP-CAP-CAP>";IGNORE
+<D-D-Z-s> "<dzs><dzs>";"<BAS><BAS>";"<CAP><CAP-CAP-MIN>";IGNORE
+<D-D-z-S> "<dzs><dzs>";"<BAS><BAS>";"<CAP><CAP-MIN-CAP>";IGNORE
+<D-D-z-s> "<dzs><dzs>";"<BAS><BAS>";"<CAP><CAP-MIN-MIN>";IGNORE
+<D-d-Z-S> "<dzs><dzs>";"<BAS><BAS>";"<CAP><CAP-CAP-CAP>";IGNORE
+<D-d-Z-s> "<dzs><dzs>";"<BAS><BAS>";"<CAP><CAP-CAP-MIN>";IGNORE
+<D-d-z-S> "<dzs><dzs>";"<BAS><BAS>";"<CAP><CAP-MIN-CAP>";IGNORE
+<D-d-z-s> "<dzs><dzs>";"<BAS><BAS>";"<CAP><CAP-MIN-MIN>";IGNORE
+reorder-after <U0064>
+<d-Z-S> <dzs>;<BAS>;<MIN-CAP-CAP>;IGNORE
+<d-Z-s> <dzs>;<BAS>;<MIN-CAP-MIN>;IGNORE
+<d-z-S> <dzs>;<BAS>;<MIN-MIN-CAP>;IGNORE
+<d-z-s> <dzs>;<BAS>;<MIN-MIN-MIN>;IGNORE
+<d-D-Z-S> "<dzs><dzs>";"<BAS><BAS>";"<MIN><CAP-CAP-CAP>";IGNORE
+<d-D-Z-s> "<dzs><dzs>";"<BAS><BAS>";"<MIN><CAP-CAP-MIN>";IGNORE
+<d-D-z-S> "<dzs><dzs>";"<BAS><BAS>";"<MIN><CAP-MIN-CAP>";IGNORE
+<d-D-z-s> "<dzs><dzs>";"<BAS><BAS>";"<MIN><CAP-MIN-MIN>";IGNORE
+<d-d-Z-S> "<dzs><dzs>";"<BAS><BAS>";"<MIN><CAP-CAP-CAP>";IGNORE
+<d-d-Z-s> "<dzs><dzs>";"<BAS><BAS>";"<MIN><CAP-CAP-MIN>";IGNORE
+<d-d-z-S> "<dzs><dzs>";"<BAS><BAS>";"<MIN><CAP-MIN-CAP>";IGNORE
+<d-d-z-s> "<dzs><dzs>";"<BAS><BAS>";"<MIN><CAP-MIN-MIN>";IGNORE
+
+reorder-after <U0047>
+<G-Y> <gy>;<BAS>;<CAP>;IGNORE
+<G-y> <gy>;<BAS>;<CAP-MIN>;IGNORE
+<G-G-Y> "<gy><gy>";"<BAS><BAS>";"<CAP><CAP>";IGNORE
+<G-G-y> "<gy><gy>";"<BAS><BAS>";"<CAP><CAP-MIN>";IGNORE
+<G-g-Y> "<gy><gy>";"<BAS><BAS>";"<CAP><MIN-CAP>";IGNORE
+<G-g-y> "<gy><gy>";"<BAS><BAS>";"<CAP><MIN>";IGNORE
+reorder-after <U0067>
+<g-y> <gy>;<BAS>;<MIN>;IGNORE
+<g-Y> <gy>;<BAS>;<MIN-CAP>;IGNORE
+<g-G-Y> "<gy><gy>";"<BAS><BAS>";"<MIN><CAP>";IGNORE
+<g-G-y> "<gy><gy>";"<BAS><BAS>";"<MIN><CAP-MIN>";IGNORE
+<g-g-Y> "<gy><gy>";"<BAS><BAS>";"<MIN><MIN-CAP>";IGNORE
+<g-g-y> "<gy><gy>";"<BAS><BAS>";"<MIN><MIN>";IGNORE
+
+reorder-after <U004C>
+<L-Y> <ly>;<BAS>;<CAP>;IGNORE
+<L-y> <ly>;<BAS>;<CAP-MIN>;IGNORE
+<L-L-Y> "<ly><ly>";"<BAS><BAS>";"<CAP><CAP>";IGNORE
+<L-L-y> "<ly><ly>";"<BAS><BAS>";"<CAP><CAP-MIN>";IGNORE
+<L-l-Y> "<ly><ly>";"<BAS><BAS>";"<CAP><MIN-CAP>";IGNORE
+<L-l-y> "<ly><ly>";"<BAS><BAS>";"<CAP><MIN>";IGNORE
+reorder-after <U006C>
+<l-y> <ly>;<BAS>;<MIN>;IGNORE
+<l-Y> <ly>;<BAS>;<MIN-CAP>;IGNORE
+<l-L-Y> "<ly><ly>";"<BAS><BAS>";"<MIN><CAP>";IGNORE
+<l-L-y> "<ly><ly>";"<BAS><BAS>";"<MIN><CAP-MIN>";IGNORE
+<l-l-Y> "<ly><ly>";"<BAS><BAS>";"<MIN><MIN-CAP>";IGNORE
+<l-l-y> "<ly><ly>";"<BAS><BAS>";"<MIN><MIN>";IGNORE
+
+reorder-after <U004E>
+<N-Y> <ny>;<BAS>;<CAP>;IGNORE
+<N-y> <ny>;<BAS>;<CAP-MIN>;IGNORE
+<N-N-Y> "<ny><ny>";"<BAS><BAS>";"<CAP><CAP>";IGNORE
+<N-N-y> "<ny><ny>";"<BAS><BAS>";"<CAP><CAP-MIN>";IGNORE
+<N-n-Y> "<ny><ny>";"<BAS><BAS>";"<CAP><MIN-CAP>";IGNORE
+<N-n-y> "<ny><ny>";"<BAS><BAS>";"<CAP><MIN>";IGNORE
+reorder-after <U006E>
+<n-y> <ny>;<BAS>;<MIN>;IGNORE
+<n-Y> <ny>;<BAS>;<MIN-CAP>;IGNORE
+<n-N-Y> "<ny><ny>";"<BAS><BAS>";"<MIN><CAP>";IGNORE
+<n-N-y> "<ny><ny>";"<BAS><BAS>";"<MIN><CAP-MIN>";IGNORE
+<n-n-Y> "<ny><ny>";"<BAS><BAS>";"<MIN><MIN-CAP>";IGNORE
+<n-n-y> "<ny><ny>";"<BAS><BAS>";"<MIN><MIN>";IGNORE
+
+reorder-after <U0053>
+<S-Z> <sz>;<BAS>;<CAP>;IGNORE
+<S-z> <sz>;<BAS>;<CAP-MIN>;IGNORE
+<S-S-Z> "<sz><sz>";"<BAS><BAS>";"<CAP><CAP>";IGNORE
+<S-S-z> "<sz><sz>";"<BAS><BAS>";"<CAP><CAP-MIN>";IGNORE
+<S-s-Z> "<sz><sz>";"<BAS><BAS>";"<CAP><MIN-CAP>";IGNORE
+<S-s-z> "<sz><sz>";"<BAS><BAS>";"<CAP><MIN>";IGNORE
+reorder-after <U0073>
+<s-Z> <sz>;<BAS>;<MIN-CAP>;IGNORE
+<s-z> <sz>;<BAS>;<MIN>;IGNORE
+<s-S-Z> "<sz><sz>";"<BAS><BAS>";"<MIN><CAP>";IGNORE
+<s-S-z> "<sz><sz>";"<BAS><BAS>";"<MIN><CAP-MIN>";IGNORE
+<s-s-Z> "<sz><sz>";"<BAS><BAS>";"<MIN><MIN-CAP>";IGNORE
+<s-s-z> "<sz><sz>";"<BAS><BAS>";"<MIN><MIN>";IGNORE
+
+reorder-after <U0054>
+<T-Y> <ty>;<BAS>;<CAP>;IGNORE
+<T-y> <ty>;<BAS>;<CAP-MIN>;IGNORE
+<T-T-Y> "<ty><ty>";"<BAS><BAS>";"<CAP><CAP>";IGNORE
+<T-T-y> "<ty><ty>";"<BAS><BAS>";"<CAP><CAP-MIN>";IGNORE
+<T-t-Y> "<ty><ty>";"<BAS><BAS>";"<CAP><MIN-CAP>";IGNORE
+<T-t-y> "<ty><ty>";"<BAS><BAS>";"<CAP><MIN>";IGNORE
+reorder-after <U0074>
+<t-Y> <ty>;<BAS>;<MIN-CAP>;IGNORE
+<t-y> <ty>;<BAS>;<MIN>;IGNORE
+<t-T-Y> "<ty><ty>";"<BAS><BAS>";"<MIN><CAP>";IGNORE
+<t-T-y> "<ty><ty>";"<BAS><BAS>";"<MIN><CAP-MIN>";IGNORE
+<t-t-Y> "<ty><ty>";"<BAS><BAS>";"<MIN><MIN-CAP>";IGNORE
+<t-t-y> "<ty><ty>";"<BAS><BAS>";"<MIN><MIN>";IGNORE
+
+reorder-after <U005A>
+<Z-S> <zs>;<BAS>;<CAP>;IGNORE
+<Z-s> <zs>;<BAS>;<CAP-MIN>;IGNORE
+<Z-Z-S> "<zs><zs>";"<BAS><BAS>";"<CAP><CAP>";IGNORE
+<Z-Z-s> "<zs><zs>";"<BAS><BAS>";"<CAP><CAP-MIN>";IGNORE
+<Z-z-S> "<zs><zs>";"<BAS><BAS>";"<CAP><MIN-CAP>";IGNORE
+<Z-z-s> "<zs><zs>";"<BAS><BAS>";"<CAP><MIN>";IGNORE
+reorder-after <U007A>
+<z-S> <zs>;<BAS>;<MIN-CAP>;IGNORE
+<z-s> <zs>;<BAS>;<MIN>;IGNORE
+<z-Z-S> "<zs><zs>";"<BAS><BAS>";"<MIN><CAP>";IGNORE
+<z-Z-s> "<zs><zs>";"<BAS><BAS>";"<MIN><CAP-MIN>";IGNORE
+<z-z-S> "<zs><zs>";"<BAS><BAS>";"<MIN><MIN-CAP>";IGNORE
+<z-z-s> "<zs><zs>";"<BAS><BAS>";"<MIN><MIN>";IGNORE
+
+reorder-end
+
diff --git a/ap/build/uClibc/extra/locale/collation/hy_AM b/ap/build/uClibc/extra/locale/collation/hy_AM
new file mode 100644
index 0000000..1132128
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/hy_AM
@@ -0,0 +1,91 @@
+
+% Armenian sorting is not yet on iso14651_t1
+
+copy "iso14651_t1"
+
+script <ARMENIAN>
+
+order_start <ARMENIAN>;forward;forward;forward;forward,position
+
+<U0561> <U0561>;<BAS>;<MIN>;IGNORE % <ARM-AYB>
+<U0562> <U0562>;<BAS>;<MIN>;IGNORE % <ARM-BEN>
+<U0563> <U0563>;<BAS>;<MIN>;IGNORE % <ARM-GIM>
+<U0564> <U0564>;<BAS>;<MIN>;IGNORE % <ARM-DA>
+<U0565> <U0565>;<BAS>;<MIN>;IGNORE % <ARM-YECH>
+<U0566> <U0566>;<BAS>;<MIN>;IGNORE % <ARM-ZA>
+<U0567> <U0567>;<BAS>;<MIN>;IGNORE % <ARM-E>
+<U0568> <U0568>;<BAS>;<MIN>;IGNORE % <ARM-AT>
+<U0569> <U0569>;<BAS>;<MIN>;IGNORE % <ARM-TO>
+<U056A> <U056A>;<BAS>;<MIN>;IGNORE % <ARM-ZHE>
+<U056B> <U056B>;<BAS>;<MIN>;IGNORE % <ARM-INI>
+<U056C> <U056C>;<BAS>;<MIN>;IGNORE % <ARM-LYUN>
+<U056D> <U056D>;<BAS>;<MIN>;IGNORE % <ARM-KHE>
+<U056E> <U056E>;<BAS>;<MIN>;IGNORE % <ARM-TSA>
+<U056F> <U056F>;<BAS>;<MIN>;IGNORE % <ARM-KEN>
+<U0570> <U0570>;<BAS>;<MIN>;IGNORE % <ARM-HO>
+<U0571> <U0571>;<BAS>;<MIN>;IGNORE % <ARM-DZA>
+<U0572> <U0572>;<BAS>;<MIN>;IGNORE % <ARM-GHAT>
+<U0573> <U0573>;<BAS>;<MIN>;IGNORE % <ARM-TCHE>
+<U0574> <U0574>;<BAS>;<MIN>;IGNORE % <ARM-MEN>
+<U0575> <U0575>;<BAS>;<MIN>;IGNORE % <ARM-HI>
+<U0576> <U0576>;<BAS>;<MIN>;IGNORE % <ARM-NU>
+<U0577> <U0577>;<BAS>;<MIN>;IGNORE % <ARM-SHA>
+<U0578> <U0578>;<BAS>;<MIN>;IGNORE % <ARM-VO>
+<U0579> <U0579>;<BAS>;<MIN>;IGNORE % <ARM-CHA>
+<U057A> <U057A>;<BAS>;<MIN>;IGNORE % <ARM-PE>
+<U057B> <U057B>;<BAS>;<MIN>;IGNORE % <ARM-JE>
+<U057C> <U057C>;<BAS>;<MIN>;IGNORE % <ARM-RA>
+<U057D> <U057D>;<BAS>;<MIN>;IGNORE % <ARM-SE>
+<U057E> <U057E>;<BAS>;<MIN>;IGNORE % <ARM-VEV>
+<U057F> <U057F>;<BAS>;<MIN>;IGNORE % <ARM-TYUN>
+<U0580> <U0580>;<BAS>;<MIN>;IGNORE % <ARM-RE>
+<U0581> <U0581>;<BAS>;<MIN>;IGNORE % <ARM-TSO>
+<U0582> <U0582>;<BAS>;<MIN>;IGNORE % <ARM-VYUN>
+<U0583> <U0583>;<BAS>;<MIN>;IGNORE % <ARM-PYUR>
+<U0584> <U0584>;<BAS>;<MIN>;IGNORE % <ARM-KE>
+<U0585> <U0585>;<BAS>;<MIN>;IGNORE % <ARM-O>
+<U0586> <U0586>;<BAS>;<MIN>;IGNORE % <ARM-FE>
+<U0531> <U0531>;<BAS>;<CAP>;IGNORE % <ARM-AYB>
+<U0532> <U0532>;<BAS>;<CAP>;IGNORE % <ARM-BEN>
+<U0533> <U0533>;<BAS>;<CAP>;IGNORE % <ARM-GIM>
+<U0534> <U0534>;<BAS>;<CAP>;IGNORE % <ARM-DA>
+<U0535> <U0535>;<BAS>;<CAP>;IGNORE % <ARM-YECH>
+<U0536> <U0536>;<BAS>;<CAP>;IGNORE % <ARM-ZA>
+<U0537> <U0537>;<BAS>;<CAP>;IGNORE % <ARM-E>
+<U0538> <U0538>;<BAS>;<CAP>;IGNORE % <ARM-AT>
+<U0539> <U0539>;<BAS>;<CAP>;IGNORE % <ARM-TO>
+<U053A> <U053A>;<BAS>;<CAP>;IGNORE % <ARM-ZHE>
+<U053B> <U053B>;<BAS>;<CAP>;IGNORE % <ARM-INI>
+<U053C> <U053C>;<BAS>;<CAP>;IGNORE % <ARM-LYUN>
+<U053D> <U053D>;<BAS>;<CAP>;IGNORE % <ARM-KHE>
+<U053E> <U053E>;<BAS>;<CAP>;IGNORE % <ARM-TSA>
+<U053F> <U053F>;<BAS>;<CAP>;IGNORE % <ARM-KEN>
+<U0540> <U0540>;<BAS>;<CAP>;IGNORE % <ARM-HO>
+<U0541> <U0541>;<BAS>;<CAP>;IGNORE % <ARM-DZA>
+<U0542> <U0542>;<BAS>;<CAP>;IGNORE % <ARM-GHAT>
+<U0543> <U0543>;<BAS>;<CAP>;IGNORE % <ARM-TCHE>
+<U0544> <U0544>;<BAS>;<CAP>;IGNORE % <ARM-MEN>
+<U0545> <U0545>;<BAS>;<CAP>;IGNORE % <ARM-HI>
+<U0546> <U0546>;<BAS>;<CAP>;IGNORE % <ARM-NU>
+<U0547> <U0547>;<BAS>;<CAP>;IGNORE % <ARM-SHA>
+<U0548> <U0548>;<BAS>;<CAP>;IGNORE % <ARM-VO>
+<U0549> <U0549>;<BAS>;<CAP>;IGNORE % <ARM-CHA>
+<U054A> <U054A>;<BAS>;<CAP>;IGNORE % <ARM-PE>
+<U054B> <U054B>;<BAS>;<CAP>;IGNORE % <ARM-JE>
+<U054C> <U054C>;<BAS>;<CAP>;IGNORE % <ARM-RA>
+<U054D> <U054D>;<BAS>;<CAP>;IGNORE % <ARM-SE>
+<U054E> <U054E>;<BAS>;<CAP>;IGNORE % <ARM-VEV>
+<U054F> <U054F>;<BAS>;<CAP>;IGNORE % <ARM-TYUN>
+<U0550> <U0550>;<BAS>;<CAP>;IGNORE % <ARM-RE>
+<U0551> <U0551>;<BAS>;<CAP>;IGNORE % <ARM-TSO>
+<U0552> <U0552>;<BAS>;<CAP>;IGNORE % <ARM-VYUN>
+<U0553> <U0553>;<BAS>;<CAP>;IGNORE % <ARM-PYUR>
+<U0554> <U0554>;<BAS>;<CAP>;IGNORE % <ARM-KE>
+<U0555> <U0555>;<BAS>;<CAP>;IGNORE % <ARM-O>
+<U0556> <U0556>;<BAS>;<CAP>;IGNORE % <ARM-FE>
+order-end
+
+reorder-sections-after <CYRIL>
+<ARMENIAN>
+reorder-sections-end
+
diff --git a/ap/build/uClibc/extra/locale/collation/id_ID b/ap/build/uClibc/extra/locale/collation/id_ID
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/id_ID
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/is_IS b/ap/build/uClibc/extra/locale/collation/is_IS
new file mode 100644
index 0000000..b19add0
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/is_IS
@@ -0,0 +1,2104 @@
+
+% Base collation scheme: 1994-03-22
+
+% Ordering algorithm:
+% 1. Spaces and hyphen (but not soft
+% hyphen) before punctuation
+% characters, punctuation characters
+% before numbers,
+% numbers before letters.
+% 2. Letters with diacritical marks are
+% members of equivalence classes
+% 3. A distinction is made with regards
+% to case as noted below.
+% 4. Special characters are ignored
+% when comparing letters, but then
+% they are considered
+% 5. The alphabets are sorted in order
+% of first appearance in ISO 10646:
+% Latin, Greek, Cyrillic, etc.
+%
+% According to Greek specifications,
+% the steps 2. and 3. above are reversed
+% for the Greek script
+
+% collating symbols
+
+% The collating symbol naming is
+% mostly taken from ISO 10646-1,
+% for example the case and accent
+% names are from this standard.
+
+collating-symbol <CAPITAL>
+collating-symbol <CAPITAL-SMALL>
+collating-symbol <SMALL-CAPITAL>
+collating-symbol <SMALL>
+
+% <CAPITAL-SMALL> and <SMALL-CAPITAL>
+% are for cases like Danish <U0041><U0061>
+% and Spanish <U0043><U0068> being treated
+% as one letter.
+
+% The <a8> ...... <z8> collating
+% symbols have defined weights as
+% the last character in a group of
+% Latin letters. They are used
+% to specify deltas by locales using
+% a locale as the default ordering
+% and by "reorder-after" statements
+% specifying the changed placement
+% in an ordering of a character.
+
+collating-symbol <a8>
+collating-symbol <b8>
+collating-symbol <c8>
+collating-symbol <d8>
+collating-symbol <e8>
+collating-symbol <f8>
+collating-symbol <g8>
+collating-symbol <h8>
+collating-symbol <i8>
+collating-symbol <j8>
+collating-symbol <k8>
+collating-symbol <l8>
+collating-symbol <m8>
+collating-symbol <n8>
+collating-symbol <o8>
+collating-symbol <p8>
+collating-symbol <q8>
+collating-symbol <r8>
+collating-symbol <s8>
+collating-symbol <t8>
+collating-symbol <u8>
+collating-symbol <v8>
+collating-symbol <w8>
+collating-symbol <x8>
+collating-symbol <y8>
+collating-symbol <z8>
+
+collating-symbol <NONE>
+collating-symbol <ACUTE>
+collating-symbol <ACUTE+DOT>
+collating-symbol <GRAVE>
+collating-symbol <DOUBLE-GRAVE>
+collating-symbol <BREVE>
+collating-symbol <BREVE+ACUTE>
+collating-symbol <BREVE+GRAVE>
+collating-symbol <BREVE+MACRON>
+collating-symbol <BREVE+HOOK>
+collating-symbol <BREVE+TILDE>
+collating-symbol <BREVE+DOT-BELOW>
+collating-symbol <BREVE-BELOW>
+collating-symbol <INVERTED-BREVE>
+collating-symbol <CIRCUMFLEX>
+collating-symbol <CIRCUMFLEX+ACUTE>
+collating-symbol <CIRCUMFLEX+GRAVE>
+collating-symbol <CIRCUMFLEX+HOOK>
+collating-symbol <CIRCUMFLEX+TILDE>
+collating-symbol <CIRCUMFLEX+DOT-BELOW>
+collating-symbol <CARON>
+collating-symbol <CARON+DIAERESIS>
+collating-symbol <CARON+DOT>
+collating-symbol <RING>
+collating-symbol <RING+ACUTE>
+collating-symbol <RING-BELOW>
+collating-symbol <DIAERESIS>
+collating-symbol <DIAERESIS+MACRON>
+collating-symbol <DIAERESIS+ACUTE>
+collating-symbol <DIAERESIS+GRAVE>
+collating-symbol <DIAERESIS+CARON>
+collating-symbol <DOUBLE-ACUTE>
+collating-symbol <HOOK>
+collating-symbol <TILDE>
+collating-symbol <TILDE+ACUTE>
+collating-symbol <TILDE+DIAERESIS>
+collating-symbol <TILDE-BELOW>
+collating-symbol <DOT>
+collating-symbol <DOT-BELOW>
+collating-symbol <DOT+DOT-BELOW>
+collating-symbol <STROKE>
+collating-symbol <STROKE+ACUTE>
+collating-symbol <CEDILLA>
+collating-symbol <CEDILLA+ACUTE>
+collating-symbol <CEDILLA+GRAVE>
+collating-symbol <CEDILLA+BREVE>
+collating-symbol <OGONEK>
+collating-symbol <OGONEK+MACRON>
+collating-symbol <MACRON>
+collating-symbol <MACRON+ACUTE>
+collating-symbol <MACRON+GRAVE>
+collating-symbol <MACRON+DIAERESIS>
+collating-symbol <MACRON+DIAERESIS-BELOW>
+collating-symbol <MACRON+DOT>
+collating-symbol <MACRON+DOT-BELOW>
+collating-symbol <MACRON+CIRCUMFLEX>
+collating-symbol <LINE-BELOW>
+collating-symbol <HORN>
+collating-symbol <HORN+ACUTE>
+collating-symbol <HORN+GRAVE>
+collating-symbol <HORN+HOOK>
+collating-symbol <HORN+TILDE>
+collating-symbol <HORN+DOT-BELOW>
+collating-symbol <PRECEDED-BY-APOSTROPHE>
+collating-symbol <GREEK>
+collating-symbol <TONOS>
+collating-symbol <DIALYTICA>
+collating-symbol <DIALYTICA+TONOS>
+collating-symbol <CYRILLIC>
+collating-symbol <HIRAGANA>
+collating-symbol <KATAKANA>
+collating-symbol <SPECIAL>
+
+% letter;accent;case;specials
+
+order_start forward;forward;forward;position
+
+% <CAPITAL> or <SMALL> letters first:
+
+<SMALL>
+<SMALL-CAPITAL>
+<CAPITAL-SMALL>
+<CAPITAL>
+
+% Accents:
+
+<NONE>
+<ACUTE>
+<ACUTE+DOT>
+<GRAVE>
+<DOUBLE-GRAVE>
+<BREVE>
+<BREVE+ACUTE>
+<BREVE+GRAVE>
+<BREVE+MACRON>
+<BREVE+HOOK>
+<BREVE+TILDE>
+<BREVE+DOT-BELOW>
+<BREVE-BELOW>
+<INVERTED-BREVE>
+<CIRCUMFLEX>
+<CIRCUMFLEX+ACUTE>
+<CIRCUMFLEX+GRAVE>
+<CIRCUMFLEX+HOOK>
+<CIRCUMFLEX+TILDE>
+<CIRCUMFLEX+DOT-BELOW>
+<CARON>
+<CARON+DIAERESIS>
+<CARON+DOT>
+<RING>
+<RING+ACUTE>
+<RING-BELOW>
+<DIAERESIS>
+<DIAERESIS+MACRON>
+<DIAERESIS+ACUTE>
+<DIAERESIS+GRAVE>
+<DIAERESIS+CARON>
+<DOUBLE-ACUTE>
+<HOOK>
+<TILDE>
+<TILDE+ACUTE>
+<TILDE+DIAERESIS>
+<TILDE-BELOW>
+<DOT>
+<DOT-BELOW>
+<DOT+DOT-BELOW>
+<STROKE>
+<STROKE+ACUTE>
+<CEDILLA>
+<CEDILLA+ACUTE>
+<CEDILLA+GRAVE>
+<CEDILLA+BREVE>
+<OGONEK>
+<OGONEK+MACRON>
+<MACRON>
+<MACRON+ACUTE>
+<MACRON+GRAVE>
+<MACRON+DIAERESIS>
+<MACRON+DIAERESIS-BELOW>
+<MACRON+DOT>
+<MACRON+DOT-BELOW>
+<MACRON+CIRCUMFLEX>
+<LINE-BELOW>
+<HORN>
+<HORN+ACUTE>
+<HORN+GRAVE>
+<HORN+HOOK>
+<HORN+TILDE>
+<HORN+DOT-BELOW>
+<PRECEDED-BY-APOSTROPHE>
+<GREEK>
+<TONOS>
+<DIALYTICA>
+<DIALYTICA+TONOS>
+<CYRILLIC>
+<HIRAGANA>
+<KATAKANA>
+<SPECIAL>
+
+<U00A0> <U00A0>;<U00A0>;<U00A0>;IGNORE
+<U0020> IGNORE;IGNORE;IGNORE;<U0020>
+<U0009> IGNORE;IGNORE;IGNORE;<U0009>
+<U000B> IGNORE;IGNORE;IGNORE;<U000B>
+<U000D> IGNORE;IGNORE;IGNORE;<U000D>
+<U000A> IGNORE;IGNORE;IGNORE;<U000A>
+<U000C> IGNORE;IGNORE;IGNORE;<U000C>
+<U005F> IGNORE;IGNORE;IGNORE;<U005F>
+<U00AF> IGNORE;IGNORE;IGNORE;<U00AF>
+<U00AD> IGNORE;IGNORE;IGNORE;<U00AD>
+<U002D> IGNORE;IGNORE;IGNORE;<U002D>
+<U002C> IGNORE;IGNORE;IGNORE;<U002C>
+<U003B> IGNORE;IGNORE;IGNORE;<U003B>
+<U003A> IGNORE;IGNORE;IGNORE;<U003A>
+<U0021> IGNORE;IGNORE;IGNORE;<U0021>
+<U00A1> IGNORE;IGNORE;IGNORE;<U00A1>
+<U003F> IGNORE;IGNORE;IGNORE;<U003F>
+<U00BF> IGNORE;IGNORE;IGNORE;<U00BF>
+<U002F> IGNORE;IGNORE;IGNORE;<U002F>
+<U002E> IGNORE;IGNORE;IGNORE;<U002E>
+<U00B4> IGNORE;IGNORE;IGNORE;<U00B4>
+<U0060> IGNORE;IGNORE;IGNORE;<U0060>
+<U005E> IGNORE;IGNORE;IGNORE;<U005E>
+<U00A8> IGNORE;IGNORE;IGNORE;<U00A8>
+<U007E> IGNORE;IGNORE;IGNORE;<U007E>
+<U00B7> IGNORE;IGNORE;IGNORE;<U00B7>
+<U00B8> IGNORE;IGNORE;IGNORE;<U00B8>
+<U0027> IGNORE;IGNORE;IGNORE;<U0027>
+<U2018> IGNORE;IGNORE;IGNORE;<U2018>
+<U2019> IGNORE;IGNORE;IGNORE;<U2019>
+<U0022> IGNORE;IGNORE;IGNORE;<U0022>
+<U201C> IGNORE;IGNORE;IGNORE;<U201C>
+<U201D> IGNORE;IGNORE;IGNORE;<U201D>
+<U00AB> IGNORE;IGNORE;IGNORE;<U00AB>
+<U00BB> IGNORE;IGNORE;IGNORE;<U00BB>
+<U0028> IGNORE;IGNORE;IGNORE;<U0028>
+<U207D> IGNORE;IGNORE;IGNORE;<U207D>
+<U0029> IGNORE;IGNORE;IGNORE;<U0029>
+<U207E> IGNORE;IGNORE;IGNORE;<U207E>
+<U005B> IGNORE;IGNORE;IGNORE;<U005B>
+<U005D> IGNORE;IGNORE;IGNORE;<U005D>
+<U007B> IGNORE;IGNORE;IGNORE;<U007B>
+<U007D> IGNORE;IGNORE;IGNORE;<U007D>
+<U00A7> IGNORE;IGNORE;IGNORE;<U00A7>
+<U00B6> IGNORE;IGNORE;IGNORE;<U00B6>
+<U00A9> IGNORE;IGNORE;IGNORE;<U00A9>
+<U00AE> IGNORE;IGNORE;IGNORE;<U00AE>
+<U0040> IGNORE;IGNORE;IGNORE;<U0040>
+<U00A4> IGNORE;IGNORE;IGNORE;<U00A4>
+<U00A2> IGNORE;IGNORE;IGNORE;<U00A2>
+<U0024> IGNORE;IGNORE;IGNORE;<U0024>
+<U00A3> IGNORE;IGNORE;IGNORE;<U00A3>
+<U00A5> IGNORE;IGNORE;IGNORE;<U00A5>
+<U002A> IGNORE;IGNORE;IGNORE;<U002A>
+<U005C> IGNORE;IGNORE;IGNORE;<U005C>
+<U0026> IGNORE;IGNORE;IGNORE;<U0026>
+<U0023> IGNORE;IGNORE;IGNORE;<U0023>
+<U0025> IGNORE;IGNORE;IGNORE;<U0025>
+<U207B> IGNORE;IGNORE;IGNORE;<U207B>
+<U002B> IGNORE;IGNORE;IGNORE;<U002B>
+<U207A> IGNORE;IGNORE;IGNORE;<U207A>
+<U00B1> IGNORE;IGNORE;IGNORE;<U00B1>
+<U00F7> IGNORE;IGNORE;IGNORE;<U00F7>
+<U00D7> IGNORE;IGNORE;IGNORE;<U00D7>
+<U2260> IGNORE;IGNORE;IGNORE;<U2260>
+<U003C> IGNORE;IGNORE;IGNORE;<U003C>
+<U2264> IGNORE;IGNORE;IGNORE;<U2264>
+<U003D> IGNORE;IGNORE;IGNORE;<U003D>
+<U2265> IGNORE;IGNORE;IGNORE;<U2265>
+<U003E> IGNORE;IGNORE;IGNORE;<U003E>
+<U00AC> IGNORE;IGNORE;IGNORE;<U00AC>
+<U007C> IGNORE;IGNORE;IGNORE;<U007C>
+<U00A6> IGNORE;IGNORE;IGNORE;<U00A6>
+<U00B0> IGNORE;IGNORE;IGNORE;<U00B0>
+<U00B5> IGNORE;IGNORE;IGNORE;<U00B5>
+<U02C7> IGNORE;IGNORE;IGNORE;<U02C7>
+<U02D8> IGNORE;IGNORE;IGNORE;<U02D8>
+<U02D9> IGNORE;IGNORE;IGNORE;<U02D9>
+<U02DA> IGNORE;IGNORE;IGNORE;<U02DA>
+<U02DB> IGNORE;IGNORE;IGNORE;<U02DB>
+<U02DC> IGNORE;IGNORE;IGNORE;<U02DC>
+<U02DD> IGNORE;IGNORE;IGNORE;<U02DD>
+<U0374> IGNORE;IGNORE;IGNORE;<U0374>
+<U0375> IGNORE;IGNORE;IGNORE;<U0375>
+<U037A> IGNORE;IGNORE;IGNORE;<U037A>
+<U037E> IGNORE;IGNORE;IGNORE;<U037E>
+<U0384> IGNORE;IGNORE;IGNORE;<U0384>
+<U0385> IGNORE;IGNORE;IGNORE;<U0385>
+<U0387> IGNORE;IGNORE;IGNORE;<U0387>
+<U03D0> IGNORE;IGNORE;IGNORE;<U03D0>
+<U1FBF> IGNORE;IGNORE;IGNORE;<U1FBF>
+<U1FC0> IGNORE;IGNORE;IGNORE;<U1FC0>
+<U1FC1> IGNORE;IGNORE;IGNORE;<U1FC1>
+<U1FCD> IGNORE;IGNORE;IGNORE;<U1FCD>
+<U1FCE> IGNORE;IGNORE;IGNORE;<U1FCE>
+<U1FCF> IGNORE;IGNORE;IGNORE;<U1FCF>
+<U1FDD> IGNORE;IGNORE;IGNORE;<U1FDD>
+<U1FDE> IGNORE;IGNORE;IGNORE;<U1FDE>
+<U1FDF> IGNORE;IGNORE;IGNORE;<U1FDF>
+<U1FED> IGNORE;IGNORE;IGNORE;<U1FED>
+<U1FEF> IGNORE;IGNORE;IGNORE;<U1FEF>
+<U1FFE> IGNORE;IGNORE;IGNORE;<U1FFE>
+<U2002> IGNORE;IGNORE;IGNORE;<U2002>
+<U2003> IGNORE;IGNORE;IGNORE;<U2003>
+<U2004> IGNORE;IGNORE;IGNORE;<U2004>
+<U2005> IGNORE;IGNORE;IGNORE;<U2005>
+<U2006> IGNORE;IGNORE;IGNORE;<U2006>
+<U200E> IGNORE;IGNORE;IGNORE;<U200E>
+<U200F> IGNORE;IGNORE;IGNORE;<U200F>
+<U2009> IGNORE;IGNORE;IGNORE;<U2009>
+<U200A> IGNORE;IGNORE;IGNORE;<U200A>
+<U2010> IGNORE;IGNORE;IGNORE;<U2010>
+<U2013> IGNORE;IGNORE;IGNORE;<U2013>
+<U2014> IGNORE;IGNORE;IGNORE;<U2014>
+<U2015> IGNORE;IGNORE;IGNORE;<U2015>
+<U2016> IGNORE;IGNORE;IGNORE;<U2016>
+<U2017> IGNORE;IGNORE;IGNORE;<U2017>
+<U201A> IGNORE;IGNORE;IGNORE;<U201A>
+<U201B> IGNORE;IGNORE;IGNORE;<U201B>
+<U201E> IGNORE;IGNORE;IGNORE;<U201E>
+<U201F> IGNORE;IGNORE;IGNORE;<U201F>
+<U2020> IGNORE;IGNORE;IGNORE;<U2020>
+<U2021> IGNORE;IGNORE;IGNORE;<U2021>
+<U2022> IGNORE;IGNORE;IGNORE;<U2022>
+<U2025> IGNORE;IGNORE;IGNORE;<U2025>
+<U2026> IGNORE;IGNORE;IGNORE;<U2026>
+<U2030> IGNORE;IGNORE;IGNORE;<U2030>
+<U2032> IGNORE;IGNORE;IGNORE;<U2032>
+<U2033> IGNORE;IGNORE;IGNORE;<U2033>
+<U2034> IGNORE;IGNORE;IGNORE;<U2034>
+<U2035> IGNORE;IGNORE;IGNORE;<U2035>
+<U2036> IGNORE;IGNORE;IGNORE;<U2036>
+<U2037> IGNORE;IGNORE;IGNORE;<U2037>
+<U2038> IGNORE;IGNORE;IGNORE;<U2038>
+<U2039> IGNORE;IGNORE;IGNORE;<U2039>
+<U203A> IGNORE;IGNORE;IGNORE;<U203A>
+<U203B> IGNORE;IGNORE;IGNORE;<U203B>
+<U203C> IGNORE;IGNORE;IGNORE;<U203C>
+<U203E> IGNORE;IGNORE;IGNORE;<U203E>
+<U2044> IGNORE;IGNORE;IGNORE;<U2044>
+<U207C> IGNORE;IGNORE;IGNORE;<U207C>
+<U2080> IGNORE;IGNORE;IGNORE;<U2080>
+<U2081> IGNORE;IGNORE;IGNORE;<U2081>
+<U2082> IGNORE;IGNORE;IGNORE;<U2082>
+<U2083> IGNORE;IGNORE;IGNORE;<U2083>
+<U2084> IGNORE;IGNORE;IGNORE;<U2084>
+<U2085> IGNORE;IGNORE;IGNORE;<U2085>
+<U2086> IGNORE;IGNORE;IGNORE;<U2086>
+<U2087> IGNORE;IGNORE;IGNORE;<U2087>
+<U2088> IGNORE;IGNORE;IGNORE;<U2088>
+<U2089> IGNORE;IGNORE;IGNORE;<U2089>
+<U208A> IGNORE;IGNORE;IGNORE;<U208A>
+<U208B> IGNORE;IGNORE;IGNORE;<U208B>
+<U208C> IGNORE;IGNORE;IGNORE;<U208C>
+<U208D> IGNORE;IGNORE;IGNORE;<U208D>
+<U208E> IGNORE;IGNORE;IGNORE;<U208E>
+<U20A3> IGNORE;IGNORE;IGNORE;<U20A3>
+<U20A4> IGNORE;IGNORE;IGNORE;<U20A4>
+<U20A7> IGNORE;IGNORE;IGNORE;<U20A7>
+<U20A9> IGNORE;IGNORE;IGNORE;<U20A9>
+<U2103> IGNORE;IGNORE;IGNORE;<U2103>
+<U2105> IGNORE;IGNORE;IGNORE;<U2105>
+<U2109> IGNORE;IGNORE;IGNORE;<U2109>
+<U2116> IGNORE;IGNORE;IGNORE;<U2116>
+<U2117> IGNORE;IGNORE;IGNORE;<U2117>
+<U211E> IGNORE;IGNORE;IGNORE;<U211E>
+<U2120> IGNORE;IGNORE;IGNORE;<U2120>
+<U2122> IGNORE;IGNORE;IGNORE;<U2122>
+<U2126> IGNORE;IGNORE;IGNORE;<U2126>
+<U212B> IGNORE;IGNORE;IGNORE;<U212B>
+<U2153> IGNORE;IGNORE;IGNORE;<U2153>
+<U2154> IGNORE;IGNORE;IGNORE;<U2154>
+<U2155> IGNORE;IGNORE;IGNORE;<U2155>
+<U2156> IGNORE;IGNORE;IGNORE;<U2156>
+<U2157> IGNORE;IGNORE;IGNORE;<U2157>
+<U2158> IGNORE;IGNORE;IGNORE;<U2158>
+<U2159> IGNORE;IGNORE;IGNORE;<U2159>
+<U215A> IGNORE;IGNORE;IGNORE;<U215A>
+<U2160> IGNORE;IGNORE;IGNORE;<U2160>
+<U2161> IGNORE;IGNORE;IGNORE;<U2161>
+<U2162> IGNORE;IGNORE;IGNORE;<U2162>
+<U2163> IGNORE;IGNORE;IGNORE;<U2163>
+<U2164> IGNORE;IGNORE;IGNORE;<U2164>
+<U2165> IGNORE;IGNORE;IGNORE;<U2165>
+<U2166> IGNORE;IGNORE;IGNORE;<U2166>
+<U2167> IGNORE;IGNORE;IGNORE;<U2167>
+<U2168> IGNORE;IGNORE;IGNORE;<U2168>
+<U2169> IGNORE;IGNORE;IGNORE;<U2169>
+<U216A> IGNORE;IGNORE;IGNORE;<U216A>
+<U216B> IGNORE;IGNORE;IGNORE;<U216B>
+<U216C> IGNORE;IGNORE;IGNORE;<U216C>
+<U216D> IGNORE;IGNORE;IGNORE;<U216D>
+<U216E> IGNORE;IGNORE;IGNORE;<U216E>
+<U216F> IGNORE;IGNORE;IGNORE;<U216F>
+<U2170> IGNORE;IGNORE;IGNORE;<U2170>
+<U2171> IGNORE;IGNORE;IGNORE;<U2171>
+<U2172> IGNORE;IGNORE;IGNORE;<U2172>
+<U2173> IGNORE;IGNORE;IGNORE;<U2173>
+<U2174> IGNORE;IGNORE;IGNORE;<U2174>
+<U2175> IGNORE;IGNORE;IGNORE;<U2175>
+<U2176> IGNORE;IGNORE;IGNORE;<U2176>
+<U2177> IGNORE;IGNORE;IGNORE;<U2177>
+<U2178> IGNORE;IGNORE;IGNORE;<U2178>
+<U2179> IGNORE;IGNORE;IGNORE;<U2179>
+<U217A> IGNORE;IGNORE;IGNORE;<U217A>
+<U217B> IGNORE;IGNORE;IGNORE;<U217B>
+<U217C> IGNORE;IGNORE;IGNORE;<U217C>
+<U217D> IGNORE;IGNORE;IGNORE;<U217D>
+<U217E> IGNORE;IGNORE;IGNORE;<U217E>
+<U217F> IGNORE;IGNORE;IGNORE;<U217F>
+<U2180> IGNORE;IGNORE;IGNORE;<U2180>
+<U2181> IGNORE;IGNORE;IGNORE;<U2181>
+<U2182> IGNORE;IGNORE;IGNORE;<U2182>
+<U2191> IGNORE;IGNORE;IGNORE;<U2191>
+<U2193> IGNORE;IGNORE;IGNORE;<U2193>
+<U2194> IGNORE;IGNORE;IGNORE;<U2194>
+<U2195> IGNORE;IGNORE;IGNORE;<U2195>
+<U2196> IGNORE;IGNORE;IGNORE;<U2196>
+<U2197> IGNORE;IGNORE;IGNORE;<U2197>
+<U2198> IGNORE;IGNORE;IGNORE;<U2198>
+<U2199> IGNORE;IGNORE;IGNORE;<U2199>
+<U21A8> IGNORE;IGNORE;IGNORE;<U21A8>
+<U21C0> IGNORE;IGNORE;IGNORE;<U21C0>
+<U21D0> IGNORE;IGNORE;IGNORE;<U21D0>
+<U21D2> IGNORE;IGNORE;IGNORE;<U21D2>
+<U21D4> IGNORE;IGNORE;IGNORE;<U21D4>
+<U2200> IGNORE;IGNORE;IGNORE;<U2200>
+<U2202> IGNORE;IGNORE;IGNORE;<U2202>
+<U2203> IGNORE;IGNORE;IGNORE;<U2203>
+<U2205> IGNORE;IGNORE;IGNORE;<U2205>
+<U2206> IGNORE;IGNORE;IGNORE;<U2206>
+<U2207> IGNORE;IGNORE;IGNORE;<U2207>
+<U2208> IGNORE;IGNORE;IGNORE;<U2208>
+<U220B> IGNORE;IGNORE;IGNORE;<U220B>
+<U220F> IGNORE;IGNORE;IGNORE;<U220F>
+<U2211> IGNORE;IGNORE;IGNORE;<U2211>
+<U2212> IGNORE;IGNORE;IGNORE;<U2212>
+<U2213> IGNORE;IGNORE;IGNORE;<U2213>
+<U2214> IGNORE;IGNORE;IGNORE;<U2214>
+<U2217> IGNORE;IGNORE;IGNORE;<U2217>
+<U2218> IGNORE;IGNORE;IGNORE;<U2218>
+<U2219> IGNORE;IGNORE;IGNORE;<U2219>
+<U221A> IGNORE;IGNORE;IGNORE;<U221A>
+<U221D> IGNORE;IGNORE;IGNORE;<U221D>
+<U221E> IGNORE;IGNORE;IGNORE;<U221E>
+<U221F> IGNORE;IGNORE;IGNORE;<U221F>
+<U2220> IGNORE;IGNORE;IGNORE;<U2220>
+<U2225> IGNORE;IGNORE;IGNORE;<U2225>
+<U2227> IGNORE;IGNORE;IGNORE;<U2227>
+<U2228> IGNORE;IGNORE;IGNORE;<U2228>
+<U2229> IGNORE;IGNORE;IGNORE;<U2229>
+<U222A> IGNORE;IGNORE;IGNORE;<U222A>
+<U222B> IGNORE;IGNORE;IGNORE;<U222B>
+<U222C> IGNORE;IGNORE;IGNORE;<U222C>
+<U222E> IGNORE;IGNORE;IGNORE;<U222E>
+<U2234> IGNORE;IGNORE;IGNORE;<U2234>
+<U2235> IGNORE;IGNORE;IGNORE;<U2235>
+<U2236> IGNORE;IGNORE;IGNORE;<U2236>
+<U2237> IGNORE;IGNORE;IGNORE;<U2237>
+<U223C> IGNORE;IGNORE;IGNORE;<U223C>
+<U223E> IGNORE;IGNORE;IGNORE;<U223E>
+<U2243> IGNORE;IGNORE;IGNORE;<U2243>
+<U2245> IGNORE;IGNORE;IGNORE;<U2245>
+<U2248> IGNORE;IGNORE;IGNORE;<U2248>
+<U224C> IGNORE;IGNORE;IGNORE;<U224C>
+<U2253> IGNORE;IGNORE;IGNORE;<U2253>
+<U2261> IGNORE;IGNORE;IGNORE;<U2261>
+<U226A> IGNORE;IGNORE;IGNORE;<U226A>
+<U226B> IGNORE;IGNORE;IGNORE;<U226B>
+<U226E> IGNORE;IGNORE;IGNORE;<U226E>
+<U226F> IGNORE;IGNORE;IGNORE;<U226F>
+<U2282> IGNORE;IGNORE;IGNORE;<U2282>
+<U2283> IGNORE;IGNORE;IGNORE;<U2283>
+<U2286> IGNORE;IGNORE;IGNORE;<U2286>
+<U2287> IGNORE;IGNORE;IGNORE;<U2287>
+<U2299> IGNORE;IGNORE;IGNORE;<U2299>
+<U229A> IGNORE;IGNORE;IGNORE;<U229A>
+<U22A5> IGNORE;IGNORE;IGNORE;<U22A5>
+<U22C5> IGNORE;IGNORE;IGNORE;<U22C5>
+<U22EE> IGNORE;IGNORE;IGNORE;<U22EE>
+<U2302> IGNORE;IGNORE;IGNORE;<U2302>
+<U2308> IGNORE;IGNORE;IGNORE;<U2308>
+<U2309> IGNORE;IGNORE;IGNORE;<U2309>
+<U230A> IGNORE;IGNORE;IGNORE;<U230A>
+<U230B> IGNORE;IGNORE;IGNORE;<U230B>
+<U2310> IGNORE;IGNORE;IGNORE;<U2310>
+<U2312> IGNORE;IGNORE;IGNORE;<U2312>
+<U2315> IGNORE;IGNORE;IGNORE;<U2315>
+<U2318> IGNORE;IGNORE;IGNORE;<U2318>
+<U2320> IGNORE;IGNORE;IGNORE;<U2320>
+<U2321> IGNORE;IGNORE;IGNORE;<U2321>
+<U2423> IGNORE;IGNORE;IGNORE;<U2423>
+<U2440> IGNORE;IGNORE;IGNORE;<U2440>
+<U2441> IGNORE;IGNORE;IGNORE;<U2441>
+<U2442> IGNORE;IGNORE;IGNORE;<U2442>
+<U2443> IGNORE;IGNORE;IGNORE;<U2443>
+<U2446> IGNORE;IGNORE;IGNORE;<U2446>
+<U2447> IGNORE;IGNORE;IGNORE;<U2447>
+<U2448> IGNORE;IGNORE;IGNORE;<U2448>
+<U2449> IGNORE;IGNORE;IGNORE;<U2449>
+<U2460> IGNORE;IGNORE;IGNORE;<U2460>
+<U2461> IGNORE;IGNORE;IGNORE;<U2461>
+<U2462> IGNORE;IGNORE;IGNORE;<U2462>
+<U2463> IGNORE;IGNORE;IGNORE;<U2463>
+<U2464> IGNORE;IGNORE;IGNORE;<U2464>
+<U2465> IGNORE;IGNORE;IGNORE;<U2465>
+<U2466> IGNORE;IGNORE;IGNORE;<U2466>
+<U2467> IGNORE;IGNORE;IGNORE;<U2467>
+<U2468> IGNORE;IGNORE;IGNORE;<U2468>
+<U2469> IGNORE;IGNORE;IGNORE;<U2469>
+<U246A> IGNORE;IGNORE;IGNORE;<U246A>
+<U246B> IGNORE;IGNORE;IGNORE;<U246B>
+<U246C> IGNORE;IGNORE;IGNORE;<U246C>
+<U246D> IGNORE;IGNORE;IGNORE;<U246D>
+<U246E> IGNORE;IGNORE;IGNORE;<U246E>
+<U246F> IGNORE;IGNORE;IGNORE;<U246F>
+<U2470> IGNORE;IGNORE;IGNORE;<U2470>
+<U2471> IGNORE;IGNORE;IGNORE;<U2471>
+<U2472> IGNORE;IGNORE;IGNORE;<U2472>
+<U2473> IGNORE;IGNORE;IGNORE;<U2473>
+<U2474> IGNORE;IGNORE;IGNORE;<U2474>
+<U2475> IGNORE;IGNORE;IGNORE;<U2475>
+<U2476> IGNORE;IGNORE;IGNORE;<U2476>
+<U2477> IGNORE;IGNORE;IGNORE;<U2477>
+<U2478> IGNORE;IGNORE;IGNORE;<U2478>
+<U2479> IGNORE;IGNORE;IGNORE;<U2479>
+<U247A> IGNORE;IGNORE;IGNORE;<U247A>
+<U247B> IGNORE;IGNORE;IGNORE;<U247B>
+<U247C> IGNORE;IGNORE;IGNORE;<U247C>
+<U247D> IGNORE;IGNORE;IGNORE;<U247D>
+<U247E> IGNORE;IGNORE;IGNORE;<U247E>
+<U247F> IGNORE;IGNORE;IGNORE;<U247F>
+<U2480> IGNORE;IGNORE;IGNORE;<U2480>
+<U2481> IGNORE;IGNORE;IGNORE;<U2481>
+<U2482> IGNORE;IGNORE;IGNORE;<U2482>
+<U2483> IGNORE;IGNORE;IGNORE;<U2483>
+<U2484> IGNORE;IGNORE;IGNORE;<U2484>
+<U2485> IGNORE;IGNORE;IGNORE;<U2485>
+<U2486> IGNORE;IGNORE;IGNORE;<U2486>
+<U2487> IGNORE;IGNORE;IGNORE;<U2487>
+<U2488> IGNORE;IGNORE;IGNORE;<U2488>
+<U2489> IGNORE;IGNORE;IGNORE;<U2489>
+<U248A> IGNORE;IGNORE;IGNORE;<U248A>
+<U248B> IGNORE;IGNORE;IGNORE;<U248B>
+<U248C> IGNORE;IGNORE;IGNORE;<U248C>
+<U248D> IGNORE;IGNORE;IGNORE;<U248D>
+<U248E> IGNORE;IGNORE;IGNORE;<U248E>
+<U248F> IGNORE;IGNORE;IGNORE;<U248F>
+<U2490> IGNORE;IGNORE;IGNORE;<U2490>
+<U2491> IGNORE;IGNORE;IGNORE;<U2491>
+<U2492> IGNORE;IGNORE;IGNORE;<U2492>
+<U2493> IGNORE;IGNORE;IGNORE;<U2493>
+<U2494> IGNORE;IGNORE;IGNORE;<U2494>
+<U2495> IGNORE;IGNORE;IGNORE;<U2495>
+<U2496> IGNORE;IGNORE;IGNORE;<U2496>
+<U2497> IGNORE;IGNORE;IGNORE;<U2497>
+<U2498> IGNORE;IGNORE;IGNORE;<U2498>
+<U2499> IGNORE;IGNORE;IGNORE;<U2499>
+<U249A> IGNORE;IGNORE;IGNORE;<U249A>
+<U249B> IGNORE;IGNORE;IGNORE;<U249B>
+<U24EA> IGNORE;IGNORE;IGNORE;<U24EA>
+<U2500> IGNORE;IGNORE;IGNORE;<U2500>
+<U2501> IGNORE;IGNORE;IGNORE;<U2501>
+<U2502> IGNORE;IGNORE;IGNORE;<U2502>
+<U2503> IGNORE;IGNORE;IGNORE;<U2503>
+<U2504> IGNORE;IGNORE;IGNORE;<U2504>
+<U2505> IGNORE;IGNORE;IGNORE;<U2505>
+<U2506> IGNORE;IGNORE;IGNORE;<U2506>
+<U2507> IGNORE;IGNORE;IGNORE;<U2507>
+<U2508> IGNORE;IGNORE;IGNORE;<U2508>
+<U2509> IGNORE;IGNORE;IGNORE;<U2509>
+<U250A> IGNORE;IGNORE;IGNORE;<U250A>
+<U250B> IGNORE;IGNORE;IGNORE;<U250B>
+<U250C> IGNORE;IGNORE;IGNORE;<U250C>
+<U250D> IGNORE;IGNORE;IGNORE;<U250D>
+<U250E> IGNORE;IGNORE;IGNORE;<U250E>
+<U250F> IGNORE;IGNORE;IGNORE;<U250F>
+<U2510> IGNORE;IGNORE;IGNORE;<U2510>
+<U2511> IGNORE;IGNORE;IGNORE;<U2511>
+<U2512> IGNORE;IGNORE;IGNORE;<U2512>
+<U2513> IGNORE;IGNORE;IGNORE;<U2513>
+<U2514> IGNORE;IGNORE;IGNORE;<U2514>
+<U2515> IGNORE;IGNORE;IGNORE;<U2515>
+<U2516> IGNORE;IGNORE;IGNORE;<U2516>
+<U2517> IGNORE;IGNORE;IGNORE;<U2517>
+<U2518> IGNORE;IGNORE;IGNORE;<U2518>
+<U2519> IGNORE;IGNORE;IGNORE;<U2519>
+<U251A> IGNORE;IGNORE;IGNORE;<U251A>
+<U251B> IGNORE;IGNORE;IGNORE;<U251B>
+<U251C> IGNORE;IGNORE;IGNORE;<U251C>
+<U251D> IGNORE;IGNORE;IGNORE;<U251D>
+<U251E> IGNORE;IGNORE;IGNORE;<U251E>
+<U251F> IGNORE;IGNORE;IGNORE;<U251F>
+<U2520> IGNORE;IGNORE;IGNORE;<U2520>
+<U2521> IGNORE;IGNORE;IGNORE;<U2521>
+<U2522> IGNORE;IGNORE;IGNORE;<U2522>
+<U2523> IGNORE;IGNORE;IGNORE;<U2523>
+<U2524> IGNORE;IGNORE;IGNORE;<U2524>
+<U2525> IGNORE;IGNORE;IGNORE;<U2525>
+<U2526> IGNORE;IGNORE;IGNORE;<U2526>
+<U2527> IGNORE;IGNORE;IGNORE;<U2527>
+<U2528> IGNORE;IGNORE;IGNORE;<U2528>
+<U2529> IGNORE;IGNORE;IGNORE;<U2529>
+<U252A> IGNORE;IGNORE;IGNORE;<U252A>
+<U252B> IGNORE;IGNORE;IGNORE;<U252B>
+<U252C> IGNORE;IGNORE;IGNORE;<U252C>
+<U252D> IGNORE;IGNORE;IGNORE;<U252D>
+<U252E> IGNORE;IGNORE;IGNORE;<U252E>
+<U252F> IGNORE;IGNORE;IGNORE;<U252F>
+<U2530> IGNORE;IGNORE;IGNORE;<U2530>
+<U2531> IGNORE;IGNORE;IGNORE;<U2531>
+<U2532> IGNORE;IGNORE;IGNORE;<U2532>
+<U2533> IGNORE;IGNORE;IGNORE;<U2533>
+<U2534> IGNORE;IGNORE;IGNORE;<U2534>
+<U2535> IGNORE;IGNORE;IGNORE;<U2535>
+<U2536> IGNORE;IGNORE;IGNORE;<U2536>
+<U2537> IGNORE;IGNORE;IGNORE;<U2537>
+<U2538> IGNORE;IGNORE;IGNORE;<U2538>
+<U2539> IGNORE;IGNORE;IGNORE;<U2539>
+<U253A> IGNORE;IGNORE;IGNORE;<U253A>
+<U253B> IGNORE;IGNORE;IGNORE;<U253B>
+<U253C> IGNORE;IGNORE;IGNORE;<U253C>
+<U253D> IGNORE;IGNORE;IGNORE;<U253D>
+<U253E> IGNORE;IGNORE;IGNORE;<U253E>
+<U253F> IGNORE;IGNORE;IGNORE;<U253F>
+<U2540> IGNORE;IGNORE;IGNORE;<U2540>
+<U2541> IGNORE;IGNORE;IGNORE;<U2541>
+<U2542> IGNORE;IGNORE;IGNORE;<U2542>
+<U2543> IGNORE;IGNORE;IGNORE;<U2543>
+<U2544> IGNORE;IGNORE;IGNORE;<U2544>
+<U2545> IGNORE;IGNORE;IGNORE;<U2545>
+<U2546> IGNORE;IGNORE;IGNORE;<U2546>
+<U2547> IGNORE;IGNORE;IGNORE;<U2547>
+<U2548> IGNORE;IGNORE;IGNORE;<U2548>
+<U2549> IGNORE;IGNORE;IGNORE;<U2549>
+<U254A> IGNORE;IGNORE;IGNORE;<U254A>
+<U254B> IGNORE;IGNORE;IGNORE;<U254B>
+<U2550> IGNORE;IGNORE;IGNORE;<U2550>
+<U2551> IGNORE;IGNORE;IGNORE;<U2551>
+<U2552> IGNORE;IGNORE;IGNORE;<U2552>
+<U2553> IGNORE;IGNORE;IGNORE;<U2553>
+<U2554> IGNORE;IGNORE;IGNORE;<U2554>
+<U2555> IGNORE;IGNORE;IGNORE;<U2555>
+<U2556> IGNORE;IGNORE;IGNORE;<U2556>
+<U2557> IGNORE;IGNORE;IGNORE;<U2557>
+<U2558> IGNORE;IGNORE;IGNORE;<U2558>
+<U2559> IGNORE;IGNORE;IGNORE;<U2559>
+<U255A> IGNORE;IGNORE;IGNORE;<U255A>
+<U255B> IGNORE;IGNORE;IGNORE;<U255B>
+<U255C> IGNORE;IGNORE;IGNORE;<U255C>
+<U255D> IGNORE;IGNORE;IGNORE;<U255D>
+<U255E> IGNORE;IGNORE;IGNORE;<U255E>
+<U255F> IGNORE;IGNORE;IGNORE;<U255F>
+<U2560> IGNORE;IGNORE;IGNORE;<U2560>
+<U2561> IGNORE;IGNORE;IGNORE;<U2561>
+<U2562> IGNORE;IGNORE;IGNORE;<U2562>
+<U2563> IGNORE;IGNORE;IGNORE;<U2563>
+<U2564> IGNORE;IGNORE;IGNORE;<U2564>
+<U2565> IGNORE;IGNORE;IGNORE;<U2565>
+<U2566> IGNORE;IGNORE;IGNORE;<U2566>
+<U2567> IGNORE;IGNORE;IGNORE;<U2567>
+<U2568> IGNORE;IGNORE;IGNORE;<U2568>
+<U2569> IGNORE;IGNORE;IGNORE;<U2569>
+<U256A> IGNORE;IGNORE;IGNORE;<U256A>
+<U256B> IGNORE;IGNORE;IGNORE;<U256B>
+<U256C> IGNORE;IGNORE;IGNORE;<U256C>
+<U2571> IGNORE;IGNORE;IGNORE;<U2571>
+<U2572> IGNORE;IGNORE;IGNORE;<U2572>
+<U2580> IGNORE;IGNORE;IGNORE;<U2580>
+<U2584> IGNORE;IGNORE;IGNORE;<U2584>
+<U2588> IGNORE;IGNORE;IGNORE;<U2588>
+<U258C> IGNORE;IGNORE;IGNORE;<U258C>
+<U2590> IGNORE;IGNORE;IGNORE;<U2590>
+<U2591> IGNORE;IGNORE;IGNORE;<U2591>
+<U2592> IGNORE;IGNORE;IGNORE;<U2592>
+<U2593> IGNORE;IGNORE;IGNORE;<U2593>
+<U25A0> IGNORE;IGNORE;IGNORE;<U25A0>
+<U25A1> IGNORE;IGNORE;IGNORE;<U25A1>
+<U25A2> IGNORE;IGNORE;IGNORE;<U25A2>
+<U25A3> IGNORE;IGNORE;IGNORE;<U25A3>
+<U25A4> IGNORE;IGNORE;IGNORE;<U25A4>
+<U25A5> IGNORE;IGNORE;IGNORE;<U25A5>
+<U25A6> IGNORE;IGNORE;IGNORE;<U25A6>
+<U25A7> IGNORE;IGNORE;IGNORE;<U25A7>
+<U25A8> IGNORE;IGNORE;IGNORE;<U25A8>
+<U25A9> IGNORE;IGNORE;IGNORE;<U25A9>
+<U25AA> IGNORE;IGNORE;IGNORE;<U25AA>
+<U25AC> IGNORE;IGNORE;IGNORE;<U25AC>
+<U25AD> IGNORE;IGNORE;IGNORE;<U25AD>
+<U25B2> IGNORE;IGNORE;IGNORE;<U25B2>
+<U25B3> IGNORE;IGNORE;IGNORE;<U25B3>
+<U25B7> IGNORE;IGNORE;IGNORE;<U25B7>
+<U25BA> IGNORE;IGNORE;IGNORE;<U25BA>
+<U25BC> IGNORE;IGNORE;IGNORE;<U25BC>
+<U25BD> IGNORE;IGNORE;IGNORE;<U25BD>
+<U25C1> IGNORE;IGNORE;IGNORE;<U25C1>
+<U25C4> IGNORE;IGNORE;IGNORE;<U25C4>
+<U25C6> IGNORE;IGNORE;IGNORE;<U25C6>
+<U25C7> IGNORE;IGNORE;IGNORE;<U25C7>
+<U25CA> IGNORE;IGNORE;IGNORE;<U25CA>
+<U25CB> IGNORE;IGNORE;IGNORE;<U25CB>
+<U25CE> IGNORE;IGNORE;IGNORE;<U25CE>
+<U25CF> IGNORE;IGNORE;IGNORE;<U25CF>
+<U25D0> IGNORE;IGNORE;IGNORE;<U25D0>
+<U25D1> IGNORE;IGNORE;IGNORE;<U25D1>
+<U25D8> IGNORE;IGNORE;IGNORE;<U25D8>
+<U25D9> IGNORE;IGNORE;IGNORE;<U25D9>
+<U25E2> IGNORE;IGNORE;IGNORE;<U25E2>
+<U25E3> IGNORE;IGNORE;IGNORE;<U25E3>
+<U25EF> IGNORE;IGNORE;IGNORE;<U25EF>
+<U2605> IGNORE;IGNORE;IGNORE;<U2605>
+<U2606> IGNORE;IGNORE;IGNORE;<U2606>
+<U260E> IGNORE;IGNORE;IGNORE;<U260E>
+<U260F> IGNORE;IGNORE;IGNORE;<U260F>
+<U261C> IGNORE;IGNORE;IGNORE;<U261C>
+<U261E> IGNORE;IGNORE;IGNORE;<U261E>
+<U263A> IGNORE;IGNORE;IGNORE;<U263A>
+<U263B> IGNORE;IGNORE;IGNORE;<U263B>
+<U263C> IGNORE;IGNORE;IGNORE;<U263C>
+<U2640> IGNORE;IGNORE;IGNORE;<U2640>
+<U2642> IGNORE;IGNORE;IGNORE;<U2642>
+<U2660> IGNORE;IGNORE;IGNORE;<U2660>
+<U2661> IGNORE;IGNORE;IGNORE;<U2661>
+<U2662> IGNORE;IGNORE;IGNORE;<U2662>
+<U2663> IGNORE;IGNORE;IGNORE;<U2663>
+<U2664> IGNORE;IGNORE;IGNORE;<U2664>
+<U2665> IGNORE;IGNORE;IGNORE;<U2665>
+<U2666> IGNORE;IGNORE;IGNORE;<U2666>
+<U2667> IGNORE;IGNORE;IGNORE;<U2667>
+<U2669> IGNORE;IGNORE;IGNORE;<U2669>
+<U266A> IGNORE;IGNORE;IGNORE;<U266A>
+<U266B> IGNORE;IGNORE;IGNORE;<U266B>
+<U266C> IGNORE;IGNORE;IGNORE;<U266C>
+<U266D> IGNORE;IGNORE;IGNORE;<U266D>
+<U266E> IGNORE;IGNORE;IGNORE;<U266E>
+<U266F> IGNORE;IGNORE;IGNORE;<U266F>
+<U2713> IGNORE;IGNORE;IGNORE;<U2713>
+<U2717> IGNORE;IGNORE;IGNORE;<U2717>
+<U2720> IGNORE;IGNORE;IGNORE;<U2720>
+<U3000> IGNORE;IGNORE;IGNORE;<U3000>
+<U3001> IGNORE;IGNORE;IGNORE;<U3001>
+<U3002> IGNORE;IGNORE;IGNORE;<U3002>
+<U3003> IGNORE;IGNORE;IGNORE;<U3003>
+<U3004> IGNORE;IGNORE;IGNORE;<U3004>
+<U3005> IGNORE;IGNORE;IGNORE;<U3005>
+<U3006> IGNORE;IGNORE;IGNORE;<U3006>
+<U3007> IGNORE;IGNORE;IGNORE;<U3007>
+<U300A> IGNORE;IGNORE;IGNORE;<U300A>
+<U300B> IGNORE;IGNORE;IGNORE;<U300B>
+<U300C> IGNORE;IGNORE;IGNORE;<U300C>
+<U300D> IGNORE;IGNORE;IGNORE;<U300D>
+<U300E> IGNORE;IGNORE;IGNORE;<U300E>
+<U300F> IGNORE;IGNORE;IGNORE;<U300F>
+<U3010> IGNORE;IGNORE;IGNORE;<U3010>
+<U3011> IGNORE;IGNORE;IGNORE;<U3011>
+<U3012> IGNORE;IGNORE;IGNORE;<U3012>
+<U3013> IGNORE;IGNORE;IGNORE;<U3013>
+<U3014> IGNORE;IGNORE;IGNORE;<U3014>
+<U3015> IGNORE;IGNORE;IGNORE;<U3015>
+<U3016> IGNORE;IGNORE;IGNORE;<U3016>
+<U3017> IGNORE;IGNORE;IGNORE;<U3017>
+<U301C> IGNORE;IGNORE;IGNORE;<U301C>
+<U3020> IGNORE;IGNORE;IGNORE;<U3020>
+<U309B> IGNORE;IGNORE;IGNORE;<U309B>
+<U309C> IGNORE;IGNORE;IGNORE;<U309C>
+<U309D> IGNORE;IGNORE;IGNORE;<U309D>
+<U309E> IGNORE;IGNORE;IGNORE;<U309E>
+<U30FB> IGNORE;IGNORE;IGNORE;<U30FB>
+<U30FC> IGNORE;IGNORE;IGNORE;<U30FC>
+<U30FD> IGNORE;IGNORE;IGNORE;<U30FD>
+<U30FE> IGNORE;IGNORE;IGNORE;<U30FE>
+<U321C> IGNORE;IGNORE;IGNORE;<U321C>
+<U3220> IGNORE;IGNORE;IGNORE;<U3220>
+<U3221> IGNORE;IGNORE;IGNORE;<U3221>
+<U3222> IGNORE;IGNORE;IGNORE;<U3222>
+<U3223> IGNORE;IGNORE;IGNORE;<U3223>
+<U3224> IGNORE;IGNORE;IGNORE;<U3224>
+<U3225> IGNORE;IGNORE;IGNORE;<U3225>
+<U3226> IGNORE;IGNORE;IGNORE;<U3226>
+<U3227> IGNORE;IGNORE;IGNORE;<U3227>
+<U3228> IGNORE;IGNORE;IGNORE;<U3228>
+<U3229> IGNORE;IGNORE;IGNORE;<U3229>
+<U327F> IGNORE;IGNORE;IGNORE;<U327F>
+<U33C2> IGNORE;IGNORE;IGNORE;<U33C2>
+<U33D8> IGNORE;IGNORE;IGNORE;<U33D8>
+<U0000> IGNORE;IGNORE;IGNORE;<U0000>
+<U0001> IGNORE;IGNORE;IGNORE;<U0001>
+<U0002> IGNORE;IGNORE;IGNORE;<U0002>
+<U0003> IGNORE;IGNORE;IGNORE;<U0003>
+<U0004> IGNORE;IGNORE;IGNORE;<U0004>
+<U0005> IGNORE;IGNORE;IGNORE;<U0005>
+<U0006> IGNORE;IGNORE;IGNORE;<U0006>
+<U0007> IGNORE;IGNORE;IGNORE;<U0007>
+<U0008> IGNORE;IGNORE;IGNORE;<U0008>
+<U000E> IGNORE;IGNORE;IGNORE;<U000E>
+<U000F> IGNORE;IGNORE;IGNORE;<U000F>
+<U0010> IGNORE;IGNORE;IGNORE;<U0010>
+<U0011> IGNORE;IGNORE;IGNORE;<U0011>
+<U0012> IGNORE;IGNORE;IGNORE;<U0012>
+<U0013> IGNORE;IGNORE;IGNORE;<U0013>
+<U0014> IGNORE;IGNORE;IGNORE;<U0014>
+<U0015> IGNORE;IGNORE;IGNORE;<U0015>
+<U0016> IGNORE;IGNORE;IGNORE;<U0016>
+<U0017> IGNORE;IGNORE;IGNORE;<U0017>
+<U0018> IGNORE;IGNORE;IGNORE;<U0018>
+<U0019> IGNORE;IGNORE;IGNORE;<U0019>
+<U001A> IGNORE;IGNORE;IGNORE;<U001A>
+<U001B> IGNORE;IGNORE;IGNORE;<U001B>
+<U001C> IGNORE;IGNORE;IGNORE;<U001C>
+<U001D> IGNORE;IGNORE;IGNORE;<U001D>
+<U001E> IGNORE;IGNORE;IGNORE;<U001E>
+<U001F> IGNORE;IGNORE;IGNORE;<U001F>
+<U007F> IGNORE;IGNORE;IGNORE;<U007F>
+<U0080> IGNORE;IGNORE;IGNORE;<U0080>
+<U0081> IGNORE;IGNORE;IGNORE;<U0081>
+<U0082> IGNORE;IGNORE;IGNORE;<U0082>
+<U0083> IGNORE;IGNORE;IGNORE;<U0083>
+<U0084> IGNORE;IGNORE;IGNORE;<U0084>
+<U0085> IGNORE;IGNORE;IGNORE;<U0085>
+<U0086> IGNORE;IGNORE;IGNORE;<U0086>
+<U0087> IGNORE;IGNORE;IGNORE;<U0087>
+<U0088> IGNORE;IGNORE;IGNORE;<U0088>
+<U0089> IGNORE;IGNORE;IGNORE;<U0089>
+<U008A> IGNORE;IGNORE;IGNORE;<U008A>
+<U008B> IGNORE;IGNORE;IGNORE;<U008B>
+<U008C> IGNORE;IGNORE;IGNORE;<U008C>
+<U008D> IGNORE;IGNORE;IGNORE;<U008D>
+<U008E> IGNORE;IGNORE;IGNORE;<U008E>
+<U008F> IGNORE;IGNORE;IGNORE;<U008F>
+<U0090> IGNORE;IGNORE;IGNORE;<U0090>
+<U0091> IGNORE;IGNORE;IGNORE;<U0091>
+<U0092> IGNORE;IGNORE;IGNORE;<U0092>
+<U0093> IGNORE;IGNORE;IGNORE;<U0093>
+<U0094> IGNORE;IGNORE;IGNORE;<U0094>
+<U0095> IGNORE;IGNORE;IGNORE;<U0095>
+<U0096> IGNORE;IGNORE;IGNORE;<U0096>
+<U0097> IGNORE;IGNORE;IGNORE;<U0097>
+<U0098> IGNORE;IGNORE;IGNORE;<U0098>
+<U0099> IGNORE;IGNORE;IGNORE;<U0099>
+<U009A> IGNORE;IGNORE;IGNORE;<U009A>
+<U009B> IGNORE;IGNORE;IGNORE;<U009B>
+<U009C> IGNORE;IGNORE;IGNORE;<U009C>
+<U009D> IGNORE;IGNORE;IGNORE;<U009D>
+<U009E> IGNORE;IGNORE;IGNORE;<U009E>
+<U009F> IGNORE;IGNORE;IGNORE;<U009F>
+<UE000> IGNORE;IGNORE;IGNORE;<UE000>
+<UE001> IGNORE;IGNORE;IGNORE;<UE001>
+<UE002> IGNORE;IGNORE;IGNORE;<UE002>
+<U0301> IGNORE;IGNORE;IGNORE;<U0301>
+<UE004> IGNORE;IGNORE;IGNORE;<UE004>
+<UE005> IGNORE;IGNORE;IGNORE;<UE005>
+<UE006> IGNORE;IGNORE;IGNORE;<UE006>
+<UE007> IGNORE;IGNORE;IGNORE;<UE007>
+<UE008> IGNORE;IGNORE;IGNORE;<UE008>
+<UE009> IGNORE;IGNORE;IGNORE;<UE009>
+<UE00A> IGNORE;IGNORE;IGNORE;<UE00A>
+<UE00B> IGNORE;IGNORE;IGNORE;<UE00B>
+<UE00C> IGNORE;IGNORE;IGNORE;<UE00C>
+<UE00D> IGNORE;IGNORE;IGNORE;<UE00D>
+<UE00E> IGNORE;IGNORE;IGNORE;<UE00E>
+<UE00F> IGNORE;IGNORE;IGNORE;<UE00F>
+<"=> IGNORE;IGNORE;IGNORE;<"=>
+<UE011> IGNORE;IGNORE;IGNORE;<UE011>
+<UE012> IGNORE;IGNORE;IGNORE;<UE012>
+<UE013> IGNORE;IGNORE;IGNORE;<UE013>
+<UE014> IGNORE;IGNORE;IGNORE;<UE014>
+<UE015> IGNORE;IGNORE;IGNORE;<UE015>
+<UE017> IGNORE;IGNORE;IGNORE;<UE017>
+<UE018> IGNORE;IGNORE;IGNORE;<UE018>
+<UE019> IGNORE;IGNORE;IGNORE;<UE019>
+<Mc> IGNORE;IGNORE;IGNORE;<Mc>
+<Fl> IGNORE;IGNORE;IGNORE;<Fl>
+UNDEFINED IGNORE;IGNORE;IGNORE
+
+<U0030> <U0030>;<U0030>;IGNORE;IGNORE
+<U2070> <U0030>;<U2070>;IGNORE;IGNORE
+<U215B> <U0030>;<U215B>;IGNORE;IGNORE
+<U00BC> <U0030>;<U00BC>;IGNORE;IGNORE
+<U215C> <U0030>;<U215C>;IGNORE;IGNORE
+<U00BD> <U0030>;<U00BD>;IGNORE;IGNORE
+<U215D> <U0030>;<U215D>;IGNORE;IGNORE
+<U00BE> <U0030>;<U00BE>;IGNORE;IGNORE
+<U215E> <U0030>;<U215E>;IGNORE;IGNORE
+<U0031> <U0031>;<U0031>;IGNORE;IGNORE
+<U0032> <U0032>;<U0032>;IGNORE;IGNORE
+<U0033> <U0033>;<U0033>;IGNORE;IGNORE
+<U0034> <U0034>;<U0034>;IGNORE;IGNORE
+<U0035> <U0035>;<U0035>;IGNORE;IGNORE
+<U0036> <U0036>;<U0036>;IGNORE;IGNORE
+<U0037> <U0037>;<U0037>;IGNORE;IGNORE
+<U0038> <U0038>;<U0038>;IGNORE;IGNORE
+<U0039> <U0039>;<U0039>;IGNORE;IGNORE
+<U00B9> <U0031>;<U00B9>;IGNORE;IGNORE
+<U00B2> <U0032>;<U00B2>;IGNORE;IGNORE
+<U00B3> <U0033>;<U00B3>;IGNORE;IGNORE
+<U2074> <U0034>;<U2074>;IGNORE;IGNORE
+<U2075> <U0035>;<U2075>;IGNORE;IGNORE
+<U2076> <U0036>;<U2076>;IGNORE;IGNORE
+<U2077> <U0037>;<U2077>;IGNORE;IGNORE
+<U2078> <U0038>;<U2078>;IGNORE;IGNORE
+<U2079> <U0039>;<U2079>;IGNORE;IGNORE
+<U0041> <U0041>;<NONE>;<CAPITAL>;IGNORE
+<U0061> <U0041>;<NONE>;<SMALL>;IGNORE
+<U00AA> <U0041>;<NONE>;<U00AA>;IGNORE
+<U00C0> <U0041>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E0> <U0041>;<GRAVE>;<SMALL>;IGNORE
+<U0200> <U0041>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0201> <U0041>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0102> <U0041>;<BREVE>;<CAPITAL>;IGNORE
+<U0103> <U0041>;<BREVE>;<SMALL>;IGNORE
+<U1EAE> <U0041>;<BREVE+ACUTE>;<CAPITAL>;IGNORE
+<U1EAF> <U0041>;<BREVE+ACUTE>;<SMALL>;IGNORE
+<U1EB0> <U0041>;<BREVE+GRAVE>;<CAPITAL>;IGNORE
+<U1EB1> <U0041>;<BREVE+GRAVE>;<SMALL>;IGNORE
+<U1EB2> <U0041>;<BREVE+HOOK>;<CAPITAL>;IGNORE
+<U1EB3> <U0041>;<BREVE+HOOK>;<SMALL>;IGNORE
+<U1EB4> <U0041>;<BREVE+TILDE>;<CAPITAL>;IGNORE
+<U1EB5> <U0041>;<BREVE+TILDE>;<SMALL>;IGNORE
+<U1EB6> <U0041>;<BREVE+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB7> <U0041>;<BREVE+DOT-BELOW>;<SMALL>;IGNORE
+<U0202> <U0041>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0203> <U0041>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00C2> <U0041>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00E2> <U0041>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EA4> <U0041>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EA5> <U0041>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EA6> <U0041>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EA7> <U0041>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EA8> <U0041>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EA9> <U0041>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EAA> <U0041>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EAB> <U0041>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EAC> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EAD> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01CD> <U0041>;<CARON>;<CAPITAL>;IGNORE
+<U01CE> <U0041>;<CARON>;<SMALL>;IGNORE
+<U00C5> <U0041>;<RING>;<CAPITAL>;IGNORE
+<U00E5> <U0041>;<RING>;<SMALL>;IGNORE
+<U01FA> <U0041>;<RING+ACUTE>;<CAPITAL>;IGNORE
+<U01FB> <U0041>;<RING+ACUTE>;<SMALL>;IGNORE
+<U1E00> <U0041>;<RING-BELOW>;<CAPITAL>;IGNORE
+<U1E01> <U0041>;<RING-BELOW>;<SMALL>;IGNORE
+<U00C4> <U0041>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00E4> <U0041>;<DIAERESIS>;<SMALL>;IGNORE
+<U01DE> <U0041>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01DF> <U0041>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U1EA2> <U0041>;<HOOK>;<CAPITAL>;IGNORE
+<U1EA3> <U0041>;<HOOK>;<SMALL>;IGNORE
+<U00C3> <U0041>;<TILDE>;<CAPITAL>;IGNORE
+<U00E3> <U0041>;<TILDE>;<SMALL>;IGNORE
+<U1EA0> <U0041>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EA1> <U0041>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0104> <U0041>;<OGONEK>;<CAPITAL>;IGNORE
+<U0105> <U0041>;<OGONEK>;<SMALL>;IGNORE
+<U0100> <U0041>;<MACRON>;<CAPITAL>;IGNORE
+<U0101> <U0041>;<MACRON>;<SMALL>;IGNORE
+<U01E0> <U0041>;<MACRON+DOT>;<CAPITAL>;IGNORE
+<U01E1> <U0041>;<MACRON+DOT>;<SMALL>;IGNORE
+<a8>
+<U00E1> <U00E1>;<NONE>;<SMALL>;IGNORE
+<U00C1> <U00E1>;<NONE>;<CAPITAL>;IGNORE
+<U01FC> "<U0041><U0045>";"<U01FC><U01FC>";"<CAPITAL><CAPITAL>";IGNORE
+<U01FD> "<U0041><U0045>";"<U01FC><U01FC>";"<SMALL><SMALL>";IGNORE
+<U01E2> "<U0041><U0045>";"<U01E2><U01E2>";"<CAPITAL><CAPITAL>";IGNORE
+<U01E3> "<U0041><U0045>";"<U01E2><U01E2>";"<SMALL><SMALL>";IGNORE
+<U0042> <U0042>;<NONE>;<CAPITAL>;IGNORE
+<U0062> <U0042>;<NONE>;<SMALL>;IGNORE
+<U1E02> <U0042>;<DOT>;<CAPITAL>;IGNORE
+<U1E03> <U0042>;<DOT>;<SMALL>;IGNORE
+<U1E04> <U0042>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E05> <U0042>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E06> <U0042>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E07> <U0042>;<LINE-BELOW>;<SMALL>;IGNORE
+<b8>
+<U0043> <U0043>;<NONE>;<CAPITAL>;IGNORE
+<U0063> <U0043>;<NONE>;<SMALL>;IGNORE
+<U0106> <U0043>;<ACUTE>;<CAPITAL>;IGNORE
+<U0107> <U0043>;<ACUTE>;<SMALL>;IGNORE
+<U0108> <U0043>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0109> <U0043>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U010C> <U0043>;<CARON>;<CAPITAL>;IGNORE
+<U010D> <U0043>;<CARON>;<SMALL>;IGNORE
+<U0187> <U0043>;<HOOK>;<CAPITAL>;IGNORE
+<U0188> <U0043>;<HOOK>;<SMALL>;IGNORE
+<U010A> <U0043>;<DOT>;<CAPITAL>;IGNORE
+<U010B> <U0043>;<DOT>;<SMALL>;IGNORE
+<U00C7> <U0043>;<CEDILLA>;<CAPITAL>;IGNORE
+<U00E7> <U0043>;<CEDILLA>;<SMALL>;IGNORE
+<U1E08> <U0043>;<CEDILLA+ACUTE>;<CAPITAL>;IGNORE
+<U1E09> <U0043>;<CEDILLA+ACUTE>;<SMALL>;IGNORE
+<c8>
+<U0044> <U0044>;<NONE>;<CAPITAL>;IGNORE
+<U0064> <U0044>;<NONE>;<SMALL>;IGNORE
+<U010E> <U0044>;<CARON>;<CAPITAL>;IGNORE
+<U010F> <U0044>;<CARON>;<SMALL>;IGNORE
+<U1E0A> <U0044>;<DOT>;<CAPITAL>;IGNORE
+<U1E0B> <U0044>;<DOT>;<SMALL>;IGNORE
+<U1E0C> <U0044>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E0D> <U0044>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0110> <U0044>;<STROKE>;<CAPITAL>;IGNORE
+<U0111> <U0044>;<STROKE>;<SMALL>;IGNORE
+<U1E10> <U0044>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E11> <U0044>;<CEDILLA>;<SMALL>;IGNORE
+<U1E12> <U0044>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E13> <U0044>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E0E> <U0044>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E0F> <U0044>;<LINE-BELOW>;<SMALL>;IGNORE
+<d8>
+<U00F0> <U00F0>;<NONE>;<SMALL>;IGNORE
+<U00D0> <U00F0>;<NONE>;<CAPITAL>;IGNORE
+<U0045> <U0045>;<NONE>;<CAPITAL>;IGNORE
+<U0065> <U0045>;<NONE>;<SMALL>;IGNORE
+<U00C8> <U0045>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E8> <U0045>;<GRAVE>;<SMALL>;IGNORE
+<U0204> <U0045>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0205> <U0045>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0114> <U0045>;<BREVE>;<CAPITAL>;IGNORE
+<U0115> <U0045>;<BREVE>;<SMALL>;IGNORE
+<U0206> <U0045>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0207> <U0045>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CA> <U0045>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EA> <U0045>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EBE> <U0045>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EBF> <U0045>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EC0> <U0045>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EC1> <U0045>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EC2> <U0045>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EC3> <U0045>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EC4> <U0045>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EC5> <U0045>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EC6> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EC7> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U011A> <U0045>;<CARON>;<CAPITAL>;IGNORE
+<U011B> <U0045>;<CARON>;<SMALL>;IGNORE
+<U00CB> <U0045>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EB> <U0045>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EBA> <U0045>;<HOOK>;<CAPITAL>;IGNORE
+<U1EBB> <U0045>;<HOOK>;<SMALL>;IGNORE
+<U1EBC> <U0045>;<TILDE>;<CAPITAL>;IGNORE
+<U1EBD> <U0045>;<TILDE>;<SMALL>;IGNORE
+<U1E1A> <U0045>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E1B> <U0045>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0116> <U0045>;<DOT>;<CAPITAL>;IGNORE
+<U0117> <U0045>;<DOT>;<SMALL>;IGNORE
+<U1EB8> <U0045>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB9> <U0045>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E1C> <U0045>;<CEDILLA+BREVE>;<CAPITAL>;IGNORE
+<U1E1D> <U0045>;<CEDILLA+BREVE>;<SMALL>;IGNORE
+<U0118> <U0045>;<OGONEK>;<CAPITAL>;IGNORE
+<U0119> <U0045>;<OGONEK>;<SMALL>;IGNORE
+<U0112> <U0045>;<MACRON>;<CAPITAL>;IGNORE
+<U0113> <U0045>;<MACRON>;<SMALL>;IGNORE
+<U1E16> <U0045>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E17> <U0045>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E14> <U0045>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E15> <U0045>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U1E18> <U0045>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E19> <U0045>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<e8>
+<U00E9> <U00E9>;<NONE>;<SMALL>;IGNORE
+<U00C9> <U00E9>;<NONE>;<CAPITAL>;IGNORE
+<U0046> <U0046>;<NONE>;<CAPITAL>;IGNORE
+<U0066> <U0046>;<NONE>;<SMALL>;IGNORE
+<U0191> <U0046>;<HOOK>;<CAPITAL>;IGNORE
+<U0192> <U0046>;<HOOK>;<SMALL>;IGNORE
+<U1E1E> <U0046>;<DOT>;<CAPITAL>;IGNORE
+<U1E1F> <U0046>;<DOT>;<SMALL>;IGNORE
+<f8>
+<UFB00> "<U0046><U0046>";"<NONE><NONE>";"<UFB00><UFB00>";IGNORE
+<UFB01> "<U0046><U0049>";"<NONE><NONE>";"<UFB01><UFB01>";IGNORE
+<UFB02> "<U0046><U004C>";"<NONE><NONE>";"<UFB02><UFB02>";IGNORE
+<UFB03> "<U0046><U0046><U0049>";"<NONE><NONE><NONE>";"<UFB03><UFB03><UFB03>";IGNORE
+<UFB04> "<U0046><U0046><U004C>";"<NONE><NONE><NONE>";"<UFB04><UFB04><UFB04>";IGNORE
+<U0047> <U0047>;<NONE>;<CAPITAL>;IGNORE
+<U0067> <U0047>;<NONE>;<SMALL>;IGNORE
+<U01F4> <U0047>;<ACUTE>;<CAPITAL>;IGNORE
+<U01F5> <U0047>;<ACUTE>;<SMALL>;IGNORE
+<U011E> <U0047>;<BREVE>;<CAPITAL>;IGNORE
+<U011F> <U0047>;<BREVE>;<SMALL>;IGNORE
+<U01A2> <U0047>;<BREVE+ACUTE>;<CAPITAL>;IGNORE
+<U01A3> <U0047>;<BREVE+ACUTE>;<SMALL>;IGNORE
+<U011C> <U0047>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U011D> <U0047>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01E6> <U0047>;<CARON>;<CAPITAL>;IGNORE
+<U01E7> <U0047>;<CARON>;<SMALL>;IGNORE
+<U0120> <U0047>;<DOT>;<CAPITAL>;IGNORE
+<U0121> <U0047>;<DOT>;<SMALL>;IGNORE
+<U01E4> <U0047>;<STROKE>;<CAPITAL>;IGNORE
+<U01E5> <U0047>;<STROKE>;<SMALL>;IGNORE
+<U0122> <U0047>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0123> <U0047>;<CEDILLA>;<SMALL>;IGNORE
+<U1E20> <U0047>;<MACRON>;<CAPITAL>;IGNORE
+<U1E21> <U0047>;<MACRON>;<SMALL>;IGNORE
+<g8>
+<U0048> <U0048>;<NONE>;<CAPITAL>;IGNORE
+<U0068> <U0048>;<NONE>;<SMALL>;IGNORE
+<U1E2A> <U0048>;<BREVE-BELOW>;<CAPITAL>;IGNORE
+<U1E2B> <U0048>;<BREVE-BELOW>;<SMALL>;IGNORE
+<U0124> <U0048>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0125> <U0048>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E26> <U0048>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E27> <U0048>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E22> <U0048>;<DOT>;<CAPITAL>;IGNORE
+<U1E23> <U0048>;<DOT>;<SMALL>;IGNORE
+<U1E24> <U0048>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E25> <U0048>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0126> <U0048>;<STROKE>;<CAPITAL>;IGNORE
+<U0127> <U0048>;<STROKE>;<SMALL>;IGNORE
+<U1E28> <U0048>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E29> <U0048>;<CEDILLA>;<SMALL>;IGNORE
+<h8>
+<U0049> <U0049>;<NONE>;<CAPITAL>;IGNORE
+<U0069> <U0049>;<NONE>;<SMALL>;IGNORE
+<U00CC> <U0049>;<GRAVE>;<CAPITAL>;IGNORE
+<U00EC> <U0049>;<GRAVE>;<SMALL>;IGNORE
+<U0208> <U0049>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0209> <U0049>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U012C> <U0049>;<BREVE>;<CAPITAL>;IGNORE
+<U012D> <U0049>;<BREVE>;<SMALL>;IGNORE
+<U020A> <U0049>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020B> <U0049>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CE> <U0049>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EE> <U0049>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01CF> <U0049>;<CARON>;<CAPITAL>;IGNORE
+<U01D0> <U0049>;<CARON>;<SMALL>;IGNORE
+<U00CF> <U0049>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EF> <U0049>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E2E> <U0049>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U1E2F> <U0049>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U1EC8> <U0049>;<HOOK>;<CAPITAL>;IGNORE
+<U1EC9> <U0049>;<HOOK>;<SMALL>;IGNORE
+<U0128> <U0049>;<TILDE>;<CAPITAL>;IGNORE
+<U0129> <U0049>;<TILDE>;<SMALL>;IGNORE
+<U1E2C> <U0049>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E2D> <U0049>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0130> <U0049>;<DOT>;<CAPITAL>;IGNORE
+<U0131> <U0049>;<DOT>;<SMALL>;IGNORE
+<U1ECA> <U0049>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECB> <U0049>;<DOT-BELOW>;<SMALL>;IGNORE
+<U012E> <U0049>;<OGONEK>;<CAPITAL>;IGNORE
+<U012F> <U0049>;<OGONEK>;<SMALL>;IGNORE
+<U012A> <U0049>;<MACRON>;<CAPITAL>;IGNORE
+<U012B> <U0049>;<MACRON>;<SMALL>;IGNORE
+<i8>
+<U00ED> <U00ED>;<NONE>;<SMALL>;IGNORE
+<U00CD> <U00ED>;<NONE>;<CAPITAL>;IGNORE
+<U0132> "<U0049><U004A>";"<U0132><U0132>";"<CAPITAL><CAPITAL>";IGNORE
+<U0133> "<U0049><U004A>";"<U0132><U0132>";"<SMALL><SMALL>";IGNORE
+<U004A> <U004A>;<NONE>;<CAPITAL>;IGNORE
+<U006A> <U004A>;<NONE>;<SMALL>;IGNORE
+<U0134> <U004A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0135> <U004A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<j8>
+<U004B> <U004B>;<NONE>;<CAPITAL>;IGNORE
+<U006B> <U004B>;<NONE>;<SMALL>;IGNORE
+<U1E30> <U004B>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E31> <U004B>;<ACUTE>;<SMALL>;IGNORE
+<U01E8> <U004B>;<CARON>;<CAPITAL>;IGNORE
+<U01E9> <U004B>;<CARON>;<SMALL>;IGNORE
+<U0198> <U004B>;<HOOK>;<CAPITAL>;IGNORE
+<U0199> <U004B>;<HOOK>;<SMALL>;IGNORE
+<U1E32> <U004B>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E33> <U004B>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0136> <U004B>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0137> <U004B>;<CEDILLA>;<SMALL>;IGNORE
+<U1E34> <U004B>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E35> <U004B>;<LINE-BELOW>;<SMALL>;IGNORE
+<k8>
+<U0138> <U004B>;<U0138>;<SMALL>;IGNORE
+<U004C> <U004C>;<NONE>;<CAPITAL>;IGNORE
+<U006C> <U004C>;<NONE>;<SMALL>;IGNORE
+<U0139> <U004C>;<ACUTE>;<CAPITAL>;IGNORE
+<U013A> <U004C>;<ACUTE>;<SMALL>;IGNORE
+<U013D> <U004C>;<CARON>;<CAPITAL>;IGNORE
+<U013E> <U004C>;<CARON>;<SMALL>;IGNORE
+<U013F> <U004C>;<DOT>;<CAPITAL>;IGNORE
+<U0140> <U004C>;<DOT>;<SMALL>;IGNORE
+<U1E36> <U004C>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E37> <U004C>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0141> <U004C>;<STROKE>;<CAPITAL>;IGNORE
+<U0142> <U004C>;<STROKE>;<SMALL>;IGNORE
+<U013B> <U004C>;<CEDILLA>;<CAPITAL>;IGNORE
+<U013C> <U004C>;<CEDILLA>;<SMALL>;IGNORE
+<U1E38> <U004C>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E39> <U004C>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E3C> <U004C>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E3D> <U004C>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E3A> <U004C>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E3B> <U004C>;<LINE-BELOW>;<SMALL>;IGNORE
+<l8>
+<U004D> <U004D>;<NONE>;<CAPITAL>;IGNORE
+<U006D> <U004D>;<NONE>;<SMALL>;IGNORE
+<U1E3E> <U004D>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E3F> <U004D>;<ACUTE>;<SMALL>;IGNORE
+<U1E40> <U004D>;<DOT>;<CAPITAL>;IGNORE
+<U1E41> <U004D>;<DOT>;<SMALL>;IGNORE
+<U1E42> <U004D>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E43> <U004D>;<DOT-BELOW>;<SMALL>;IGNORE
+<m8>
+<U004E> <U004E>;<NONE>;<CAPITAL>;IGNORE
+<U006E> <U004E>;<NONE>;<SMALL>;IGNORE
+<U0143> <U004E>;<ACUTE>;<CAPITAL>;IGNORE
+<U0144> <U004E>;<ACUTE>;<SMALL>;IGNORE
+<U0147> <U004E>;<CARON>;<CAPITAL>;IGNORE
+<U0148> <U004E>;<CARON>;<SMALL>;IGNORE
+<U00D1> <U004E>;<TILDE>;<CAPITAL>;IGNORE
+<U00F1> <U004E>;<TILDE>;<SMALL>;IGNORE
+<U1E44> <U004E>;<DOT>;<CAPITAL>;IGNORE
+<U1E45> <U004E>;<DOT>;<SMALL>;IGNORE
+<U1E46> <U004E>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E47> <U004E>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0145> <U004E>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0146> <U004E>;<CEDILLA>;<SMALL>;IGNORE
+<U1E4A> <U004E>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E4B> <U004E>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E48> <U004E>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E49> <U004E>;<LINE-BELOW>;<SMALL>;IGNORE
+<U0149> <U004E>;<PRECEDED-BY-APOSTROPHE>;<SMALL>;IGNORE
+<n8>
+<U014A> <U004E>;<U014A>;<CAPITAL>;IGNORE
+<U014B> <U004E>;<U014A>;<SMALL>;IGNORE
+<U004F> <U004F>;<NONE>;<CAPITAL>;IGNORE
+<U006F> <U004F>;<NONE>;<SMALL>;IGNORE
+<U00BA> <U004F>;<NONE>;<U00BA>;IGNORE
+<U00D2> <U004F>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F2> <U004F>;<GRAVE>;<SMALL>;IGNORE
+<U020C> <U004F>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U020D> <U004F>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U014E> <U004F>;<BREVE>;<CAPITAL>;IGNORE
+<U014F> <U004F>;<BREVE>;<SMALL>;IGNORE
+<U020E> <U004F>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020F> <U004F>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00D4> <U004F>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00F4> <U004F>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1ED0> <U004F>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1ED1> <U004F>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1ED2> <U004F>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1ED3> <U004F>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1ED4> <U004F>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1ED5> <U004F>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1ED6> <U004F>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1ED7> <U004F>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1ED8> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ED9> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01D1> <U004F>;<CARON>;<CAPITAL>;IGNORE
+<U01D2> <U004F>;<CARON>;<SMALL>;IGNORE
+<U0150> <U004F>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0151> <U004F>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1ECE> <U004F>;<HOOK>;<CAPITAL>;IGNORE
+<U1ECF> <U004F>;<HOOK>;<SMALL>;IGNORE
+<U00D5> <U004F>;<TILDE>;<CAPITAL>;IGNORE
+<U00F5> <U004F>;<TILDE>;<SMALL>;IGNORE
+<U1E4C> <U004F>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E4D> <U004F>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E4E> <U004F>;<TILDE+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E4F> <U004F>;<TILDE+DIAERESIS>;<SMALL>;IGNORE
+<U1ECC> <U004F>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECD> <U004F>;<DOT-BELOW>;<SMALL>;IGNORE
+<U01FE> <U004F>;<STROKE+ACUTE>;<CAPITAL>;IGNORE
+<U01FF> <U004F>;<STROKE+ACUTE>;<SMALL>;IGNORE
+<U01EA> <U004F>;<OGONEK>;<CAPITAL>;IGNORE
+<U01EB> <U004F>;<OGONEK>;<SMALL>;IGNORE
+<U01EC> <U004F>;<OGONEK+MACRON>;<CAPITAL>;IGNORE
+<U01ED> <U004F>;<OGONEK+MACRON>;<SMALL>;IGNORE
+<U014C> <U004F>;<MACRON>;<CAPITAL>;IGNORE
+<U014D> <U004F>;<MACRON>;<SMALL>;IGNORE
+<U1E52> <U004F>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E53> <U004F>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E50> <U004F>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E51> <U004F>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U01A0> <U004F>;<HORN>;<CAPITAL>;IGNORE
+<U01A1> <U004F>;<HORN>;<SMALL>;IGNORE
+<U1EDA> <U004F>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EDB> <U004F>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EDC> <U004F>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EDD> <U004F>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EDE> <U004F>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EDF> <U004F>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EE0> <U004F>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EE1> <U004F>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EE2> <U004F>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE3> <U004F>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<o8>
+<U00F3> <U00F3>;<NONE>;<SMALL>;IGNORE
+<U00D3> <U00F3>;<NONE>;<CAPITAL>;IGNORE
+<U0050> <U0050>;<NONE>;<CAPITAL>;IGNORE
+<U0070> <U0050>;<NONE>;<SMALL>;IGNORE
+<U1E54> <U0050>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E55> <U0050>;<ACUTE>;<SMALL>;IGNORE
+<U1E56> <U0050>;<DOT>;<CAPITAL>;IGNORE
+<U1E57> <U0050>;<DOT>;<SMALL>;IGNORE
+<p8>
+<U0051> <U0051>;<NONE>;<CAPITAL>;IGNORE
+<U0071> <U0051>;<NONE>;<SMALL>;IGNORE
+<q8>
+<U0052> <U0052>;<NONE>;<CAPITAL>;IGNORE
+<U0072> <U0052>;<NONE>;<SMALL>;IGNORE
+<U0154> <U0052>;<ACUTE>;<CAPITAL>;IGNORE
+<U0155> <U0052>;<ACUTE>;<SMALL>;IGNORE
+<U0210> <U0052>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0211> <U0052>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0212> <U0052>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0213> <U0052>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U0158> <U0052>;<CARON>;<CAPITAL>;IGNORE
+<U0159> <U0052>;<CARON>;<SMALL>;IGNORE
+<U1E58> <U0052>;<DOT>;<CAPITAL>;IGNORE
+<U1E59> <U0052>;<DOT>;<SMALL>;IGNORE
+<U1E5A> <U0052>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5B> <U0052>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0156> <U0052>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0157> <U0052>;<CEDILLA>;<SMALL>;IGNORE
+<U1E5C> <U0052>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5D> <U0052>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E5E> <U0052>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E5F> <U0052>;<LINE-BELOW>;<SMALL>;IGNORE
+<r8>
+<U0053> <U0053>;<NONE>;<CAPITAL>;IGNORE
+<U0073> <U0053>;<NONE>;<SMALL>;IGNORE
+<UFB06> "<U0053><U0054>";"<NONE><NONE>";"<UFB06><UFB06>";IGNORE
+<U015A> <U0053>;<ACUTE>;<CAPITAL>;IGNORE
+<U015B> <U0053>;<ACUTE>;<SMALL>;IGNORE
+<U1E64> <U0053>;<ACUTE+DOT>;<CAPITAL>;IGNORE
+<U1E65> <U0053>;<ACUTE+DOT>;<SMALL>;IGNORE
+<U015C> <U0053>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U015D> <U0053>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0160> <U0053>;<CARON>;<CAPITAL>;IGNORE
+<U0161> <U0053>;<CARON>;<SMALL>;IGNORE
+<U1E66> <U0053>;<CARON+DOT>;<CAPITAL>;IGNORE
+<U1E67> <U0053>;<CARON+DOT>;<SMALL>;IGNORE
+<U1E60> <U0053>;<DOT>;<CAPITAL>;IGNORE
+<U1E61> <U0053>;<DOT>;<SMALL>;IGNORE
+<U1E62> <U0053>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E63> <U0053>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E68> <U0053>;<DOT+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E69> <U0053>;<DOT+DOT-BELOW>;<SMALL>;IGNORE
+<U015E> <U0053>;<CEDILLA>;<CAPITAL>;IGNORE
+<U015F> <U0053>;<CEDILLA>;<SMALL>;IGNORE
+<s8>
+<U017F> <U0053>;<U017F>;<SMALL>;IGNORE
+<U00DF> "<U0053><U0053>";"<NONE><NONE>";"<SMALL><U00DF>";IGNORE
+<UFB05> "<U0053><U0054>";"<NONE><NONE>";"<UFB05><UFB05>";IGNORE
+<U0054> <U0054>;<NONE>;<CAPITAL>;IGNORE
+<U0074> <U0054>;<NONE>;<SMALL>;IGNORE
+<U0164> <U0054>;<CARON>;<CAPITAL>;IGNORE
+<U0165> <U0054>;<CARON>;<SMALL>;IGNORE
+<U1E6A> <U0054>;<DOT>;<CAPITAL>;IGNORE
+<U1E6B> <U0054>;<DOT>;<SMALL>;IGNORE
+<U1E6C> <U0054>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E6D> <U0054>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0166> <U0054>;<STROKE>;<CAPITAL>;IGNORE
+<U0167> <U0054>;<STROKE>;<SMALL>;IGNORE
+<U0162> <U0054>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0163> <U0054>;<CEDILLA>;<SMALL>;IGNORE
+<U1E70> <U0054>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E71> <U0054>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E6E> <U0054>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E6F> <U0054>;<LINE-BELOW>;<SMALL>;IGNORE
+<t8>
+<U0055> <U0055>;<NONE>;<CAPITAL>;IGNORE
+<U0075> <U0055>;<NONE>;<SMALL>;IGNORE
+<U00D9> <U0055>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F9> <U0055>;<GRAVE>;<SMALL>;IGNORE
+<U0214> <U0055>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0215> <U0055>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U016C> <U0055>;<BREVE>;<CAPITAL>;IGNORE
+<U016D> <U0055>;<BREVE>;<SMALL>;IGNORE
+<U0216> <U0055>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0217> <U0055>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00DB> <U0055>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00FB> <U0055>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01D3> <U0055>;<CARON>;<CAPITAL>;IGNORE
+<U01D4> <U0055>;<CARON>;<SMALL>;IGNORE
+<U016E> <U0055>;<RING>;<CAPITAL>;IGNORE
+<U016F> <U0055>;<RING>;<SMALL>;IGNORE
+<U00DC> <U0055>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FC> <U0055>;<DIAERESIS>;<SMALL>;IGNORE
+<U01D5> <U0055>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01D6> <U0055>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U01D7> <U0055>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U01D8> <U0055>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U01DB> <U0055>;<DIAERESIS+GRAVE>;<CAPITAL>;IGNORE
+<U01DC> <U0055>;<DIAERESIS+GRAVE>;<SMALL>;IGNORE
+<U01D9> <U0055>;<DIAERESIS+CARON>;<CAPITAL>;IGNORE
+<U01DA> <U0055>;<DIAERESIS+CARON>;<SMALL>;IGNORE
+<U0170> <U0055>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0171> <U0055>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1EE6> <U0055>;<HOOK>;<CAPITAL>;IGNORE
+<U1EE7> <U0055>;<HOOK>;<SMALL>;IGNORE
+<U0168> <U0055>;<TILDE>;<CAPITAL>;IGNORE
+<U0169> <U0055>;<TILDE>;<SMALL>;IGNORE
+<U1E78> <U0055>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E79> <U0055>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E74> <U0055>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E75> <U0055>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U1EE4> <U0055>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE5> <U0055>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0172> <U0055>;<OGONEK>;<CAPITAL>;IGNORE
+<U0173> <U0055>;<OGONEK>;<SMALL>;IGNORE
+<U016A> <U0055>;<MACRON>;<CAPITAL>;IGNORE
+<U016B> <U0055>;<MACRON>;<SMALL>;IGNORE
+<U1E7A> <U0055>;<MACRON+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E7B> <U0055>;<MACRON+DIAERESIS>;<SMALL>;IGNORE
+<U1E72> <U0055>;<MACRON+DIAERESIS-BELOW>;<CAPITAL>;IGNORE
+<U1E73> <U0055>;<MACRON+DIAERESIS-BELOW>;<SMALL>;IGNORE
+<U1E76> <U0055>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E77> <U0055>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U01AF> <U0055>;<HORN>;<CAPITAL>;IGNORE
+<U01B0> <U0055>;<HORN>;<SMALL>;IGNORE
+<U1EE8> <U0055>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EE9> <U0055>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EEA> <U0055>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EEB> <U0055>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EEC> <U0055>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EED> <U0055>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EEE> <U0055>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EEF> <U0055>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EF0> <U0055>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF1> <U0055>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<u8>
+<U00FA> <U00FA>;<NONE>;<SMALL>;IGNORE
+<U00DA> <U00FA>;<NONE>;<CAPITAL>;IGNORE
+<U0056> <U0056>;<NONE>;<CAPITAL>;IGNORE
+<U0076> <U0056>;<NONE>;<SMALL>;IGNORE
+<U1E7C> <U0056>;<TILDE>;<CAPITAL>;IGNORE
+<U1E7D> <U0056>;<TILDE>;<SMALL>;IGNORE
+<U1E7E> <U0056>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E7F> <U0056>;<DOT-BELOW>;<SMALL>;IGNORE
+<v8>
+<U0057> <U0057>;<NONE>;<CAPITAL>;IGNORE
+<U0077> <U0057>;<NONE>;<SMALL>;IGNORE
+<U1E82> <U0057>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E83> <U0057>;<ACUTE>;<SMALL>;IGNORE
+<U1E80> <U0057>;<GRAVE>;<CAPITAL>;IGNORE
+<U1E81> <U0057>;<GRAVE>;<SMALL>;IGNORE
+<U0174> <U0057>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0175> <U0057>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E84> <U0057>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E85> <U0057>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E86> <U0057>;<DOT>;<CAPITAL>;IGNORE
+<U1E87> <U0057>;<DOT>;<SMALL>;IGNORE
+<U1E88> <U0057>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E89> <U0057>;<DOT-BELOW>;<SMALL>;IGNORE
+<w8>
+<U0058> <U0058>;<NONE>;<CAPITAL>;IGNORE
+<U0078> <U0058>;<NONE>;<SMALL>;IGNORE
+<U1E8C> <U0058>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E8D> <U0058>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E8A> <U0058>;<DOT>;<CAPITAL>;IGNORE
+<U1E8B> <U0058>;<DOT>;<SMALL>;IGNORE
+<x8>
+<U0059> <U0059>;<NONE>;<CAPITAL>;IGNORE
+<U0079> <U0059>;<NONE>;<SMALL>;IGNORE
+<U1EF2> <U0059>;<GRAVE>;<CAPITAL>;IGNORE
+<U1EF3> <U0059>;<GRAVE>;<SMALL>;IGNORE
+<U0176> <U0059>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0177> <U0059>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0178> <U0059>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FF> <U0059>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EF6> <U0059>;<HOOK>;<CAPITAL>;IGNORE
+<U1EF7> <U0059>;<HOOK>;<SMALL>;IGNORE
+<U1EF8> <U0059>;<TILDE>;<CAPITAL>;IGNORE
+<U1EF9> <U0059>;<TILDE>;<SMALL>;IGNORE
+<U1E8E> <U0059>;<DOT>;<CAPITAL>;IGNORE
+<U1E8F> <U0059>;<DOT>;<SMALL>;IGNORE
+<U1EF4> <U0059>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF5> <U0059>;<DOT-BELOW>;<SMALL>;IGNORE
+<y8>
+<U00FD> <U00FD>;<NONE>;<SMALL>;IGNORE
+<U00DD> <U00FD>;<NONE>;<CAPITAL>;IGNORE
+<U005A> <U005A>;<NONE>;<CAPITAL>;IGNORE
+<U007A> <U005A>;<NONE>;<SMALL>;IGNORE
+<U0179> <U005A>;<ACUTE>;<CAPITAL>;IGNORE
+<U017A> <U005A>;<ACUTE>;<SMALL>;IGNORE
+<U1E90> <U005A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E91> <U005A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U017D> <U005A>;<CARON>;<CAPITAL>;IGNORE
+<U017E> <U005A>;<CARON>;<SMALL>;IGNORE
+<U017B> <U005A>;<DOT>;<CAPITAL>;IGNORE
+<U017C> <U005A>;<DOT>;<SMALL>;IGNORE
+<U1E92> <U005A>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E93> <U005A>;<DOT-BELOW>;<SMALL>;IGNORE
+<U01B5> <U005A>;<STROKE>;<CAPITAL>;IGNORE
+<U01B6> <U005A>;<STROKE>;<SMALL>;IGNORE
+<U1E94> <U005A>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E95> <U005A>;<LINE-BELOW>;<SMALL>;IGNORE
+<z8>
+<U00FE> <U00FE>;<NONE>;<SMALL>;IGNORE
+<U00DE> <U00FE>;<NONE>;<CAPITAL>;IGNORE
+<U00E6> <U00E6>;<NONE>;<SMALL>;IGNORE
+<U00C6> <U00E6>;<NONE>;<CAPITAL>;IGNORE
+<U0153> <U00E6>;<SPECIAL>;<SMALL>;IGNORE
+<U0152> <U00E6>;<SPECIAL>;<CAPITAL>;IGNORE
+<U00F6> <U00F6>;<NONE>;<SMALL>;IGNORE
+<U00D6> <U00F6>;<NONE>;<CAPITAL>;IGNORE
+<U00F8> <U00F6>;<SPECIAL>;<SMALL>;IGNORE
+<U00D8> <U00F6>;<SPECIAL>;<CAPITAL>;IGNORE
+<U0391> <U0391>;<CAPITAL>;<GREEK>;IGNORE
+<U0386> <U0391>;<CAPITAL>;<TONOS>;IGNORE
+<U03B1> <U0391>;<SMALL>;<GREEK>;IGNORE
+<U03AC> <U0391>;<SMALL>;<TONOS>;IGNORE
+<U0392> <U0392>;<CAPITAL>;<GREEK>;IGNORE
+<U03B2> <U0392>;<SMALL>;<GREEK>;IGNORE
+<U0393> <U0393>;<CAPITAL>;<GREEK>;IGNORE
+<U03B3> <U0393>;<SMALL>;<GREEK>;IGNORE
+<U0394> <U0394>;<CAPITAL>;<GREEK>;IGNORE
+<U03B4> <U0394>;<SMALL>;<GREEK>;IGNORE
+<U0395> <U0395>;<CAPITAL>;<GREEK>;IGNORE
+<U0388> <U0395>;<CAPITAL>;<TONOS>;IGNORE
+<U03B5> <U0395>;<SMALL>;<GREEK>;IGNORE
+<U03AD> <U0395>;<SMALL>;<TONOS>;IGNORE
+<U0396> <U0396>;<CAPITAL>;<GREEK>;IGNORE
+<U03B6> <U0396>;<SMALL>;<GREEK>;IGNORE
+<U0397> <U0397>;<CAPITAL>;<GREEK>;IGNORE
+<U0389> <U0397>;<CAPITAL>;<TONOS>;IGNORE
+<U03B7> <U0397>;<SMALL>;<GREEK>;IGNORE
+<U03AE> <U0397>;<SMALL>;<TONOS>;IGNORE
+<U0398> <U0398>;<CAPITAL>;<GREEK>;IGNORE
+<U03B8> <U0398>;<SMALL>;<GREEK>;IGNORE
+<U0399> <U0399>;<CAPITAL>;<GREEK>;IGNORE
+<U038A> <U0399>;<CAPITAL>;<TONOS>;IGNORE
+<U03AA> <U0399>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03B9> <U0399>;<SMALL>;<GREEK>;IGNORE
+<U03AF> <U0399>;<SMALL>;<TONOS>;IGNORE
+<U03CA> <U0399>;<SMALL>;<DIALYTICA>;IGNORE
+<U0390> <U0399>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U039A> <U039A>;<CAPITAL>;<GREEK>;IGNORE
+<U03BA> <U039A>;<SMALL>;<GREEK>;IGNORE
+<U039B> <U039B>;<CAPITAL>;<GREEK>;IGNORE
+<U03BB> <U039B>;<SMALL>;<GREEK>;IGNORE
+<U039C> <U039C>;<CAPITAL>;<GREEK>;IGNORE
+<U03BC> <U039C>;<SMALL>;<GREEK>;IGNORE
+<U039D> <U039D>;<CAPITAL>;<GREEK>;IGNORE
+<U03BD> <U039D>;<SMALL>;<GREEK>;IGNORE
+<U039E> <U039E>;<CAPITAL>;<GREEK>;IGNORE
+<U03BE> <U039E>;<SMALL>;<GREEK>;IGNORE
+<U039F> <U039F>;<CAPITAL>;<GREEK>;IGNORE
+<U038C> <U039F>;<CAPITAL>;<TONOS>;IGNORE
+<U03BF> <U039F>;<SMALL>;<GREEK>;IGNORE
+<U03CC> <U039F>;<SMALL>;<TONOS>;IGNORE
+<U03A0> <U03A0>;<CAPITAL>;<GREEK>;IGNORE
+<U03C0> <U03A0>;<SMALL>;<GREEK>;IGNORE
+<U03A1> <U03A1>;<CAPITAL>;<GREEK>;IGNORE
+<U03C1> <U03A1>;<SMALL>;<GREEK>;IGNORE
+<U03A3> <U03A3>;<CAPITAL>;<GREEK>;IGNORE
+<U03C3> <U03A3>;<SMALL>;<GREEK>;IGNORE
+<U03C2> <U03A3>;<SMALL>;<U03C2>;IGNORE
+<U03A4> <U03A4>;<CAPITAL>;<GREEK>;IGNORE
+<U03C4> <U03A4>;<SMALL>;<GREEK>;IGNORE
+<U03A5> <U03A5>;<CAPITAL>;<GREEK>;IGNORE
+<U038E> <U03A5>;<CAPITAL>;<TONOS>;IGNORE
+<U03AB> <U03A5>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03C5> <U03A5>;<SMALL>;<GREEK>;IGNORE
+<U03CD> <U03A5>;<SMALL>;<TONOS>;IGNORE
+<U03CB> <U03A5>;<SMALL>;<DIALYTICA>;IGNORE
+<U03B0> <U03A5>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U03A6> <U03A6>;<CAPITAL>;<GREEK>;IGNORE
+<U03C6> <U03A6>;<SMALL>;<GREEK>;IGNORE
+<U03A7> <U03A7>;<CAPITAL>;<GREEK>;IGNORE
+<U03C7> <U03A7>;<SMALL>;<GREEK>;IGNORE
+<U03A8> <U03A8>;<CAPITAL>;<GREEK>;IGNORE
+<U03C8> <U03A8>;<SMALL>;<GREEK>;IGNORE
+<U03A9> <U03A9>;<CAPITAL>;<GREEK>;IGNORE
+<U038F> <U03A9>;<CAPITAL>;<TONOS>;IGNORE
+<U03C9> <U03A9>;<SMALL>;<GREEK>;IGNORE
+<U03CE> <U03A9>;<SMALL>;<TONOS>;IGNORE
+<U0410> <U0410>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0430> <U0410>;<CYRILLIC>;<SMALL>;IGNORE
+<U0411> <U0411>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0431> <U0411>;<CYRILLIC>;<SMALL>;IGNORE
+<U0412> <U0412>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0432> <U0412>;<CYRILLIC>;<SMALL>;IGNORE
+<U0413> <U0413>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0433> <U0413>;<CYRILLIC>;<SMALL>;IGNORE
+<U0403> <U0403>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0453> <U0403>;<CYRILLIC>;<SMALL>;IGNORE
+<U0490> <U0490>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0491> <U0490>;<CYRILLIC>;<SMALL>;IGNORE
+<U0414> <U0414>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0434> <U0414>;<CYRILLIC>;<SMALL>;IGNORE
+<U0402> <U0402>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0452> <U0402>;<CYRILLIC>;<SMALL>;IGNORE
+<U0415> <U0415>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0435> <U0415>;<CYRILLIC>;<SMALL>;IGNORE
+<U0401> <U0401>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0451> <U0401>;<CYRILLIC>;<SMALL>;IGNORE
+<U0404> <U0404>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0454> <U0404>;<CYRILLIC>;<SMALL>;IGNORE
+<U0416> <U0416>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0436> <U0416>;<CYRILLIC>;<SMALL>;IGNORE
+<U0417> <U0417>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0437> <U0417>;<CYRILLIC>;<SMALL>;IGNORE
+<U0418> <U0418>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0438> <U0418>;<CYRILLIC>;<SMALL>;IGNORE
+<U0406> <U0406>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0456> <U0406>;<CYRILLIC>;<SMALL>;IGNORE
+<U0407> <U0407>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0457> <U0407>;<CYRILLIC>;<SMALL>;IGNORE
+<U0408> <U0408>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0458> <U0408>;<CYRILLIC>;<SMALL>;IGNORE
+<U0419> <U0419>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0439> <U0419>;<CYRILLIC>;<SMALL>;IGNORE
+<U041A> <U041A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043A> <U041A>;<CYRILLIC>;<SMALL>;IGNORE
+<U040C> <U040C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045C> <U040C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041B> <U041B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043B> <U041B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0409> <U0409>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0459> <U0409>;<CYRILLIC>;<SMALL>;IGNORE
+<U041C> <U041C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043C> <U041C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041D> <U041D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043D> <U041D>;<CYRILLIC>;<SMALL>;IGNORE
+<U040A> <U040A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045A> <U040A>;<CYRILLIC>;<SMALL>;IGNORE
+<U041E> <U041E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043E> <U041E>;<CYRILLIC>;<SMALL>;IGNORE
+<U041F> <U041F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043F> <U041F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0420> <U0420>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0440> <U0420>;<CYRILLIC>;<SMALL>;IGNORE
+<U0421> <U0421>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0441> <U0421>;<CYRILLIC>;<SMALL>;IGNORE
+<U0422> <U0422>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0442> <U0422>;<CYRILLIC>;<SMALL>;IGNORE
+<U040B> <U040B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045B> <U040B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0423> <U0423>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0443> <U0423>;<CYRILLIC>;<SMALL>;IGNORE
+<U040E> <U040E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045E> <U040E>;<CYRILLIC>;<SMALL>;IGNORE
+<U0424> <U0424>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0444> <U0424>;<CYRILLIC>;<SMALL>;IGNORE
+<U0425> <U0425>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0445> <U0425>;<CYRILLIC>;<SMALL>;IGNORE
+<U0426> <U0426>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0446> <U0426>;<CYRILLIC>;<SMALL>;IGNORE
+<U0405> <U0405>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0455> <U0405>;<CYRILLIC>;<SMALL>;IGNORE
+<U0427> <U0427>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0447> <U0427>;<CYRILLIC>;<SMALL>;IGNORE
+<U040F> <U040F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045F> <U040F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0428> <U0428>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0448> <U0428>;<CYRILLIC>;<SMALL>;IGNORE
+<U0429> <U0429>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0449> <U0429>;<CYRILLIC>;<SMALL>;IGNORE
+<U044A> <U044A>;<CYRILLIC>;<SMALL>;IGNORE
+<U042A> <U044A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042B> <U042B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044B> <U042B>;<CYRILLIC>;<SMALL>;IGNORE
+<U044C> <U044C>;<CYRILLIC>;<SMALL>;IGNORE
+<U042C> <U044C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042D> <U042D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044D> <U042D>;<CYRILLIC>;<SMALL>;IGNORE
+<U042E> <U042E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044E> <U042E>;<CYRILLIC>;<SMALL>;IGNORE
+<U042F> <U042F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044F> <U042F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0462> <U0462>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0463> <U0462>;<CYRILLIC>;<SMALL>;IGNORE
+<U046A> <U046A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U046B> <U046A>;<CYRILLIC>;<SMALL>;IGNORE
+<U0472> <U0472>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0473> <U0472>;<CYRILLIC>;<SMALL>;IGNORE
+<U0474> <U0474>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0475> <U0474>;<CYRILLIC>;<SMALL>;IGNORE
+<U0480> <U0480>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0481> <U0480>;<CYRILLIC>;<SMALL>;IGNORE
+<U05D0> <U05D0>;IGNORE;IGNORE;IGNORE
+<U05D1> <U05D1>;IGNORE;IGNORE;IGNORE
+<U05D2> <U05D2>;IGNORE;IGNORE;IGNORE
+<U05D3> <U05D3>;IGNORE;IGNORE;IGNORE
+<U05D4> <U05D4>;IGNORE;IGNORE;IGNORE
+<U05D5> <U05D5>;IGNORE;IGNORE;IGNORE
+<U05D6> <U05D6>;IGNORE;IGNORE;IGNORE
+<U05D7> <U05D7>;IGNORE;IGNORE;IGNORE
+<U05D8> <U05D8>;IGNORE;IGNORE;IGNORE
+<U05D9> <U05D9>;IGNORE;IGNORE;IGNORE
+<U05DA> <U05DA>;IGNORE;IGNORE;IGNORE
+<U05DB> <U05DB>;IGNORE;IGNORE;IGNORE
+<U05DC> <U05DC>;IGNORE;IGNORE;IGNORE
+<U05DD> <U05DD>;IGNORE;IGNORE;IGNORE
+<U05DE> <U05DE>;IGNORE;IGNORE;IGNORE
+<U05DF> <U05DF>;IGNORE;IGNORE;IGNORE
+<U05E0> <U05E0>;IGNORE;IGNORE;IGNORE
+<U05E1> <U05E1>;IGNORE;IGNORE;IGNORE
+<U05E2> <U05E2>;IGNORE;IGNORE;IGNORE
+<U05E3> <U05E3>;IGNORE;IGNORE;IGNORE
+<U05E4> <U05E4>;IGNORE;IGNORE;IGNORE
+<U05E5> <U05E5>;IGNORE;IGNORE;IGNORE
+<U05E6> <U05E6>;IGNORE;IGNORE;IGNORE
+<U05E7> <U05E7>;IGNORE;IGNORE;IGNORE
+<U05E8> <U05E8>;IGNORE;IGNORE;IGNORE
+<U05E9> <U05E9>;IGNORE;IGNORE;IGNORE
+<U05EA> <U05EA>;IGNORE;IGNORE;IGNORE
+
+% Arabic collating
+
+<U060C> IGNORE;IGNORE;IGNORE;<U060C>
+<U061B> IGNORE;IGNORE;IGNORE;<U061B>
+<U061F> IGNORE;IGNORE;IGNORE;<U061F>
+<U0640> IGNORE;IGNORE;IGNORE;<U0640>
+
+<U0621> <U0621>;<U0621>;IGNORE;IGNORE
+<U0622> <U0622>;<U0622>;IGNORE;IGNORE
+<UFE82> <U0622>;<UFE82>;IGNORE;IGNORE
+<U0623> <U0621>;<U0623>;IGNORE;IGNORE
+<UFE84> <U0621>;<UFE84>;IGNORE;IGNORE
+<U0624> <U0621>;<U0624>;IGNORE;IGNORE
+<U0625> <U0621>;<U0625>;IGNORE;IGNORE
+<UFE88> <U0621>;<UFE88>;IGNORE;IGNORE
+<U0626> <U0621>;<U0626>;IGNORE;IGNORE
+<U0670> <U0670>;<U0670>;IGNORE;IGNORE
+<U0627> <U0627>;<U0627>;IGNORE;IGNORE
+<UFE8D> <U0627>;<UFE8D>;IGNORE;IGNORE
+<UFE8E> <U0627>;<UFE8E>;IGNORE;IGNORE
+<UE016> <U0627>;<UE016>;IGNORE;IGNORE
+<U0628> <U0628>;<U0628>;IGNORE;IGNORE
+<UFE8F> <U0628>;<UFE8F>;IGNORE;IGNORE
+<UFE90> <U0628>;<UFE90>;IGNORE;IGNORE
+<UFE91> <U0628>;<UFE91>;IGNORE;IGNORE
+<UFE92> <U0628>;<UFE92>;IGNORE;IGNORE
+<U067E> <U067E>;<U067E>;IGNORE;IGNORE
+<U06A4> <U06A4>;<U06A4>;IGNORE;IGNORE
+<U0629> <U0629>;<U0629>;IGNORE;IGNORE
+<UFE93> <U0629>;<UFE93>;IGNORE;IGNORE
+<UFE94> <U0629>;<UFE94>;IGNORE;IGNORE
+<U062A> <U0629>;<U062A>;IGNORE;IGNORE
+<UFE95> <U0629>;<UFE95>;IGNORE;IGNORE
+<UFE96> <U0629>;<UFE96>;IGNORE;IGNORE
+<UFE97> <U0629>;<UFE97>;IGNORE;IGNORE
+<UFE98> <U0629>;<UFE98>;IGNORE;IGNORE
+<U062B> <U062B>;<U062B>;IGNORE;IGNORE
+<UFE99> <U062B>;<UFE99>;IGNORE;IGNORE
+<UFE9A> <U062B>;<UFE9A>;IGNORE;IGNORE
+<UFE9B> <U062B>;<UFE9B>;IGNORE;IGNORE
+<UFE9C> <U062B>;<UFE9C>;IGNORE;IGNORE
+<U062C> <U062C>;<U062C>;IGNORE;IGNORE
+<UFE9D> <U062C>;<UFE9D>;IGNORE;IGNORE
+<UFE9E> <U062C>;<UFE9E>;IGNORE;IGNORE
+<UFE9F> <U062C>;<UFE9F>;IGNORE;IGNORE
+<UFEA0> <U062C>;<UFEA0>;IGNORE;IGNORE
+<U062D> <U062D>;<U062D>;IGNORE;IGNORE
+<UFEA1> <U062D>;<UFEA1>;IGNORE;IGNORE
+<UFEA2> <U062D>;<UFEA2>;IGNORE;IGNORE
+<UFEA3> <U062D>;<UFEA3>;IGNORE;IGNORE
+<UFEA4> <U062D>;<UFEA4>;IGNORE;IGNORE
+<U062E> <U062E>;<U062E>;IGNORE;IGNORE
+<UFEA5> <U062E>;<UFEA5>;IGNORE;IGNORE
+<UFEA6> <U062E>;<UFEA6>;IGNORE;IGNORE
+<UFEA7> <U062E>;<UFEA7>;IGNORE;IGNORE
+<UFEA8> <U062E>;<UFEA8>;IGNORE;IGNORE
+<U062F> <U062F>;<U062F>;IGNORE;IGNORE
+<UFEA9> <U062F>;<UFEA9>;IGNORE;IGNORE
+<UFEAA> <U062F>;<UFEAA>;IGNORE;IGNORE
+<U0630> <U0630>;<U0630>;IGNORE;IGNORE
+<UFEAB> <U0630>;<UFEAB>;IGNORE;IGNORE
+<UFEAC> <U0630>;<UFEAC>;IGNORE;IGNORE
+<U0631> <U0631>;<U0631>;IGNORE;IGNORE
+<UFEAD> <U0631>;<UFEAD>;IGNORE;IGNORE
+<UFEAE> <U0631>;<UFEAE>;IGNORE;IGNORE
+<U0632> <U0632>;<U0632>;IGNORE;IGNORE
+<UFEAF> <U0632>;<UFEAF>;IGNORE;IGNORE
+<UFEB0> <U0632>;<UFEB0>;IGNORE;IGNORE
+<U0633> <U0633>;<U0633>;IGNORE;IGNORE
+<UFEB1> <U0633>;<UFEB1>;IGNORE;IGNORE
+<UFEB2> <U0633>;<UFEB2>;IGNORE;IGNORE
+<UFEB3> <U0633>;<UFEB3>;IGNORE;IGNORE
+<UFEB4> <U0633>;<UFEB4>;IGNORE;IGNORE
+<U0634> <U0634>;<U0634>;IGNORE;IGNORE
+<UFEB5> <U0634>;<UFEB5>;IGNORE;IGNORE
+<UFEB6> <U0634>;<UFEB6>;IGNORE;IGNORE
+<UFEB7> <U0634>;<UFEB7>;IGNORE;IGNORE
+<UFEB8> <U0634>;<UFEB8>;IGNORE;IGNORE
+<U0635> <U0635>;<U0635>;IGNORE;IGNORE
+<UFEB9> <U0635>;<UFEB9>;IGNORE;IGNORE
+<UFEBA> <U0635>;<UFEBA>;IGNORE;IGNORE
+<UFEBB> <U0635>;<UFEBB>;IGNORE;IGNORE
+<UFEBC> <U0635>;<UFEBC>;IGNORE;IGNORE
+<U0636> <U0636>;<U0636>;IGNORE;IGNORE
+<UFEBD> <U0636>;<UFEBD>;IGNORE;IGNORE
+<UFEBE> <U0636>;<UFEBE>;IGNORE;IGNORE
+<UFEBF> <U0636>;<UFEBF>;IGNORE;IGNORE
+<UFEC0> <U0636>;<UFEC0>;IGNORE;IGNORE
+<U0637> <U0637>;<U0637>;IGNORE;IGNORE
+<UFEC1> <U0637>;<UFEC1>;IGNORE;IGNORE
+<UFEC2> <U0637>;<UFEC2>;IGNORE;IGNORE
+<UFEC3> <U0637>;<UFEC3>;IGNORE;IGNORE
+<UFEC4> <U0637>;<UFEC4>;IGNORE;IGNORE
+<U0638> <U0638>;<U0638>;IGNORE;IGNORE
+<UFEC5> <U0638>;<UFEC5>;IGNORE;IGNORE
+<UFEC6> <U0638>;<UFEC6>;IGNORE;IGNORE
+<UFEC7> <U0638>;<UFEC7>;IGNORE;IGNORE
+<UFEC8> <U0638>;<UFEC8>;IGNORE;IGNORE
+<U0639> <U0639>;<U0639>;IGNORE;IGNORE
+<UFEC9> <U0639>;<UFEC9>;IGNORE;IGNORE
+<UFECA> <U0639>;<UFECA>;IGNORE;IGNORE
+<UFECB> <U0639>;<UFECB>;IGNORE;IGNORE
+<UFECC> <U0639>;<UFECC>;IGNORE;IGNORE
+<U063A> <U063A>;<U063A>;IGNORE;IGNORE
+<UFECD> <U063A>;<UFECD>;IGNORE;IGNORE
+<UFECE> <U063A>;<UFECE>;IGNORE;IGNORE
+<UFECF> <U063A>;<UFECF>;IGNORE;IGNORE
+<UFED0> <U063A>;<UFED0>;IGNORE;IGNORE
+<U0641> <U0641>;<U0641>;IGNORE;IGNORE
+<UFED1> <U0641>;<UFED1>;IGNORE;IGNORE
+<UFED2> <U0641>;<UFED2>;IGNORE;IGNORE
+<UFED3> <U0641>;<UFED3>;IGNORE;IGNORE
+<UFED4> <U0641>;<UFED4>;IGNORE;IGNORE
+<U0642> <U0642>;<U0642>;IGNORE;IGNORE
+<UFED5> <U0642>;<UFED5>;IGNORE;IGNORE
+<UFED6> <U0642>;<UFED6>;IGNORE;IGNORE
+<UFED7> <U0642>;<UFED7>;IGNORE;IGNORE
+<UFED8> <U0642>;<UFED8>;IGNORE;IGNORE
+<U0643> <U0643>;<U0643>;IGNORE;IGNORE
+<UFED9> <U0643>;<UFED9>;IGNORE;IGNORE
+<UFEDA> <U0643>;<UFEDA>;IGNORE;IGNORE
+<UFEDB> <U0643>;<UFEDB>;IGNORE;IGNORE
+<UFEDC> <U0643>;<UFEDC>;IGNORE;IGNORE
+<U0644> <U0644>;<U0644>;IGNORE;IGNORE
+<UFEDD> <U0644>;<UFEDD>;IGNORE;IGNORE
+<UFEDE> <U0644>;<UFEDE>;IGNORE;IGNORE
+<UFEDF> <U0644>;<UFEDF>;IGNORE;IGNORE
+<UFEE0> <U0644>;<UFEE0>;IGNORE;IGNORE
+<U0645> <U0645>;<U0645>;IGNORE;IGNORE
+<UFEE1> <U0645>;<UFEE1>;IGNORE;IGNORE
+<UFEE2> <U0645>;<UFEE2>;IGNORE;IGNORE
+<UFEE3> <U0645>;<UFEE3>;IGNORE;IGNORE
+<UFEE4> <U0645>;<UFEE4>;IGNORE;IGNORE
+<U0646> <U0646>;<U0646>;IGNORE;IGNORE
+<UFEE5> <U0646>;<UFEE5>;IGNORE;IGNORE
+<UFEE6> <U0646>;<UFEE6>;IGNORE;IGNORE
+<UFEE7> <U0646>;<UFEE7>;IGNORE;IGNORE
+<UFEE8> <U0646>;<UFEE8>;IGNORE;IGNORE
+<U0647> <U0647>;<U0647>;IGNORE;IGNORE
+<UFEE9> <U0647>;<UFEE9>;IGNORE;IGNORE
+<UFEEA> <U0647>;<UFEEA>;IGNORE;IGNORE
+<UFEEB> <U0647>;<UFEEB>;IGNORE;IGNORE
+<UFEEC> <U0647>;<UFEEC>;IGNORE;IGNORE
+<U0648> <U0648>;<U0648>;IGNORE;IGNORE
+<UFEED> <U0648>;<UFEED>;IGNORE;IGNORE
+<UFEEE> <U0648>;<UFEEE>;IGNORE;IGNORE
+<U0649> <U0649>;<U0649>;IGNORE;IGNORE
+<UFEEF> <U0649>;<UFEEF>;IGNORE;IGNORE
+<UFEF0> <U0649>;<UFEF0>;IGNORE;IGNORE
+<U064A> <U064A>;<U064A>;IGNORE;IGNORE
+<UFEF1> <U064A>;<UFEF1>;IGNORE;IGNORE
+<UFEF2> <U064A>;<UFEF2>;IGNORE;IGNORE
+<UFEF3> <U064A>;<UFEF3>;IGNORE;IGNORE
+<UFEF4> <U064A>;<UFEF4>;IGNORE;IGNORE
+
+<U064B> IGNORE;IGNORE;<U064B>;IGNORE
+<U064C> IGNORE;IGNORE;<U064C>;IGNORE
+<U064D> IGNORE;IGNORE;<U064D>;IGNORE
+<U064E> IGNORE;IGNORE;<U064E>;IGNORE
+<U064F> IGNORE;IGNORE;<U064F>;IGNORE
+<U0650> IGNORE;IGNORE;<U0650>;IGNORE
+<U0651> IGNORE;IGNORE;<U0651>;IGNORE
+<UFE7D> IGNORE;IGNORE;<UFE7D>;IGNORE
+<U0652> IGNORE;IGNORE;<U0652>;IGNORE
+
+<U0660> <U0030>;<U0660>;IGNORE;IGNORE
+<U0661> <U0031>;<U0661>;IGNORE;IGNORE
+<U0662> <U0032>;<U0662>;IGNORE;IGNORE
+<U0663> <U0033>;<U0663>;IGNORE;IGNORE
+<U0664> <U0034>;<U0664>;IGNORE;IGNORE
+<U0665> <U0035>;<U0665>;IGNORE;IGNORE
+<U0666> <U0036>;<U0666>;IGNORE;IGNORE
+<U0667> <U0037>;<U0667>;IGNORE;IGNORE
+<U0668> <U0038>;<U0668>;IGNORE;IGNORE
+<U0669> <U0039>;<U0669>;IGNORE;IGNORE
+
+<UFEF5> "<U0644><U0622>";"<U0644><U0622>";"<UFEF5><UFEF5>";IGNORE
+<UFEF6> "<U0644><U0622>";"<U0644><UFE82>";"<UFEF6><UFEF6>";IGNORE
+<UFEF7> "<U0644><U0623>";"<U0644><U0623>";"<UFEF7><UFEF7>";IGNORE
+<UFEF8> "<U0644><U0623>";"<U0644><UFE84>";"<UFEF8><UFEF8>";IGNORE
+<UFEF9> "<U0644><U0625>";"<U0644><U0625>";"<UFEF9><UFEF9>";IGNORE
+<UFEFA> "<U0644><U0625>";"<U0644><UFE88>";"<UFEFA><UFEFA>";IGNORE
+<UFEFB> "<U0644><U0627>";"<U0644><UFE8D>";"<UFEFB><UFEFB>";IGNORE
+<UFEFC> "<U0644><U0627>";"<U0644><UFE8E>";"<UFEFC><UFEFC>";IGNORE
+
+% katakana/hiragana sorting
+% base is katakana, as this is present in most charsets
+% normal before voiced before semi-voiced
+% small vocals before normal vocals
+% katakana before hiragana
+
+<U30A1> <U30A1>;<U30A1>;IGNORE;IGNORE
+<U3041> <U30A1>;<U3041>;IGNORE;IGNORE
+<U30A2> <U30A1>;<U30A2>;IGNORE;IGNORE
+<U3042> <U30A1>;<U3042>;IGNORE;IGNORE
+<U30A3> <U30A3>;<U30A3>;IGNORE;IGNORE
+<U3043> <U30A3>;<U3043>;IGNORE;IGNORE
+<U30A4> <U30A3>;<U30A4>;IGNORE;IGNORE
+<U3044> <U30A3>;<U3044>;IGNORE;IGNORE
+<U30A5> <U30A5>;<U30A5>;IGNORE;IGNORE
+<U3045> <U30A5>;<U3045>;IGNORE;IGNORE
+<U30A6> <U30A5>;<U30A6>;IGNORE;IGNORE
+<U3046> <U30A5>;<U3046>;IGNORE;IGNORE
+<U30F4> <U30A5>;<U30F4>;IGNORE;IGNORE
+<U30A7> <U30A7>;<U30A7>;IGNORE;IGNORE
+<U3047> <U30A7>;<U3047>;IGNORE;IGNORE
+<U30A8> <U30A7>;<U30A8>;IGNORE;IGNORE
+<U3048> <U30A7>;<U3048>;IGNORE;IGNORE
+<U30A9> <U30A9>;<U30A9>;IGNORE;IGNORE
+<U3049> <U30A9>;<U3049>;IGNORE;IGNORE
+<U30AA> <U30A9>;<U30AA>;IGNORE;IGNORE
+<U304A> <U30A9>;<U304A>;IGNORE;IGNORE
+<U30F5> <U30F5>;<U30F5>;IGNORE;IGNORE
+<U30AB> <U30F5>;<U30AB>;IGNORE;IGNORE
+<U304B> <U30F5>;<U304B>;IGNORE;IGNORE
+<U30AC> <U30F5>;<U30AC>;IGNORE;IGNORE
+<U304C> <U30F5>;<U304C>;IGNORE;IGNORE
+<U30AD> <U30AD>;<U30AD>;IGNORE;IGNORE
+<U304D> <U30AD>;<U304D>;IGNORE;IGNORE
+<U30AE> <U30AD>;<U30AE>;IGNORE;IGNORE
+<U304E> <U30AD>;<U304E>;IGNORE;IGNORE
+<U30AF> <U30AF>;<U30AF>;IGNORE;IGNORE
+<U304F> <U30AF>;<U304F>;IGNORE;IGNORE
+<U30B0> <U30AF>;<U30B0>;IGNORE;IGNORE
+<U3050> <U30AF>;<U3050>;IGNORE;IGNORE
+<U30F6> <U30F6>;<U30F6>;IGNORE;IGNORE
+<U30B1> <U30F6>;<U30B1>;IGNORE;IGNORE
+<U3051> <U30F6>;<U3051>;IGNORE;IGNORE
+<U30B2> <U30F6>;<U30B2>;IGNORE;IGNORE
+<U3052> <U30F6>;<U3052>;IGNORE;IGNORE
+<U30B3> <U30B3>;<U30B3>;IGNORE;IGNORE
+<U3053> <U30B3>;<U3053>;IGNORE;IGNORE
+<U30B4> <U30B3>;<U30B4>;IGNORE;IGNORE
+<U3054> <U30B3>;<U3054>;IGNORE;IGNORE
+<U30B5> <U30B5>;<U30B5>;IGNORE;IGNORE
+<U3055> <U30B5>;<U3055>;IGNORE;IGNORE
+<U30B6> <U30B5>;<U30B6>;IGNORE;IGNORE
+<U3056> <U30B5>;<U3056>;IGNORE;IGNORE
+<U30B7> <U30B7>;<U30B7>;IGNORE;IGNORE
+<U3057> <U30B7>;<U3057>;IGNORE;IGNORE
+<U30B8> <U30B7>;<U30B8>;IGNORE;IGNORE
+<U3058> <U30B7>;<U3058>;IGNORE;IGNORE
+<U30B9> <U30B9>;<U30B9>;IGNORE;IGNORE
+<U3059> <U30B9>;<U3059>;IGNORE;IGNORE
+<U30BA> <U30B9>;<U30BA>;IGNORE;IGNORE
+<U305A> <U30B9>;<U305A>;IGNORE;IGNORE
+<U30BB> <U30BB>;<U30BB>;IGNORE;IGNORE
+<U305B> <U30BB>;<U305B>;IGNORE;IGNORE
+<U30BC> <U30BB>;<U30BC>;IGNORE;IGNORE
+<U305C> <U30BB>;<U305C>;IGNORE;IGNORE
+<U30BD> <U30BD>;<U30BD>;IGNORE;IGNORE
+<U305D> <U30BD>;<U305D>;IGNORE;IGNORE
+<U30BE> <U30BD>;<U30BE>;IGNORE;IGNORE
+<U305E> <U30BD>;<U305E>;IGNORE;IGNORE
+<U30BF> <U30BF>;<U30BF>;IGNORE;IGNORE
+<U305F> <U30BF>;<U305F>;IGNORE;IGNORE
+<U30C0> <U30BF>;<U30C0>;IGNORE;IGNORE
+<U3060> <U30BF>;<U3060>;IGNORE;IGNORE
+<U30C1> <U30C1>;<U30C1>;IGNORE;IGNORE
+<U3061> <U30C1>;<U3061>;IGNORE;IGNORE
+<U30C2> <U30C1>;<U30C2>;IGNORE;IGNORE
+<U3062> <U30C1>;<U3062>;IGNORE;IGNORE
+<U30C3> <U30C3>;<U30C3>;IGNORE;IGNORE
+<U3063> <U30C3>;<U3063>;IGNORE;IGNORE
+<U30C4> <U30C3>;<U30C4>;IGNORE;IGNORE
+<U3064> <U30C3>;<U3064>;IGNORE;IGNORE
+<U30C5> <U30C3>;<U30C5>;IGNORE;IGNORE
+<U3065> <U30C3>;<U3065>;IGNORE;IGNORE
+<U30C6> <U30C6>;<U30C6>;IGNORE;IGNORE
+<U3066> <U30C6>;<U3066>;IGNORE;IGNORE
+<U30C7> <U30C6>;<U30C7>;IGNORE;IGNORE
+<U3067> <U30C6>;<U3067>;IGNORE;IGNORE
+<U30C8> <U30C8>;<U30C8>;IGNORE;IGNORE
+<U3068> <U30C8>;<U3068>;IGNORE;IGNORE
+<U30C9> <U30C8>;<U30C9>;IGNORE;IGNORE
+<U3069> <U30C8>;<U3069>;IGNORE;IGNORE
+<U30CA> <U30CA>;<U30CA>;IGNORE;IGNORE
+<U306A> <U30CA>;<U306A>;IGNORE;IGNORE
+<U30CB> <U30CB>;<U30CB>;IGNORE;IGNORE
+<U306B> <U30CB>;<U306B>;IGNORE;IGNORE
+<U30CC> <U30CC>;<U30CC>;IGNORE;IGNORE
+<U306C> <U30CC>;<U306C>;IGNORE;IGNORE
+<U30CD> <U30CD>;<U30CD>;IGNORE;IGNORE
+<U306D> <U30CD>;<U306D>;IGNORE;IGNORE
+<U30CE> <U30CE>;<U30CE>;IGNORE;IGNORE
+<U306E> <U30CE>;<U306E>;IGNORE;IGNORE
+<U30CF> <U30CF>;<U30CF>;IGNORE;IGNORE
+<U306F> <U30CF>;<U306F>;IGNORE;IGNORE
+<U30D0> <U30CF>;<U30D0>;IGNORE;IGNORE
+<U3070> <U30CF>;<U3070>;IGNORE;IGNORE
+<U30D1> <U30CF>;<U30D1>;IGNORE;IGNORE
+<U3071> <U30CF>;<U3071>;IGNORE;IGNORE
+<U30D2> <U30D2>;<U30D2>;IGNORE;IGNORE
+<U3072> <U30D2>;<U3072>;IGNORE;IGNORE
+<U30D3> <U30D2>;<U30D3>;IGNORE;IGNORE
+<U3073> <U30D2>;<U3073>;IGNORE;IGNORE
+<U30D4> <U30D2>;<U30D4>;IGNORE;IGNORE
+<U3074> <U30D2>;<U3074>;IGNORE;IGNORE
+<U30D5> <U30D5>;<U30D5>;IGNORE;IGNORE
+<U3075> <U30D5>;<U3075>;IGNORE;IGNORE
+<U30D6> <U30D5>;<U30D6>;IGNORE;IGNORE
+<U3076> <U30D5>;<U3076>;IGNORE;IGNORE
+<U30D7> <U30D5>;<U30D7>;IGNORE;IGNORE
+<U3077> <U30D5>;<U3077>;IGNORE;IGNORE
+<U30D8> <U30D8>;<U30D8>;IGNORE;IGNORE
+<U3078> <U30D8>;<U3078>;IGNORE;IGNORE
+<U30D9> <U30D8>;<U30D9>;IGNORE;IGNORE
+<U3079> <U30D8>;<U3079>;IGNORE;IGNORE
+<U30DA> <U30D8>;<U30DA>;IGNORE;IGNORE
+<U307A> <U30D8>;<U307A>;IGNORE;IGNORE
+<U30DB> <U30DB>;<U30DB>;IGNORE;IGNORE
+<U307B> <U30DB>;<U307B>;IGNORE;IGNORE
+<U30DC> <U30DB>;<U30DC>;IGNORE;IGNORE
+<U307C> <U30DB>;<U307C>;IGNORE;IGNORE
+<U30DD> <U30DB>;<U30DD>;IGNORE;IGNORE
+<U307D> <U30DB>;<U307D>;IGNORE;IGNORE
+<U30DE> <U30DE>;<U30DE>;IGNORE;IGNORE
+<U307E> <U30DE>;<U307E>;IGNORE;IGNORE
+<U30DF> <U30DF>;<U30DF>;IGNORE;IGNORE
+<U307F> <U30DF>;<U307F>;IGNORE;IGNORE
+<U30E0> <U30E0>;<U30E0>;IGNORE;IGNORE
+<U3080> <U30E0>;<U3080>;IGNORE;IGNORE
+<U30E1> <U30E1>;<U30E1>;IGNORE;IGNORE
+<U3081> <U30E1>;<U3081>;IGNORE;IGNORE
+<U30E2> <U30E2>;<U30E2>;IGNORE;IGNORE
+<U3082> <U30E2>;<U3082>;IGNORE;IGNORE
+<U30E3> <U30E3>;<U30E3>;IGNORE;IGNORE
+<U3083> <U30E3>;<U3083>;IGNORE;IGNORE
+<U30E4> <U30E3>;<U30E4>;IGNORE;IGNORE
+<U3084> <U30E3>;<U3084>;IGNORE;IGNORE
+<U30E5> <U30E5>;<U30E5>;IGNORE;IGNORE
+<U3085> <U30E5>;<U3085>;IGNORE;IGNORE
+<U30E6> <U30E5>;<U30E6>;IGNORE;IGNORE
+<U3086> <U30E5>;<U3086>;IGNORE;IGNORE
+<U30E7> <U30E7>;<U30E7>;IGNORE;IGNORE
+<U3087> <U30E7>;<U3087>;IGNORE;IGNORE
+<U30E8> <U30E7>;<U30E8>;IGNORE;IGNORE
+<U3088> <U30E7>;<U3088>;IGNORE;IGNORE
+<U30E9> <U30E9>;<U30E9>;IGNORE;IGNORE
+<U3089> <U30E9>;<U3089>;IGNORE;IGNORE
+<U30EA> <U30EA>;<U30EA>;IGNORE;IGNORE
+<U308A> <U30EA>;<U308A>;IGNORE;IGNORE
+<U30EB> <U30EB>;<U30EB>;IGNORE;IGNORE
+<U308B> <U30EB>;<U308B>;IGNORE;IGNORE
+<U30EC> <U30EC>;<U30EC>;IGNORE;IGNORE
+<U308C> <U30EC>;<U308C>;IGNORE;IGNORE
+<U30ED> <U30ED>;<U30ED>;IGNORE;IGNORE
+<U308D> <U30ED>;<U308D>;IGNORE;IGNORE
+<U30EE> <U30EE>;<U30EE>;IGNORE;IGNORE
+<U308E> <U30EE>;<U308E>;IGNORE;IGNORE
+<U30EF> <U30EE>;<U30EF>;IGNORE;IGNORE
+<U308F> <U30EE>;<U308F>;IGNORE;IGNORE
+<U30F0> <U30F0>;<U30F0>;IGNORE;IGNORE
+<U3090> <U30F0>;<U3090>;IGNORE;IGNORE
+<U30F1> <U30F1>;<U30F1>;IGNORE;IGNORE
+<U3091> <U30F1>;<U3091>;IGNORE;IGNORE
+<U30F2> <U30F2>;<U30F2>;IGNORE;IGNORE
+<U3092> <U30F2>;<U3092>;IGNORE;IGNORE
+<U30F3> <U30F3>;<U30F3>;IGNORE;IGNORE
+<U3093> <U30F3>;<U3093>;IGNORE;IGNORE
+
+% modifier letters
+
+<U02BB> IGNORE;IGNORE;<U02BB>;IGNORE
+<U02C6> IGNORE;IGNORE;<CIRCUMFLEX>;IGNORE
+<U02C9> IGNORE;IGNORE;<MACRON>;IGNORE
+<U02CB> IGNORE;IGNORE;<GRAVE>;IGNORE
+
+order_end
+
diff --git a/ap/build/uClibc/extra/locale/collation/iso14651_t1 b/ap/build/uClibc/extra/locale/collation/iso14651_t1
new file mode 100644
index 0000000..b44d34a
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/iso14651_t1
@@ -0,0 +1,1495 @@
+
+# Déclaration des systèmes d'écriture / Declaration of scripts
+script <SPECIAL>
+script <LATIN>
+script <ARABINT>
+script <ARABFOR>
+script <HEBREU>
+script <GREC>
+script <CYRIL>
+script <HAN>
+
+# Déclaration des symboles internes / Declaration of internal symbols
+#
+# SYMB N° Expl.
+#
+collating-symbol <RES-1>
+#
+# <ARABINT>/<ARABFOR>
+#
+#
+collating-symbol <ANO> # 2 normal --> voir/see <MIN>
+collating-symbol <AIS> # 3 isol.
+collating-symbol <AFI> # 4 final
+collating-symbol <AII> # 5 initial
+collating-symbol <AME> # 6 medial/m<e'>dian
+#
+collating-symbol <MIN> # 7 minuscule/minuscule (bas de casse/lower case)
+collating-symbol <IMI> # 8 inférieur min./subscript min. (indice/index)
+collating-symbol <EMI> # 9 supér. min./superscript min. (exposant/exponent)
+collating-symbol <CAP> # 10 capitale/capital (haut de casse/upper case)
+collating-symbol <AMI> # 8 minuscule grecque/Greek lower case
+collating-symbol <ICA> # 11 inférieur en capitale/subscript capital
+collating-symbol <ECA> # 12 supérieur en capitale/superscript capital
+#
+# <ARABINT>/<ARABFOR>
+#
+collating-symbol <AMA> # 13 accent madda
+collating-symbol <AHA> # 14 accent hamza
+collating-symbol <AHW> # 14-1 accent hamza/waw
+collating-symbol <AHS> # 14-2 accent hamza under / hamza souscrit
+collating-symbol <AYE> # 14-3 accent under yeh / accent souscrit du ya'
+collating-symbol <YBA> # 14-4 accent hamza/yeh barree
+#
+collating-symbol <BAS> # 15 de base/basic (non accentué/non-accented)
+#
+collating-symbol <PCL> # 16 particulier/peculiar
+collating-symbol <LIG> # 17 ligature/ligature
+collating-symbol <ACA> # 18 accent aigu/acute accent
+collating-symbol <GRA> # 20 accent grave/grave accent
+collating-symbol <BRE> # 21 brève/breve
+collating-symbol <CIR> # 22 accent circonflexe/circumflex accent
+collating-symbol <CAR> # 23 caron/caron
+collating-symbol <RNE> # 24 rond supérieur/ring above
+collating-symbol <REU> # 25 tréma/diaeresis (ou/or umlaut)
+collating-symbol <DAC> # 26 double ac. aigu/double acute ac.
+collating-symbol <TIL> # 27 tilde/tilde
+collating-symbol <PCT> # 28 point/dot
+collating-symbol <OBL> # 29 barre oblique/oblique
+collating-symbol <CDI> # 30 cédille/cedilla
+collating-symbol <OGO> # 31 ogonek/ogonek
+collating-symbol <MAC> # 32 macron/macron
+#
+# GREC
+#
+collating-symbol <TNS> # accent aigu/tonos/acute accent
+collating-symbol <DLT> # tr<e'>ma/dialytica/diaeresis
+collating-symbol <DTT> # dialytika tonos
+#
+collating-symbol <0>
+collating-symbol <1>
+collating-symbol <2>
+collating-symbol <3>
+collating-symbol <4>
+collating-symbol <5>
+collating-symbol <6>
+collating-symbol <7>
+collating-symbol <8>
+collating-symbol <9>
+#
+collating-symbol <a>
+collating-symbol <b>
+collating-symbol <c>
+collating-symbol <d>
+collating-symbol <e>
+collating-symbol <f>
+collating-symbol <g>
+collating-symbol <h>
+collating-symbol <i>
+collating-symbol <j>
+collating-symbol <k>
+collating-symbol <l>
+collating-symbol <m>
+collating-symbol <n>
+collating-symbol <o>
+collating-symbol <p>
+collating-symbol <q>
+collating-symbol <r>
+collating-symbol <s>
+collating-symbol <t>
+collating-symbol <u>
+collating-symbol <v>
+collating-symbol <w>
+collating-symbol <x>
+collating-symbol <y>
+collating-symbol <z>
+collating-symbol <th>
+#
+# <ARABINT>/<ARABFOR>
+#
+collating-symbol <hamza>
+collating-symbol <alef>
+collating-symbol <beh>
+collating-symbol <peh>
+collating-symbol <teh_marbuta>
+collating-symbol <teh>
+collating-symbol <tteh>
+collating-symbol <theh>
+collating-symbol <jeem>
+collating-symbol <tcheh>
+collating-symbol <hah>
+collating-symbol <khah>
+collating-symbol <dal>
+collating-symbol <ddal>
+collating-symbol <thal>
+collating-symbol <reh>
+collating-symbol <rreh>
+collating-symbol <zain>
+collating-symbol <jeh>
+collating-symbol <seen>
+collating-symbol <sheen>
+collating-symbol <sad>
+collating-symbol <dad>
+collating-symbol <tah>
+collating-symbol <zah>
+collating-symbol <ain>
+collating-symbol <ghain>
+collating-symbol <feh>
+collating-symbol <qaf>
+collating-symbol <kaf>
+collating-symbol <keheh>
+collating-symbol <gaf>
+collating-symbol <lam>
+collating-symbol <meem>
+collating-symbol <noon>
+collating-symbol <noon_ghunna>
+collating-symbol <heh>
+collating-symbol <heh_yeh>
+collating-symbol <waw>
+collating-symbol <alef_maksura>
+collating-symbol <yeh_barree>
+#
+# <HEBREU>
+#
+collating-symbol <alef_heb>
+collating-symbol <bet>
+collating-symbol <gimel>
+collating-symbol <dalet>
+collating-symbol <he>
+collating-symbol <vav>
+collating-symbol <zayin>
+collating-symbol <het>
+collating-symbol <tet>
+collating-symbol <yod>
+collating-symbol <kaf_fin>
+collating-symbol <kaf_heb>
+collating-symbol <lamed>
+collating-symbol <mem_fin>
+collating-symbol <mem>
+collating-symbol <nun_fin>
+collating-symbol <nun>
+collating-symbol <samekh>
+collating-symbol <ayin>
+collating-symbol <pe_fin>
+collating-symbol <pe>
+collating-symbol <tsadi_fin>
+collating-symbol <tsadi>
+collating-symbol <qof>
+collating-symbol <resh>
+collating-symbol <shin>
+collating-symbol <tav>
+#
+# GREC
+#
+collating-symbol <ALPHA>
+collating-symbol <BETA>
+collating-symbol <GAMMA>
+collating-symbol <DELTA>
+collating-symbol <EPSILON>
+collating-symbol <ZETA>
+collating-symbol <ETA>
+collating-symbol <THETA>
+collating-symbol <IOTA>
+collating-symbol <KAPPA>
+collating-symbol <LAMBDA>
+collating-symbol <MU>
+collating-symbol <NU>
+collating-symbol <XI>
+collating-symbol <OMICRON>
+collating-symbol <PI>
+collating-symbol <RHO>
+collating-symbol <SIGMA>
+collating-symbol <TAU>
+collating-symbol <UPSILON>
+collating-symbol <PHI>
+collating-symbol <CHI>
+collating-symbol <PSI>
+collating-symbol <OMEGA>
+#
+# CYRIL
+#
+collating-symbol <CYR-A>
+collating-symbol <CYR-BE>
+collating-symbol <CYR-VE>
+collating-symbol <CYR-GHE>
+collating-symbol <CYR-DE>
+collating-symbol <CYR-GZHE>
+collating-symbol <CYR-DJE>
+collating-symbol <CYR-IE>
+collating-symbol <UKR-IE>
+collating-symbol <CYR-IO>
+collating-symbol <CYR-ZHE>
+collating-symbol <CYR-ZE>
+collating-symbol <CYR-DZE>
+collating-symbol <CYR-I>
+collating-symbol <UKR-I>
+collating-symbol <UKR-YI>
+collating-symbol <CYR-IBRE>
+collating-symbol <CYR-JE>
+collating-symbol <CYR-KA>
+collating-symbol <CYR-EL>
+collating-symbol <CYR-LJE>
+collating-symbol <CYR-EM>
+collating-symbol <CYR-EN>
+collating-symbol <CYR-NJE>
+collating-symbol <CYR-O>
+collating-symbol <CYR-PE>
+collating-symbol <CYR-ER>
+collating-symbol <CYR-ES>
+collating-symbol <CYR-TE>
+collating-symbol <CYR-KJE>
+collating-symbol <CYR-TSHE>
+collating-symbol <CYR-OU>
+collating-symbol <CYR-OUBRE>
+collating-symbol <CYR-EF>
+collating-symbol <CYR-HA>
+collating-symbol <CYR-TSE>
+collating-symbol <CYR-CHE>
+collating-symbol <CYR-DCHE>
+collating-symbol <CYR-SHA>
+collating-symbol <CYR-SHTSHA>
+collating-symbol <CYR-SIGDUR>
+collating-symbol <CYR-YEROU>
+collating-symbol <CYR-SIGMOUIL>
+collating-symbol <CYR-E>
+collating-symbol <CYR-YOU>
+collating-symbol <CYR-YA>
+
+# Ordre des symboles internes / Order of internal symbols
+#
+# SYMB. N°
+#
+<RES-1>
+<MIN>
+# forme de base (bas de casse, arabe intrinsèque,
+# hébreu intrinsèque, etc.
+# basic form (lower case, intrinsic Arabic
+# intrinsic Hebrew and so on)
+#
+# <ARABINT>/<ARABFOR>
+#
+#
+<ANO> # voir
+<AIS> # isol.
+# 3
+<AFI> # final
+# 4
+<AII> # initial
+# 5
+<AME> # medial/m<e'>dian
+# 6
+#
+<IMI> # 7
+<EMI> # 8
+<CAP> # 9
+<ICA> # 10
+<ECA> # 11
+<AMI>
+#alternate lower case/
+# 12
+#
+#minuscules spéciales après majuscules
+# <ARABINT>/<ARABFOR>
+#
+<AMA> # accent madda #13
+<AHA> # accent hamza #14
+<AHW> # accent hamza/waw #14 1
+<AHS> # accent hamza under / hamza souscrit #14 2
+<AYE> # accent under yeh / accent souscrit du ya' #14 3
+<YBA> # accent hamza/yeh barree #14 4
+#
+<BAS> # 15
+#
+<PCL> # 16
+<LIG> # 17
+<ACA> # 18
+<GRA> # 19
+<BRE> # 20
+<CIR> # 21
+<CAR> # 22
+<RNE> # 23
+<REU> # 24
+<DAC> # 25
+<TIL> # 26
+<PCT> # 27
+<OBL> # 28
+<CDI> # 29
+<OGO> # 30
+<MAC> # 31
+#
+# GREC
+#
+<TNS> # accent aigu/tonos/acute accent
+<DLT> # tr<e'>ma/dialytica/diaeresis
+<DTT> # dialytika tonos
+#
+<0> # 48
+<1> # 49
+<2> # 50
+<3> # 51
+<4> # 52
+<5> # 53
+<6> # 54
+<7> # 55
+<8> # 56
+<9> # 57
+#
+<a> # 97
+<b> # 98
+<c> # 99
+<d> # 100
+<e> # 101
+<f> # 102
+<g> # 103
+<h> # 104
+<i> # 105
+<j> # 106
+<k> # 107
+<l> # 108
+<m> # 109
+<n> # 110
+<o> # 111
+<p> # 112
+<q> # 113
+<r> # 114
+<s> # 115
+<t> # 116
+<u> # 117
+<v> # 118
+<w> # 119
+<x> # 120
+<y> # 121
+<z> # 122
+<th># 122b
+#
+# <ARABINT>/<ARABFOR>
+#
+<hamza>
+<alef>
+<beh>
+<peh>
+<teh_marbuta>
+<teh>
+<tteh>
+<theh>
+<jeem>
+<tcheh>
+<hah>
+<khah>
+<dal>
+<ddal>
+<thal>
+<reh>
+<rreh>
+<zain>
+<jeh>
+<seen>
+<sheen>
+<sad>
+<dad>
+<tah>
+<zah>
+<ain>
+<ghain>
+<feh>
+<qaf>
+<kaf>
+<keheh>
+<gaf>
+<lam>
+<meem>
+<noon>
+<noon_ghunna>
+<heh>
+<heh_yeh>
+<waw>
+<alef_maksura>
+<yeh_barree>
+#
+# <HEBREU>
+#
+<alef_heb>
+<bet>
+<gimel>
+<dalet>
+<he>
+<vav>
+<zayin>
+<het>
+<tet>
+<yod>
+<kaf_fin>
+<kaf_heb>
+<lamed>
+<mem_fin>
+<mem>
+<nun_fin>
+<nun>
+<samekh>
+<ayin>
+<pe_fin>
+<pe>
+<tsadi_fin>
+<tsadi>
+<qof>
+<resh>
+<shin>
+<tav>
+#
+#GREC
+#
+<ALPHA>
+<BETA>
+<GAMMA>
+<DELTA>
+<EPSILON>
+<ZETA>
+<ETA>
+<THETA>
+<IOTA>
+<KAPPA>
+<LAMBDA>
+<MU>
+<NU>
+<XI>
+<OMICRON>
+<PI>
+<RHO>
+<SIGMA>
+<TAU>
+<UPSILON>
+<PHI>
+<CHI>
+<PSI>
+<OMEGA>
+#
+#CYRIL
+#
+<CYR-A>
+<CYR-BE>
+<CYR-VE>
+<CYR-GHE>
+<CYR-DE>
+<CYR-GZHE>
+<CYR-DJE>
+<CYR-IE>
+<UKR-IE>
+<CYR-IO>
+<CYR-ZHE>
+<CYR-ZE>
+<CYR-DZE>
+<CYR-I>
+<UKR-I>
+<UKR-YI>
+<CYR-IBRE>
+<CYR-JE>
+<CYR-KA>
+<CYR-EL>
+<CYR-LJE>
+<CYR-EM>
+<CYR-EN>
+<CYR-NJE>
+<CYR-O>
+<CYR-PE>
+<CYR-ER>
+<CYR-ES>
+<CYR-TE>
+<CYR-KJE>
+<CYR-TSHE>
+<CYR-OU>
+<CYR-OUBRE>
+<CYR-EF>
+<CYR-HA>
+<CYR-TSE>
+<CYR-CHE>
+<CYR-DCHE>
+<CYR-SHA>
+<CYR-SHTSHA>
+<CYR-SIGDUR>
+<CYR-YEROU>
+<CYR-SIGMOUIL>
+<CYR-E>
+<CYR-YOU>
+<CYR-YA>
+
+order_start <SPECIAL>;forward;backward;forward;forward,position
+#
+# Tout caractère non précisément défini sera considéré comme caractère spécial
+# et considéré uniquement au dernier niveau.
+#
+# Any character not precisely specified will be considered as a special
+# character and considered only at the last level.
+# <U0000>......<U7FFFFFFF> IGNORE;IGNORE;IGNORE;<U0000>......<U7FFFFFFF>
+#
+# SYMB. N° GLY
+#
+<U0020> IGNORE;IGNORE;IGNORE;<U0020> # 32 <SP>
+<U005F> IGNORE;IGNORE;IGNORE;<U005F> # 33 _
+<U0332> IGNORE;IGNORE;IGNORE;<U0332> # 34 <"_>
+<U00AF> IGNORE;IGNORE;IGNORE;<U00AF> # 35 - (MACRON)
+<U00AD> IGNORE;IGNORE;IGNORE;<U00AD> # 36 <SHY>
+<U002D> IGNORE;IGNORE;IGNORE;<U002D> # 37 -
+<U002C> IGNORE;IGNORE;IGNORE;<U002C> # 38 ,
+<U003B> IGNORE;IGNORE;IGNORE;<U003B> # 39 ;
+<U003A> IGNORE;IGNORE;IGNORE;<U003A> # 40 :
+<U0021> IGNORE;IGNORE;IGNORE;<U0021> # 41 !
+<U00A1> IGNORE;IGNORE;IGNORE;<U00A1> # 42 ¡
+<U003F> IGNORE;IGNORE;IGNORE;<U003F> # 43 ?
+<U00BF> IGNORE;IGNORE;IGNORE;<U00BF> # 44 ¿
+<U002F> IGNORE;IGNORE;IGNORE;<U002F> # 45 /
+<U0338> IGNORE;IGNORE;IGNORE;<U0338> # 46 <"/>
+<U002E> IGNORE;IGNORE;IGNORE;<U002E> # 47 .
+<U00B7> IGNORE;IGNORE;IGNORE;<U00B7> # 58 ×
+<U00B8> IGNORE;IGNORE;IGNORE;<U00B8> # 59 ¸
+<U0328> IGNORE;IGNORE;IGNORE;<U0328> # 60 <";>
+<U0027> IGNORE;IGNORE;IGNORE;<U0027> # 61 '
+<U2018> IGNORE;IGNORE;IGNORE;<U2018> # 62 <'6>
+<U2019> IGNORE;IGNORE;IGNORE;<U2019> # 63 <'9>
+<U0022> IGNORE;IGNORE;IGNORE;<U0022> # 64 "
+<U201C> IGNORE;IGNORE;IGNORE;<U201C> # 65 <"6>
+<U201D> IGNORE;IGNORE;IGNORE;<U201D> # 66 <"9>
+<U00AB> IGNORE;IGNORE;IGNORE;<U00AB> # 67 «
+<U00BB> IGNORE;IGNORE;IGNORE;<U00BB> # 68 »
+<U0028> IGNORE;IGNORE;IGNORE;<U0028> # 69 (
+<U207D> IGNORE;IGNORE;IGNORE;<U207D> # 70 <(S>
+<U0029> IGNORE;IGNORE;IGNORE;<U0029> # 71 )
+<U207E> IGNORE;IGNORE;IGNORE;<U207E> # 72 <)S>
+<U005B> IGNORE;IGNORE;IGNORE;<U005B> # 73 [
+<U005D> IGNORE;IGNORE;IGNORE;<U005D> # 74 ]
+<U007B> IGNORE;IGNORE;IGNORE;<U007B> # 75 {
+<U007D> IGNORE;IGNORE;IGNORE;<U007D> # 76 }
+<U00A7> IGNORE;IGNORE;IGNORE;<U00A7> # 77 §
+<U00B6> IGNORE;IGNORE;IGNORE;<U00B6> # 78 ¶
+<U00A9> IGNORE;IGNORE;IGNORE;<U00A9> # 79 ©
+<U00AE> IGNORE;IGNORE;IGNORE;<U00AE> # 80 ®
+<U2122> IGNORE;IGNORE;IGNORE;<U2122> # 81 <TM>
+<U0040> IGNORE;IGNORE;IGNORE;<U0040> # 82 @
+<U00A4> IGNORE;IGNORE;IGNORE;<U00A4> # 83 ¤
+<U00A2> IGNORE;IGNORE;IGNORE;<U00A2> # 84 ¢
+<U0024> IGNORE;IGNORE;IGNORE;<U0024> # 85 $
+<U00A3> IGNORE;IGNORE;IGNORE;<U00A3> # 86 £
+<U00A5> IGNORE;IGNORE;IGNORE;<U00A5> # 87 ¥
+<U20A0> IGNORE;IGNORE;IGNORE;<U20A0> # ecu
+<U20A1> IGNORE;IGNORE;IGNORE;<U20A1> # colon
+<U20A2> IGNORE;IGNORE;IGNORE;<U20A2> # cruzeiro
+<U20A3> IGNORE;IGNORE;IGNORE;<U20A3> # french franc
+<U20A4> IGNORE;IGNORE;IGNORE;<U20A4> # lira
+<U20A5> IGNORE;IGNORE;IGNORE;<U20A5> # mill
+<U20A6> IGNORE;IGNORE;IGNORE;<U20A6> # naira
+<U20A7> IGNORE;IGNORE;IGNORE;<U20A7> # peseta
+<U20A8> IGNORE;IGNORE;IGNORE;<U20A8> # rupee
+<U20A9> IGNORE;IGNORE;IGNORE;<U20A9> # won
+<U20AA> IGNORE;IGNORE;IGNORE;<U20AA> # new sheqel
+<U20AB> IGNORE;IGNORE;IGNORE;<U20AB> # dong
+<U20AC> IGNORE;IGNORE;IGNORE;<U20AC> # euro
+<U20AD> IGNORE;IGNORE;IGNORE;<U20AD> # kip
+<U20AE> IGNORE;IGNORE;IGNORE;<U20AE> # tugrik
+<U20AF> IGNORE;IGNORE;IGNORE;<U20AF> # drachma
+<U002A> IGNORE;IGNORE;IGNORE;<U002A> # 88 *
+<U005C> IGNORE;IGNORE;IGNORE;<U005C> # 89
+<U0026> IGNORE;IGNORE;IGNORE;<U0026> # 90 &
+<U0023> IGNORE;IGNORE;IGNORE;<U0023> # 91 #
+<U0025> IGNORE;IGNORE;IGNORE;<U0025> # 92 %
+<U207B> IGNORE;IGNORE;IGNORE;<U207D> # 93 <-S>
+<U002B> IGNORE;IGNORE;IGNORE;<U002B> # 94 +
+<U207A> IGNORE;IGNORE;IGNORE;<U207E> # 95 <+S>
+<U00B1> IGNORE;IGNORE;IGNORE;<U00B1> # 96 ±
+<U00B4> IGNORE;IGNORE;IGNORE;<0> # 123 ´
+<U0060> IGNORE;IGNORE;IGNORE;<1> # 124 `
+<U0306> IGNORE;IGNORE;IGNORE;<2> # 125 <"(>
+<U005E> IGNORE;IGNORE;IGNORE;<3> # 126 ^
+<U030C> IGNORE;IGNORE;IGNORE;<4> # 127 <"<>
+<U030A> IGNORE;IGNORE;IGNORE;<5> # 128 <"0>
+<U00A8> IGNORE;IGNORE;IGNORE;<6> # 129 ¨
+<U030B> IGNORE;IGNORE;IGNORE;<7> # 130 <"">
+<U007E> IGNORE;IGNORE;IGNORE;<8> # 131 ~
+<U0307> IGNORE;IGNORE;IGNORE;<9> # 132 <".>
+<U00F7> IGNORE;IGNORE;IGNORE;<a> # 133 ¸
+<U00D7> IGNORE;IGNORE;IGNORE;<b> # 134 ´
+<U2260> IGNORE;IGNORE;IGNORE;<c> # 135 <!=>
+<U003C> IGNORE;IGNORE;IGNORE;<d> # 136 <
+<U2264> IGNORE;IGNORE;IGNORE;<e> # 137 <=<>
+<U003D> IGNORE;IGNORE;IGNORE;<f> # 138 =
+<U2265> IGNORE;IGNORE;IGNORE;<g> # 139 </>=>
+<U003E> IGNORE;IGNORE;IGNORE;<h> # 140 >
+<U00AC> IGNORE;IGNORE;IGNORE;<i> # 141 ¬
+<U007C> IGNORE;IGNORE;IGNORE;<j> # 142 |
+<U00A6> IGNORE;IGNORE;IGNORE;<k> # 143 |
+<U00B0> IGNORE;IGNORE;IGNORE;<l> # 144 °
+<U00B5> IGNORE;IGNORE;IGNORE;<m> # 145 m
+<U2126> IGNORE;IGNORE;IGNORE;<n> # 146 <Om>
+<U220E> IGNORE;IGNORE;IGNORE;<o> # 147 <FP>
+<U250C> IGNORE;IGNORE;IGNORE;<p> # 148 <_V/>>
+<U252C> IGNORE;IGNORE;IGNORE;<q> # 149 <_V->
+<U2510> IGNORE;IGNORE;IGNORE;<r> # 150 <_V<w>
+<U251C> IGNORE;IGNORE;IGNORE;<s> # 151 <_!/>>
+<U253C> IGNORE;IGNORE;IGNORE;<t> # 152 <_!->
+<U2524> IGNORE;IGNORE;IGNORE;<u> # 153 <_!<>
+<U2514> IGNORE;IGNORE;IGNORE;<v> # 154 <_A/>>
+<U2534> IGNORE;IGNORE;IGNORE;<w> # 155 <_-A>
+<U2518> IGNORE;IGNORE;IGNORE;<x> # 156 <_A<>
+<U2502> IGNORE;IGNORE;IGNORE;<y> # 157 <_!>
+<U2500> IGNORE;IGNORE;IGNORE;<z> # 158 <_-> #
+<U2501> IGNORE;IGNORE;IGNORE;<U2501> # 159 <_=>
+<U2190> IGNORE;IGNORE;IGNORE;<U2190> # 160 <<->
+<U2192> IGNORE;IGNORE;IGNORE;<U2192> # 161 <-/>>
+<U20D1> IGNORE;IGNORE;IGNORE;<U20D1> # 162 <"7>
+<U2191> IGNORE;IGNORE;IGNORE;<U2191> # 163 <-!>
+<U2193> IGNORE;IGNORE;IGNORE;<U2193> # 164 <-v>
+<U266A> IGNORE;IGNORE;IGNORE;<U266A> # 165 <_d!>
+<U2571> IGNORE;IGNORE;IGNORE;<U2571> # 166 <_/>//>
+<U2572> IGNORE;IGNORE;IGNORE;<U2572> # 167 <_<\>
+<U25E2> IGNORE;IGNORE;IGNORE;<U25E2> # 168 <_./>//>
+<U25E3> IGNORE;IGNORE;IGNORE;<U25E3> # 169 <_.<\> # # <ARABINT>/<ARABFOR> #
+<U060C> IGNORE;IGNORE;IGNORE;<U060C>
+<U061B> IGNORE;IGNORE;IGNORE;<U061B>
+<U061F> IGNORE;IGNORE;IGNORE;<U061F>
+<U0640> IGNORE;IGNORE;IGNORE;<U0640>
+<U066A> IGNORE;IGNORE;IGNORE;<U066A>
+<U066B> IGNORE;IGNORE;IGNORE;<U066B>
+<U066C> IGNORE;IGNORE;IGNORE;<U066C>
+<U066D> IGNORE;IGNORE;IGNORE;<U066D>
+<U064B> IGNORE;IGNORE;IGNORE;<U064B> #<fathatan_no>
+<UFE70> IGNORE;IGNORE;IGNORE;<UFE70> #<fathatan_is>
+<UFE71> IGNORE;IGNORE;IGNORE;<UFE71> #<fathatan_me>
+<U064C> IGNORE;IGNORE;IGNORE;<U064C> #<dammatan_no>
+<UFE72> IGNORE;IGNORE;IGNORE;<UFE72> #<dammatan_is>
+<U064D> IGNORE;IGNORE;IGNORE;<U064D> #<kasratan_no>
+<UFE74> IGNORE;IGNORE;IGNORE;<UFE74> #<kasratan_is>
+<U064E> IGNORE;IGNORE;IGNORE;<U064E> #<fatha_no>
+<UFE76> IGNORE;IGNORE;IGNORE;<UFE76> #<fatha_is>
+<UFE77> IGNORE;IGNORE;IGNORE;<UFE77> #<fatha_me>
+<U064F> IGNORE;IGNORE;IGNORE;<U064F> #<damma_no>
+<UFE78> IGNORE;IGNORE;IGNORE;<UFE78> #<damma_is>
+<UFE79> IGNORE;IGNORE;IGNORE;<UFE79> #<damma_me>
+<U0650> IGNORE;IGNORE;IGNORE;<U0650> #<kasra_no>
+<UFE7A> IGNORE;IGNORE;IGNORE;<UFE7A> #<kasra_is>
+<UFE7B> IGNORE;IGNORE;IGNORE;<UFE7B> #<kasra_me>
+<U0651> IGNORE;IGNORE;IGNORE;<U0651> #<shadda_no>
+<UFE7C> IGNORE;IGNORE;IGNORE;<UFE7C> #<shadda_is>
+<UFE7D> IGNORE;IGNORE;IGNORE;<UFE7D> #<shadda_me>
+<U0652> IGNORE;IGNORE;IGNORE;<U0652> #<sukun_no>
+<UFE7E> IGNORE;IGNORE;IGNORE;<UFE7E> #<sukun_is>
+<UFE7F> IGNORE;IGNORE;IGNORE;<UFE7F> #<sukun_me> # # <HEBREU> #
+<U05B0> IGNORE;IGNORE;IGNORE;<U05B0> #point_sheva
+<U05B1> IGNORE;IGNORE;IGNORE;<U05B1> #point_hataf_segol
+<U05B2> IGNORE;IGNORE;IGNORE;<U05B2> #point_hataf_patah
+<U05B3> IGNORE;IGNORE;IGNORE;<U05B3> #point_hataf_qamats
+<U05B4> IGNORE;IGNORE;IGNORE;<U05B4> #point_hiriq
+<U05B5> IGNORE;IGNORE;IGNORE;<U05B5> #point_tsere
+<U05B6> IGNORE;IGNORE;IGNORE;<U05B6> #point_segol
+<U05B7> IGNORE;IGNORE;IGNORE;<U05B7> #point_patah
+<U05B8> IGNORE;IGNORE;IGNORE;<U05B8> #point_qamats
+<U05B9> IGNORE;IGNORE;IGNORE;<U05B9> #point_holam
+<U05BB> IGNORE;IGNORE;IGNORE;<U05BB> #point_qubuts
+<U05BC> IGNORE;IGNORE;IGNORE;<U05BC> #point_dagesh
+<U05BD> IGNORE;IGNORE;IGNORE;<U05BD> #point_meteg
+<U05BE> IGNORE;IGNORE;IGNORE;<U05BE> #maqaf
+<U05BF> IGNORE;IGNORE;IGNORE;<U05BF> #point_rafe
+<U05C0> IGNORE;IGNORE;IGNORE;<U05C0> #paseq
+<U05C1> IGNORE;IGNORE;IGNORE;<U05C1> #point_shin_dot
+<U05C2> IGNORE;IGNORE;IGNORE;<U05C2> #point_sin_dot
+<U05C3> IGNORE;IGNORE;IGNORE;<U05C3> #sof pasuq
+
+# The comment at the beginning of this section mentions characters which
+# are not otherwise covered. But this description cannot express this.
+# Therefore we add here a few entries which are used in older implementations
+# to be compatible. --drepper
+<U0001> IGNORE;IGNORE;IGNORE;<U0001>
+<U0002> IGNORE;IGNORE;IGNORE;<U0002>
+<U0003> IGNORE;IGNORE;IGNORE;<U0003>
+<U0004> IGNORE;IGNORE;IGNORE;<U0004>
+<U0005> IGNORE;IGNORE;IGNORE;<U0005>
+<U0006> IGNORE;IGNORE;IGNORE;<U0006>
+<U0007> IGNORE;IGNORE;IGNORE;<U0007>
+<U0008> IGNORE;IGNORE;IGNORE;<U0008>
+<U0009> IGNORE;IGNORE;IGNORE;<U0009>
+<U000A> IGNORE;IGNORE;IGNORE;<U000A>
+<U000B> IGNORE;IGNORE;IGNORE;<U000B>
+<U000C> IGNORE;IGNORE;IGNORE;<U000C>
+<U000D> IGNORE;IGNORE;IGNORE;<U000D>
+<U000E> IGNORE;IGNORE;IGNORE;<U000E>
+<U000F> IGNORE;IGNORE;IGNORE;<U000F>
+<U0010> IGNORE;IGNORE;IGNORE;<U0010>
+<U0011> IGNORE;IGNORE;IGNORE;<U0011>
+<U0012> IGNORE;IGNORE;IGNORE;<U0012>
+<U0013> IGNORE;IGNORE;IGNORE;<U0013>
+<U0014> IGNORE;IGNORE;IGNORE;<U0014>
+<U0015> IGNORE;IGNORE;IGNORE;<U0015>
+<U0016> IGNORE;IGNORE;IGNORE;<U0016>
+<U0017> IGNORE;IGNORE;IGNORE;<U0017>
+<U0018> IGNORE;IGNORE;IGNORE;<U0018>
+<U0019> IGNORE;IGNORE;IGNORE;<U0019>
+<U001A> IGNORE;IGNORE;IGNORE;<U001A>
+<U001B> IGNORE;IGNORE;IGNORE;<U001B>
+<U001C> IGNORE;IGNORE;IGNORE;<U001C>
+<U001D> IGNORE;IGNORE;IGNORE;<U001D>
+<U001E> IGNORE;IGNORE;IGNORE;<U001E>
+<U001F> IGNORE;IGNORE;IGNORE;<U001F>
+<U007F> IGNORE;IGNORE;IGNORE;<U007F>
+<U0080> IGNORE;IGNORE;IGNORE;<U0080>
+<U0081> IGNORE;IGNORE;IGNORE;<U0081>
+<U0082> IGNORE;IGNORE;IGNORE;<U0082>
+<U0083> IGNORE;IGNORE;IGNORE;<U0083>
+<U0084> IGNORE;IGNORE;IGNORE;<U0084>
+<U0085> IGNORE;IGNORE;IGNORE;<U0085>
+<U0086> IGNORE;IGNORE;IGNORE;<U0086>
+<U0087> IGNORE;IGNORE;IGNORE;<U0087>
+<U0088> IGNORE;IGNORE;IGNORE;<U0088>
+<U0089> IGNORE;IGNORE;IGNORE;<U0089>
+<U008A> IGNORE;IGNORE;IGNORE;<U008A>
+<U008B> IGNORE;IGNORE;IGNORE;<U008B>
+<U008C> IGNORE;IGNORE;IGNORE;<U008C>
+<U008D> IGNORE;IGNORE;IGNORE;<U008D>
+<U008E> IGNORE;IGNORE;IGNORE;<U008E>
+<U008F> IGNORE;IGNORE;IGNORE;<U008F>
+<U0090> IGNORE;IGNORE;IGNORE;<U0090>
+<U0091> IGNORE;IGNORE;IGNORE;<U0091>
+<U0092> IGNORE;IGNORE;IGNORE;<U0092>
+<U0093> IGNORE;IGNORE;IGNORE;<U0093>
+<U0094> IGNORE;IGNORE;IGNORE;<U0094>
+<U0095> IGNORE;IGNORE;IGNORE;<U0095>
+<U0096> IGNORE;IGNORE;IGNORE;<U0096>
+<U0097> IGNORE;IGNORE;IGNORE;<U0097>
+<U0098> IGNORE;IGNORE;IGNORE;<U0098>
+<U0099> IGNORE;IGNORE;IGNORE;<U0099>
+<U009A> IGNORE;IGNORE;IGNORE;<U009A>
+<U009B> IGNORE;IGNORE;IGNORE;<U009B>
+<U009C> IGNORE;IGNORE;IGNORE;<U009C>
+<U009D> IGNORE;IGNORE;IGNORE;<U009D>
+<U009E> IGNORE;IGNORE;IGNORE;<U009E>
+<U009F> IGNORE;IGNORE;IGNORE;<U009F>
+
+order_start <LATIN>;forward;backward;forward;forward,position
+#
+<U00A0> <U0020>;<BAS>;<MIN>;IGNORE # 170<NBSP>
+#
+<U0030> <0>;<BAS>;<MIN>;IGNORE # 171 0
+<U0031> <1>;<BAS>;<MIN>;IGNORE # 172 1
+<U0032> <2>;<BAS>;<MIN>;IGNORE # 173 2
+<U0033> <3>;<BAS>;<MIN>;IGNORE # 174 3
+<U0034> <4>;<BAS>;<MIN>;IGNORE # 175 4
+<U0035> <5>;<BAS>;<MIN>;IGNORE # 176 5
+<U0036> <6>;<BAS>;<MIN>;IGNORE # 177 6
+<U0037> <7>;<BAS>;<MIN>;IGNORE # 178 7
+<U0038> <8>;<BAS>;<MIN>;IGNORE # 179 8
+<U0039> <9>;<BAS>;<MIN>;IGNORE # 180 9
+#
+<U215B> <0>;<GRA>;<MIN>;IGNORE # 181 <18>
+<U00BC> <0>;<BRE>;<MIN>;IGNORE # 182 ¼
+<U215C> <0>;<CIR>;<MIN>;IGNORE # 183 <38>
+<U215D> <0>;<RNE>;<MIN>;IGNORE # 184 <58>
+<U215E> <0>;<DAC>;<MIN>;IGNORE # 185 <78>
+<U00BD> <0>;<CAR>;<MIN>;IGNORE # 186 ½
+<U00BE> <0>;<REU>;<MIN>;IGNORE # 187 ¾
+<U2070> <0>;<BAS>;<EMI>;IGNORE # 188 <0S>
+<U00B9> <1>;<BAS>;<EMI>;IGNORE # 189 ¹
+<U00B2> <2>;<BAS>;<EMI>;IGNORE # 190 ²
+<U00B3> <3>;<BAS>;<EMI>;IGNORE # 191 ³
+<U2074> <4>;<BAS>;<EMI>;IGNORE # 192 <4S>
+<U2075> <5>;<BAS>;<EMI>;IGNORE # 193 <5S>
+<U2076> <6>;<BAS>;<EMI>;IGNORE # 194 <6S>
+<U2077> <7>;<BAS>;<EMI>;IGNORE # 195 <7S>
+<U2078> <8>;<BAS>;<EMI>;IGNORE # 196 <8S>
+<U2079> <9>;<BAS>;<EMI>;IGNORE # 197 <9S>
+#
+<U0061> <a>;<BAS>;<MIN>;IGNORE # 198 a
+<U00AA> <a>;<PCL>;<EMI>;IGNORE # 199 ª
+<U00E1> <a>;<ACA>;<MIN>;IGNORE # 200 á
+<U00E0> <a>;<GRA>;<MIN>;IGNORE # 201 à
+<U00E2> <a>;<CIR>;<MIN>;IGNORE # 202 â
+<U00E3> <a>;<TIL>;<MIN>;IGNORE # 203 ã
+<U00E4> <a>;<REU>;<MIN>;IGNORE # 204 ä
+<U00E5> <a>;<RNE>;<MIN>;IGNORE # 205 å
+<U0103> <a>;<BRE>;<MIN>;IGNORE # 206 <a(>
+<U0105> <a>;<OGO>;<MIN>;IGNORE # 207 <a;>
+<U0101> <a>;<MAC>;<MIN>;IGNORE # 208 <a->
+<U00E6> "<a><e>";"<LIG><LIG>";"<MIN><MIN>";IGNORE # 209 æ
+<U0062> <b>;<BAS>;<MIN>;IGNORE # 210 b
+<U0063> <c>;<BAS>;<MIN>;IGNORE # 211 c
+<U00E7> <c>;<CDI>;<MIN>;IGNORE # 212 ç
+<U0107> <c>;<ACA>;<MIN>;IGNORE # 213 <c'>
+<U0109> <c>;<CIR>;<MIN>;IGNORE # 214 <c/>>
+<U010D> <c>;<CAR>;<MIN>;IGNORE # 215 <c<>
+<U010B> <c>;<PCT>;<MIN>;IGNORE # 216 <c.>
+<U0064> <d>;<BAS>;<MIN>;IGNORE # 217 d
+<U00F0> <d>;<PCL>;<MIN>;IGNORE # 218 ð
+<U010F> <d>;<CAR>;<MIN>;IGNORE # 219 <d<>
+<U0111> <d>;<OBL>;<MIN>;IGNORE # 220 <d//>
+<U0065> <e>;<BAS>;<MIN>;IGNORE # 221 e
+<U00E9> <e>;<ACA>;<MIN>;IGNORE # 222 é
+<U00E8> <e>;<GRA>;<MIN>;IGNORE # 223 è
+<U00EA> <e>;<CIR>;<MIN>;IGNORE # 224 ê
+<U00EB> <e>;<REU>;<MIN>;IGNORE # 225 ë
+<U011B> <e>;<CAR>;<MIN>;IGNORE # 226 <e<>
+<U0117> <e>;<PCT>;<MIN>;IGNORE # 227 <e.>
+<U0119> <e>;<OGO>;<MIN>;IGNORE # 228 <e;>
+<U0113> <e>;<MAC>;<MIN>;IGNORE # 229 <e->
+<U0066> <f>;<BAS>;<MIN>;IGNORE # 230 f
+<U0067> <g>;<BAS>;<MIN>;IGNORE # 231 g
+<U011F> <g>;<BRE>;<MIN>;IGNORE # 232 <g(>
+<U011D> <g>;<CIR>;<MIN>;IGNORE # 233 <g/>>
+<U0121> <g>;<PCT>;<MIN>;IGNORE # 234 <g.>
+<U0123> <g>;<CDI>;<MIN>;IGNORE # 235 <g,>
+<U0068> <h>;<BAS>;<MIN>;IGNORE # 236 h
+<U0125> <h>;<CIR>;<MIN>;IGNORE # 237 <h/>>
+<U0127> <h>;<OBL>;<MIN>;IGNORE # 238 <h//>
+<U0069> <i>;<BAS>;<MIN>;IGNORE # 239 i
+<U00ED> <i>;<ACA>;<MIN>;IGNORE # 240 í
+<U00EC> <i>;<GRA>;<MIN>;IGNORE # 241 ì
+<U00EE> <i>;<CIR>;<MIN>;IGNORE # 242 î
+<U00EF> <i>;<REU>;<MIN>;IGNORE # 243 ï
+<U0131> <i>;<PCL>;<MIN>;IGNORE # 244 <i.>
+<U0129> <i>;<TIL>;<MIN>;IGNORE # 245 <i?>
+<U012F> <i>;<OGO>;<MIN>;IGNORE # 246 <i;>
+<U012B> <i>;<MAC>;<MIN>;IGNORE # 247 <i->
+<U0133> "<i><j>";"<LIG><LIG>";"<MIN><MIN>";IGNORE # 248 <ij>
+<U006A> <j>;<BAS>;<MIN>;IGNORE # 249 j
+<U0135> <j>;<CIR>;<MIN>;IGNORE # 250 <j/>>
+<U006B> <k>;<BAS>;<MIN>;IGNORE # 251 k
+<U0138> <k>;<PCL>;<MIN>;IGNORE # 252 <kk>
+<U0137> <k>;<CDI>;<MIN>;IGNORE # 253 <k,>
+<U006C> <l>;<BAS>;<MIN>;IGNORE # 254 l
+<U013A> <l>;<ACA>;<MIN>;IGNORE # 255 <l'>
+<U013E> <l>;<CAR>;<MIN>;IGNORE # 256 <l<>
+<U0142> <l>;<OBL>;<MIN>;IGNORE # 257 <l//>
+<U013C> <l>;<CDI>;<MIN>;IGNORE # 258 <l,>
+<U0140> <l>;<PCT>;<MIN>;IGNORE # 259 <l.>
+<U006D> <m>;<BAS>;<MIN>;IGNORE # 260 m
+<U006E> <n>;<BAS>;<MIN>;IGNORE # 261 n
+<U00F1> <n>;<TIL>;<MIN>;IGNORE # 262 ñ
+<U0149> <n>;<PCL>;<MIN>;IGNORE # 263 <'n>
+<U0144> <n>;<ACA>;<MIN>;IGNORE # 264 <n'>
+<U0148> <n>;<CAR>;<MIN>;IGNORE # 265 <n<>
+<U0146> <n>;<CDI>;<MIN>;IGNORE # 266 <n,>
+<U014B> "<n><g>";"<LIG><LIG>";"<MIN><MIN>";IGNORE # 267 <ng>
+<U006F> <o>;<BAS>;<MIN>;IGNORE # 268 o
+<U00BA> <o>;<PCL>;<EMI>;IGNORE # 269 º
+<U00F3> <o>;<ACA>;<MIN>;IGNORE # 270 ó
+<U00F2> <o>;<GRA>;<MIN>;IGNORE # 271 ò
+<U00F4> <o>;<CIR>;<MIN>;IGNORE # 272 ô
+<U00F5> <o>;<TIL>;<MIN>;IGNORE # 273 õ
+<U00F6> <o>;<REU>;<MIN>;IGNORE # 274 ö
+<U00F8> <o>;<OBL>;<MIN>;IGNORE # 275 ø
+<U0151> <o>;<DAC>;<MIN>;IGNORE # 276 <o">
+<U014D> <o>;<MAC>;<MIN>;IGNORE # 277 <o->
+<U0153> "<o><e>";"<LIG><LIG>";"<MIN><MIN>";IGNORE # 278 <oe>
+<U0070> <p>;<BAS>;<MIN>;IGNORE # 279 p
+<U0071> <q>;<BAS>;<MIN>;IGNORE # 280 q
+<U0072> <r>;<BAS>;<MIN>;IGNORE # 281 r
+<U0155> <r>;<ACA>;<MIN>;IGNORE # 282 <r'>
+<U0159> <r>;<CAR>;<MIN>;IGNORE # 283 <r<>
+<U0157> <r>;<CDI>;<MIN>;IGNORE # 284 <r,>
+<U0073> <s>;<BAS>;<MIN>;IGNORE # 285 s
+<U015B> <s>;<ACA>;<MIN>;IGNORE # 286 <s'>
+<U015D> <s>;<CIR>;<MIN>;IGNORE # 287 <s/>>
+<U0161> <s>;<CAR>;<MIN>;IGNORE # 288 <s<>
+<U015F> <s>;<CDI>;<MIN>;IGNORE # 289 <s,>
+<U00DF> "<s><s>";"<LIG><LIG>";"<MIN><MIN>";IGNORE # 290 ß
+<U0074> <t>;<BAS>;<MIN>;IGNORE # 291 t
+<U0165> <t>;<CAR>;<MIN>;IGNORE # 292 <t<>
+<U0167> <t>;<OBL>;<MIN>;IGNORE # 293 <t//>
+<U0163> <t>;<CDI>;<MIN>;IGNORE # 294 <t,>
+<U0075> <u>;<BAS>;<MIN>;IGNORE # 296 u
+<U00FA> <u>;<ACA>;<MIN>;IGNORE # 297 ú
+<U00F9> <u>;<GRA>;<MIN>;IGNORE # 298 ù
+<U00FB> <u>;<CIR>;<MIN>;IGNORE # 299 û
+<U00FC> <u>;<REU>;<MIN>;IGNORE # 300 ü
+<U016D> <u>;<BRE>;<MIN>;IGNORE # 301 <u(>
+<U016F> <u>;<RNE>;<MIN>;IGNORE # 302 <u0>
+<U0171> <u>;<DAC>;<MIN>;IGNORE # 303 <u">
+<U0169> <u>;<TIL>;<MIN>;IGNORE # 304 <u?>
+<U0173> <u>;<OGO>;<MIN>;IGNORE # 305 <u;>
+<U016B> <u>;<MAC>;<MIN>;IGNORE # 306 <u->
+<U0076> <v>;<BAS>;<MIN>;IGNORE # 307 v
+<U0077> <w>;<BAS>;<MIN>;IGNORE # 308 w
+<U0175> <w>;<CIR>;<MIN>;IGNORE # 309 <w/>>
+<U0078> <x>;<BAS>;<MIN>;IGNORE # 310 x
+<U0079> <y>;<BAS>;<MIN>;IGNORE # 311 y
+<U00FD> <y>;<ACA>;<MIN>;IGNORE # 312 ý
+<U00FF> <y>;<REU>;<MIN>;IGNORE # 313 _
+<U0177> <y>;<CIR>;<MIN>;IGNORE # 314 <y/>>
+<U007A> <z>;<BAS>;<MIN>;IGNORE # 315 z
+<U017A> <z>;<ACA>;<MIN>;IGNORE # 316 <z'>
+<U017E> <z>;<CAR>;<MIN>;IGNORE # 317 <z<>
+<U017C> <z>;<PCT>;<MIN>;IGNORE # 318 <z.>
+<U00FE> <th>;<BAS>;<MIN>;IGNORE # 318b Þ #
+<U0041> <a>;<BAS>;<CAP>;IGNORE # 319 A
+<U00C1> <a>;<ACA>;<CAP>;IGNORE # 320 Á
+<U00C0> <a>;<GRA>;<CAP>;IGNORE # 321 À
+<U00C2> <a>;<CIR>;<CAP>;IGNORE # 322 Â
+<U00C3> <a>;<TIL>;<CAP>;IGNORE # 323 Ã
+<U00C4> <a>;<REU>;<CAP>;IGNORE # 324 Ä
+<U00C5> <a>;<RNE>;<CAP>;IGNORE # 325 Å
+<U0102> <a>;<BRE>;<CAP>;IGNORE # 326 <A(>
+<U0104> <a>;<OGO>;<CAP>;IGNORE # 327 <A;>
+<U0100> <a>;<MAC>;<CAP>;IGNORE # 328 <A->
+<U00C6> "<a><e>";"<LIG><LIG>";"<CAP><CAP>";IGNORE # 329 Æ
+<U0042> <b>;<BAS>;<CAP>;IGNORE # 330 B
+<U0043> <c>;<BAS>;<CAP>;IGNORE # 331 C
+<U00C7> <c>;<CDI>;<CAP>;IGNORE # 332 Ç
+<U0106> <c>;<ACA>;<CAP>;IGNORE # 333 <C'>
+<U0108> <c>;<CIR>;<CAP>;IGNORE # 334 <C/>>
+<U010C> <c>;<CAR>;<CAP>;IGNORE # 335 <C>>
+<U010A> <c>;<PCT>;<CAP>;IGNORE # 336 <C.>
+<U0044> <d>;<BAS>;<CAP>;IGNORE # 337 D
+<U00D0> <d>;<PCL>;<CAP>;IGNORE # 338 Ð
+<U010E> <d>;<CAR>;<CAP>;IGNORE # 339 <D<>
+<U0110> <d>;<OBL>;<CAP>;IGNORE # 340 <D//>
+<U0045> <e>;<BAS>;<CAP>;IGNORE # 341 E
+<U00C9> <e>;<ACA>;<CAP>;IGNORE # 342 É
+<U00C8> <e>;<GRA>;<CAP>;IGNORE # 343 È
+<U00CA> <e>;<CIR>;<CAP>;IGNORE # 344 Ê
+<U00CB> <e>;<REU>;<CAP>;IGNORE # 345 Ë
+<U011A> <e>;<CAR>;<CAP>;IGNORE # 346 <E<>
+<U0116> <e>;<PCT>;<CAP>;IGNORE # 347 <E.>
+<U0118> <e>;<OGO>;<CAP>;IGNORE # 348 <E;>
+<U0112> <e>;<MAC>;<CAP>;IGNORE # 349 <E->
+<U0046> <f>;<BAS>;<CAP>;IGNORE # 350 F
+<U0047> <g>;<BAS>;<CAP>;IGNORE # 351 G
+<U011E> <g>;<BRE>;<CAP>;IGNORE # 352 <G(>
+<U011C> <g>;<CIR>;<CAP>;IGNORE # 353 <G/>>
+<U0120> <g>;<PCT>;<CAP>;IGNORE # 354 <G.>
+<U0122> <g>;<CDI>;<CAP>;IGNORE # 355 <G,>
+<U0048> <h>;<BAS>;<CAP>;IGNORE # 356 H
+<U0124> <h>;<CIR>;<CAP>;IGNORE # 357 <H/>>
+<U0126> <h>;<OBL>;<CAP>;IGNORE # 358 <H//>
+<U0049> <i>;<BAS>;<CAP>;IGNORE # 359 I
+<U00CD> <i>;<ACA>;<CAP>;IGNORE # 360 Í
+<U00CC> <i>;<GRA>;<CAP>;IGNORE # 361 Ì
+<U00CE> <i>;<CIR>;<CAP>;IGNORE # 362 Î
+<U00CF> <i>;<REU>;<CAP>;IGNORE # 363 Ï
+<U0130> <i>;<PCL>;<CAP>;IGNORE # 364 <I.>
+<U0128> <i>;<TIL>;<CAP>;IGNORE # 365 <I?>
+<U012E> <i>;<OGO>;<CAP>;IGNORE # 366 <I;>
+<U012A> <i>;<MAC>;<CAP>;IGNORE # 367 <I->
+<U0132> "<i><j>";"<LIG><LIG>";"<CAP><CAP>";IGNORE # 368 <IJ>
+<U004A> <j>;<BAS>;<CAP>;IGNORE # 369 J
+<U0134> <j>;<CIR>;<CAP>;IGNORE # 370 <J/>>
+<U004B> <k>;<BAS>;<CAP>;IGNORE # 371 K
+<U0136> <k>;<CDI>;<CAP>;IGNORE # 372 <K,>
+<U004C> <l>;<BAS>;<CAP>;IGNORE # 373 L
+<U0139> <l>;<ACA>;<CAP>;IGNORE # 374 <L'>
+<U013D> <l>;<CAR>;<CAP>;IGNORE # 375 <L<>
+<U0141> <l>;<OBL>;<CAP>;IGNORE # 376 <L//>
+<U013B> <l>;<CDI>;<CAP>;IGNORE # 377 <L,>
+<U013F> <l>;<PCT>;<CAP>;IGNORE # 378 <L.>
+<U004D> <m>;<BAS>;<CAP>;IGNORE # 379 M
+<U004E> <n>;<BAS>;<CAP>;IGNORE # 380 N
+<U00D1> <n>;<TIL>;<CAP>;IGNORE # 381 Ñ
+<U0143> <n>;<ACA>;<CAP>;IGNORE # 382 <N'>
+<U0147> <n>;<CAR>;<CAP>;IGNORE # 383 <N<>
+<U0145> <n>;<CDI>;<CAP>;IGNORE # 384 <N,>
+<U014A> "<n><g>";"<LIG><LIG>";"<CAP><CAP>";IGNORE # 385 <NG>
+<U004F> <o>;<BAS>;<CAP>;IGNORE # 386 O
+<U00D3> <o>;<ACA>;<CAP>;IGNORE # 387 Ó
+<U00D2> <o>;<GRA>;<CAP>;IGNORE # 388 Ò
+<U00D4> <o>;<CIR>;<CAP>;IGNORE # 389 Ô
+<U00D5> <o>;<TIL>;<CAP>;IGNORE # 390 Õ
+<U00D6> <o>;<REU>;<CAP>;IGNORE # 391 Ö
+<U00D8> <o>;<OBL>;<CAP>;IGNORE # 392 Ø
+<U0150> <o>;<DAC>;<CAP>;IGNORE # 393 <O">
+<U014C> <o>;<MAC>;<CAP>;IGNORE # 394 <O->
+<U0152> "<o><e>";"<LIG><LIG>";"<CAP><CAP>";IGNORE # 395 <OE>
+<U0050> <p>;<BAS>;<CAP>;IGNORE # 396 P
+<U0051> <q>;<BAS>;<CAP>;IGNORE # 397 Q
+<U0052> <r>;<BAS>;<CAP>;IGNORE # 398 R
+<U0154> <r>;<ACA>;<CAP>;IGNORE # 399 <R'>
+<U0158> <r>;<CAR>;<CAP>;IGNORE # 400 <R<>
+<U0156> <r>;<CDI>;<CAP>;IGNORE # 401 <R,>
+<U0053> <s>;<BAS>;<CAP>;IGNORE # 402 S
+<U015A> <s>;<ACA>;<CAP>;IGNORE # 403 <S'>
+<U015C> <s>;<CIR>;<CAP>;IGNORE # 404 <S/>>
+<U0160> <s>;<CAR>;<CAP>;IGNORE # 405 <S<>
+<U015E> <s>;<CDI>;<CAP>;IGNORE # 406 <S,>
+<U0054> <t>;<BAS>;<CAP>;IGNORE # 407 T
+<U0164> <t>;<CAR>;<CAP>;IGNORE # 408 <T<>
+<U0166> <t>;<OBL>;<CAP>;IGNORE # 409 <T//>
+<U0162> <t>;<CDI>;<CAP>;IGNORE # 410 <T,>
+<U0055> <u>;<BAS>;<CAP>;IGNORE # 412 U
+<U00DA> <u>;<ACA>;<CAP>;IGNORE # 413 Ú
+<U00D9> <u>;<GRA>;<CAP>;IGNORE # 414 Ù
+<U00DB> <u>;<CIR>;<CAP>;IGNORE # 415 Û
+<U00DC> <u>;<REU>;<CAP>;IGNORE # 416 Ü
+<U016C> <u>;<BRE>;<CAP>;IGNORE # 417 <U(>
+<U016E> <u>;<RNE>;<CAP>;IGNORE # 418 <U0>
+<U0170> <u>;<DAC>;<CAP>;IGNORE # 419 <U">
+<U0168> <u>;<TIL>;<CAP>;IGNORE # 420 <U?>
+<U0172> <u>;<OGO>;<CAP>;IGNORE # 421 <U;>
+<U016A> <u>;<MAC>;<CAP>;IGNORE # 422 <U->
+<U0056> <v>;<BAS>;<CAP>;IGNORE # 423 V
+<U0057> <w>;<BAS>;<CAP>;IGNORE # 424 W
+<U0174> <w>;<CIR>;<CAP>;IGNORE # 425 <W/>>
+<U0058> <x>;<BAS>;<CAP>;IGNORE # 426 X
+<U0059> <y>;<BAS>;<CAP>;IGNORE # 427 Y
+<U00DD> <y>;<ACA>;<CAP>;IGNORE # 428 Ý
+<U0176> <y>;<CIR>;<CAP>;IGNORE # 429 <Y/>>
+<U0178> <y>;<REU>;<CAP>;IGNORE # 430 <Y:>
+<U005A> <z>;<BAS>;<CAP>;IGNORE # 431 Z
+<U0179> <z>;<ACA>;<CAP>;IGNORE # 432 <Z'>
+<U017D> <z>;<CAR>;<CAP>;IGNORE # 433 <Z<>
+<U017B> <z>;<PCT>;<CAP>;IGNORE # 434 <Z.>
+<U00DE> <th>;<BAS>;<CAP>;IGNORE # 411 þ
+
+order_start <ARABINT>;forward;forward;forward;forward,position
+<U0660> <0>;<BAS>;<MIN>;IGNORE
+<U06F0> <0>;<PCL>;<MIN>;IGNORE
+<U0661> <1>;<BAS>;<MIN>;IGNORE
+<U06F1> <1>;<PCL>;<MIN>;IGNORE
+<U0662> <2>;<BAS>;<MIN>;IGNORE
+<U06F2> <2>;<PCL>;<MIN>;IGNORE
+<U0663> <3>;<BAS>;<MIN>;IGNORE
+<U06F3> <3>;<PCL>;<MIN>;IGNORE
+<U0664> <4>;<BAS>;<MIN>;IGNORE
+<U06F4> <4>;<PCL>;<MIN>;IGNORE
+<U0665> <5>;<BAS>;<MIN>;IGNORE
+<U06F5> <5>;<PCL>;<MIN>;IGNORE
+<U0666> <6>;<BAS>;<MIN>;IGNORE
+<U06F6> <6>;<PCL>;<MIN>;IGNORE
+<U0667> <7>;<BAS>;<MIN>;IGNORE
+<U06F7> <7>;<PCL>;<MIN>;IGNORE
+<U0668> <8>;<BAS>;<MIN>;IGNORE
+<U06F8> <8>;<PCL>;<MIN>;IGNORE
+<U0669> <9>;<BAS>;<MIN>;IGNORE
+<U06F9> <9>;<PCL>;<MIN>;IGNORE
+<U0621> <hamza>;<BAS>;<MIN>;IGNORE
+<U0622> <alef>;<AMA>;<MIN>;IGNORE
+<U0623> <alef>;<AHA>;<MIN>;IGNORE
+<U0625> <alef>;<AHS>;<MIN>;IGNORE
+<U0627> <alef>;<BAS>;<MIN>;IGNORE
+<U0628> <beh>;<BAS>;<MIN>;IGNORE
+<U067E> <peh>;<BAS>;<MIN>;IGNORE
+<U0629> <teh_marbuta>;<BAS>;<MIN>;IGNORE
+<U062A> <teh>;<BAS>;<MIN>;IGNORE
+<U0679> <tteh>;<BAS>;<MIN>;IGNORE
+<U062B> <theh>;<BAS>;<MIN>;IGNORE
+<U062C> <jeem>;<BAS>;<MIN>;IGNORE
+<U0686> <tcheh>;<BAS>;<MIN>;IGNORE
+<U062D> <hah>;<BAS>;<MIN>;IGNORE
+<U062E> <khah>;<BAS>;<MIN>;IGNORE
+<U062F> <dal>;<BAS>;<MIN>;IGNORE
+<U0688> <ddal>;<BAS>;<MIN>;IGNORE
+<U0630> <thal>;<BAS>;<MIN>;IGNORE
+<U0631> <reh>;<BAS>;<MIN>;IGNORE
+<U0691> <rreh>;<BAS>;<MIN>;IGNORE
+<U0632> <zain>;<BAS>;<MIN>;IGNORE
+<U0698> <jeh>;<BAS>;<MIN>;IGNORE
+<U0633> <seen>;<BAS>;<MIN>;IGNORE
+<U0634> <sheen>;<BAS>;<MIN>;IGNORE
+<U0635> <sad>;<BAS>;<MIN>;IGNORE
+<U0636> <dad>;<BAS>;<MIN>;IGNORE
+<U0637> <tah>;<BAS>;<MIN>;IGNORE
+<U0638> <zah>;<BAS>;<MIN>;IGNORE
+<U0639> <ain>;<BAS>;<MIN>;IGNORE
+<U063A> <ghain>;<BAS>;<MIN>;IGNORE
+<U0641> <feh>;<BAS>;<MIN>;IGNORE
+<U0642> <qaf>;<BAS>;<MIN>;IGNORE
+<U0643> <kaf>;<BAS>;<MIN>;IGNORE
+<U06A9> <keheh>;<BAS>;<MIN>;IGNORE
+<U06AF> <gaf>;<BAS>;<MIN>;IGNORE
+<U0644> <lam>;<BAS>;<MIN>;IGNORE
+<U0645> <meem>;<BAS>;<MIN>;IGNORE
+<U0646> <noon>;<BAS>;<MIN>;IGNORE
+<U06BA> <noon_ghunna>;<BAS>;<MIN>;IGNORE
+<U0647> <heh>;<BAS>;<MIN>;IGNORE
+<U06C0> <heh_yeh>;<BAS>;<MIN>;IGNORE
+<U0624> <waw>;<AHW>;<MIN>;IGNORE
+<U0648> <waw>;<BAS>;<MIN>;IGNORE
+<U0649> <alef_maksura>;<BAS>;<MIN>;IGNORE
+<U0626> "<alef_maksura><hamza>";"<BAS><BAS>";"<MIN><MIN>";IGNORE
+<U064A> <alef_maksura>;<AYE>;<MIN>;IGNORE
+<U06D3> <yeh_barree>;<YBA>;<MIN>;IGNORE
+<U06D2> <yeh_barree>;<BAS>;<MIN>;IGNORE
+
+order_start <ARABFOR>;backward;backward;backward;forward,position
+<UFE80> <hamza>;<BAS>;<AIS>;IGNORE
+<UFE81> <alef>;<AMA>;<AIS>;IGNORE
+<UFE82> <alef>;<AMA>;<AFI>;IGNORE
+<UFE83> <alef>;<AHA>;<AIS>;IGNORE
+<UFE84> <alef>;<AHA>;<AFI>;IGNORE
+<UFE87> <alef>;<AHS>;<AIS>;IGNORE
+<UFE88> <alef>;<AHS>;<AFI>;IGNORE
+<UFE8D> <alef>;<BAS>;<AIS>;IGNORE
+<UFE8E> <alef>;<BAS>;<AFI>;IGNORE
+<UFE8F> <beh>;<BAS>;<AIS>;IGNORE
+<UFE90> <beh>;<BAS>;<AFI>;IGNORE
+<UFE91> <beh>;<BAS>;<AII>;IGNORE
+<UFE92> <beh>;<BAS>;<AME>;IGNORE
+<UFB56> <peh>;<BAS>;<AIS>;IGNORE
+<UFB57> <peh>;<BAS>;<AFI>;IGNORE
+<UFB58> <peh>;<BAS>;<AII>;IGNORE
+<UFB59> <peh>;<BAS>;<AME>;IGNORE
+<UFE93> <teh_marbuta>;<BAS>;<AIS>;IGNORE
+<UFE94> <teh_marbuta>;<BAS>;<AFI>;IGNORE
+<UFE95> <teh>;<BAS>;<AIS>;IGNORE
+<UFE96> <teh>;<BAS>;<AFI>;IGNORE
+<UFE97> <teh>;<BAS>;<AII>;IGNORE
+<UFE98> <teh>;<BAS>;<AME>;IGNORE
+<UFB66> <tteh>;<BAS>;<AIS>;IGNORE
+<UFB67> <tteh>;<BAS>;<AFI>;IGNORE
+<UFB68> <tteh>;<BAS>;<AII>;IGNORE
+<UFB69> <tteh>;<BAS>;<AME>;IGNORE
+<UFE99> <theh>;<BAS>;<AIS>;IGNORE
+<UFE9A> <theh>;<BAS>;<AFI>;IGNORE
+<UFE9B> <theh>;<BAS>;<AII>;IGNORE
+<UFE9C> <theh>;<BAS>;<AME>;IGNORE
+<UFE9D> <jeem>;<BAS>;<AIS>;IGNORE
+<UFE9E> <jeem>;<BAS>;<AFI>;IGNORE
+<UFE9F> <jeem>;<BAS>;<AII>;IGNORE
+<UFEA0> <jeem>;<BAS>;<AME>;IGNORE
+<UFB7A> <tcheh>;<BAS>;<AIS>;IGNORE
+<UFB7B> <tcheh>;<BAS>;<AFI>;IGNORE
+<UFB7C> <tcheh>;<BAS>;<AII>;IGNORE
+<UFB7D> <tcheh>;<BAS>;<AME>;IGNORE
+<UFEA1> <hah>;<BAS>;<AIS>;IGNORE
+<UFEA2> <hah>;<BAS>;<AFI>;IGNORE
+<UFEA3> <hah>;<BAS>;<AII>;IGNORE
+<UFEA4> <hah>;<BAS>;<AME>;IGNORE
+<UFEA5> <khah>;<BAS>;<AIS>;IGNORE
+<UFEA6> <khah>;<BAS>;<AFI>;IGNORE
+<UFEA7> <khah>;<BAS>;<AII>;IGNORE
+<UFEA8> <khah>;<BAS>;<AME>;IGNORE
+<UFEA9> <dal>;<BAS>;<AIS>;IGNORE
+<UFEAA> <dal>;<BAS>;<AFI>;IGNORE
+<UFB88> <ddal>;<BAS>;<AIS>;IGNORE
+<UFB89> <ddal>;<BAS>;<AFI>;IGNORE
+<UFEAB> <thal>;<BAS>;<AIS>;IGNORE
+<UFEAC> <thal>;<BAS>;<AFI>;IGNORE
+<UFEAD> <reh>;<BAS>;<AIS>;IGNORE
+<UFEAE> <reh>;<BAS>;<AFI>;IGNORE
+<UFB8C> <rreh>;<BAS>;<AIS>;IGNORE
+<UFB8D> <rreh>;<BAS>;<AFI>;IGNORE
+<UFEAF> <zain>;<BAS>;<AIS>;IGNORE
+<UFEB0> <zain>;<BAS>;<AFI>;IGNORE
+<UFB8A> <jeh>;<BAS>;<AIS>;IGNORE
+<UFB8B> <jeh>;<BAS>;<AFI>;IGNORE
+<UFEB1> <seen>;<BAS>;<AIS>;IGNORE
+<UFEB2> <seen>;<BAS>;<AFI>;IGNORE
+<UFEB3> <seen>;<BAS>;<AII>;IGNORE
+<UFEB4> <seen>;<BAS>;<AME>;IGNORE
+<UFEB5> <sheen>;<BAS>;<AIS>;IGNORE
+<UFEB6> <sheen>;<BAS>;<AFI>;IGNORE
+<UFEB7> <sheen>;<BAS>;<AII>;IGNORE
+<UFEB8> <sheen>;<BAS>;<AME>;IGNORE
+<UFEB9> <sad>;<BAS>;<AIS>;IGNORE
+<UFEBA> <sad>;<BAS>;<AFI>;IGNORE
+<UFEBB> <sad>;<BAS>;<AII>;IGNORE
+<UFEBC> <sad>;<BAS>;<AME>;IGNORE
+<UFEBD> <dad>;<BAS>;<AIS>;IGNORE
+<UFEBE> <dad>;<BAS>;<AFI>;IGNORE
+<UFEBF> <dad>;<BAS>;<AII>;IGNORE
+<UFEC0> <dad>;<BAS>;<AME>;IGNORE
+<UFEC1> <tah>;<BAS>;<AIS>;IGNORE
+<UFEC2> <tah>;<BAS>;<AFI>;IGNORE
+<UFEC3> <tah>;<BAS>;<AII>;IGNORE
+<UFEC4> <tah>;<BAS>;<AME>;IGNORE
+<UFEC5> <zah>;<BAS>;<AIS>;IGNORE
+<UFEC6> <zah>;<BAS>;<AFI>;IGNORE
+<UFEC7> <zah>;<BAS>;<AII>;IGNORE
+<UFEC8> <zah>;<BAS>;<AME>;IGNORE
+<UFEC9> <ain>;<BAS>;<AIS>;IGNORE
+<UFECA> <ain>;<BAS>;<AFI>;IGNORE
+<UFECB> <ain>;<BAS>;<AII>;IGNORE
+<UFECC> <ain>;<BAS>;<AME>;IGNORE
+<UFECD> <ghain>;<BAS>;<AIS>;IGNORE
+<UFECE> <ghain>;<BAS>;<AFI>;IGNORE
+<UFECF> <ghain>;<BAS>;<AII>;IGNORE
+<UFED0> <ghain>;<BAS>;<AME>;IGNORE
+<UFED1> <feh>;<BAS>;<AIS>;IGNORE
+<UFED2> <feh>;<BAS>;<AFI>;IGNORE
+<UFED3> <feh>;<BAS>;<AII>;IGNORE
+<UFED4> <feh>;<BAS>;<AME>;IGNORE
+<UFED5> <qaf>;<BAS>;<AIS>;IGNORE
+<UFED6> <qaf>;<BAS>;<AFI>;IGNORE
+<UFED7> <qaf>;<BAS>;<AII>;IGNORE
+<UFED8> <qaf>;<BAS>;<AME>;IGNORE
+<UFED9> <kaf>;<BAS>;<AIS>;IGNORE
+<UFEDA> <kaf>;<BAS>;<AFI>;IGNORE
+<UFEDB> <kaf>;<BAS>;<AII>;IGNORE
+<UFEDC> <kaf>;<BAS>;<AME>;IGNORE
+<UFB8E> <keheh>;<BAS>;<AIS>;IGNORE
+<UFB8F> <keheh>;<BAS>;<AFI>;IGNORE
+<UFB90> <keheh>;<BAS>;<AII>;IGNORE
+<UFB91> <keheh>;<BAS>;<AME>;IGNORE
+<UFB92> <gaf>;<BAS>;<AIS>;IGNORE
+<UFB93> <gaf>;<BAS>;<AFI>;IGNORE
+<UFB94> <gaf>;<BAS>;<AII>;IGNORE
+<UFB95> <gaf>;<BAS>;<AME>;IGNORE
+<UFEDD> <lam>;<BAS>;<AIS>;IGNORE
+<UFEDE> <lam>;<BAS>;<AFI>;IGNORE
+<UFEDF> <lam>;<BAS>;<AII>;IGNORE
+<UFEE0> <lam>;<BAS>;<AME>;IGNORE
+<UFEE1> <meem>;<BAS>;<AIS>;IGNORE
+<UFEE2> <meem>;<BAS>;<AFI>;IGNORE
+<UFEE3> <meem>;<BAS>;<AII>;IGNORE
+<UFEE4> <meem>;<BAS>;<AME>;IGNORE
+<UFEE5> <noon>;<BAS>;<AIS>;IGNORE
+<UFEE6> <noon>;<BAS>;<AFI>;IGNORE
+<UFEE7> <noon>;<BAS>;<AII>;IGNORE
+<UFEE8> <noon>;<BAS>;<AME>;IGNORE
+<UFB9E> <noon_ghunna>;<BAS>;<AIS>;IGNORE
+<UFB9F> <noon_ghunna>;<BAS>;<AFI>;IGNORE
+<UFEE9> <heh>;<BAS>;<AIS>;IGNORE
+<UFEEA> <heh>;<BAS>;<AFI>;IGNORE
+<UFEEB> <heh>;<BAS>;<AII>;IGNORE
+<UFEEC> <heh>;<BAS>;<AME>;IGNORE
+<UFBA4> <heh_yeh>;<BAS>;<AIS>;IGNORE
+<UFBA5> <heh_yeh>;<BAS>;<AFI>;IGNORE
+<UFE85> <waw>;<AHW>;<AIS>;IGNORE
+<UFE86> <waw>;<AHW>;<AFI>;IGNORE
+<UFEED> <waw>;<BAS>;<AIS>;IGNORE
+<UFEEE> <waw>;<BAS>;<AFI>;IGNORE
+<UFEEF> <alef_maksura>;<BAS>;<AIS>;IGNORE
+<UFEF0> <alef_maksura>;<BAS>;<AFI>;IGNORE
+<UFE89> "<alef_maksura><hamza>";"<BAS><BAS>";"<AIS><AIS>";IGNORE
+<UFE8A> "<alef_maksura><hamza>";"<BAS><BAS>";"<AFI><AIS>";IGNORE
+<UFE8B> "<alef_maksura><hamza>";"<BAS><BAS>";"<AII><AIS>";IGNORE
+<UFE8C> "<alef_maksura><hamza>";"<BAS><BAS>";"<AME><AIS>";IGNORE
+<UFEF1> <alef_maksura>;<AYE>;<AIS>;IGNORE
+<UFEF2> <alef_maksura>;<AYE>;<AFI>;IGNORE
+<UFEF3> <alef_maksura>;<AYE>;<AII>;IGNORE
+<UFEF4> <alef_maksura>;<AYE>;<AME>;IGNORE
+<UFBB0> <yeh_barree>;<YBA>;<AIS>;IGNORE
+<UFBB1> <yeh_barree>;<YBA>;<AFI>;IGNORE
+<UFBAE> <yeh_barree>;<BAS>;<AIS>;IGNORE
+<UFBAF> <yeh_barree>;<BAS>;<AFI>;IGNORE
+<UFEF5> "<lam><alef>";"<BAS><AMA>";"<AIS><AFI>";IGNORE
+<UFEF6> "<lam><alef>";"<BAS><AMA>";"<AFI><AFI>";IGNORE
+<UFEF7> "<lam><alef>";"<BAS><AHA>";"<AIS><AFI>";IGNORE
+<UFEF8> "<lam><alef>";"<BAS><AHA>";"<AFI><AFI>";IGNORE
+<UFEF9> "<lam><alef>";"<BAS><AHS>";"<AIS><AFI>";IGNORE
+<UFEFA> "<lam><alef>";"<BAS><AHS>";"<AFI><AFI>";IGNORE
+<UFEFB> "<lam><alef>";"<BAS><BAS>";"<AIS><AFI>";IGNORE
+<UFEFC> "<lam><alef>";"<BAS><BAS>";"<AFI><AFI>";IGNORE
+
+order_start <HEBREU>;forward;forward;forward;forward,position
+<U05D0> <alef_heb>;<BAS>;IGNORE;IGNORE
+<U05D1> <bet>;<BAS>;IGNORE;IGNORE
+<U05D2> <gimel>;<BAS>;IGNORE;IGNORE
+<U05D3> <dalet>;<BAS>;IGNORE;IGNORE
+<U05D4> <he>;<BAS>;IGNORE;IGNORE
+<U05D5> <vav>;<BAS>;IGNORE;IGNORE
+<U05D6> <zayin>;<BAS>;IGNORE;IGNORE
+<U05D7> <het>;<BAS>;IGNORE;IGNORE
+<U05D8> <tet>;<BAS>;IGNORE;IGNORE
+<U05D9> <yod>;<BAS>;IGNORE;IGNORE
+<U05DA> <kaf_fin>;<BAS>;IGNORE;IGNORE
+<U05DB> <kaf_heb>;<BAS>;IGNORE;IGNORE
+<U05DC> <lamed>;<BAS>;IGNORE;IGNORE
+<U05DD> <mem_fin>;<BAS>;IGNORE;IGNORE
+<U05DE> <mem>;<BAS>;IGNORE;IGNORE
+<U05DF> <nun_fin>;<BAS>;IGNORE;IGNORE
+<U05E0> <nun>;<BAS>;IGNORE;IGNORE
+<U05E1> <samekh>;<BAS>;IGNORE;IGNORE
+<U05E2> <ayin>;<BAS>;IGNORE;IGNORE
+<U05E3> <pe_fin>;<BAS>;IGNORE;IGNORE
+<U05E4> <pe>;<BAS>;IGNORE;IGNORE
+<U05E5> <tsadi_fin>;<BAS>;IGNORE;IGNORE
+<U05E6> <tsadi>;<BAS>;IGNORE;IGNORE
+<U05E7> <qof>;<BAS>;IGNORE;IGNORE
+<U05E8> <resh>;<BAS>;IGNORE;IGNORE
+<U05E9> <shin>;<BAS>;IGNORE;IGNORE
+<U05EA> <tav>;<BAS>;IGNORE;IGNORE
+
+order_start <GREC>;forward;backward;forward;forward,position
+<U0391> <ALPHA>;<BAS>;<CAP>;IGNORE
+<U0386> <ALPHA>;<TNS>;<CAP>;IGNORE
+<U0392> <BETA>;<BAS>;<CAP>;IGNORE
+<U0393> <GAMMA>;<BAS>;<CAP>;IGNORE
+<U03DC> <GAMMA>;<PCL>;<CAP>;IGNORE # digamma copte
+<U0394> <DELTA>;<BAS>;<CAP>;IGNORE
+<U03EA> <DELTA>;<PCL>;<CAP>;IGNORE # GANGIA COPTE
+<U0395> <EPSILON>;<BAS>;<CAP>;IGNORE
+<U0388> <EPSILON>;<TNS>;<CAP>;IGNORE
+<U0396> <ZETA>;<BAS>;<CAP>;IGNORE
+<U03E8> <ZETA>;<PCL>;<CAP>;IGNORE # HORI COPTE
+<U0397> <ETA>;<BAS>;<CAP>;IGNORE
+<U0389> <ETA>;<TNS>;<CAP>;IGNORE
+<U0398> <THETA>;<BAS>;<CAP>;IGNORE
+<U0399> <IOTA>;<BAS>;<CAP>;IGNORE
+<U038A> <IOTA>;<TNS>;<CAP>;IGNORE
+<U03AA> <IOTA>;<DLT>;<CAP>;IGNORE
+<U039A> <KAPPA>;<BAS>;<CAP>;IGNORE
+<U03DE> <KAPPA>;<PCL>;<CAP>;IGNORE # koppa copte
+<U03E6> <KAPPA>;<LIG>;<CAP>;IGNORE # KHEI COPTE
+<U039B> <LAMBDA>;<BAS>;<CAP>;IGNORE
+<U039C> <MU>;<BAS>;<CAP>;IGNORE
+<U039D> <NU>;<BAS>;<CAP>;IGNORE
+<U039E> <XI>;<BAS>;<CAP>;IGNORE
+<U039F> <OMICRON>;<BAS>;<CAP>;IGNORE
+<U038C> <OMICRON>;<TNS>;<CAP>;IGNORE
+<U03A0> <PI>;<BAS>;<CAP>;IGNORE
+<U03A1> <RHO>;<BAS>;<CAP>;IGNORE
+<U03C1> <RHO>;<BAS>;<CAP>;IGNORE
+<U03A3> <SIGMA>;<BAS>;<CAP>;IGNORE
+<U03DA> <SIGMA>;<PCL>;<CAP>;IGNORE # STIGMA ARCH.
+<U03EC> <SIGMA>;<LIG>;<CAP>;IGNORE # SHIMA COPTE
+<U03A4> <TAU>;<BAS>;<CAP>;IGNORE
+<U03EE> <TAU>;<PCL>;<CAP>;IGNORE # DEI COPTE
+<U03A5> <UPSILON>;<BAS>;<CAP>;IGNORE
+<U038E> <UPSILON>;<TNS>;<CAP>;IGNORE
+<U03AB> <UPSILON>;<DLT>;<CAP>;IGNORE
+<U03D4> <UPSILON>;<DTT>;<CAP>;IGNORE
+<U03D2> <UPSILON>;<OGO>;<CAP>;IGNORE
+<U03D3> <UPSILON>;<MAC>;<CAP>;IGNORE
+<U03A6> <PHI>;<BAS>;<CAP>;IGNORE
+<U03E4> <PHI>;<LIG>;<CAP>;IGNORE # FEI COPTE
+<U03A7> <CHI>;<BAS>;<CAP>;IGNORE
+<U03E0> <CHI>;<PCL>;<CAP>;IGNORE # sampi copte
+<U03A8> <PSI>;<BAS>;<CAP>;IGNORE
+<U03E2> <PSI>;<PCL>;<CAP>;IGNORE # SHEI COPTE
+<U03A9> <OMEGA>;<BAS>;<CAP>;IGNORE
+<U038F> <OMEGA>;<TNS>;<CAP>;IGNORE
+<U03B1> <ALPHA>;<BAS>;<AMI>;IGNORE
+<U03AC> <ALPHA>;<TNS>;<AMI>;IGNORE
+<U03B2> <BETA>;<BAS>;<AMI>;IGNORE
+<U03D0> <BETA>;<PCL>;<AMI>;IGNORE
+<U03B3> <GAMMA>;<BAS>;<AMI>;IGNORE
+<U03B4> <DELTA>;<BAS>;<AMI>;IGNORE
+<U03EB> <DELTA>;<BAS>;<AMI>;IGNORE # gangia copte
+<U03B5> <EPSILON>;<BAS>;<AMI>;IGNORE
+<U03AD> <EPSILON>;<TNS>;<AMI>;IGNORE
+<U03B6> <ZETA>;<BAS>;<AMI>;IGNORE
+<U03E9> <ZETA>;<PCL>;<AMI>;IGNORE # hori copte
+<U03B7> <ETA>;<BAS>;<AMI>;IGNORE
+<U03AE> <ETA>;<TNS>;<AMI>;IGNORE
+<U03B8> <THETA>;<BAS>;<AMI>;IGNORE
+<U03D1> <THETA>;<PCL>;<AMI>;IGNORE
+<U03B9> <IOTA>;<BAS>;<AMI>;IGNORE
+<U03AF> <IOTA>;<TNS>;<AMI>;IGNORE
+<U03CA> <IOTA>;<DLT>;<AMI>;IGNORE
+<U0390> <IOTA>;<DTT>;<AMI>;IGNORE
+<U03F3> <IOTA>;<OGO>;<AMI>;IGNORE # yot
+<U03BA> <KAPPA>;<BAS>;<AMI>;IGNORE
+<U03F0> <KAPPA>;<PCL>;<AMI>;IGNORE
+<U03E7> <KAPPA>;<LIG>;<AMI>;IGNORE # khei copte
+<U03BB> <LAMBDA>;<BAS>;<AMI>;IGNORE
+<U03BC> <MU>;<BAS>;<AMI>;IGNORE
+<U03BD> <NU>;<BAS>;<AMI>;IGNORE
+<U03BE> <XI>;<BAS>;<AMI>;IGNORE
+<U03BF> <OMICRON>;<BAS>;<AMI>;IGNORE
+<U03CC> <OMICRON>;<TNS>;<AMI>;IGNORE
+<U03C0> <PI>;<BAS>;<AMI>;IGNORE
+<U03D6> <PI>;<PCL>;<AMI>;IGNORE
+<U03F1> <RHO>;<PCL>;<AMI>;IGNORE
+<U03C3> <SIGMA>;<BAS>;<AMI>;IGNORE
+<U03C2> <SIGMA>;<PCL>;<AMI>;IGNORE
+<U03ED> <SIGMA>;<LIG>;<AMI>;IGNORE # shima copte
+<U03F2> <SIGMA>;<OGO>;<AMI>;IGNORE
+<U03C4> <TAU>;<BAS>;<AMI>;IGNORE
+<U03EF> <TAU>;<PCL>;<AMI>;IGNORE # dei copte
+<U03C5> <UPSILON>;<BAS>;<AMI>;IGNORE
+<U03CD> <UPSILON>;<TNS>;<AMI>;IGNORE
+<U03CB> <UPSILON>;<DLT>;<AMI>;IGNORE
+<U03B0> <UPSILON>;<DTT>;<AMI>;IGNORE
+<U03C6> <PHI>;<BAS>;<AMI>;IGNORE
+<U03D5> <PHI>;<PCL>;<AMI>;IGNORE
+<U03E5> <PHI>;<LIG>;<AMI>;IGNORE # fei copte
+<U03C7> <CHI>;<BAS>;<AMI>;IGNORE
+<U03C8> <PSI>;<BAS>;<AMI>;IGNORE
+<U03E3> <PSI>;<PCL>;<AMI>;IGNORE # shei copte
+<U03C9> <OMEGA>;<BAS>;<AMI>;IGNORE
+<U03CE> <OMEGA>;<TNS>;<AMI>;IGNORE
+
+order_start <CYRIL>;forward;forward;forward;forward,position
+<U0430> <CYR-A>;<BAS>;<MIN>;IGNORE
+<U0431> <CYR-BE>;<BAS>;<MIN>;IGNORE
+<U0432> <CYR-VE>;<BAS>;<MIN>;IGNORE
+<U0433> <CYR-GHE>;<BAS>;<MIN>;IGNORE
+<U0434> <CYR-DE>;<BAS>;<MIN>;IGNORE
+<U0453> <CYR-GZHE>;<BAS>;<MIN>;IGNORE
+<U0435> <CYR-IE>;<BAS>;<MIN>;IGNORE
+<U0452> <CYR-DJE>;<BAS>;<MIN>;IGNORE
+<U0454> <UKR-IE>;<BAS>;<MIN>;IGNORE
+<U0451> <CYR-IO>;<BAS>;<MIN>;IGNORE
+<U0436> <CYR-ZHE>;<BAS>;<MIN>;IGNORE
+<U0437> <CYR-ZE>;<BAS>;<MIN>;IGNORE
+<U0455> <CYR-DZE>;<BAS>;<MIN>;IGNORE
+<U0438> <CYR-I>;<BAS>;<MIN>;IGNORE
+<U0456> <UKR-I>;<BAS>;<MIN>;IGNORE
+<U0457> <UKR-YI>;<BAS>;<MIN>;IGNORE
+<U0439> <CYR-IBRE>;<BAS>;<MIN>;IGNORE
+<U0458> <CYR-JE>;<BAS>;<MIN>;IGNORE
+<U043A> <CYR-KA>;<BAS>;<MIN>;IGNORE
+<U043B> <CYR-EL>;<BAS>;<MIN>;IGNORE
+<U0459> <CYR-LJE>;<BAS>;<MIN>;IGNORE
+<U043C> <CYR-EM>;<BAS>;<MIN>;IGNORE
+<U043D> <CYR-EN>;<BAS>;<MIN>;IGNORE
+<U045A> <CYR-NJE>;<BAS>;<MIN>;IGNORE
+<U043E> <CYR-O>;<BAS>;<MIN>;IGNORE
+<U043F> <CYR-PE>;<BAS>;<MIN>;IGNORE
+<U0440> <CYR-ER>;<BAS>;<MIN>;IGNORE
+<U0441> <CYR-ES>;<BAS>;<MIN>;IGNORE
+<U0442> <CYR-TE>;<BAS>;<MIN>;IGNORE
+<U045C> <CYR-KJE>;<BAS>;<MIN>;IGNORE
+<U045B> <CYR-TSHE>;<BAS>;<MIN>;IGNORE
+<U0443> <CYR-OU>;<BAS>;<MIN>;IGNORE
+<U045E> <CYR-OUBRE>;<BAS>;<MIN>;IGNORE
+<U0444> <CYR-EF>;<BAS>;<MIN>;IGNORE
+<U0445> <CYR-HA>;<BAS>;<MIN>;IGNORE
+<U0446> <CYR-TSE>;<BAS>;<MIN>;IGNORE
+<U0447> <CYR-CHE>;<BAS>;<MIN>;IGNORE
+<U045F> <CYR-DCHE>;<BAS>;<MIN>;IGNORE
+<U0448> <CYR-SHA>;<BAS>;<MIN>;IGNORE
+<U0449> <CYR-SHTSHA>;<BAS>;<MIN>;IGNORE
+<U044A> <CYR-SIGDUR>;<BAS>;<MIN>;IGNORE
+<U044B> <CYR-YEROU>;<BAS>;<MIN>;IGNORE
+<U044C> <CYR-SIGMOUIL>;<BAS>;<MIN>;IGNORE
+<U044D> <CYR-E>;<BAS>;<MIN>;IGNORE
+<U044E> <CYR-YOU>;<BAS>;<MIN>;IGNORE
+<U044F> <CYR-YA>;<BAS>;<MIN>;IGNORE
+<U0410> <CYR-A>;<BAS>;<CAP>;IGNORE
+<U0411> <CYR-BE>;<BAS>;<CAP>;IGNORE
+<U0412> <CYR-VE>;<BAS>;<CAP>;IGNORE
+<U0413> <CYR-GHE>;<BAS>;<CAP>;IGNORE
+<U0414> <CYR-DE>;<BAS>;<CAP>;IGNORE
+<U0403> <CYR-GZHE>;<BAS>;<CAP>;IGNORE
+<U0402> <CYR-DJE>;<BAS>;<CAP>;IGNORE
+<U0415> <CYR-IE>;<BAS>;<CAP>;IGNORE
+<U0404> <UKR-IE>;<BAS>;<CAP>;IGNORE
+<U0401> <CYR-IO>;<BAS>;<CAP>;IGNORE
+<U0416> <CYR-ZHE>;<BAS>;<CAP>;IGNORE
+<U0417> <CYR-ZE>;<BAS>;<CAP>;IGNORE
+<U0405> <CYR-DZE>;<BAS>;<CAP>;IGNORE
+<U0418> <CYR-I>;<BAS>;<CAP>;IGNORE
+<U0406> <UKR-I>;<BAS>;<CAP>;IGNORE
+<U0407> <UKR-YI>;<BAS>;<CAP>;IGNORE
+<U0419> <CYR-IBRE>;<BAS>;<CAP>;IGNORE
+<U0408> <CYR-JE>;<BAS>;<CAP>;IGNORE
+<U041A> <CYR-KA>;<BAS>;<CAP>;IGNORE
+<U041B> <CYR-EL>;<BAS>;<CAP>;IGNORE
+<U0409> <CYR-LJE>;<BAS>;<CAP>;IGNORE
+<U041C> <CYR-EM>;<BAS>;<CAP>;IGNORE
+<U041D> <CYR-EN>;<BAS>;<CAP>;IGNORE
+<U040A> <CYR-NJE>;<BAS>;<CAP>;IGNORE
+<U041E> <CYR-O>;<BAS>;<CAP>;IGNORE
+<U041F> <CYR-PE>;<BAS>;<CAP>;IGNORE
+<U0420> <CYR-ER>;<BAS>;<CAP>;IGNORE
+<U0421> <CYR-ES>;<BAS>;<CAP>;IGNORE
+<U0422> <CYR-TE>;<BAS>;<CAP>;IGNORE
+<U040C> <CYR-KJE>;<BAS>;<CAP>;IGNORE
+<U040B> <CYR-TSHE>;<BAS>;<CAP>;IGNORE
+<U0423> <CYR-OU>;<BAS>;<CAP>;IGNORE
+<U040E> <CYR-OUBRE>;<BAS>;<CAP>;IGNORE
+<U0424> <CYR-EF>;<BAS>;<CAP>;IGNORE
+<U0425> <CYR-HA>;<BAS>;<CAP>;IGNORE
+<U0426> <CYR-TSE>;<BAS>;<CAP>;IGNORE
+<U0427> <CYR-CHE>;<BAS>;<CAP>;IGNORE
+<U040F> <CYR-DCHE>;<BAS>;<CAP>;IGNORE
+<U0428> <CYR-SHA>;<BAS>;<CAP>;IGNORE
+<U0429> <CYR-SHTSHA>;<BAS>;<CAP>;IGNORE
+<U042A> <CYR-SIGDUR>;<BAS>;<CAP>;IGNORE
+<U042B> <CYR-YEROU>;<BAS>;<CAP>;IGNORE
+<U042C> <CYR-SIGMOUIL>;<BAS>;<CAP>;IGNORE
+<U042D> <CYR-E>;<BAS>;<CAP>;IGNORE
+<U042E> <CYR-YOU>;<BAS>;<CAP>;IGNORE
+<U042F> <CYR-YA>;<BAS>;<CAP>;IGNORE
+
+order_start <HAN>;forward;forward;forward;forward,position
+UCLIBC_RANGE <U4E00> <U9FA5> ..;IGNORE;IGNORE;IGNORE
+#<U4E00> <U4E00>;IGNORE;IGNORE;IGNORE
+#.. ..;IGNORE;IGNORE;IGNORE
+#<U9FA5> <U9FA5>;IGNORE;IGNORE;IGNORE
+#
+order_end
+#
diff --git a/ap/build/uClibc/extra/locale/collation/it_CH b/ap/build/uClibc/extra/locale/collation/it_CH
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/it_CH
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/it_IT b/ap/build/uClibc/extra/locale/collation/it_IT
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/it_IT
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/iw_IL b/ap/build/uClibc/extra/locale/collation/iw_IL
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/iw_IL
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/ja_JP b/ap/build/uClibc/extra/locale/collation/ja_JP
new file mode 100644
index 0000000..fa26bac
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ja_JP
@@ -0,0 +1,13188 @@
+order_start forward
+%
+% C0
+%
+<U0000>
+<U0001>
+<U0002>
+<U0003>
+<U0004>
+<U0005>
+<U0006>
+<U0007>
+<U0008>
+<U0009>
+<U000A>
+<U000B>
+<U000C>
+<U000D>
+<U000E>
+<U000F>
+<U0010>
+<U0011>
+<U0012>
+<U0013>
+<U0014>
+<U0015>
+<U0016>
+<U0017>
+<U0018>
+<U0019>
+<U001A>
+<U001B>
+<U001C>
+<U001D>
+<U001E>
+<U001F>
+%
+% ISO 646 IRV
+%
+<U0020>
+<U0021>
+<U0022>
+<U0023>
+<U0024>
+<U0025>
+<U0026>
+<U0027>
+<U0028>
+<U0029>
+<U002A>
+<U002B>
+<U002C>
+<U002D>
+<U002E>
+<U002F>
+<U0030>
+<U0031>
+<U0032>
+<U0033>
+<U0034>
+<U0035>
+<U0036>
+<U0037>
+<U0038>
+<U0039>
+<U003A>
+<U003B>
+<U003C>
+<U003D>
+<U003E>
+<U003F>
+<U0040>
+<U0041>
+<U0042>
+<U0043>
+<U0044>
+<U0045>
+<U0046>
+<U0047>
+<U0048>
+<U0049>
+<U004A>
+<U004B>
+<U004C>
+<U004D>
+<U004E>
+<U004F>
+<U0050>
+<U0051>
+<U0052>
+<U0053>
+<U0054>
+<U0055>
+<U0056>
+<U0057>
+<U0058>
+<U0059>
+<U005A>
+<U005B>
+<U005C>
+<U005D>
+<U005E>
+<U005F>
+<U0060>
+<U0061>
+<U0062>
+<U0063>
+<U0064>
+<U0065>
+<U0066>
+<U0067>
+<U0068>
+<U0069>
+<U006A>
+<U006B>
+<U006C>
+<U006D>
+<U006E>
+<U006F>
+<U0070>
+<U0071>
+<U0072>
+<U0073>
+<U0074>
+<U0075>
+<U0076>
+<U0077>
+<U0078>
+<U0079>
+<U007A>
+<U007B>
+<U007C>
+<U007D>
+<U007E>
+<U007F>
+%
+% C1
+%
+<U0080>
+<U0081>
+<U0082>
+<U0083>
+<U0084>
+<U0085>
+<U0086>
+<U0087>
+<U0088>
+<U0089>
+<U008A>
+<U008B>
+<U008C>
+<U008D>
+<U0090>
+<U0091>
+<U0092>
+<U0093>
+<U0094>
+<U0095>
+<U0096>
+<U0097>
+<U0098>
+<U0099>
+<U009A>
+<U009B>
+<U009C>
+<U009D>
+<U009E>
+<U009F>
+%
+% JIS X 0201 KATAKANA
+%
+<UFF61>
+<UFF62>
+<UFF63>
+<UFF64>
+<UFF65>
+<UFF66>
+<UFF67>
+<UFF68>
+<UFF69>
+<UFF6A>
+<UFF6B>
+<UFF6C>
+<UFF6D>
+<UFF6E>
+<UFF6F>
+<UFF70>
+<UFF71>
+<UFF72>
+<UFF73>
+<UFF74>
+<UFF75>
+<UFF76>
+<UFF77>
+<UFF78>
+<UFF79>
+<UFF7A>
+<UFF7B>
+<UFF7C>
+<UFF7D>
+<UFF7E>
+<UFF7F>
+<UFF80>
+<UFF81>
+<UFF82>
+<UFF83>
+<UFF84>
+<UFF85>
+<UFF86>
+<UFF87>
+<UFF88>
+<UFF89>
+<UFF8A>
+<UFF8B>
+<UFF8C>
+<UFF8D>
+<UFF8E>
+<UFF8F>
+<UFF90>
+<UFF91>
+<UFF92>
+<UFF93>
+<UFF94>
+<UFF95>
+<UFF96>
+<UFF97>
+<UFF98>
+<UFF99>
+<UFF9A>
+<UFF9B>
+<UFF9C>
+<UFF9D>
+<UFF9E>
+<UFF9F>
+%
+% JIS X 0208
+%
+<U3000>
+<U3001>
+<U3002>
+<UFF0C>
+<UFF0E>
+<U30FB>
+<UFF1A>
+<UFF1B>
+<UFF1F>
+<UFF01>
+<U309B>
+<U309C>
+<U00B4>
+<UFF40>
+<U00A8>
+<UFF3E>
+<UFFE3>
+<UFF3F>
+<U30FD>
+<U30FE>
+<U309D>
+<U309E>
+<U3003>
+<U4EDD>
+<U3005>
+<U3006>
+<U3007>
+<U30FC>
+<U2015>
+<U2010>
+<UFF0F>
+<UFF3C>
+<U301C>
+<U2016>
+<UFF5C>
+<U2026>
+<U2025>
+<U2018>
+<U2019>
+<U201C>
+<U201D>
+<UFF08>
+<UFF09>
+<U3014>
+<U3015>
+<UFF3B>
+<UFF3D>
+<UFF5B>
+<UFF5D>
+<U3008>
+<U3009>
+<U300A>
+<U300B>
+<U300C>
+<U300D>
+<U300E>
+<U300F>
+<U3010>
+<U3011>
+<UFF0B>
+<U2212>
+<U00B1>
+<U00D7>
+<U00F7>
+<UFF1D>
+<U2260>
+<UFF1C>
+<UFF1E>
+<U2266>
+<U2267>
+<U221E>
+<U2234>
+<U2642>
+<U2640>
+<U00B0>
+<U2032>
+<U2033>
+<U2103>
+<UFFE5>
+<UFF04>
+<U00A2>
+<U00A3>
+<UFF05>
+<UFF03>
+<UFF06>
+<UFF0A>
+<UFF20>
+<U00A7>
+<U2606>
+<U2605>
+<U25CB>
+<U25CF>
+<U25CE>
+<U25C7>
+<U25C6>
+<U25A1>
+<U25A0>
+<U25B3>
+<U25B2>
+<U25BD>
+<U25BC>
+<U203B>
+<U3012>
+<U2192>
+<U2190>
+<U2191>
+<U2193>
+<U3013>
+<U2208>
+<U220B>
+<U2286>
+<U2287>
+<U2282>
+<U2283>
+<U222A>
+<U2229>
+<U2227>
+<U2228>
+<U00AC>
+<U21D2>
+<U21D4>
+<U2200>
+<U2203>
+<U2220>
+<U22A5>
+<U2312>
+<U2202>
+<U2207>
+<U2261>
+<U2252>
+<U226A>
+<U226B>
+<U221A>
+<U223D>
+<U221D>
+<U2235>
+<U222B>
+<U222C>
+<U212B>
+<U2030>
+<U266F>
+<U266D>
+<U266A>
+<U2020>
+<U2021>
+<U00B6>
+<U25EF>
+<UFF10>
+<UFF11>
+<UFF12>
+<UFF13>
+<UFF14>
+<UFF15>
+<UFF16>
+<UFF17>
+<UFF18>
+<UFF19>
+<UFF21>
+<UFF22>
+<UFF23>
+<UFF24>
+<UFF25>
+<UFF26>
+<UFF27>
+<UFF28>
+<UFF29>
+<UFF2A>
+<UFF2B>
+<UFF2C>
+<UFF2D>
+<UFF2E>
+<UFF2F>
+<UFF30>
+<UFF31>
+<UFF32>
+<UFF33>
+<UFF34>
+<UFF35>
+<UFF36>
+<UFF37>
+<UFF38>
+<UFF39>
+<UFF3A>
+<UFF41>
+<UFF42>
+<UFF43>
+<UFF44>
+<UFF45>
+<UFF46>
+<UFF47>
+<UFF48>
+<UFF49>
+<UFF4A>
+<UFF4B>
+<UFF4C>
+<UFF4D>
+<UFF4E>
+<UFF4F>
+<UFF50>
+<UFF51>
+<UFF52>
+<UFF53>
+<UFF54>
+<UFF55>
+<UFF56>
+<UFF57>
+<UFF58>
+<UFF59>
+<UFF5A>
+<U3041>
+<U3042>
+<U3043>
+<U3044>
+<U3045>
+<U3046>
+<U3047>
+<U3048>
+<U3049>
+<U304A>
+<U304B>
+<U304C>
+<U304D>
+<U304E>
+<U304F>
+<U3050>
+<U3051>
+<U3052>
+<U3053>
+<U3054>
+<U3055>
+<U3056>
+<U3057>
+<U3058>
+<U3059>
+<U305A>
+<U305B>
+<U305C>
+<U305D>
+<U305E>
+<U305F>
+<U3060>
+<U3061>
+<U3062>
+<U3063>
+<U3064>
+<U3065>
+<U3066>
+<U3067>
+<U3068>
+<U3069>
+<U306A>
+<U306B>
+<U306C>
+<U306D>
+<U306E>
+<U306F>
+<U3070>
+<U3071>
+<U3072>
+<U3073>
+<U3074>
+<U3075>
+<U3076>
+<U3077>
+<U3078>
+<U3079>
+<U307A>
+<U307B>
+<U307C>
+<U307D>
+<U307E>
+<U307F>
+<U3080>
+<U3081>
+<U3082>
+<U3083>
+<U3084>
+<U3085>
+<U3086>
+<U3087>
+<U3088>
+<U3089>
+<U308A>
+<U308B>
+<U308C>
+<U308D>
+<U308E>
+<U308F>
+<U3090>
+<U3091>
+<U3092>
+<U3093>
+<U30A1>
+<U30A2>
+<U30A3>
+<U30A4>
+<U30A5>
+<U30A6>
+<U30A7>
+<U30A8>
+<U30A9>
+<U30AA>
+<U30AB>
+<U30AC>
+<U30AD>
+<U30AE>
+<U30AF>
+<U30B0>
+<U30B1>
+<U30B2>
+<U30B3>
+<U30B4>
+<U30B5>
+<U30B6>
+<U30B7>
+<U30B8>
+<U30B9>
+<U30BA>
+<U30BB>
+<U30BC>
+<U30BD>
+<U30BE>
+<U30BF>
+<U30C0>
+<U30C1>
+<U30C2>
+<U30C3>
+<U30C4>
+<U30C5>
+<U30C6>
+<U30C7>
+<U30C8>
+<U30C9>
+<U30CA>
+<U30CB>
+<U30CC>
+<U30CD>
+<U30CE>
+<U30CF>
+<U30D0>
+<U30D1>
+<U30D2>
+<U30D3>
+<U30D4>
+<U30D5>
+<U30D6>
+<U30D7>
+<U30D8>
+<U30D9>
+<U30DA>
+<U30DB>
+<U30DC>
+<U30DD>
+<U30DE>
+<U30DF>
+<U30E0>
+<U30E1>
+<U30E2>
+<U30E3>
+<U30E4>
+<U30E5>
+<U30E6>
+<U30E7>
+<U30E8>
+<U30E9>
+<U30EA>
+<U30EB>
+<U30EC>
+<U30ED>
+<U30EE>
+<U30EF>
+<U30F0>
+<U30F1>
+<U30F2>
+<U30F3>
+<U30F4>
+<U30F5>
+<U30F6>
+<U0391>
+<U0392>
+<U0393>
+<U0394>
+<U0395>
+<U0396>
+<U0397>
+<U0398>
+<U0399>
+<U039A>
+<U039B>
+<U039C>
+<U039D>
+<U039E>
+<U039F>
+<U03A0>
+<U03A1>
+<U03A3>
+<U03A4>
+<U03A5>
+<U03A6>
+<U03A7>
+<U03A8>
+<U03A9>
+<U03B1>
+<U03B2>
+<U03B3>
+<U03B4>
+<U03B5>
+<U03B6>
+<U03B7>
+<U03B8>
+<U03B9>
+<U03BA>
+<U03BB>
+<U03BC>
+<U03BD>
+<U03BE>
+<U03BF>
+<U03C0>
+<U03C1>
+<U03C3>
+<U03C4>
+<U03C5>
+<U03C6>
+<U03C7>
+<U03C8>
+<U03C9>
+<U0410>
+<U0411>
+<U0412>
+<U0413>
+<U0414>
+<U0415>
+<U0401>
+<U0416>
+<U0417>
+<U0418>
+<U0419>
+<U041A>
+<U041B>
+<U041C>
+<U041D>
+<U041E>
+<U041F>
+<U0420>
+<U0421>
+<U0422>
+<U0423>
+<U0424>
+<U0425>
+<U0426>
+<U0427>
+<U0428>
+<U0429>
+<U042A>
+<U042B>
+<U042C>
+<U042D>
+<U042E>
+<U042F>
+<U0430>
+<U0431>
+<U0432>
+<U0433>
+<U0434>
+<U0435>
+<U0451>
+<U0436>
+<U0437>
+<U0438>
+<U0439>
+<U043A>
+<U043B>
+<U043C>
+<U043D>
+<U043E>
+<U043F>
+<U0440>
+<U0441>
+<U0442>
+<U0443>
+<U0444>
+<U0445>
+<U0446>
+<U0447>
+<U0448>
+<U0449>
+<U044A>
+<U044B>
+<U044C>
+<U044D>
+<U044E>
+<U044F>
+<U2500>
+<U2502>
+<U250C>
+<U2510>
+<U2518>
+<U2514>
+<U251C>
+<U252C>
+<U2524>
+<U2534>
+<U253C>
+<U2501>
+<U2503>
+<U250F>
+<U2513>
+<U251B>
+<U2517>
+<U2523>
+<U2533>
+<U252B>
+<U253B>
+<U254B>
+<U2520>
+<U252F>
+<U2528>
+<U2537>
+<U253F>
+<U251D>
+<U2530>
+<U2525>
+<U2538>
+<U2542>
+<U4E9C>
+<U5516>
+<U5A03>
+<U963F>
+<U54C0>
+<U611B>
+<U6328>
+<U59F6>
+<U9022>
+<U8475>
+<U831C>
+<U7A50>
+<U60AA>
+<U63E1>
+<U6E25>
+<U65ED>
+<U8466>
+<U82A6>
+<U9BF5>
+<U6893>
+<U5727>
+<U65A1>
+<U6271>
+<U5B9B>
+<U59D0>
+<U867B>
+<U98F4>
+<U7D62>
+<U7DBE>
+<U9B8E>
+<U6216>
+<U7C9F>
+<U88B7>
+<U5B89>
+<U5EB5>
+<U6309>
+<U6697>
+<U6848>
+<U95C7>
+<U978D>
+<U674F>
+<U4EE5>
+<U4F0A>
+<U4F4D>
+<U4F9D>
+<U5049>
+<U56F2>
+<U5937>
+<U59D4>
+<U5A01>
+<U5C09>
+<U60DF>
+<U610F>
+<U6170>
+<U6613>
+<U6905>
+<U70BA>
+<U754F>
+<U7570>
+<U79FB>
+<U7DAD>
+<U7DEF>
+<U80C3>
+<U840E>
+<U8863>
+<U8B02>
+<U9055>
+<U907A>
+<U533B>
+<U4E95>
+<U4EA5>
+<U57DF>
+<U80B2>
+<U90C1>
+<U78EF>
+<U4E00>
+<U58F1>
+<U6EA2>
+<U9038>
+<U7A32>
+<U8328>
+<U828B>
+<U9C2F>
+<U5141>
+<U5370>
+<U54BD>
+<U54E1>
+<U56E0>
+<U59FB>
+<U5F15>
+<U98F2>
+<U6DEB>
+<U80E4>
+<U852D>
+<U9662>
+<U9670>
+<U96A0>
+<U97FB>
+<U540B>
+<U53F3>
+<U5B87>
+<U70CF>
+<U7FBD>
+<U8FC2>
+<U96E8>
+<U536F>
+<U9D5C>
+<U7ABA>
+<U4E11>
+<U7893>
+<U81FC>
+<U6E26>
+<U5618>
+<U5504>
+<U6B1D>
+<U851A>
+<U9C3B>
+<U59E5>
+<U53A9>
+<U6D66>
+<U74DC>
+<U958F>
+<U5642>
+<U4E91>
+<U904B>
+<U96F2>
+<U834F>
+<U990C>
+<U53E1>
+<U55B6>
+<U5B30>
+<U5F71>
+<U6620>
+<U66F3>
+<U6804>
+<U6C38>
+<U6CF3>
+<U6D29>
+<U745B>
+<U76C8>
+<U7A4E>
+<U9834>
+<U82F1>
+<U885B>
+<U8A60>
+<U92ED>
+<U6DB2>
+<U75AB>
+<U76CA>
+<U99C5>
+<U60A6>
+<U8B01>
+<U8D8A>
+<U95B2>
+<U698E>
+<U53AD>
+<U5186>
+<U5712>
+<U5830>
+<U5944>
+<U5BB4>
+<U5EF6>
+<U6028>
+<U63A9>
+<U63F4>
+<U6CBF>
+<U6F14>
+<U708E>
+<U7114>
+<U7159>
+<U71D5>
+<U733F>
+<U7E01>
+<U8276>
+<U82D1>
+<U8597>
+<U9060>
+<U925B>
+<U9D1B>
+<U5869>
+<U65BC>
+<U6C5A>
+<U7525>
+<U51F9>
+<U592E>
+<U5965>
+<U5F80>
+<U5FDC>
+<U62BC>
+<U65FA>
+<U6A2A>
+<U6B27>
+<U6BB4>
+<U738B>
+<U7FC1>
+<U8956>
+<U9D2C>
+<U9D0E>
+<U9EC4>
+<U5CA1>
+<U6C96>
+<U837B>
+<U5104>
+<U5C4B>
+<U61B6>
+<U81C6>
+<U6876>
+<U7261>
+<U4E59>
+<U4FFA>
+<U5378>
+<U6069>
+<U6E29>
+<U7A4F>
+<U97F3>
+<U4E0B>
+<U5316>
+<U4EEE>
+<U4F55>
+<U4F3D>
+<U4FA1>
+<U4F73>
+<U52A0>
+<U53EF>
+<U5609>
+<U590F>
+<U5AC1>
+<U5BB6>
+<U5BE1>
+<U79D1>
+<U6687>
+<U679C>
+<U67B6>
+<U6B4C>
+<U6CB3>
+<U706B>
+<U73C2>
+<U798D>
+<U79BE>
+<U7A3C>
+<U7B87>
+<U82B1>
+<U82DB>
+<U8304>
+<U8377>
+<U83EF>
+<U83D3>
+<U8766>
+<U8AB2>
+<U5629>
+<U8CA8>
+<U8FE6>
+<U904E>
+<U971E>
+<U868A>
+<U4FC4>
+<U5CE8>
+<U6211>
+<U7259>
+<U753B>
+<U81E5>
+<U82BD>
+<U86FE>
+<U8CC0>
+<U96C5>
+<U9913>
+<U99D5>
+<U4ECB>
+<U4F1A>
+<U89E3>
+<U56DE>
+<U584A>
+<U58CA>
+<U5EFB>
+<U5FEB>
+<U602A>
+<U6094>
+<U6062>
+<U61D0>
+<U6212>
+<U62D0>
+<U6539>
+<U9B41>
+<U6666>
+<U68B0>
+<U6D77>
+<U7070>
+<U754C>
+<U7686>
+<U7D75>
+<U82A5>
+<U87F9>
+<U958B>
+<U968E>
+<U8C9D>
+<U51F1>
+<U52BE>
+<U5916>
+<U54B3>
+<U5BB3>
+<U5D16>
+<U6168>
+<U6982>
+<U6DAF>
+<U788D>
+<U84CB>
+<U8857>
+<U8A72>
+<U93A7>
+<U9AB8>
+<U6D6C>
+<U99A8>
+<U86D9>
+<U57A3>
+<U67FF>
+<U86CE>
+<U920E>
+<U5283>
+<U5687>
+<U5404>
+<U5ED3>
+<U62E1>
+<U64B9>
+<U683C>
+<U6838>
+<U6BBB>
+<U7372>
+<U78BA>
+<U7A6B>
+<U899A>
+<U89D2>
+<U8D6B>
+<U8F03>
+<U90ED>
+<U95A3>
+<U9694>
+<U9769>
+<U5B66>
+<U5CB3>
+<U697D>
+<U984D>
+<U984E>
+<U639B>
+<U7B20>
+<U6A2B>
+<U6A7F>
+<U68B6>
+<U9C0D>
+<U6F5F>
+<U5272>
+<U559D>
+<U6070>
+<U62EC>
+<U6D3B>
+<U6E07>
+<U6ED1>
+<U845B>
+<U8910>
+<U8F44>
+<U4E14>
+<U9C39>
+<U53F6>
+<U691B>
+<U6A3A>
+<U9784>
+<U682A>
+<U515C>
+<U7AC3>
+<U84B2>
+<U91DC>
+<U938C>
+<U565B>
+<U9D28>
+<U6822>
+<U8305>
+<U8431>
+<U7CA5>
+<U5208>
+<U82C5>
+<U74E6>
+<U4E7E>
+<U4F83>
+<U51A0>
+<U5BD2>
+<U520A>
+<U52D8>
+<U52E7>
+<U5DFB>
+<U559A>
+<U582A>
+<U59E6>
+<U5B8C>
+<U5B98>
+<U5BDB>
+<U5E72>
+<U5E79>
+<U60A3>
+<U611F>
+<U6163>
+<U61BE>
+<U63DB>
+<U6562>
+<U67D1>
+<U6853>
+<U68FA>
+<U6B3E>
+<U6B53>
+<U6C57>
+<U6F22>
+<U6F97>
+<U6F45>
+<U74B0>
+<U7518>
+<U76E3>
+<U770B>
+<U7AFF>
+<U7BA1>
+<U7C21>
+<U7DE9>
+<U7F36>
+<U7FF0>
+<U809D>
+<U8266>
+<U839E>
+<U89B3>
+<U8ACC>
+<U8CAB>
+<U9084>
+<U9451>
+<U9593>
+<U9591>
+<U95A2>
+<U9665>
+<U97D3>
+<U9928>
+<U8218>
+<U4E38>
+<U542B>
+<U5CB8>
+<U5DCC>
+<U73A9>
+<U764C>
+<U773C>
+<U5CA9>
+<U7FEB>
+<U8D0B>
+<U96C1>
+<U9811>
+<U9854>
+<U9858>
+<U4F01>
+<U4F0E>
+<U5371>
+<U559C>
+<U5668>
+<U57FA>
+<U5947>
+<U5B09>
+<U5BC4>
+<U5C90>
+<U5E0C>
+<U5E7E>
+<U5FCC>
+<U63EE>
+<U673A>
+<U65D7>
+<U65E2>
+<U671F>
+<U68CB>
+<U68C4>
+<U6A5F>
+<U5E30>
+<U6BC5>
+<U6C17>
+<U6C7D>
+<U757F>
+<U7948>
+<U5B63>
+<U7A00>
+<U7D00>
+<U5FBD>
+<U898F>
+<U8A18>
+<U8CB4>
+<U8D77>
+<U8ECC>
+<U8F1D>
+<U98E2>
+<U9A0E>
+<U9B3C>
+<U4E80>
+<U507D>
+<U5100>
+<U5993>
+<U5B9C>
+<U622F>
+<U6280>
+<U64EC>
+<U6B3A>
+<U72A0>
+<U7591>
+<U7947>
+<U7FA9>
+<U87FB>
+<U8ABC>
+<U8B70>
+<U63AC>
+<U83CA>
+<U97A0>
+<U5409>
+<U5403>
+<U55AB>
+<U6854>
+<U6A58>
+<U8A70>
+<U7827>
+<U6775>
+<U9ECD>
+<U5374>
+<U5BA2>
+<U811A>
+<U8650>
+<U9006>
+<U4E18>
+<U4E45>
+<U4EC7>
+<U4F11>
+<U53CA>
+<U5438>
+<U5BAE>
+<U5F13>
+<U6025>
+<U6551>
+<U673D>
+<U6C42>
+<U6C72>
+<U6CE3>
+<U7078>
+<U7403>
+<U7A76>
+<U7AAE>
+<U7B08>
+<U7D1A>
+<U7CFE>
+<U7D66>
+<U65E7>
+<U725B>
+<U53BB>
+<U5C45>
+<U5DE8>
+<U62D2>
+<U62E0>
+<U6319>
+<U6E20>
+<U865A>
+<U8A31>
+<U8DDD>
+<U92F8>
+<U6F01>
+<U79A6>
+<U9B5A>
+<U4EA8>
+<U4EAB>
+<U4EAC>
+<U4F9B>
+<U4FA0>
+<U50D1>
+<U5147>
+<U7AF6>
+<U5171>
+<U51F6>
+<U5354>
+<U5321>
+<U537F>
+<U53EB>
+<U55AC>
+<U5883>
+<U5CE1>
+<U5F37>
+<U5F4A>
+<U602F>
+<U6050>
+<U606D>
+<U631F>
+<U6559>
+<U6A4B>
+<U6CC1>
+<U72C2>
+<U72ED>
+<U77EF>
+<U80F8>
+<U8105>
+<U8208>
+<U854E>
+<U90F7>
+<U93E1>
+<U97FF>
+<U9957>
+<U9A5A>
+<U4EF0>
+<U51DD>
+<U5C2D>
+<U6681>
+<U696D>
+<U5C40>
+<U66F2>
+<U6975>
+<U7389>
+<U6850>
+<U7C81>
+<U50C5>
+<U52E4>
+<U5747>
+<U5DFE>
+<U9326>
+<U65A4>
+<U6B23>
+<U6B3D>
+<U7434>
+<U7981>
+<U79BD>
+<U7B4B>
+<U7DCA>
+<U82B9>
+<U83CC>
+<U887F>
+<U895F>
+<U8B39>
+<U8FD1>
+<U91D1>
+<U541F>
+<U9280>
+<U4E5D>
+<U5036>
+<U53E5>
+<U533A>
+<U72D7>
+<U7396>
+<U77E9>
+<U82E6>
+<U8EAF>
+<U99C6>
+<U99C8>
+<U99D2>
+<U5177>
+<U611A>
+<U865E>
+<U55B0>
+<U7A7A>
+<U5076>
+<U5BD3>
+<U9047>
+<U9685>
+<U4E32>
+<U6ADB>
+<U91E7>
+<U5C51>
+<U5C48>
+<U6398>
+<U7A9F>
+<U6C93>
+<U9774>
+<U8F61>
+<U7AAA>
+<U718A>
+<U9688>
+<U7C82>
+<U6817>
+<U7E70>
+<U6851>
+<U936C>
+<U52F2>
+<U541B>
+<U85AB>
+<U8A13>
+<U7FA4>
+<U8ECD>
+<U90E1>
+<U5366>
+<U8888>
+<U7941>
+<U4FC2>
+<U50BE>
+<U5211>
+<U5144>
+<U5553>
+<U572D>
+<U73EA>
+<U578B>
+<U5951>
+<U5F62>
+<U5F84>
+<U6075>
+<U6176>
+<U6167>
+<U61A9>
+<U63B2>
+<U643A>
+<U656C>
+<U666F>
+<U6842>
+<U6E13>
+<U7566>
+<U7A3D>
+<U7CFB>
+<U7D4C>
+<U7D99>
+<U7E4B>
+<U7F6B>
+<U830E>
+<U834A>
+<U86CD>
+<U8A08>
+<U8A63>
+<U8B66>
+<U8EFD>
+<U981A>
+<U9D8F>
+<U82B8>
+<U8FCE>
+<U9BE8>
+<U5287>
+<U621F>
+<U6483>
+<U6FC0>
+<U9699>
+<U6841>
+<U5091>
+<U6B20>
+<U6C7A>
+<U6F54>
+<U7A74>
+<U7D50>
+<U8840>
+<U8A23>
+<U6708>
+<U4EF6>
+<U5039>
+<U5026>
+<U5065>
+<U517C>
+<U5238>
+<U5263>
+<U55A7>
+<U570F>
+<U5805>
+<U5ACC>
+<U5EFA>
+<U61B2>
+<U61F8>
+<U62F3>
+<U6372>
+<U691C>
+<U6A29>
+<U727D>
+<U72AC>
+<U732E>
+<U7814>
+<U786F>
+<U7D79>
+<U770C>
+<U80A9>
+<U898B>
+<U8B19>
+<U8CE2>
+<U8ED2>
+<U9063>
+<U9375>
+<U967A>
+<U9855>
+<U9A13>
+<U9E78>
+<U5143>
+<U539F>
+<U53B3>
+<U5E7B>
+<U5F26>
+<U6E1B>
+<U6E90>
+<U7384>
+<U73FE>
+<U7D43>
+<U8237>
+<U8A00>
+<U8AFA>
+<U9650>
+<U4E4E>
+<U500B>
+<U53E4>
+<U547C>
+<U56FA>
+<U59D1>
+<U5B64>
+<U5DF1>
+<U5EAB>
+<U5F27>
+<U6238>
+<U6545>
+<U67AF>
+<U6E56>
+<U72D0>
+<U7CCA>
+<U88B4>
+<U80A1>
+<U80E1>
+<U83F0>
+<U864E>
+<U8A87>
+<U8DE8>
+<U9237>
+<U96C7>
+<U9867>
+<U9F13>
+<U4E94>
+<U4E92>
+<U4F0D>
+<U5348>
+<U5449>
+<U543E>
+<U5A2F>
+<U5F8C>
+<U5FA1>
+<U609F>
+<U68A7>
+<U6A8E>
+<U745A>
+<U7881>
+<U8A9E>
+<U8AA4>
+<U8B77>
+<U9190>
+<U4E5E>
+<U9BC9>
+<U4EA4>
+<U4F7C>
+<U4FAF>
+<U5019>
+<U5016>
+<U5149>
+<U516C>
+<U529F>
+<U52B9>
+<U52FE>
+<U539A>
+<U53E3>
+<U5411>
+<U540E>
+<U5589>
+<U5751>
+<U57A2>
+<U597D>
+<U5B54>
+<U5B5D>
+<U5B8F>
+<U5DE5>
+<U5DE7>
+<U5DF7>
+<U5E78>
+<U5E83>
+<U5E9A>
+<U5EB7>
+<U5F18>
+<U6052>
+<U614C>
+<U6297>
+<U62D8>
+<U63A7>
+<U653B>
+<U6602>
+<U6643>
+<U66F4>
+<U676D>
+<U6821>
+<U6897>
+<U69CB>
+<U6C5F>
+<U6D2A>
+<U6D69>
+<U6E2F>
+<U6E9D>
+<U7532>
+<U7687>
+<U786C>
+<U7A3F>
+<U7CE0>
+<U7D05>
+<U7D18>
+<U7D5E>
+<U7DB1>
+<U8015>
+<U8003>
+<U80AF>
+<U80B1>
+<U8154>
+<U818F>
+<U822A>
+<U8352>
+<U884C>
+<U8861>
+<U8B1B>
+<U8CA2>
+<U8CFC>
+<U90CA>
+<U9175>
+<U9271>
+<U783F>
+<U92FC>
+<U95A4>
+<U964D>
+<U9805>
+<U9999>
+<U9AD8>
+<U9D3B>
+<U525B>
+<U52AB>
+<U53F7>
+<U5408>
+<U58D5>
+<U62F7>
+<U6FE0>
+<U8C6A>
+<U8F5F>
+<U9EB9>
+<U514B>
+<U523B>
+<U544A>
+<U56FD>
+<U7A40>
+<U9177>
+<U9D60>
+<U9ED2>
+<U7344>
+<U6F09>
+<U8170>
+<U7511>
+<U5FFD>
+<U60DA>
+<U9AA8>
+<U72DB>
+<U8FBC>
+<U6B64>
+<U9803>
+<U4ECA>
+<U56F0>
+<U5764>
+<U58BE>
+<U5A5A>
+<U6068>
+<U61C7>
+<U660F>
+<U6606>
+<U6839>
+<U68B1>
+<U6DF7>
+<U75D5>
+<U7D3A>
+<U826E>
+<U9B42>
+<U4E9B>
+<U4F50>
+<U53C9>
+<U5506>
+<U5D6F>
+<U5DE6>
+<U5DEE>
+<U67FB>
+<U6C99>
+<U7473>
+<U7802>
+<U8A50>
+<U9396>
+<U88DF>
+<U5750>
+<U5EA7>
+<U632B>
+<U50B5>
+<U50AC>
+<U518D>
+<U6700>
+<U54C9>
+<U585E>
+<U59BB>
+<U5BB0>
+<U5F69>
+<U624D>
+<U63A1>
+<U683D>
+<U6B73>
+<U6E08>
+<U707D>
+<U91C7>
+<U7280>
+<U7815>
+<U7826>
+<U796D>
+<U658E>
+<U7D30>
+<U83DC>
+<U88C1>
+<U8F09>
+<U969B>
+<U5264>
+<U5728>
+<U6750>
+<U7F6A>
+<U8CA1>
+<U51B4>
+<U5742>
+<U962A>
+<U583A>
+<U698A>
+<U80B4>
+<U54B2>
+<U5D0E>
+<U57FC>
+<U7895>
+<U9DFA>
+<U4F5C>
+<U524A>
+<U548B>
+<U643E>
+<U6628>
+<U6714>
+<U67F5>
+<U7A84>
+<U7B56>
+<U7D22>
+<U932F>
+<U685C>
+<U9BAD>
+<U7B39>
+<U5319>
+<U518A>
+<U5237>
+<U5BDF>
+<U62F6>
+<U64AE>
+<U64E6>
+<U672D>
+<U6BBA>
+<U85A9>
+<U96D1>
+<U7690>
+<U9BD6>
+<U634C>
+<U9306>
+<U9BAB>
+<U76BF>
+<U6652>
+<U4E09>
+<U5098>
+<U53C2>
+<U5C71>
+<U60E8>
+<U6492>
+<U6563>
+<U685F>
+<U71E6>
+<U73CA>
+<U7523>
+<U7B97>
+<U7E82>
+<U8695>
+<U8B83>
+<U8CDB>
+<U9178>
+<U9910>
+<U65AC>
+<U66AB>
+<U6B8B>
+<U4ED5>
+<U4ED4>
+<U4F3A>
+<U4F7F>
+<U523A>
+<U53F8>
+<U53F2>
+<U55E3>
+<U56DB>
+<U58EB>
+<U59CB>
+<U59C9>
+<U59FF>
+<U5B50>
+<U5C4D>
+<U5E02>
+<U5E2B>
+<U5FD7>
+<U601D>
+<U6307>
+<U652F>
+<U5B5C>
+<U65AF>
+<U65BD>
+<U65E8>
+<U679D>
+<U6B62>
+<U6B7B>
+<U6C0F>
+<U7345>
+<U7949>
+<U79C1>
+<U7CF8>
+<U7D19>
+<U7D2B>
+<U80A2>
+<U8102>
+<U81F3>
+<U8996>
+<U8A5E>
+<U8A69>
+<U8A66>
+<U8A8C>
+<U8AEE>
+<U8CC7>
+<U8CDC>
+<U96CC>
+<U98FC>
+<U6B6F>
+<U4E8B>
+<U4F3C>
+<U4F8D>
+<U5150>
+<U5B57>
+<U5BFA>
+<U6148>
+<U6301>
+<U6642>
+<U6B21>
+<U6ECB>
+<U6CBB>
+<U723E>
+<U74BD>
+<U75D4>
+<U78C1>
+<U793A>
+<U800C>
+<U8033>
+<U81EA>
+<U8494>
+<U8F9E>
+<U6C50>
+<U9E7F>
+<U5F0F>
+<U8B58>
+<U9D2B>
+<U7AFA>
+<U8EF8>
+<U5B8D>
+<U96EB>
+<U4E03>
+<U53F1>
+<U57F7>
+<U5931>
+<U5AC9>
+<U5BA4>
+<U6089>
+<U6E7F>
+<U6F06>
+<U75BE>
+<U8CEA>
+<U5B9F>
+<U8500>
+<U7BE0>
+<U5072>
+<U67F4>
+<U829D>
+<U5C61>
+<U854A>
+<U7E1E>
+<U820E>
+<U5199>
+<U5C04>
+<U6368>
+<U8D66>
+<U659C>
+<U716E>
+<U793E>
+<U7D17>
+<U8005>
+<U8B1D>
+<U8ECA>
+<U906E>
+<U86C7>
+<U90AA>
+<U501F>
+<U52FA>
+<U5C3A>
+<U6753>
+<U707C>
+<U7235>
+<U914C>
+<U91C8>
+<U932B>
+<U82E5>
+<U5BC2>
+<U5F31>
+<U60F9>
+<U4E3B>
+<U53D6>
+<U5B88>
+<U624B>
+<U6731>
+<U6B8A>
+<U72E9>
+<U73E0>
+<U7A2E>
+<U816B>
+<U8DA3>
+<U9152>
+<U9996>
+<U5112>
+<U53D7>
+<U546A>
+<U5BFF>
+<U6388>
+<U6A39>
+<U7DAC>
+<U9700>
+<U56DA>
+<U53CE>
+<U5468>
+<U5B97>
+<U5C31>
+<U5DDE>
+<U4FEE>
+<U6101>
+<U62FE>
+<U6D32>
+<U79C0>
+<U79CB>
+<U7D42>
+<U7E4D>
+<U7FD2>
+<U81ED>
+<U821F>
+<U8490>
+<U8846>
+<U8972>
+<U8B90>
+<U8E74>
+<U8F2F>
+<U9031>
+<U914B>
+<U916C>
+<U96C6>
+<U919C>
+<U4EC0>
+<U4F4F>
+<U5145>
+<U5341>
+<U5F93>
+<U620E>
+<U67D4>
+<U6C41>
+<U6E0B>
+<U7363>
+<U7E26>
+<U91CD>
+<U9283>
+<U53D4>
+<U5919>
+<U5BBF>
+<U6DD1>
+<U795D>
+<U7E2E>
+<U7C9B>
+<U587E>
+<U719F>
+<U51FA>
+<U8853>
+<U8FF0>
+<U4FCA>
+<U5CFB>
+<U6625>
+<U77AC>
+<U7AE3>
+<U821C>
+<U99FF>
+<U51C6>
+<U5FAA>
+<U65EC>
+<U696F>
+<U6B89>
+<U6DF3>
+<U6E96>
+<U6F64>
+<U76FE>
+<U7D14>
+<U5DE1>
+<U9075>
+<U9187>
+<U9806>
+<U51E6>
+<U521D>
+<U6240>
+<U6691>
+<U66D9>
+<U6E1A>
+<U5EB6>
+<U7DD2>
+<U7F72>
+<U66F8>
+<U85AF>
+<U85F7>
+<U8AF8>
+<U52A9>
+<U53D9>
+<U5973>
+<U5E8F>
+<U5F90>
+<U6055>
+<U92E4>
+<U9664>
+<U50B7>
+<U511F>
+<U52DD>
+<U5320>
+<U5347>
+<U53EC>
+<U54E8>
+<U5546>
+<U5531>
+<U5617>
+<U5968>
+<U59BE>
+<U5A3C>
+<U5BB5>
+<U5C06>
+<U5C0F>
+<U5C11>
+<U5C1A>
+<U5E84>
+<U5E8A>
+<U5EE0>
+<U5F70>
+<U627F>
+<U6284>
+<U62DB>
+<U638C>
+<U6377>
+<U6607>
+<U660C>
+<U662D>
+<U6676>
+<U677E>
+<U68A2>
+<U6A1F>
+<U6A35>
+<U6CBC>
+<U6D88>
+<U6E09>
+<U6E58>
+<U713C>
+<U7126>
+<U7167>
+<U75C7>
+<U7701>
+<U785D>
+<U7901>
+<U7965>
+<U79F0>
+<U7AE0>
+<U7B11>
+<U7CA7>
+<U7D39>
+<U8096>
+<U83D6>
+<U848B>
+<U8549>
+<U885D>
+<U88F3>
+<U8A1F>
+<U8A3C>
+<U8A54>
+<U8A73>
+<U8C61>
+<U8CDE>
+<U91A4>
+<U9266>
+<U937E>
+<U9418>
+<U969C>
+<U9798>
+<U4E0A>
+<U4E08>
+<U4E1E>
+<U4E57>
+<U5197>
+<U5270>
+<U57CE>
+<U5834>
+<U58CC>
+<U5B22>
+<U5E38>
+<U60C5>
+<U64FE>
+<U6761>
+<U6756>
+<U6D44>
+<U72B6>
+<U7573>
+<U7A63>
+<U84B8>
+<U8B72>
+<U91B8>
+<U9320>
+<U5631>
+<U57F4>
+<U98FE>
+<U62ED>
+<U690D>
+<U6B96>
+<U71ED>
+<U7E54>
+<U8077>
+<U8272>
+<U89E6>
+<U98DF>
+<U8755>
+<U8FB1>
+<U5C3B>
+<U4F38>
+<U4FE1>
+<U4FB5>
+<U5507>
+<U5A20>
+<U5BDD>
+<U5BE9>
+<U5FC3>
+<U614E>
+<U632F>
+<U65B0>
+<U664B>
+<U68EE>
+<U699B>
+<U6D78>
+<U6DF1>
+<U7533>
+<U75B9>
+<U771F>
+<U795E>
+<U79E6>
+<U7D33>
+<U81E3>
+<U82AF>
+<U85AA>
+<U89AA>
+<U8A3A>
+<U8EAB>
+<U8F9B>
+<U9032>
+<U91DD>
+<U9707>
+<U4EBA>
+<U4EC1>
+<U5203>
+<U5875>
+<U58EC>
+<U5C0B>
+<U751A>
+<U5C3D>
+<U814E>
+<U8A0A>
+<U8FC5>
+<U9663>
+<U976D>
+<U7B25>
+<U8ACF>
+<U9808>
+<U9162>
+<U56F3>
+<U53A8>
+<U9017>
+<U5439>
+<U5782>
+<U5E25>
+<U63A8>
+<U6C34>
+<U708A>
+<U7761>
+<U7C8B>
+<U7FE0>
+<U8870>
+<U9042>
+<U9154>
+<U9310>
+<U9318>
+<U968F>
+<U745E>
+<U9AC4>
+<U5D07>
+<U5D69>
+<U6570>
+<U67A2>
+<U8DA8>
+<U96DB>
+<U636E>
+<U6749>
+<U6919>
+<U83C5>
+<U9817>
+<U96C0>
+<U88FE>
+<U6F84>
+<U647A>
+<U5BF8>
+<U4E16>
+<U702C>
+<U755D>
+<U662F>
+<U51C4>
+<U5236>
+<U52E2>
+<U59D3>
+<U5F81>
+<U6027>
+<U6210>
+<U653F>
+<U6574>
+<U661F>
+<U6674>
+<U68F2>
+<U6816>
+<U6B63>
+<U6E05>
+<U7272>
+<U751F>
+<U76DB>
+<U7CBE>
+<U8056>
+<U58F0>
+<U88FD>
+<U897F>
+<U8AA0>
+<U8A93>
+<U8ACB>
+<U901D>
+<U9192>
+<U9752>
+<U9759>
+<U6589>
+<U7A0E>
+<U8106>
+<U96BB>
+<U5E2D>
+<U60DC>
+<U621A>
+<U65A5>
+<U6614>
+<U6790>
+<U77F3>
+<U7A4D>
+<U7C4D>
+<U7E3E>
+<U810A>
+<U8CAC>
+<U8D64>
+<U8DE1>
+<U8E5F>
+<U78A9>
+<U5207>
+<U62D9>
+<U63A5>
+<U6442>
+<U6298>
+<U8A2D>
+<U7A83>
+<U7BC0>
+<U8AAC>
+<U96EA>
+<U7D76>
+<U820C>
+<U8749>
+<U4ED9>
+<U5148>
+<U5343>
+<U5360>
+<U5BA3>
+<U5C02>
+<U5C16>
+<U5DDD>
+<U6226>
+<U6247>
+<U64B0>
+<U6813>
+<U6834>
+<U6CC9>
+<U6D45>
+<U6D17>
+<U67D3>
+<U6F5C>
+<U714E>
+<U717D>
+<U65CB>
+<U7A7F>
+<U7BAD>
+<U7DDA>
+<U7E4A>
+<U7FA8>
+<U817A>
+<U821B>
+<U8239>
+<U85A6>
+<U8A6E>
+<U8CCE>
+<U8DF5>
+<U9078>
+<U9077>
+<U92AD>
+<U9291>
+<U9583>
+<U9BAE>
+<U524D>
+<U5584>
+<U6F38>
+<U7136>
+<U5168>
+<U7985>
+<U7E55>
+<U81B3>
+<U7CCE>
+<U564C>
+<U5851>
+<U5CA8>
+<U63AA>
+<U66FE>
+<U66FD>
+<U695A>
+<U72D9>
+<U758F>
+<U758E>
+<U790E>
+<U7956>
+<U79DF>
+<U7C97>
+<U7D20>
+<U7D44>
+<U8607>
+<U8A34>
+<U963B>
+<U9061>
+<U9F20>
+<U50E7>
+<U5275>
+<U53CC>
+<U53E2>
+<U5009>
+<U55AA>
+<U58EE>
+<U594F>
+<U723D>
+<U5B8B>
+<U5C64>
+<U531D>
+<U60E3>
+<U60F3>
+<U635C>
+<U6383>
+<U633F>
+<U63BB>
+<U64CD>
+<U65E9>
+<U66F9>
+<U5DE3>
+<U69CD>
+<U69FD>
+<U6F15>
+<U71E5>
+<U4E89>
+<U75E9>
+<U76F8>
+<U7A93>
+<U7CDF>
+<U7DCF>
+<U7D9C>
+<U8061>
+<U8349>
+<U8358>
+<U846C>
+<U84BC>
+<U85FB>
+<U88C5>
+<U8D70>
+<U9001>
+<U906D>
+<U9397>
+<U971C>
+<U9A12>
+<U50CF>
+<U5897>
+<U618E>
+<U81D3>
+<U8535>
+<U8D08>
+<U9020>
+<U4FC3>
+<U5074>
+<U5247>
+<U5373>
+<U606F>
+<U6349>
+<U675F>
+<U6E2C>
+<U8DB3>
+<U901F>
+<U4FD7>
+<U5C5E>
+<U8CCA>
+<U65CF>
+<U7D9A>
+<U5352>
+<U8896>
+<U5176>
+<U63C3>
+<U5B58>
+<U5B6B>
+<U5C0A>
+<U640D>
+<U6751>
+<U905C>
+<U4ED6>
+<U591A>
+<U592A>
+<U6C70>
+<U8A51>
+<U553E>
+<U5815>
+<U59A5>
+<U60F0>
+<U6253>
+<U67C1>
+<U8235>
+<U6955>
+<U9640>
+<U99C4>
+<U9A28>
+<U4F53>
+<U5806>
+<U5BFE>
+<U8010>
+<U5CB1>
+<U5E2F>
+<U5F85>
+<U6020>
+<U614B>
+<U6234>
+<U66FF>
+<U6CF0>
+<U6EDE>
+<U80CE>
+<U817F>
+<U82D4>
+<U888B>
+<U8CB8>
+<U9000>
+<U902E>
+<U968A>
+<U9EDB>
+<U9BDB>
+<U4EE3>
+<U53F0>
+<U5927>
+<U7B2C>
+<U918D>
+<U984C>
+<U9DF9>
+<U6EDD>
+<U7027>
+<U5353>
+<U5544>
+<U5B85>
+<U6258>
+<U629E>
+<U62D3>
+<U6CA2>
+<U6FEF>
+<U7422>
+<U8A17>
+<U9438>
+<U6FC1>
+<U8AFE>
+<U8338>
+<U51E7>
+<U86F8>
+<U53EA>
+<U53E9>
+<U4F46>
+<U9054>
+<U8FB0>
+<U596A>
+<U8131>
+<U5DFD>
+<U7AEA>
+<U8FBF>
+<U68DA>
+<U8C37>
+<U72F8>
+<U9C48>
+<U6A3D>
+<U8AB0>
+<U4E39>
+<U5358>
+<U5606>
+<U5766>
+<U62C5>
+<U63A2>
+<U65E6>
+<U6B4E>
+<U6DE1>
+<U6E5B>
+<U70AD>
+<U77ED>
+<U7AEF>
+<U7BAA>
+<U7DBB>
+<U803D>
+<U80C6>
+<U86CB>
+<U8A95>
+<U935B>
+<U56E3>
+<U58C7>
+<U5F3E>
+<U65AD>
+<U6696>
+<U6A80>
+<U6BB5>
+<U7537>
+<U8AC7>
+<U5024>
+<U77E5>
+<U5730>
+<U5F1B>
+<U6065>
+<U667A>
+<U6C60>
+<U75F4>
+<U7A1A>
+<U7F6E>
+<U81F4>
+<U8718>
+<U9045>
+<U99B3>
+<U7BC9>
+<U755C>
+<U7AF9>
+<U7B51>
+<U84C4>
+<U9010>
+<U79E9>
+<U7A92>
+<U8336>
+<U5AE1>
+<U7740>
+<U4E2D>
+<U4EF2>
+<U5B99>
+<U5FE0>
+<U62BD>
+<U663C>
+<U67F1>
+<U6CE8>
+<U866B>
+<U8877>
+<U8A3B>
+<U914E>
+<U92F3>
+<U99D0>
+<U6A17>
+<U7026>
+<U732A>
+<U82E7>
+<U8457>
+<U8CAF>
+<U4E01>
+<U5146>
+<U51CB>
+<U558B>
+<U5BF5>
+<U5E16>
+<U5E33>
+<U5E81>
+<U5F14>
+<U5F35>
+<U5F6B>
+<U5FB4>
+<U61F2>
+<U6311>
+<U66A2>
+<U671D>
+<U6F6E>
+<U7252>
+<U753A>
+<U773A>
+<U8074>
+<U8139>
+<U8178>
+<U8776>
+<U8ABF>
+<U8ADC>
+<U8D85>
+<U8DF3>
+<U929A>
+<U9577>
+<U9802>
+<U9CE5>
+<U52C5>
+<U6357>
+<U76F4>
+<U6715>
+<U6C88>
+<U73CD>
+<U8CC3>
+<U93AE>
+<U9673>
+<U6D25>
+<U589C>
+<U690E>
+<U69CC>
+<U8FFD>
+<U939A>
+<U75DB>
+<U901A>
+<U585A>
+<U6802>
+<U63B4>
+<U69FB>
+<U4F43>
+<U6F2C>
+<U67D8>
+<U8FBB>
+<U8526>
+<U7DB4>
+<U9354>
+<U693F>
+<U6F70>
+<U576A>
+<U58F7>
+<U5B2C>
+<U7D2C>
+<U722A>
+<U540A>
+<U91E3>
+<U9DB4>
+<U4EAD>
+<U4F4E>
+<U505C>
+<U5075>
+<U5243>
+<U8C9E>
+<U5448>
+<U5824>
+<U5B9A>
+<U5E1D>
+<U5E95>
+<U5EAD>
+<U5EF7>
+<U5F1F>
+<U608C>
+<U62B5>
+<U633A>
+<U63D0>
+<U68AF>
+<U6C40>
+<U7887>
+<U798E>
+<U7A0B>
+<U7DE0>
+<U8247>
+<U8A02>
+<U8AE6>
+<U8E44>
+<U9013>
+<U90B8>
+<U912D>
+<U91D8>
+<U9F0E>
+<U6CE5>
+<U6458>
+<U64E2>
+<U6575>
+<U6EF4>
+<U7684>
+<U7B1B>
+<U9069>
+<U93D1>
+<U6EBA>
+<U54F2>
+<U5FB9>
+<U64A4>
+<U8F4D>
+<U8FED>
+<U9244>
+<U5178>
+<U586B>
+<U5929>
+<U5C55>
+<U5E97>
+<U6DFB>
+<U7E8F>
+<U751C>
+<U8CBC>
+<U8EE2>
+<U985B>
+<U70B9>
+<U4F1D>
+<U6BBF>
+<U6FB1>
+<U7530>
+<U96FB>
+<U514E>
+<U5410>
+<U5835>
+<U5857>
+<U59AC>
+<U5C60>
+<U5F92>
+<U6597>
+<U675C>
+<U6E21>
+<U767B>
+<U83DF>
+<U8CED>
+<U9014>
+<U90FD>
+<U934D>
+<U7825>
+<U783A>
+<U52AA>
+<U5EA6>
+<U571F>
+<U5974>
+<U6012>
+<U5012>
+<U515A>
+<U51AC>
+<U51CD>
+<U5200>
+<U5510>
+<U5854>
+<U5858>
+<U5957>
+<U5B95>
+<U5CF6>
+<U5D8B>
+<U60BC>
+<U6295>
+<U642D>
+<U6771>
+<U6843>
+<U68BC>
+<U68DF>
+<U76D7>
+<U6DD8>
+<U6E6F>
+<U6D9B>
+<U706F>
+<U71C8>
+<U5F53>
+<U75D8>
+<U7977>
+<U7B49>
+<U7B54>
+<U7B52>
+<U7CD6>
+<U7D71>
+<U5230>
+<U8463>
+<U8569>
+<U85E4>
+<U8A0E>
+<U8B04>
+<U8C46>
+<U8E0F>
+<U9003>
+<U900F>
+<U9419>
+<U9676>
+<U982D>
+<U9A30>
+<U95D8>
+<U50CD>
+<U52D5>
+<U540C>
+<U5802>
+<U5C0E>
+<U61A7>
+<U649E>
+<U6D1E>
+<U77B3>
+<U7AE5>
+<U80F4>
+<U8404>
+<U9053>
+<U9285>
+<U5CE0>
+<U9D07>
+<U533F>
+<U5F97>
+<U5FB3>
+<U6D9C>
+<U7279>
+<U7763>
+<U79BF>
+<U7BE4>
+<U6BD2>
+<U72EC>
+<U8AAD>
+<U6803>
+<U6A61>
+<U51F8>
+<U7A81>
+<U6934>
+<U5C4A>
+<U9CF6>
+<U82EB>
+<U5BC5>
+<U9149>
+<U701E>
+<U5678>
+<U5C6F>
+<U60C7>
+<U6566>
+<U6C8C>
+<U8C5A>
+<U9041>
+<U9813>
+<U5451>
+<U66C7>
+<U920D>
+<U5948>
+<U90A3>
+<U5185>
+<U4E4D>
+<U51EA>
+<U8599>
+<U8B0E>
+<U7058>
+<U637A>
+<U934B>
+<U6962>
+<U99B4>
+<U7E04>
+<U7577>
+<U5357>
+<U6960>
+<U8EDF>
+<U96E3>
+<U6C5D>
+<U4E8C>
+<U5C3C>
+<U5F10>
+<U8FE9>
+<U5302>
+<U8CD1>
+<U8089>
+<U8679>
+<U5EFF>
+<U65E5>
+<U4E73>
+<U5165>
+<U5982>
+<U5C3F>
+<U97EE>
+<U4EFB>
+<U598A>
+<U5FCD>
+<U8A8D>
+<U6FE1>
+<U79B0>
+<U7962>
+<U5BE7>
+<U8471>
+<U732B>
+<U71B1>
+<U5E74>
+<U5FF5>
+<U637B>
+<U649A>
+<U71C3>
+<U7C98>
+<U4E43>
+<U5EFC>
+<U4E4B>
+<U57DC>
+<U56A2>
+<U60A9>
+<U6FC3>
+<U7D0D>
+<U80FD>
+<U8133>
+<U81BF>
+<U8FB2>
+<U8997>
+<U86A4>
+<U5DF4>
+<U628A>
+<U64AD>
+<U8987>
+<U6777>
+<U6CE2>
+<U6D3E>
+<U7436>
+<U7834>
+<U5A46>
+<U7F75>
+<U82AD>
+<U99AC>
+<U4FF3>
+<U5EC3>
+<U62DD>
+<U6392>
+<U6557>
+<U676F>
+<U76C3>
+<U724C>
+<U80CC>
+<U80BA>
+<U8F29>
+<U914D>
+<U500D>
+<U57F9>
+<U5A92>
+<U6885>
+<U6973>
+<U7164>
+<U72FD>
+<U8CB7>
+<U58F2>
+<U8CE0>
+<U966A>
+<U9019>
+<U877F>
+<U79E4>
+<U77E7>
+<U8429>
+<U4F2F>
+<U5265>
+<U535A>
+<U62CD>
+<U67CF>
+<U6CCA>
+<U767D>
+<U7B94>
+<U7C95>
+<U8236>
+<U8584>
+<U8FEB>
+<U66DD>
+<U6F20>
+<U7206>
+<U7E1B>
+<U83AB>
+<U99C1>
+<U9EA6>
+<U51FD>
+<U7BB1>
+<U7872>
+<U7BB8>
+<U8087>
+<U7B48>
+<U6AE8>
+<U5E61>
+<U808C>
+<U7551>
+<U7560>
+<U516B>
+<U9262>
+<U6E8C>
+<U767A>
+<U9197>
+<U9AEA>
+<U4F10>
+<U7F70>
+<U629C>
+<U7B4F>
+<U95A5>
+<U9CE9>
+<U567A>
+<U5859>
+<U86E4>
+<U96BC>
+<U4F34>
+<U5224>
+<U534A>
+<U53CD>
+<U53DB>
+<U5E06>
+<U642C>
+<U6591>
+<U677F>
+<U6C3E>
+<U6C4E>
+<U7248>
+<U72AF>
+<U73ED>
+<U7554>
+<U7E41>
+<U822C>
+<U85E9>
+<U8CA9>
+<U7BC4>
+<U91C6>
+<U7169>
+<U9812>
+<U98EF>
+<U633D>
+<U6669>
+<U756A>
+<U76E4>
+<U78D0>
+<U8543>
+<U86EE>
+<U532A>
+<U5351>
+<U5426>
+<U5983>
+<U5E87>
+<U5F7C>
+<U60B2>
+<U6249>
+<U6279>
+<U62AB>
+<U6590>
+<U6BD4>
+<U6CCC>
+<U75B2>
+<U76AE>
+<U7891>
+<U79D8>
+<U7DCB>
+<U7F77>
+<U80A5>
+<U88AB>
+<U8AB9>
+<U8CBB>
+<U907F>
+<U975E>
+<U98DB>
+<U6A0B>
+<U7C38>
+<U5099>
+<U5C3E>
+<U5FAE>
+<U6787>
+<U6BD8>
+<U7435>
+<U7709>
+<U7F8E>
+<U9F3B>
+<U67CA>
+<U7A17>
+<U5339>
+<U758B>
+<U9AED>
+<U5F66>
+<U819D>
+<U83F1>
+<U8098>
+<U5F3C>
+<U5FC5>
+<U7562>
+<U7B46>
+<U903C>
+<U6867>
+<U59EB>
+<U5A9B>
+<U7D10>
+<U767E>
+<U8B2C>
+<U4FF5>
+<U5F6A>
+<U6A19>
+<U6C37>
+<U6F02>
+<U74E2>
+<U7968>
+<U8868>
+<U8A55>
+<U8C79>
+<U5EDF>
+<U63CF>
+<U75C5>
+<U79D2>
+<U82D7>
+<U9328>
+<U92F2>
+<U849C>
+<U86ED>
+<U9C2D>
+<U54C1>
+<U5F6C>
+<U658C>
+<U6D5C>
+<U7015>
+<U8CA7>
+<U8CD3>
+<U983B>
+<U654F>
+<U74F6>
+<U4E0D>
+<U4ED8>
+<U57E0>
+<U592B>
+<U5A66>
+<U5BCC>
+<U51A8>
+<U5E03>
+<U5E9C>
+<U6016>
+<U6276>
+<U6577>
+<U65A7>
+<U666E>
+<U6D6E>
+<U7236>
+<U7B26>
+<U8150>
+<U819A>
+<U8299>
+<U8B5C>
+<U8CA0>
+<U8CE6>
+<U8D74>
+<U961C>
+<U9644>
+<U4FAE>
+<U64AB>
+<U6B66>
+<U821E>
+<U8461>
+<U856A>
+<U90E8>
+<U5C01>
+<U6953>
+<U98A8>
+<U847A>
+<U8557>
+<U4F0F>
+<U526F>
+<U5FA9>
+<U5E45>
+<U670D>
+<U798F>
+<U8179>
+<U8907>
+<U8986>
+<U6DF5>
+<U5F17>
+<U6255>
+<U6CB8>
+<U4ECF>
+<U7269>
+<U9B92>
+<U5206>
+<U543B>
+<U5674>
+<U58B3>
+<U61A4>
+<U626E>
+<U711A>
+<U596E>
+<U7C89>
+<U7CDE>
+<U7D1B>
+<U96F0>
+<U6587>
+<U805E>
+<U4E19>
+<U4F75>
+<U5175>
+<U5840>
+<U5E63>
+<U5E73>
+<U5F0A>
+<U67C4>
+<U4E26>
+<U853D>
+<U9589>
+<U965B>
+<U7C73>
+<U9801>
+<U50FB>
+<U58C1>
+<U7656>
+<U78A7>
+<U5225>
+<U77A5>
+<U8511>
+<U7B86>
+<U504F>
+<U5909>
+<U7247>
+<U7BC7>
+<U7DE8>
+<U8FBA>
+<U8FD4>
+<U904D>
+<U4FBF>
+<U52C9>
+<U5A29>
+<U5F01>
+<U97AD>
+<U4FDD>
+<U8217>
+<U92EA>
+<U5703>
+<U6355>
+<U6B69>
+<U752B>
+<U88DC>
+<U8F14>
+<U7A42>
+<U52DF>
+<U5893>
+<U6155>
+<U620A>
+<U66AE>
+<U6BCD>
+<U7C3F>
+<U83E9>
+<U5023>
+<U4FF8>
+<U5305>
+<U5446>
+<U5831>
+<U5949>
+<U5B9D>
+<U5CF0>
+<U5CEF>
+<U5D29>
+<U5E96>
+<U62B1>
+<U6367>
+<U653E>
+<U65B9>
+<U670B>
+<U6CD5>
+<U6CE1>
+<U70F9>
+<U7832>
+<U7E2B>
+<U80DE>
+<U82B3>
+<U840C>
+<U84EC>
+<U8702>
+<U8912>
+<U8A2A>
+<U8C4A>
+<U90A6>
+<U92D2>
+<U98FD>
+<U9CF3>
+<U9D6C>
+<U4E4F>
+<U4EA1>
+<U508D>
+<U5256>
+<U574A>
+<U59A8>
+<U5E3D>
+<U5FD8>
+<U5FD9>
+<U623F>
+<U66B4>
+<U671B>
+<U67D0>
+<U68D2>
+<U5192>
+<U7D21>
+<U80AA>
+<U81A8>
+<U8B00>
+<U8C8C>
+<U8CBF>
+<U927E>
+<U9632>
+<U5420>
+<U982C>
+<U5317>
+<U50D5>
+<U535C>
+<U58A8>
+<U64B2>
+<U6734>
+<U7267>
+<U7766>
+<U7A46>
+<U91E6>
+<U52C3>
+<U6CA1>
+<U6B86>
+<U5800>
+<U5E4C>
+<U5954>
+<U672C>
+<U7FFB>
+<U51E1>
+<U76C6>
+<U6469>
+<U78E8>
+<U9B54>
+<U9EBB>
+<U57CB>
+<U59B9>
+<U6627>
+<U679A>
+<U6BCE>
+<U54E9>
+<U69D9>
+<U5E55>
+<U819C>
+<U6795>
+<U9BAA>
+<U67FE>
+<U9C52>
+<U685D>
+<U4EA6>
+<U4FE3>
+<U53C8>
+<U62B9>
+<U672B>
+<U6CAB>
+<U8FC4>
+<U4FAD>
+<U7E6D>
+<U9EBF>
+<U4E07>
+<U6162>
+<U6E80>
+<U6F2B>
+<U8513>
+<U5473>
+<U672A>
+<U9B45>
+<U5DF3>
+<U7B95>
+<U5CAC>
+<U5BC6>
+<U871C>
+<U6E4A>
+<U84D1>
+<U7A14>
+<U8108>
+<U5999>
+<U7C8D>
+<U6C11>
+<U7720>
+<U52D9>
+<U5922>
+<U7121>
+<U725F>
+<U77DB>
+<U9727>
+<U9D61>
+<U690B>
+<U5A7F>
+<U5A18>
+<U51A5>
+<U540D>
+<U547D>
+<U660E>
+<U76DF>
+<U8FF7>
+<U9298>
+<U9CF4>
+<U59EA>
+<U725D>
+<U6EC5>
+<U514D>
+<U68C9>
+<U7DBF>
+<U7DEC>
+<U9762>
+<U9EBA>
+<U6478>
+<U6A21>
+<U8302>
+<U5984>
+<U5B5F>
+<U6BDB>
+<U731B>
+<U76F2>
+<U7DB2>
+<U8017>
+<U8499>
+<U5132>
+<U6728>
+<U9ED9>
+<U76EE>
+<U6762>
+<U52FF>
+<U9905>
+<U5C24>
+<U623B>
+<U7C7E>
+<U8CB0>
+<U554F>
+<U60B6>
+<U7D0B>
+<U9580>
+<U5301>
+<U4E5F>
+<U51B6>
+<U591C>
+<U723A>
+<U8036>
+<U91CE>
+<U5F25>
+<U77E2>
+<U5384>
+<U5F79>
+<U7D04>
+<U85AC>
+<U8A33>
+<U8E8D>
+<U9756>
+<U67F3>
+<U85AE>
+<U9453>
+<U6109>
+<U6108>
+<U6CB9>
+<U7652>
+<U8AED>
+<U8F38>
+<U552F>
+<U4F51>
+<U512A>
+<U52C7>
+<U53CB>
+<U5BA5>
+<U5E7D>
+<U60A0>
+<U6182>
+<U63D6>
+<U6709>
+<U67DA>
+<U6E67>
+<U6D8C>
+<U7336>
+<U7337>
+<U7531>
+<U7950>
+<U88D5>
+<U8A98>
+<U904A>
+<U9091>
+<U90F5>
+<U96C4>
+<U878D>
+<U5915>
+<U4E88>
+<U4F59>
+<U4E0E>
+<U8A89>
+<U8F3F>
+<U9810>
+<U50AD>
+<U5E7C>
+<U5996>
+<U5BB9>
+<U5EB8>
+<U63DA>
+<U63FA>
+<U64C1>
+<U66DC>
+<U694A>
+<U69D8>
+<U6D0B>
+<U6EB6>
+<U7194>
+<U7528>
+<U7AAF>
+<U7F8A>
+<U8000>
+<U8449>
+<U84C9>
+<U8981>
+<U8B21>
+<U8E0A>
+<U9065>
+<U967D>
+<U990A>
+<U617E>
+<U6291>
+<U6B32>
+<U6C83>
+<U6D74>
+<U7FCC>
+<U7FFC>
+<U6DC0>
+<U7F85>
+<U87BA>
+<U88F8>
+<U6765>
+<U83B1>
+<U983C>
+<U96F7>
+<U6D1B>
+<U7D61>
+<U843D>
+<U916A>
+<U4E71>
+<U5375>
+<U5D50>
+<U6B04>
+<U6FEB>
+<U85CD>
+<U862D>
+<U89A7>
+<U5229>
+<U540F>
+<U5C65>
+<U674E>
+<U68A8>
+<U7406>
+<U7483>
+<U75E2>
+<U88CF>
+<U88E1>
+<U91CC>
+<U96E2>
+<U9678>
+<U5F8B>
+<U7387>
+<U7ACB>
+<U844E>
+<U63A0>
+<U7565>
+<U5289>
+<U6D41>
+<U6E9C>
+<U7409>
+<U7559>
+<U786B>
+<U7C92>
+<U9686>
+<U7ADC>
+<U9F8D>
+<U4FB6>
+<U616E>
+<U65C5>
+<U865C>
+<U4E86>
+<U4EAE>
+<U50DA>
+<U4E21>
+<U51CC>
+<U5BEE>
+<U6599>
+<U6881>
+<U6DBC>
+<U731F>
+<U7642>
+<U77AD>
+<U7A1C>
+<U7CE7>
+<U826F>
+<U8AD2>
+<U907C>
+<U91CF>
+<U9675>
+<U9818>
+<U529B>
+<U7DD1>
+<U502B>
+<U5398>
+<U6797>
+<U6DCB>
+<U71D0>
+<U7433>
+<U81E8>
+<U8F2A>
+<U96A3>
+<U9C57>
+<U9E9F>
+<U7460>
+<U5841>
+<U6D99>
+<U7D2F>
+<U985E>
+<U4EE4>
+<U4F36>
+<U4F8B>
+<U51B7>
+<U52B1>
+<U5DBA>
+<U601C>
+<U73B2>
+<U793C>
+<U82D3>
+<U9234>
+<U96B7>
+<U96F6>
+<U970A>
+<U9E97>
+<U9F62>
+<U66A6>
+<U6B74>
+<U5217>
+<U52A3>
+<U70C8>
+<U88C2>
+<U5EC9>
+<U604B>
+<U6190>
+<U6F23>
+<U7149>
+<U7C3E>
+<U7DF4>
+<U806F>
+<U84EE>
+<U9023>
+<U932C>
+<U5442>
+<U9B6F>
+<U6AD3>
+<U7089>
+<U8CC2>
+<U8DEF>
+<U9732>
+<U52B4>
+<U5A41>
+<U5ECA>
+<U5F04>
+<U6717>
+<U697C>
+<U6994>
+<U6D6A>
+<U6F0F>
+<U7262>
+<U72FC>
+<U7BED>
+<U8001>
+<U807E>
+<U874B>
+<U90CE>
+<U516D>
+<U9E93>
+<U7984>
+<U808B>
+<U9332>
+<U8AD6>
+<U502D>
+<U548C>
+<U8A71>
+<U6B6A>
+<U8CC4>
+<U8107>
+<U60D1>
+<U67A0>
+<U9DF2>
+<U4E99>
+<U4E98>
+<U9C10>
+<U8A6B>
+<U85C1>
+<U8568>
+<U6900>
+<U6E7E>
+<U7897>
+<U8155>
+<U5F0C>
+<U4E10>
+<U4E15>
+<U4E2A>
+<U4E31>
+<U4E36>
+<U4E3C>
+<U4E3F>
+<U4E42>
+<U4E56>
+<U4E58>
+<U4E82>
+<U4E85>
+<U8C6B>
+<U4E8A>
+<U8212>
+<U5F0D>
+<U4E8E>
+<U4E9E>
+<U4E9F>
+<U4EA0>
+<U4EA2>
+<U4EB0>
+<U4EB3>
+<U4EB6>
+<U4ECE>
+<U4ECD>
+<U4EC4>
+<U4EC6>
+<U4EC2>
+<U4ED7>
+<U4EDE>
+<U4EED>
+<U4EDF>
+<U4EF7>
+<U4F09>
+<U4F5A>
+<U4F30>
+<U4F5B>
+<U4F5D>
+<U4F57>
+<U4F47>
+<U4F76>
+<U4F88>
+<U4F8F>
+<U4F98>
+<U4F7B>
+<U4F69>
+<U4F70>
+<U4F91>
+<U4F6F>
+<U4F86>
+<U4F96>
+<U5118>
+<U4FD4>
+<U4FDF>
+<U4FCE>
+<U4FD8>
+<U4FDB>
+<U4FD1>
+<U4FDA>
+<U4FD0>
+<U4FE4>
+<U4FE5>
+<U501A>
+<U5028>
+<U5014>
+<U502A>
+<U5025>
+<U5005>
+<U4F1C>
+<U4FF6>
+<U5021>
+<U5029>
+<U502C>
+<U4FFE>
+<U4FEF>
+<U5011>
+<U5006>
+<U5043>
+<U5047>
+<U6703>
+<U5055>
+<U5050>
+<U5048>
+<U505A>
+<U5056>
+<U506C>
+<U5078>
+<U5080>
+<U509A>
+<U5085>
+<U50B4>
+<U50B2>
+<U50C9>
+<U50CA>
+<U50B3>
+<U50C2>
+<U50D6>
+<U50DE>
+<U50E5>
+<U50ED>
+<U50E3>
+<U50EE>
+<U50F9>
+<U50F5>
+<U5109>
+<U5101>
+<U5102>
+<U5116>
+<U5115>
+<U5114>
+<U511A>
+<U5121>
+<U513A>
+<U5137>
+<U513C>
+<U513B>
+<U513F>
+<U5140>
+<U5152>
+<U514C>
+<U5154>
+<U5162>
+<U7AF8>
+<U5169>
+<U516A>
+<U516E>
+<U5180>
+<U5182>
+<U56D8>
+<U518C>
+<U5189>
+<U518F>
+<U5191>
+<U5193>
+<U5195>
+<U5196>
+<U51A4>
+<U51A6>
+<U51A2>
+<U51A9>
+<U51AA>
+<U51AB>
+<U51B3>
+<U51B1>
+<U51B2>
+<U51B0>
+<U51B5>
+<U51BD>
+<U51C5>
+<U51C9>
+<U51DB>
+<U51E0>
+<U8655>
+<U51E9>
+<U51ED>
+<U51F0>
+<U51F5>
+<U51FE>
+<U5204>
+<U520B>
+<U5214>
+<U520E>
+<U5227>
+<U522A>
+<U522E>
+<U5233>
+<U5239>
+<U524F>
+<U5244>
+<U524B>
+<U524C>
+<U525E>
+<U5254>
+<U526A>
+<U5274>
+<U5269>
+<U5273>
+<U527F>
+<U527D>
+<U528D>
+<U5294>
+<U5292>
+<U5271>
+<U5288>
+<U5291>
+<U8FA8>
+<U8FA7>
+<U52AC>
+<U52AD>
+<U52BC>
+<U52B5>
+<U52C1>
+<U52CD>
+<U52D7>
+<U52DE>
+<U52E3>
+<U52E6>
+<U98ED>
+<U52E0>
+<U52F3>
+<U52F5>
+<U52F8>
+<U52F9>
+<U5306>
+<U5308>
+<U7538>
+<U530D>
+<U5310>
+<U530F>
+<U5315>
+<U531A>
+<U5323>
+<U532F>
+<U5331>
+<U5333>
+<U5338>
+<U5340>
+<U5346>
+<U5345>
+<U4E17>
+<U5349>
+<U534D>
+<U51D6>
+<U535E>
+<U5369>
+<U536E>
+<U5918>
+<U537B>
+<U5377>
+<U5382>
+<U5396>
+<U53A0>
+<U53A6>
+<U53A5>
+<U53AE>
+<U53B0>
+<U53B6>
+<U53C3>
+<U7C12>
+<U96D9>
+<U53DF>
+<U66FC>
+<U71EE>
+<U53EE>
+<U53E8>
+<U53ED>
+<U53FA>
+<U5401>
+<U543D>
+<U5440>
+<U542C>
+<U542D>
+<U543C>
+<U542E>
+<U5436>
+<U5429>
+<U541D>
+<U544E>
+<U548F>
+<U5475>
+<U548E>
+<U545F>
+<U5471>
+<U5477>
+<U5470>
+<U5492>
+<U547B>
+<U5480>
+<U5476>
+<U5484>
+<U5490>
+<U5486>
+<U54C7>
+<U54A2>
+<U54B8>
+<U54A5>
+<U54AC>
+<U54C4>
+<U54C8>
+<U54A8>
+<U54AB>
+<U54C2>
+<U54A4>
+<U54BE>
+<U54BC>
+<U54D8>
+<U54E5>
+<U54E6>
+<U550F>
+<U5514>
+<U54FD>
+<U54EE>
+<U54ED>
+<U54FA>
+<U54E2>
+<U5539>
+<U5540>
+<U5563>
+<U554C>
+<U552E>
+<U555C>
+<U5545>
+<U5556>
+<U5557>
+<U5538>
+<U5533>
+<U555D>
+<U5599>
+<U5580>
+<U54AF>
+<U558A>
+<U559F>
+<U557B>
+<U557E>
+<U5598>
+<U559E>
+<U55AE>
+<U557C>
+<U5583>
+<U55A9>
+<U5587>
+<U55A8>
+<U55DA>
+<U55C5>
+<U55DF>
+<U55C4>
+<U55DC>
+<U55E4>
+<U55D4>
+<U5614>
+<U55F7>
+<U5616>
+<U55FE>
+<U55FD>
+<U561B>
+<U55F9>
+<U564E>
+<U5650>
+<U71DF>
+<U5634>
+<U5636>
+<U5632>
+<U5638>
+<U566B>
+<U5664>
+<U562F>
+<U566C>
+<U566A>
+<U5686>
+<U5680>
+<U568A>
+<U56A0>
+<U5694>
+<U568F>
+<U56A5>
+<U56AE>
+<U56B6>
+<U56B4>
+<U56C2>
+<U56BC>
+<U56C1>
+<U56C3>
+<U56C0>
+<U56C8>
+<U56CE>
+<U56D1>
+<U56D3>
+<U56D7>
+<U56EE>
+<U56F9>
+<U5700>
+<U56FF>
+<U5704>
+<U5709>
+<U5708>
+<U570B>
+<U570D>
+<U5713>
+<U5718>
+<U5716>
+<U55C7>
+<U571C>
+<U5726>
+<U5737>
+<U5738>
+<U574E>
+<U573B>
+<U5740>
+<U574F>
+<U5769>
+<U57C0>
+<U5788>
+<U5761>
+<U577F>
+<U5789>
+<U5793>
+<U57A0>
+<U57B3>
+<U57A4>
+<U57AA>
+<U57B0>
+<U57C3>
+<U57C6>
+<U57D4>
+<U57D2>
+<U57D3>
+<U580A>
+<U57D6>
+<U57E3>
+<U580B>
+<U5819>
+<U581D>
+<U5872>
+<U5821>
+<U5862>
+<U584B>
+<U5870>
+<U6BC0>
+<U5852>
+<U583D>
+<U5879>
+<U5885>
+<U58B9>
+<U589F>
+<U58AB>
+<U58BA>
+<U58DE>
+<U58BB>
+<U58B8>
+<U58AE>
+<U58C5>
+<U58D3>
+<U58D1>
+<U58D7>
+<U58D9>
+<U58D8>
+<U58E5>
+<U58DC>
+<U58E4>
+<U58DF>
+<U58EF>
+<U58FA>
+<U58F9>
+<U58FB>
+<U58FC>
+<U58FD>
+<U5902>
+<U590A>
+<U5910>
+<U591B>
+<U68A6>
+<U5925>
+<U592C>
+<U592D>
+<U5932>
+<U5938>
+<U593E>
+<U7AD2>
+<U5955>
+<U5950>
+<U594E>
+<U595A>
+<U5958>
+<U5962>
+<U5960>
+<U5967>
+<U596C>
+<U5969>
+<U5978>
+<U5981>
+<U599D>
+<U4F5E>
+<U4FAB>
+<U59A3>
+<U59B2>
+<U59C6>
+<U59E8>
+<U59DC>
+<U598D>
+<U59D9>
+<U59DA>
+<U5A25>
+<U5A1F>
+<U5A11>
+<U5A1C>
+<U5A09>
+<U5A1A>
+<U5A40>
+<U5A6C>
+<U5A49>
+<U5A35>
+<U5A36>
+<U5A62>
+<U5A6A>
+<U5A9A>
+<U5ABC>
+<U5ABE>
+<U5ACB>
+<U5AC2>
+<U5ABD>
+<U5AE3>
+<U5AD7>
+<U5AE6>
+<U5AE9>
+<U5AD6>
+<U5AFA>
+<U5AFB>
+<U5B0C>
+<U5B0B>
+<U5B16>
+<U5B32>
+<U5AD0>
+<U5B2A>
+<U5B36>
+<U5B3E>
+<U5B43>
+<U5B45>
+<U5B40>
+<U5B51>
+<U5B55>
+<U5B5A>
+<U5B5B>
+<U5B65>
+<U5B69>
+<U5B70>
+<U5B73>
+<U5B75>
+<U5B78>
+<U6588>
+<U5B7A>
+<U5B80>
+<U5B83>
+<U5BA6>
+<U5BB8>
+<U5BC3>
+<U5BC7>
+<U5BC9>
+<U5BD4>
+<U5BD0>
+<U5BE4>
+<U5BE6>
+<U5BE2>
+<U5BDE>
+<U5BE5>
+<U5BEB>
+<U5BF0>
+<U5BF6>
+<U5BF3>
+<U5C05>
+<U5C07>
+<U5C08>
+<U5C0D>
+<U5C13>
+<U5C20>
+<U5C22>
+<U5C28>
+<U5C38>
+<U5C39>
+<U5C41>
+<U5C46>
+<U5C4E>
+<U5C53>
+<U5C50>
+<U5C4F>
+<U5B71>
+<U5C6C>
+<U5C6E>
+<U4E62>
+<U5C76>
+<U5C79>
+<U5C8C>
+<U5C91>
+<U5C94>
+<U599B>
+<U5CAB>
+<U5CBB>
+<U5CB6>
+<U5CBC>
+<U5CB7>
+<U5CC5>
+<U5CBE>
+<U5CC7>
+<U5CD9>
+<U5CE9>
+<U5CFD>
+<U5CFA>
+<U5CED>
+<U5D8C>
+<U5CEA>
+<U5D0B>
+<U5D15>
+<U5D17>
+<U5D5C>
+<U5D1F>
+<U5D1B>
+<U5D11>
+<U5D14>
+<U5D22>
+<U5D1A>
+<U5D19>
+<U5D18>
+<U5D4C>
+<U5D52>
+<U5D4E>
+<U5D4B>
+<U5D6C>
+<U5D73>
+<U5D76>
+<U5D87>
+<U5D84>
+<U5D82>
+<U5DA2>
+<U5D9D>
+<U5DAC>
+<U5DAE>
+<U5DBD>
+<U5D90>
+<U5DB7>
+<U5DBC>
+<U5DC9>
+<U5DCD>
+<U5DD3>
+<U5DD2>
+<U5DD6>
+<U5DDB>
+<U5DEB>
+<U5DF2>
+<U5DF5>
+<U5E0B>
+<U5E1A>
+<U5E19>
+<U5E11>
+<U5E1B>
+<U5E36>
+<U5E37>
+<U5E44>
+<U5E43>
+<U5E40>
+<U5E4E>
+<U5E57>
+<U5E54>
+<U5E5F>
+<U5E62>
+<U5E64>
+<U5E47>
+<U5E75>
+<U5E76>
+<U5E7A>
+<U9EBC>
+<U5E7F>
+<U5EA0>
+<U5EC1>
+<U5EC2>
+<U5EC8>
+<U5ED0>
+<U5ECF>
+<U5ED6>
+<U5EE3>
+<U5EDD>
+<U5EDA>
+<U5EDB>
+<U5EE2>
+<U5EE1>
+<U5EE8>
+<U5EE9>
+<U5EEC>
+<U5EF1>
+<U5EF3>
+<U5EF0>
+<U5EF4>
+<U5EF8>
+<U5EFE>
+<U5F03>
+<U5F09>
+<U5F5D>
+<U5F5C>
+<U5F0B>
+<U5F11>
+<U5F16>
+<U5F29>
+<U5F2D>
+<U5F38>
+<U5F41>
+<U5F48>
+<U5F4C>
+<U5F4E>
+<U5F2F>
+<U5F51>
+<U5F56>
+<U5F57>
+<U5F59>
+<U5F61>
+<U5F6D>
+<U5F73>
+<U5F77>
+<U5F83>
+<U5F82>
+<U5F7F>
+<U5F8A>
+<U5F88>
+<U5F91>
+<U5F87>
+<U5F9E>
+<U5F99>
+<U5F98>
+<U5FA0>
+<U5FA8>
+<U5FAD>
+<U5FBC>
+<U5FD6>
+<U5FFB>
+<U5FE4>
+<U5FF8>
+<U5FF1>
+<U5FDD>
+<U60B3>
+<U5FFF>
+<U6021>
+<U6060>
+<U6019>
+<U6010>
+<U6029>
+<U600E>
+<U6031>
+<U601B>
+<U6015>
+<U602B>
+<U6026>
+<U600F>
+<U603A>
+<U605A>
+<U6041>
+<U606A>
+<U6077>
+<U605F>
+<U604A>
+<U6046>
+<U604D>
+<U6063>
+<U6043>
+<U6064>
+<U6042>
+<U606C>
+<U606B>
+<U6059>
+<U6081>
+<U608D>
+<U60E7>
+<U6083>
+<U609A>
+<U6084>
+<U609B>
+<U6096>
+<U6097>
+<U6092>
+<U60A7>
+<U608B>
+<U60E1>
+<U60B8>
+<U60E0>
+<U60D3>
+<U60B4>
+<U5FF0>
+<U60BD>
+<U60C6>
+<U60B5>
+<U60D8>
+<U614D>
+<U6115>
+<U6106>
+<U60F6>
+<U60F7>
+<U6100>
+<U60F4>
+<U60FA>
+<U6103>
+<U6121>
+<U60FB>
+<U60F1>
+<U610D>
+<U610E>
+<U6147>
+<U613E>
+<U6128>
+<U6127>
+<U614A>
+<U613F>
+<U613C>
+<U612C>
+<U6134>
+<U613D>
+<U6142>
+<U6144>
+<U6173>
+<U6177>
+<U6158>
+<U6159>
+<U615A>
+<U616B>
+<U6174>
+<U616F>
+<U6165>
+<U6171>
+<U615F>
+<U615D>
+<U6153>
+<U6175>
+<U6199>
+<U6196>
+<U6187>
+<U61AC>
+<U6194>
+<U619A>
+<U618A>
+<U6191>
+<U61AB>
+<U61AE>
+<U61CC>
+<U61CA>
+<U61C9>
+<U61F7>
+<U61C8>
+<U61C3>
+<U61C6>
+<U61BA>
+<U61CB>
+<U7F79>
+<U61CD>
+<U61E6>
+<U61E3>
+<U61F6>
+<U61FA>
+<U61F4>
+<U61FF>
+<U61FD>
+<U61FC>
+<U61FE>
+<U6200>
+<U6208>
+<U6209>
+<U620D>
+<U620C>
+<U6214>
+<U621B>
+<U621E>
+<U6221>
+<U622A>
+<U622E>
+<U6230>
+<U6232>
+<U6233>
+<U6241>
+<U624E>
+<U625E>
+<U6263>
+<U625B>
+<U6260>
+<U6268>
+<U627C>
+<U6282>
+<U6289>
+<U627E>
+<U6292>
+<U6293>
+<U6296>
+<U62D4>
+<U6283>
+<U6294>
+<U62D7>
+<U62D1>
+<U62BB>
+<U62CF>
+<U62FF>
+<U62C6>
+<U64D4>
+<U62C8>
+<U62DC>
+<U62CC>
+<U62CA>
+<U62C2>
+<U62C7>
+<U629B>
+<U62C9>
+<U630C>
+<U62EE>
+<U62F1>
+<U6327>
+<U6302>
+<U6308>
+<U62EF>
+<U62F5>
+<U6350>
+<U633E>
+<U634D>
+<U641C>
+<U634F>
+<U6396>
+<U638E>
+<U6380>
+<U63AB>
+<U6376>
+<U63A3>
+<U638F>
+<U6389>
+<U639F>
+<U63B5>
+<U636B>
+<U6369>
+<U63BE>
+<U63E9>
+<U63C0>
+<U63C6>
+<U63E3>
+<U63C9>
+<U63D2>
+<U63F6>
+<U63C4>
+<U6416>
+<U6434>
+<U6406>
+<U6413>
+<U6426>
+<U6436>
+<U651D>
+<U6417>
+<U6428>
+<U640F>
+<U6467>
+<U646F>
+<U6476>
+<U644E>
+<U652A>
+<U6495>
+<U6493>
+<U64A5>
+<U64A9>
+<U6488>
+<U64BC>
+<U64DA>
+<U64D2>
+<U64C5>
+<U64C7>
+<U64BB>
+<U64D8>
+<U64C2>
+<U64F1>
+<U64E7>
+<U8209>
+<U64E0>
+<U64E1>
+<U62AC>
+<U64E3>
+<U64EF>
+<U652C>
+<U64F6>
+<U64F4>
+<U64F2>
+<U64FA>
+<U6500>
+<U64FD>
+<U6518>
+<U651C>
+<U6505>
+<U6524>
+<U6523>
+<U652B>
+<U6534>
+<U6535>
+<U6537>
+<U6536>
+<U6538>
+<U754B>
+<U6548>
+<U6556>
+<U6555>
+<U654D>
+<U6558>
+<U655E>
+<U655D>
+<U6572>
+<U6578>
+<U6582>
+<U6583>
+<U8B8A>
+<U659B>
+<U659F>
+<U65AB>
+<U65B7>
+<U65C3>
+<U65C6>
+<U65C1>
+<U65C4>
+<U65CC>
+<U65D2>
+<U65DB>
+<U65D9>
+<U65E0>
+<U65E1>
+<U65F1>
+<U6772>
+<U660A>
+<U6603>
+<U65FB>
+<U6773>
+<U6635>
+<U6636>
+<U6634>
+<U661C>
+<U664F>
+<U6644>
+<U6649>
+<U6641>
+<U665E>
+<U665D>
+<U6664>
+<U6667>
+<U6668>
+<U665F>
+<U6662>
+<U6670>
+<U6683>
+<U6688>
+<U668E>
+<U6689>
+<U6684>
+<U6698>
+<U669D>
+<U66C1>
+<U66B9>
+<U66C9>
+<U66BE>
+<U66BC>
+<U66C4>
+<U66B8>
+<U66D6>
+<U66DA>
+<U66E0>
+<U663F>
+<U66E6>
+<U66E9>
+<U66F0>
+<U66F5>
+<U66F7>
+<U670F>
+<U6716>
+<U671E>
+<U6726>
+<U6727>
+<U9738>
+<U672E>
+<U673F>
+<U6736>
+<U6741>
+<U6738>
+<U6737>
+<U6746>
+<U675E>
+<U6760>
+<U6759>
+<U6763>
+<U6764>
+<U6789>
+<U6770>
+<U67A9>
+<U677C>
+<U676A>
+<U678C>
+<U678B>
+<U67A6>
+<U67A1>
+<U6785>
+<U67B7>
+<U67EF>
+<U67B4>
+<U67EC>
+<U67B3>
+<U67E9>
+<U67B8>
+<U67E4>
+<U67DE>
+<U67DD>
+<U67E2>
+<U67EE>
+<U67B9>
+<U67CE>
+<U67C6>
+<U67E7>
+<U6A9C>
+<U681E>
+<U6846>
+<U6829>
+<U6840>
+<U684D>
+<U6832>
+<U684E>
+<U68B3>
+<U682B>
+<U6859>
+<U6863>
+<U6877>
+<U687F>
+<U689F>
+<U688F>
+<U68AD>
+<U6894>
+<U689D>
+<U689B>
+<U6883>
+<U6AAE>
+<U68B9>
+<U6874>
+<U68B5>
+<U68A0>
+<U68BA>
+<U690F>
+<U688D>
+<U687E>
+<U6901>
+<U68CA>
+<U6908>
+<U68D8>
+<U6922>
+<U6926>
+<U68E1>
+<U690C>
+<U68CD>
+<U68D4>
+<U68E7>
+<U68D5>
+<U6936>
+<U6912>
+<U6904>
+<U68D7>
+<U68E3>
+<U6925>
+<U68F9>
+<U68E0>
+<U68EF>
+<U6928>
+<U692A>
+<U691A>
+<U6923>
+<U6921>
+<U68C6>
+<U6979>
+<U6977>
+<U695C>
+<U6978>
+<U696B>
+<U6954>
+<U697E>
+<U696E>
+<U6939>
+<U6974>
+<U693D>
+<U6959>
+<U6930>
+<U6961>
+<U695E>
+<U695D>
+<U6981>
+<U696A>
+<U69B2>
+<U69AE>
+<U69D0>
+<U69BF>
+<U69C1>
+<U69D3>
+<U69BE>
+<U69CE>
+<U5BE8>
+<U69CA>
+<U69DD>
+<U69BB>
+<U69C3>
+<U69A7>
+<U6A2E>
+<U6991>
+<U69A0>
+<U699C>
+<U6995>
+<U69B4>
+<U69DE>
+<U69E8>
+<U6A02>
+<U6A1B>
+<U69FF>
+<U6B0A>
+<U69F9>
+<U69F2>
+<U69E7>
+<U6A05>
+<U69B1>
+<U6A1E>
+<U69ED>
+<U6A14>
+<U69EB>
+<U6A0A>
+<U6A12>
+<U6AC1>
+<U6A23>
+<U6A13>
+<U6A44>
+<U6A0C>
+<U6A72>
+<U6A36>
+<U6A78>
+<U6A47>
+<U6A62>
+<U6A59>
+<U6A66>
+<U6A48>
+<U6A38>
+<U6A22>
+<U6A90>
+<U6A8D>
+<U6AA0>
+<U6A84>
+<U6AA2>
+<U6AA3>
+<U6A97>
+<U8617>
+<U6ABB>
+<U6AC3>
+<U6AC2>
+<U6AB8>
+<U6AB3>
+<U6AAC>
+<U6ADE>
+<U6AD1>
+<U6ADF>
+<U6AAA>
+<U6ADA>
+<U6AEA>
+<U6AFB>
+<U6B05>
+<U8616>
+<U6AFA>
+<U6B12>
+<U6B16>
+<U9B31>
+<U6B1F>
+<U6B38>
+<U6B37>
+<U76DC>
+<U6B39>
+<U98EE>
+<U6B47>
+<U6B43>
+<U6B49>
+<U6B50>
+<U6B59>
+<U6B54>
+<U6B5B>
+<U6B5F>
+<U6B61>
+<U6B78>
+<U6B79>
+<U6B7F>
+<U6B80>
+<U6B84>
+<U6B83>
+<U6B8D>
+<U6B98>
+<U6B95>
+<U6B9E>
+<U6BA4>
+<U6BAA>
+<U6BAB>
+<U6BAF>
+<U6BB2>
+<U6BB1>
+<U6BB3>
+<U6BB7>
+<U6BBC>
+<U6BC6>
+<U6BCB>
+<U6BD3>
+<U6BDF>
+<U6BEC>
+<U6BEB>
+<U6BF3>
+<U6BEF>
+<U9EBE>
+<U6C08>
+<U6C13>
+<U6C14>
+<U6C1B>
+<U6C24>
+<U6C23>
+<U6C5E>
+<U6C55>
+<U6C62>
+<U6C6A>
+<U6C82>
+<U6C8D>
+<U6C9A>
+<U6C81>
+<U6C9B>
+<U6C7E>
+<U6C68>
+<U6C73>
+<U6C92>
+<U6C90>
+<U6CC4>
+<U6CF1>
+<U6CD3>
+<U6CBD>
+<U6CD7>
+<U6CC5>
+<U6CDD>
+<U6CAE>
+<U6CB1>
+<U6CBE>
+<U6CBA>
+<U6CDB>
+<U6CEF>
+<U6CD9>
+<U6CEA>
+<U6D1F>
+<U884D>
+<U6D36>
+<U6D2B>
+<U6D3D>
+<U6D38>
+<U6D19>
+<U6D35>
+<U6D33>
+<U6D12>
+<U6D0C>
+<U6D63>
+<U6D93>
+<U6D64>
+<U6D5A>
+<U6D79>
+<U6D59>
+<U6D8E>
+<U6D95>
+<U6FE4>
+<U6D85>
+<U6DF9>
+<U6E15>
+<U6E0A>
+<U6DB5>
+<U6DC7>
+<U6DE6>
+<U6DB8>
+<U6DC6>
+<U6DEC>
+<U6DDE>
+<U6DCC>
+<U6DE8>
+<U6DD2>
+<U6DC5>
+<U6DFA>
+<U6DD9>
+<U6DE4>
+<U6DD5>
+<U6DEA>
+<U6DEE>
+<U6E2D>
+<U6E6E>
+<U6E2E>
+<U6E19>
+<U6E72>
+<U6E5F>
+<U6E3E>
+<U6E23>
+<U6E6B>
+<U6E2B>
+<U6E76>
+<U6E4D>
+<U6E1F>
+<U6E43>
+<U6E3A>
+<U6E4E>
+<U6E24>
+<U6EFF>
+<U6E1D>
+<U6E38>
+<U6E82>
+<U6EAA>
+<U6E98>
+<U6EC9>
+<U6EB7>
+<U6ED3>
+<U6EBD>
+<U6EAF>
+<U6EC4>
+<U6EB2>
+<U6ED4>
+<U6ED5>
+<U6E8F>
+<U6EA5>
+<U6EC2>
+<U6E9F>
+<U6F41>
+<U6F11>
+<U704C>
+<U6EEC>
+<U6EF8>
+<U6EFE>
+<U6F3F>
+<U6EF2>
+<U6F31>
+<U6EEF>
+<U6F32>
+<U6ECC>
+<U6F3E>
+<U6F13>
+<U6EF7>
+<U6F86>
+<U6F7A>
+<U6F78>
+<U6F81>
+<U6F80>
+<U6F6F>
+<U6F5B>
+<U6FF3>
+<U6F6D>
+<U6F82>
+<U6F7C>
+<U6F58>
+<U6F8E>
+<U6F91>
+<U6FC2>
+<U6F66>
+<U6FB3>
+<U6FA3>
+<U6FA1>
+<U6FA4>
+<U6FB9>
+<U6FC6>
+<U6FAA>
+<U6FDF>
+<U6FD5>
+<U6FEC>
+<U6FD4>
+<U6FD8>
+<U6FF1>
+<U6FEE>
+<U6FDB>
+<U7009>
+<U700B>
+<U6FFA>
+<U7011>
+<U7001>
+<U700F>
+<U6FFE>
+<U701B>
+<U701A>
+<U6F74>
+<U701D>
+<U7018>
+<U701F>
+<U7030>
+<U703E>
+<U7032>
+<U7051>
+<U7063>
+<U7099>
+<U7092>
+<U70AF>
+<U70F1>
+<U70AC>
+<U70B8>
+<U70B3>
+<U70AE>
+<U70DF>
+<U70CB>
+<U70DD>
+<U70D9>
+<U7109>
+<U70FD>
+<U711C>
+<U7119>
+<U7165>
+<U7155>
+<U7188>
+<U7166>
+<U7162>
+<U714C>
+<U7156>
+<U716C>
+<U718F>
+<U71FB>
+<U7184>
+<U7195>
+<U71A8>
+<U71AC>
+<U71D7>
+<U71B9>
+<U71BE>
+<U71D2>
+<U71C9>
+<U71D4>
+<U71CE>
+<U71E0>
+<U71EC>
+<U71E7>
+<U71F5>
+<U71FC>
+<U71F9>
+<U71FF>
+<U720D>
+<U7210>
+<U721B>
+<U7228>
+<U722D>
+<U722C>
+<U7230>
+<U7232>
+<U723B>
+<U723C>
+<U723F>
+<U7240>
+<U7246>
+<U724B>
+<U7258>
+<U7274>
+<U727E>
+<U7282>
+<U7281>
+<U7287>
+<U7292>
+<U7296>
+<U72A2>
+<U72A7>
+<U72B9>
+<U72B2>
+<U72C3>
+<U72C6>
+<U72C4>
+<U72CE>
+<U72D2>
+<U72E2>
+<U72E0>
+<U72E1>
+<U72F9>
+<U72F7>
+<U500F>
+<U7317>
+<U730A>
+<U731C>
+<U7316>
+<U731D>
+<U7334>
+<U732F>
+<U7329>
+<U7325>
+<U733E>
+<U734E>
+<U734F>
+<U9ED8>
+<U7357>
+<U736A>
+<U7368>
+<U7370>
+<U7378>
+<U7375>
+<U737B>
+<U737A>
+<U73C8>
+<U73B3>
+<U73CE>
+<U73BB>
+<U73C0>
+<U73E5>
+<U73EE>
+<U73DE>
+<U74A2>
+<U7405>
+<U746F>
+<U7425>
+<U73F8>
+<U7432>
+<U743A>
+<U7455>
+<U743F>
+<U745F>
+<U7459>
+<U7441>
+<U745C>
+<U7469>
+<U7470>
+<U7463>
+<U746A>
+<U7476>
+<U747E>
+<U748B>
+<U749E>
+<U74A7>
+<U74CA>
+<U74CF>
+<U74D4>
+<U73F1>
+<U74E0>
+<U74E3>
+<U74E7>
+<U74E9>
+<U74EE>
+<U74F2>
+<U74F0>
+<U74F1>
+<U74F8>
+<U74F7>
+<U7504>
+<U7503>
+<U7505>
+<U750C>
+<U750E>
+<U750D>
+<U7515>
+<U7513>
+<U751E>
+<U7526>
+<U752C>
+<U753C>
+<U7544>
+<U754D>
+<U754A>
+<U7549>
+<U755B>
+<U7546>
+<U755A>
+<U7569>
+<U7564>
+<U7567>
+<U756B>
+<U756D>
+<U7578>
+<U7576>
+<U7586>
+<U7587>
+<U7574>
+<U758A>
+<U7589>
+<U7582>
+<U7594>
+<U759A>
+<U759D>
+<U75A5>
+<U75A3>
+<U75C2>
+<U75B3>
+<U75C3>
+<U75B5>
+<U75BD>
+<U75B8>
+<U75BC>
+<U75B1>
+<U75CD>
+<U75CA>
+<U75D2>
+<U75D9>
+<U75E3>
+<U75DE>
+<U75FE>
+<U75FF>
+<U75FC>
+<U7601>
+<U75F0>
+<U75FA>
+<U75F2>
+<U75F3>
+<U760B>
+<U760D>
+<U7609>
+<U761F>
+<U7627>
+<U7620>
+<U7621>
+<U7622>
+<U7624>
+<U7634>
+<U7630>
+<U763B>
+<U7647>
+<U7648>
+<U7646>
+<U765C>
+<U7658>
+<U7661>
+<U7662>
+<U7668>
+<U7669>
+<U766A>
+<U7667>
+<U766C>
+<U7670>
+<U7672>
+<U7676>
+<U7678>
+<U767C>
+<U7680>
+<U7683>
+<U7688>
+<U768B>
+<U768E>
+<U7696>
+<U7693>
+<U7699>
+<U769A>
+<U76B0>
+<U76B4>
+<U76B8>
+<U76B9>
+<U76BA>
+<U76C2>
+<U76CD>
+<U76D6>
+<U76D2>
+<U76DE>
+<U76E1>
+<U76E5>
+<U76E7>
+<U76EA>
+<U862F>
+<U76FB>
+<U7708>
+<U7707>
+<U7704>
+<U7729>
+<U7724>
+<U771E>
+<U7725>
+<U7726>
+<U771B>
+<U7737>
+<U7738>
+<U7747>
+<U775A>
+<U7768>
+<U776B>
+<U775B>
+<U7765>
+<U777F>
+<U777E>
+<U7779>
+<U778E>
+<U778B>
+<U7791>
+<U77A0>
+<U779E>
+<U77B0>
+<U77B6>
+<U77B9>
+<U77BF>
+<U77BC>
+<U77BD>
+<U77BB>
+<U77C7>
+<U77CD>
+<U77D7>
+<U77DA>
+<U77DC>
+<U77E3>
+<U77EE>
+<U77FC>
+<U780C>
+<U7812>
+<U7926>
+<U7820>
+<U792A>
+<U7845>
+<U788E>
+<U7874>
+<U7886>
+<U787C>
+<U789A>
+<U788C>
+<U78A3>
+<U78B5>
+<U78AA>
+<U78AF>
+<U78D1>
+<U78C6>
+<U78CB>
+<U78D4>
+<U78BE>
+<U78BC>
+<U78C5>
+<U78CA>
+<U78EC>
+<U78E7>
+<U78DA>
+<U78FD>
+<U78F4>
+<U7907>
+<U7912>
+<U7911>
+<U7919>
+<U792C>
+<U792B>
+<U7940>
+<U7960>
+<U7957>
+<U795F>
+<U795A>
+<U7955>
+<U7953>
+<U797A>
+<U797F>
+<U798A>
+<U799D>
+<U79A7>
+<U9F4B>
+<U79AA>
+<U79AE>
+<U79B3>
+<U79B9>
+<U79BA>
+<U79C9>
+<U79D5>
+<U79E7>
+<U79EC>
+<U79E1>
+<U79E3>
+<U7A08>
+<U7A0D>
+<U7A18>
+<U7A19>
+<U7A20>
+<U7A1F>
+<U7980>
+<U7A31>
+<U7A3B>
+<U7A3E>
+<U7A37>
+<U7A43>
+<U7A57>
+<U7A49>
+<U7A61>
+<U7A62>
+<U7A69>
+<U9F9D>
+<U7A70>
+<U7A79>
+<U7A7D>
+<U7A88>
+<U7A97>
+<U7A95>
+<U7A98>
+<U7A96>
+<U7AA9>
+<U7AC8>
+<U7AB0>
+<U7AB6>
+<U7AC5>
+<U7AC4>
+<U7ABF>
+<U9083>
+<U7AC7>
+<U7ACA>
+<U7ACD>
+<U7ACF>
+<U7AD5>
+<U7AD3>
+<U7AD9>
+<U7ADA>
+<U7ADD>
+<U7AE1>
+<U7AE2>
+<U7AE6>
+<U7AED>
+<U7AF0>
+<U7B02>
+<U7B0F>
+<U7B0A>
+<U7B06>
+<U7B33>
+<U7B18>
+<U7B19>
+<U7B1E>
+<U7B35>
+<U7B28>
+<U7B36>
+<U7B50>
+<U7B7A>
+<U7B04>
+<U7B4D>
+<U7B0B>
+<U7B4C>
+<U7B45>
+<U7B75>
+<U7B65>
+<U7B74>
+<U7B67>
+<U7B70>
+<U7B71>
+<U7B6C>
+<U7B6E>
+<U7B9D>
+<U7B98>
+<U7B9F>
+<U7B8D>
+<U7B9C>
+<U7B9A>
+<U7B8B>
+<U7B92>
+<U7B8F>
+<U7B5D>
+<U7B99>
+<U7BCB>
+<U7BC1>
+<U7BCC>
+<U7BCF>
+<U7BB4>
+<U7BC6>
+<U7BDD>
+<U7BE9>
+<U7C11>
+<U7C14>
+<U7BE6>
+<U7BE5>
+<U7C60>
+<U7C00>
+<U7C07>
+<U7C13>
+<U7BF3>
+<U7BF7>
+<U7C17>
+<U7C0D>
+<U7BF6>
+<U7C23>
+<U7C27>
+<U7C2A>
+<U7C1F>
+<U7C37>
+<U7C2B>
+<U7C3D>
+<U7C4C>
+<U7C43>
+<U7C54>
+<U7C4F>
+<U7C40>
+<U7C50>
+<U7C58>
+<U7C5F>
+<U7C64>
+<U7C56>
+<U7C65>
+<U7C6C>
+<U7C75>
+<U7C83>
+<U7C90>
+<U7CA4>
+<U7CAD>
+<U7CA2>
+<U7CAB>
+<U7CA1>
+<U7CA8>
+<U7CB3>
+<U7CB2>
+<U7CB1>
+<U7CAE>
+<U7CB9>
+<U7CBD>
+<U7CC0>
+<U7CC5>
+<U7CC2>
+<U7CD8>
+<U7CD2>
+<U7CDC>
+<U7CE2>
+<U9B3B>
+<U7CEF>
+<U7CF2>
+<U7CF4>
+<U7CF6>
+<U7CFA>
+<U7D06>
+<U7D02>
+<U7D1C>
+<U7D15>
+<U7D0A>
+<U7D45>
+<U7D4B>
+<U7D2E>
+<U7D32>
+<U7D3F>
+<U7D35>
+<U7D46>
+<U7D73>
+<U7D56>
+<U7D4E>
+<U7D72>
+<U7D68>
+<U7D6E>
+<U7D4F>
+<U7D63>
+<U7D93>
+<U7D89>
+<U7D5B>
+<U7D8F>
+<U7D7D>
+<U7D9B>
+<U7DBA>
+<U7DAE>
+<U7DA3>
+<U7DB5>
+<U7DC7>
+<U7DBD>
+<U7DAB>
+<U7E3D>
+<U7DA2>
+<U7DAF>
+<U7DDC>
+<U7DB8>
+<U7D9F>
+<U7DB0>
+<U7DD8>
+<U7DDD>
+<U7DE4>
+<U7DDE>
+<U7DFB>
+<U7DF2>
+<U7DE1>
+<U7E05>
+<U7E0A>
+<U7E23>
+<U7E21>
+<U7E12>
+<U7E31>
+<U7E1F>
+<U7E09>
+<U7E0B>
+<U7E22>
+<U7E46>
+<U7E66>
+<U7E3B>
+<U7E35>
+<U7E39>
+<U7E43>
+<U7E37>
+<U7E32>
+<U7E3A>
+<U7E67>
+<U7E5D>
+<U7E56>
+<U7E5E>
+<U7E59>
+<U7E5A>
+<U7E79>
+<U7E6A>
+<U7E69>
+<U7E7C>
+<U7E7B>
+<U7E83>
+<U7DD5>
+<U7E7D>
+<U8FAE>
+<U7E7F>
+<U7E88>
+<U7E89>
+<U7E8C>
+<U7E92>
+<U7E90>
+<U7E93>
+<U7E94>
+<U7E96>
+<U7E8E>
+<U7E9B>
+<U7E9C>
+<U7F38>
+<U7F3A>
+<U7F45>
+<U7F4C>
+<U7F4D>
+<U7F4E>
+<U7F50>
+<U7F51>
+<U7F55>
+<U7F54>
+<U7F58>
+<U7F5F>
+<U7F60>
+<U7F68>
+<U7F69>
+<U7F67>
+<U7F78>
+<U7F82>
+<U7F86>
+<U7F83>
+<U7F88>
+<U7F87>
+<U7F8C>
+<U7F94>
+<U7F9E>
+<U7F9D>
+<U7F9A>
+<U7FA3>
+<U7FAF>
+<U7FB2>
+<U7FB9>
+<U7FAE>
+<U7FB6>
+<U7FB8>
+<U8B71>
+<U7FC5>
+<U7FC6>
+<U7FCA>
+<U7FD5>
+<U7FD4>
+<U7FE1>
+<U7FE6>
+<U7FE9>
+<U7FF3>
+<U7FF9>
+<U98DC>
+<U8006>
+<U8004>
+<U800B>
+<U8012>
+<U8018>
+<U8019>
+<U801C>
+<U8021>
+<U8028>
+<U803F>
+<U803B>
+<U804A>
+<U8046>
+<U8052>
+<U8058>
+<U805A>
+<U805F>
+<U8062>
+<U8068>
+<U8073>
+<U8072>
+<U8070>
+<U8076>
+<U8079>
+<U807D>
+<U807F>
+<U8084>
+<U8086>
+<U8085>
+<U809B>
+<U8093>
+<U809A>
+<U80AD>
+<U5190>
+<U80AC>
+<U80DB>
+<U80E5>
+<U80D9>
+<U80DD>
+<U80C4>
+<U80DA>
+<U80D6>
+<U8109>
+<U80EF>
+<U80F1>
+<U811B>
+<U8129>
+<U8123>
+<U812F>
+<U814B>
+<U968B>
+<U8146>
+<U813E>
+<U8153>
+<U8151>
+<U80FC>
+<U8171>
+<U816E>
+<U8165>
+<U8166>
+<U8174>
+<U8183>
+<U8188>
+<U818A>
+<U8180>
+<U8182>
+<U81A0>
+<U8195>
+<U81A4>
+<U81A3>
+<U815F>
+<U8193>
+<U81A9>
+<U81B0>
+<U81B5>
+<U81BE>
+<U81B8>
+<U81BD>
+<U81C0>
+<U81C2>
+<U81BA>
+<U81C9>
+<U81CD>
+<U81D1>
+<U81D9>
+<U81D8>
+<U81C8>
+<U81DA>
+<U81DF>
+<U81E0>
+<U81E7>
+<U81FA>
+<U81FB>
+<U81FE>
+<U8201>
+<U8202>
+<U8205>
+<U8207>
+<U820A>
+<U820D>
+<U8210>
+<U8216>
+<U8229>
+<U822B>
+<U8238>
+<U8233>
+<U8240>
+<U8259>
+<U8258>
+<U825D>
+<U825A>
+<U825F>
+<U8264>
+<U8262>
+<U8268>
+<U826A>
+<U826B>
+<U822E>
+<U8271>
+<U8277>
+<U8278>
+<U827E>
+<U828D>
+<U8292>
+<U82AB>
+<U829F>
+<U82BB>
+<U82AC>
+<U82E1>
+<U82E3>
+<U82DF>
+<U82D2>
+<U82F4>
+<U82F3>
+<U82FA>
+<U8393>
+<U8303>
+<U82FB>
+<U82F9>
+<U82DE>
+<U8306>
+<U82DC>
+<U8309>
+<U82D9>
+<U8335>
+<U8334>
+<U8316>
+<U8332>
+<U8331>
+<U8340>
+<U8339>
+<U8350>
+<U8345>
+<U832F>
+<U832B>
+<U8317>
+<U8318>
+<U8385>
+<U839A>
+<U83AA>
+<U839F>
+<U83A2>
+<U8396>
+<U8323>
+<U838E>
+<U8387>
+<U838A>
+<U837C>
+<U83B5>
+<U8373>
+<U8375>
+<U83A0>
+<U8389>
+<U83A8>
+<U83F4>
+<U8413>
+<U83EB>
+<U83CE>
+<U83FD>
+<U8403>
+<U83D8>
+<U840B>
+<U83C1>
+<U83F7>
+<U8407>
+<U83E0>
+<U83F2>
+<U840D>
+<U8422>
+<U8420>
+<U83BD>
+<U8438>
+<U8506>
+<U83FB>
+<U846D>
+<U842A>
+<U843C>
+<U855A>
+<U8484>
+<U8477>
+<U846B>
+<U84AD>
+<U846E>
+<U8482>
+<U8469>
+<U8446>
+<U842C>
+<U846F>
+<U8479>
+<U8435>
+<U84CA>
+<U8462>
+<U84B9>
+<U84BF>
+<U849F>
+<U84D9>
+<U84CD>
+<U84BB>
+<U84DA>
+<U84D0>
+<U84C1>
+<U84C6>
+<U84D6>
+<U84A1>
+<U8521>
+<U84FF>
+<U84F4>
+<U8517>
+<U8518>
+<U852C>
+<U851F>
+<U8515>
+<U8514>
+<U84FC>
+<U8540>
+<U8563>
+<U8558>
+<U8548>
+<U8541>
+<U8602>
+<U854B>
+<U8555>
+<U8580>
+<U85A4>
+<U8588>
+<U8591>
+<U858A>
+<U85A8>
+<U856D>
+<U8594>
+<U859B>
+<U85EA>
+<U8587>
+<U859C>
+<U8577>
+<U857E>
+<U8590>
+<U85C9>
+<U85BA>
+<U85CF>
+<U85B9>
+<U85D0>
+<U85D5>
+<U85DD>
+<U85E5>
+<U85DC>
+<U85F9>
+<U860A>
+<U8613>
+<U860B>
+<U85FE>
+<U85FA>
+<U8606>
+<U8622>
+<U861A>
+<U8630>
+<U863F>
+<U864D>
+<U4E55>
+<U8654>
+<U865F>
+<U8667>
+<U8671>
+<U8693>
+<U86A3>
+<U86A9>
+<U86AA>
+<U868B>
+<U868C>
+<U86B6>
+<U86AF>
+<U86C4>
+<U86C6>
+<U86B0>
+<U86C9>
+<U8823>
+<U86AB>
+<U86D4>
+<U86DE>
+<U86E9>
+<U86EC>
+<U86DF>
+<U86DB>
+<U86EF>
+<U8712>
+<U8706>
+<U8708>
+<U8700>
+<U8703>
+<U86FB>
+<U8711>
+<U8709>
+<U870D>
+<U86F9>
+<U870A>
+<U8734>
+<U873F>
+<U8737>
+<U873B>
+<U8725>
+<U8729>
+<U871A>
+<U8760>
+<U875F>
+<U8778>
+<U874C>
+<U874E>
+<U8774>
+<U8757>
+<U8768>
+<U876E>
+<U8759>
+<U8753>
+<U8763>
+<U876A>
+<U8805>
+<U87A2>
+<U879F>
+<U8782>
+<U87AF>
+<U87CB>
+<U87BD>
+<U87C0>
+<U87D0>
+<U96D6>
+<U87AB>
+<U87C4>
+<U87B3>
+<U87C7>
+<U87C6>
+<U87BB>
+<U87EF>
+<U87F2>
+<U87E0>
+<U880F>
+<U880D>
+<U87FE>
+<U87F6>
+<U87F7>
+<U880E>
+<U87D2>
+<U8811>
+<U8816>
+<U8815>
+<U8822>
+<U8821>
+<U8831>
+<U8836>
+<U8839>
+<U8827>
+<U883B>
+<U8844>
+<U8842>
+<U8852>
+<U8859>
+<U885E>
+<U8862>
+<U886B>
+<U8881>
+<U887E>
+<U889E>
+<U8875>
+<U887D>
+<U88B5>
+<U8872>
+<U8882>
+<U8897>
+<U8892>
+<U88AE>
+<U8899>
+<U88A2>
+<U888D>
+<U88A4>
+<U88B0>
+<U88BF>
+<U88B1>
+<U88C3>
+<U88C4>
+<U88D4>
+<U88D8>
+<U88D9>
+<U88DD>
+<U88F9>
+<U8902>
+<U88FC>
+<U88F4>
+<U88E8>
+<U88F2>
+<U8904>
+<U890C>
+<U890A>
+<U8913>
+<U8943>
+<U891E>
+<U8925>
+<U892A>
+<U892B>
+<U8941>
+<U8944>
+<U893B>
+<U8936>
+<U8938>
+<U894C>
+<U891D>
+<U8960>
+<U895E>
+<U8966>
+<U8964>
+<U896D>
+<U896A>
+<U896F>
+<U8974>
+<U8977>
+<U897E>
+<U8983>
+<U8988>
+<U898A>
+<U8993>
+<U8998>
+<U89A1>
+<U89A9>
+<U89A6>
+<U89AC>
+<U89AF>
+<U89B2>
+<U89BA>
+<U89BD>
+<U89BF>
+<U89C0>
+<U89DA>
+<U89DC>
+<U89DD>
+<U89E7>
+<U89F4>
+<U89F8>
+<U8A03>
+<U8A16>
+<U8A10>
+<U8A0C>
+<U8A1B>
+<U8A1D>
+<U8A25>
+<U8A36>
+<U8A41>
+<U8A5B>
+<U8A52>
+<U8A46>
+<U8A48>
+<U8A7C>
+<U8A6D>
+<U8A6C>
+<U8A62>
+<U8A85>
+<U8A82>
+<U8A84>
+<U8AA8>
+<U8AA1>
+<U8A91>
+<U8AA5>
+<U8AA6>
+<U8A9A>
+<U8AA3>
+<U8AC4>
+<U8ACD>
+<U8AC2>
+<U8ADA>
+<U8AEB>
+<U8AF3>
+<U8AE7>
+<U8AE4>
+<U8AF1>
+<U8B14>
+<U8AE0>
+<U8AE2>
+<U8AF7>
+<U8ADE>
+<U8ADB>
+<U8B0C>
+<U8B07>
+<U8B1A>
+<U8AE1>
+<U8B16>
+<U8B10>
+<U8B17>
+<U8B20>
+<U8B33>
+<U97AB>
+<U8B26>
+<U8B2B>
+<U8B3E>
+<U8B28>
+<U8B41>
+<U8B4C>
+<U8B4F>
+<U8B4E>
+<U8B49>
+<U8B56>
+<U8B5B>
+<U8B5A>
+<U8B6B>
+<U8B5F>
+<U8B6C>
+<U8B6F>
+<U8B74>
+<U8B7D>
+<U8B80>
+<U8B8C>
+<U8B8E>
+<U8B92>
+<U8B93>
+<U8B96>
+<U8B99>
+<U8B9A>
+<U8C3A>
+<U8C41>
+<U8C3F>
+<U8C48>
+<U8C4C>
+<U8C4E>
+<U8C50>
+<U8C55>
+<U8C62>
+<U8C6C>
+<U8C78>
+<U8C7A>
+<U8C82>
+<U8C89>
+<U8C85>
+<U8C8A>
+<U8C8D>
+<U8C8E>
+<U8C94>
+<U8C7C>
+<U8C98>
+<U621D>
+<U8CAD>
+<U8CAA>
+<U8CBD>
+<U8CB2>
+<U8CB3>
+<U8CAE>
+<U8CB6>
+<U8CC8>
+<U8CC1>
+<U8CE4>
+<U8CE3>
+<U8CDA>
+<U8CFD>
+<U8CFA>
+<U8CFB>
+<U8D04>
+<U8D05>
+<U8D0A>
+<U8D07>
+<U8D0F>
+<U8D0D>
+<U8D10>
+<U9F4E>
+<U8D13>
+<U8CCD>
+<U8D14>
+<U8D16>
+<U8D67>
+<U8D6D>
+<U8D71>
+<U8D73>
+<U8D81>
+<U8D99>
+<U8DC2>
+<U8DBE>
+<U8DBA>
+<U8DCF>
+<U8DDA>
+<U8DD6>
+<U8DCC>
+<U8DDB>
+<U8DCB>
+<U8DEA>
+<U8DEB>
+<U8DDF>
+<U8DE3>
+<U8DFC>
+<U8E08>
+<U8E09>
+<U8DFF>
+<U8E1D>
+<U8E1E>
+<U8E10>
+<U8E1F>
+<U8E42>
+<U8E35>
+<U8E30>
+<U8E34>
+<U8E4A>
+<U8E47>
+<U8E49>
+<U8E4C>
+<U8E50>
+<U8E48>
+<U8E59>
+<U8E64>
+<U8E60>
+<U8E2A>
+<U8E63>
+<U8E55>
+<U8E76>
+<U8E72>
+<U8E7C>
+<U8E81>
+<U8E87>
+<U8E85>
+<U8E84>
+<U8E8B>
+<U8E8A>
+<U8E93>
+<U8E91>
+<U8E94>
+<U8E99>
+<U8EAA>
+<U8EA1>
+<U8EAC>
+<U8EB0>
+<U8EC6>
+<U8EB1>
+<U8EBE>
+<U8EC5>
+<U8EC8>
+<U8ECB>
+<U8EDB>
+<U8EE3>
+<U8EFC>
+<U8EFB>
+<U8EEB>
+<U8EFE>
+<U8F0A>
+<U8F05>
+<U8F15>
+<U8F12>
+<U8F19>
+<U8F13>
+<U8F1C>
+<U8F1F>
+<U8F1B>
+<U8F0C>
+<U8F26>
+<U8F33>
+<U8F3B>
+<U8F39>
+<U8F45>
+<U8F42>
+<U8F3E>
+<U8F4C>
+<U8F49>
+<U8F46>
+<U8F4E>
+<U8F57>
+<U8F5C>
+<U8F62>
+<U8F63>
+<U8F64>
+<U8F9C>
+<U8F9F>
+<U8FA3>
+<U8FAD>
+<U8FAF>
+<U8FB7>
+<U8FDA>
+<U8FE5>
+<U8FE2>
+<U8FEA>
+<U8FEF>
+<U9087>
+<U8FF4>
+<U9005>
+<U8FF9>
+<U8FFA>
+<U9011>
+<U9015>
+<U9021>
+<U900D>
+<U901E>
+<U9016>
+<U900B>
+<U9027>
+<U9036>
+<U9035>
+<U9039>
+<U8FF8>
+<U904F>
+<U9050>
+<U9051>
+<U9052>
+<U900E>
+<U9049>
+<U903E>
+<U9056>
+<U9058>
+<U905E>
+<U9068>
+<U906F>
+<U9076>
+<U96A8>
+<U9072>
+<U9082>
+<U907D>
+<U9081>
+<U9080>
+<U908A>
+<U9089>
+<U908F>
+<U90A8>
+<U90AF>
+<U90B1>
+<U90B5>
+<U90E2>
+<U90E4>
+<U6248>
+<U90DB>
+<U9102>
+<U9112>
+<U9119>
+<U9132>
+<U9130>
+<U914A>
+<U9156>
+<U9158>
+<U9163>
+<U9165>
+<U9169>
+<U9173>
+<U9172>
+<U918B>
+<U9189>
+<U9182>
+<U91A2>
+<U91AB>
+<U91AF>
+<U91AA>
+<U91B5>
+<U91B4>
+<U91BA>
+<U91C0>
+<U91C1>
+<U91C9>
+<U91CB>
+<U91D0>
+<U91D6>
+<U91DF>
+<U91E1>
+<U91DB>
+<U91FC>
+<U91F5>
+<U91F6>
+<U921E>
+<U91FF>
+<U9214>
+<U922C>
+<U9215>
+<U9211>
+<U925E>
+<U9257>
+<U9245>
+<U9249>
+<U9264>
+<U9248>
+<U9295>
+<U923F>
+<U924B>
+<U9250>
+<U929C>
+<U9296>
+<U9293>
+<U929B>
+<U925A>
+<U92CF>
+<U92B9>
+<U92B7>
+<U92E9>
+<U930F>
+<U92FA>
+<U9344>
+<U932E>
+<U9319>
+<U9322>
+<U931A>
+<U9323>
+<U933A>
+<U9335>
+<U933B>
+<U935C>
+<U9360>
+<U937C>
+<U936E>
+<U9356>
+<U93B0>
+<U93AC>
+<U93AD>
+<U9394>
+<U93B9>
+<U93D6>
+<U93D7>
+<U93E8>
+<U93E5>
+<U93D8>
+<U93C3>
+<U93DD>
+<U93D0>
+<U93C8>
+<U93E4>
+<U941A>
+<U9414>
+<U9413>
+<U9403>
+<U9407>
+<U9410>
+<U9436>
+<U942B>
+<U9435>
+<U9421>
+<U943A>
+<U9441>
+<U9452>
+<U9444>
+<U945B>
+<U9460>
+<U9462>
+<U945E>
+<U946A>
+<U9229>
+<U9470>
+<U9475>
+<U9477>
+<U947D>
+<U945A>
+<U947C>
+<U947E>
+<U9481>
+<U947F>
+<U9582>
+<U9587>
+<U958A>
+<U9594>
+<U9596>
+<U9598>
+<U9599>
+<U95A0>
+<U95A8>
+<U95A7>
+<U95AD>
+<U95BC>
+<U95BB>
+<U95B9>
+<U95BE>
+<U95CA>
+<U6FF6>
+<U95C3>
+<U95CD>
+<U95CC>
+<U95D5>
+<U95D4>
+<U95D6>
+<U95DC>
+<U95E1>
+<U95E5>
+<U95E2>
+<U9621>
+<U9628>
+<U962E>
+<U962F>
+<U9642>
+<U964C>
+<U964F>
+<U964B>
+<U9677>
+<U965C>
+<U965E>
+<U965D>
+<U965F>
+<U9666>
+<U9672>
+<U966C>
+<U968D>
+<U9698>
+<U9695>
+<U9697>
+<U96AA>
+<U96A7>
+<U96B1>
+<U96B2>
+<U96B0>
+<U96B4>
+<U96B6>
+<U96B8>
+<U96B9>
+<U96CE>
+<U96CB>
+<U96C9>
+<U96CD>
+<U894D>
+<U96DC>
+<U970D>
+<U96D5>
+<U96F9>
+<U9704>
+<U9706>
+<U9708>
+<U9713>
+<U970E>
+<U9711>
+<U970F>
+<U9716>
+<U9719>
+<U9724>
+<U972A>
+<U9730>
+<U9739>
+<U973D>
+<U973E>
+<U9744>
+<U9746>
+<U9748>
+<U9742>
+<U9749>
+<U975C>
+<U9760>
+<U9764>
+<U9766>
+<U9768>
+<U52D2>
+<U976B>
+<U9771>
+<U9779>
+<U9785>
+<U977C>
+<U9781>
+<U977A>
+<U9786>
+<U978B>
+<U978F>
+<U9790>
+<U979C>
+<U97A8>
+<U97A6>
+<U97A3>
+<U97B3>
+<U97B4>
+<U97C3>
+<U97C6>
+<U97C8>
+<U97CB>
+<U97DC>
+<U97ED>
+<U9F4F>
+<U97F2>
+<U7ADF>
+<U97F6>
+<U97F5>
+<U980F>
+<U980C>
+<U9838>
+<U9824>
+<U9821>
+<U9837>
+<U983D>
+<U9846>
+<U984F>
+<U984B>
+<U986B>
+<U986F>
+<U9870>
+<U9871>
+<U9874>
+<U9873>
+<U98AA>
+<U98AF>
+<U98B1>
+<U98B6>
+<U98C4>
+<U98C3>
+<U98C6>
+<U98E9>
+<U98EB>
+<U9903>
+<U9909>
+<U9912>
+<U9914>
+<U9918>
+<U9921>
+<U991D>
+<U991E>
+<U9924>
+<U9920>
+<U992C>
+<U992E>
+<U993D>
+<U993E>
+<U9942>
+<U9949>
+<U9945>
+<U9950>
+<U994B>
+<U9951>
+<U9952>
+<U994C>
+<U9955>
+<U9997>
+<U9998>
+<U99A5>
+<U99AD>
+<U99AE>
+<U99BC>
+<U99DF>
+<U99DB>
+<U99DD>
+<U99D8>
+<U99D1>
+<U99ED>
+<U99EE>
+<U99F1>
+<U99F2>
+<U99FB>
+<U99F8>
+<U9A01>
+<U9A0F>
+<U9A05>
+<U99E2>
+<U9A19>
+<U9A2B>
+<U9A37>
+<U9A45>
+<U9A42>
+<U9A40>
+<U9A43>
+<U9A3E>
+<U9A55>
+<U9A4D>
+<U9A5B>
+<U9A57>
+<U9A5F>
+<U9A62>
+<U9A65>
+<U9A64>
+<U9A69>
+<U9A6B>
+<U9A6A>
+<U9AAD>
+<U9AB0>
+<U9ABC>
+<U9AC0>
+<U9ACF>
+<U9AD1>
+<U9AD3>
+<U9AD4>
+<U9ADE>
+<U9ADF>
+<U9AE2>
+<U9AE3>
+<U9AE6>
+<U9AEF>
+<U9AEB>
+<U9AEE>
+<U9AF4>
+<U9AF1>
+<U9AF7>
+<U9AFB>
+<U9B06>
+<U9B18>
+<U9B1A>
+<U9B1F>
+<U9B22>
+<U9B23>
+<U9B25>
+<U9B27>
+<U9B28>
+<U9B29>
+<U9B2A>
+<U9B2E>
+<U9B2F>
+<U9B32>
+<U9B44>
+<U9B43>
+<U9B4F>
+<U9B4D>
+<U9B4E>
+<U9B51>
+<U9B58>
+<U9B74>
+<U9B93>
+<U9B83>
+<U9B91>
+<U9B96>
+<U9B97>
+<U9B9F>
+<U9BA0>
+<U9BA8>
+<U9BB4>
+<U9BC0>
+<U9BCA>
+<U9BB9>
+<U9BC6>
+<U9BCF>
+<U9BD1>
+<U9BD2>
+<U9BE3>
+<U9BE2>
+<U9BE4>
+<U9BD4>
+<U9BE1>
+<U9C3A>
+<U9BF2>
+<U9BF1>
+<U9BF0>
+<U9C15>
+<U9C14>
+<U9C09>
+<U9C13>
+<U9C0C>
+<U9C06>
+<U9C08>
+<U9C12>
+<U9C0A>
+<U9C04>
+<U9C2E>
+<U9C1B>
+<U9C25>
+<U9C24>
+<U9C21>
+<U9C30>
+<U9C47>
+<U9C32>
+<U9C46>
+<U9C3E>
+<U9C5A>
+<U9C60>
+<U9C67>
+<U9C76>
+<U9C78>
+<U9CE7>
+<U9CEC>
+<U9CF0>
+<U9D09>
+<U9D08>
+<U9CEB>
+<U9D03>
+<U9D06>
+<U9D2A>
+<U9D26>
+<U9DAF>
+<U9D23>
+<U9D1F>
+<U9D44>
+<U9D15>
+<U9D12>
+<U9D41>
+<U9D3F>
+<U9D3E>
+<U9D46>
+<U9D48>
+<U9D5D>
+<U9D5E>
+<U9D64>
+<U9D51>
+<U9D50>
+<U9D59>
+<U9D72>
+<U9D89>
+<U9D87>
+<U9DAB>
+<U9D6F>
+<U9D7A>
+<U9D9A>
+<U9DA4>
+<U9DA9>
+<U9DB2>
+<U9DC4>
+<U9DC1>
+<U9DBB>
+<U9DB8>
+<U9DBA>
+<U9DC6>
+<U9DCF>
+<U9DC2>
+<U9DD9>
+<U9DD3>
+<U9DF8>
+<U9DE6>
+<U9DED>
+<U9DEF>
+<U9DFD>
+<U9E1A>
+<U9E1B>
+<U9E1E>
+<U9E75>
+<U9E79>
+<U9E7D>
+<U9E81>
+<U9E88>
+<U9E8B>
+<U9E8C>
+<U9E92>
+<U9E95>
+<U9E91>
+<U9E9D>
+<U9EA5>
+<U9EA9>
+<U9EB8>
+<U9EAA>
+<U9EAD>
+<U9761>
+<U9ECC>
+<U9ECE>
+<U9ECF>
+<U9ED0>
+<U9ED4>
+<U9EDC>
+<U9EDE>
+<U9EDD>
+<U9EE0>
+<U9EE5>
+<U9EE8>
+<U9EEF>
+<U9EF4>
+<U9EF6>
+<U9EF7>
+<U9EF9>
+<U9EFB>
+<U9EFC>
+<U9EFD>
+<U9F07>
+<U9F08>
+<U76B7>
+<U9F15>
+<U9F21>
+<U9F2C>
+<U9F3E>
+<U9F4A>
+<U9F52>
+<U9F54>
+<U9F63>
+<U9F5F>
+<U9F60>
+<U9F61>
+<U9F66>
+<U9F67>
+<U9F6C>
+<U9F6A>
+<U9F77>
+<U9F72>
+<U9F76>
+<U9F95>
+<U9F9C>
+<U9FA0>
+<U582F>
+<U69C7>
+<U9059>
+<U7464>
+<U51DC>
+<U7199>
+%
+% JIS X 0212
+%
+<U02D8>
+<U02C7>
+<U00B8>
+<U02D9>
+<U02DD>
+<U00AF>
+<U02DB>
+<U02DA>
+<UFF5E>
+<U0384>
+<U0385>
+<U00A1>
+<U00A6>
+<U00BF>
+<U00BA>
+<U00AA>
+<U00A9>
+<U00AE>
+<U2122>
+<U00A4>
+<U2116>
+<U0386>
+<U0388>
+<U0389>
+<U038A>
+<U03AA>
+<U038C>
+<U038E>
+<U03AB>
+<U038F>
+<U03AC>
+<U03AD>
+<U03AE>
+<U03AF>
+<U03CA>
+<U0390>
+<U03CC>
+<U03C2>
+<U03CD>
+<U03CB>
+<U03B0>
+<U03CE>
+<U0402>
+<U0403>
+<U0404>
+<U0405>
+<U0406>
+<U0407>
+<U0408>
+<U0409>
+<U040A>
+<U040B>
+<U040C>
+<U040E>
+<U040F>
+<U0452>
+<U0453>
+<U0454>
+<U0455>
+<U0456>
+<U0457>
+<U0458>
+<U0459>
+<U045A>
+<U045B>
+<U045C>
+<U045E>
+<U045F>
+<U00C6>
+<U0110>
+<U0126>
+<U0132>
+<U0141>
+<U013F>
+<U014A>
+<U00D8>
+<U0152>
+<U0166>
+<U00DE>
+<U00E6>
+<U0111>
+<U00F0>
+<U0127>
+<U0131>
+<U0133>
+<U0138>
+<U0142>
+<U0140>
+<U0149>
+<U014B>
+<U00F8>
+<U0153>
+<U00DF>
+<U0167>
+<U00FE>
+<U00C1>
+<U00C0>
+<U00C4>
+<U00C2>
+<U0102>
+<U01CD>
+<U0100>
+<U0104>
+<U00C5>
+<U00C3>
+<U0106>
+<U0108>
+<U010C>
+<U00C7>
+<U010A>
+<U010E>
+<U00C9>
+<U00C8>
+<U00CB>
+<U00CA>
+<U011A>
+<U0116>
+<U0112>
+<U0118>
+<U011C>
+<U011E>
+<U0122>
+<U0120>
+<U0124>
+<U00CD>
+<U00CC>
+<U00CF>
+<U00CE>
+<U01CF>
+<U0130>
+<U012A>
+<U012E>
+<U0128>
+<U0134>
+<U0136>
+<U0139>
+<U013D>
+<U013B>
+<U0143>
+<U0147>
+<U0145>
+<U00D1>
+<U00D3>
+<U00D2>
+<U00D6>
+<U00D4>
+<U01D1>
+<U0150>
+<U014C>
+<U00D5>
+<U0154>
+<U0158>
+<U0156>
+<U015A>
+<U015C>
+<U0160>
+<U015E>
+<U0164>
+<U0162>
+<U00DA>
+<U00D9>
+<U00DC>
+<U00DB>
+<U016C>
+<U01D3>
+<U0170>
+<U016A>
+<U0172>
+<U016E>
+<U0168>
+<U01D7>
+<U01DB>
+<U01D9>
+<U01D5>
+<U0174>
+<U00DD>
+<U0178>
+<U0176>
+<U0179>
+<U017D>
+<U017B>
+<U00E1>
+<U00E0>
+<U00E4>
+<U00E2>
+<U0103>
+<U01CE>
+<U0101>
+<U0105>
+<U00E5>
+<U00E3>
+<U0107>
+<U0109>
+<U010D>
+<U00E7>
+<U010B>
+<U010F>
+<U00E9>
+<U00E8>
+<U00EB>
+<U00EA>
+<U011B>
+<U0117>
+<U0113>
+<U0119>
+<U01F5>
+<U011D>
+<U011F>
+<U0121>
+<U0125>
+<U00ED>
+<U00EC>
+<U00EF>
+<U00EE>
+<U01D0>
+<U012B>
+<U012F>
+<U0129>
+<U0135>
+<U0137>
+<U013A>
+<U013E>
+<U013C>
+<U0144>
+<U0148>
+<U0146>
+<U00F1>
+<U00F3>
+<U00F2>
+<U00F6>
+<U00F4>
+<U01D2>
+<U0151>
+<U014D>
+<U00F5>
+<U0155>
+<U0159>
+<U0157>
+<U015B>
+<U015D>
+<U0161>
+<U015F>
+<U0165>
+<U0163>
+<U00FA>
+<U00F9>
+<U00FC>
+<U00FB>
+<U016D>
+<U01D4>
+<U0171>
+<U016B>
+<U0173>
+<U016F>
+<U0169>
+<U01D8>
+<U01DC>
+<U01DA>
+<U01D6>
+<U0175>
+<U00FD>
+<U00FF>
+<U0177>
+<U017A>
+<U017E>
+<U017C>
+<U4E02>
+<U4E04>
+<U4E05>
+<U4E0C>
+<U4E12>
+<U4E1F>
+<U4E23>
+<U4E24>
+<U4E28>
+<U4E2B>
+<U4E2E>
+<U4E2F>
+<U4E30>
+<U4E35>
+<U4E40>
+<U4E41>
+<U4E44>
+<U4E47>
+<U4E51>
+<U4E5A>
+<U4E5C>
+<U4E63>
+<U4E68>
+<U4E69>
+<U4E74>
+<U4E75>
+<U4E79>
+<U4E7F>
+<U4E8D>
+<U4E96>
+<U4E97>
+<U4E9D>
+<U4EAF>
+<U4EB9>
+<U4EC3>
+<U4ED0>
+<U4EDA>
+<U4EDB>
+<U4EE0>
+<U4EE1>
+<U4EE2>
+<U4EE8>
+<U4EEF>
+<U4EF1>
+<U4EF3>
+<U4EF5>
+<U4EFD>
+<U4EFE>
+<U4EFF>
+<U4F00>
+<U4F02>
+<U4F03>
+<U4F08>
+<U4F0B>
+<U4F0C>
+<U4F12>
+<U4F15>
+<U4F16>
+<U4F17>
+<U4F19>
+<U4F2E>
+<U4F31>
+<U4F60>
+<U4F33>
+<U4F35>
+<U4F37>
+<U4F39>
+<U4F3B>
+<U4F3E>
+<U4F40>
+<U4F42>
+<U4F48>
+<U4F49>
+<U4F4B>
+<U4F4C>
+<U4F52>
+<U4F54>
+<U4F56>
+<U4F58>
+<U4F5F>
+<U4F63>
+<U4F6A>
+<U4F6C>
+<U4F6E>
+<U4F71>
+<U4F77>
+<U4F78>
+<U4F79>
+<U4F7A>
+<U4F7D>
+<U4F7E>
+<U4F81>
+<U4F82>
+<U4F84>
+<U4F85>
+<U4F89>
+<U4F8A>
+<U4F8C>
+<U4F8E>
+<U4F90>
+<U4F92>
+<U4F93>
+<U4F94>
+<U4F97>
+<U4F99>
+<U4F9A>
+<U4F9E>
+<U4F9F>
+<U4FB2>
+<U4FB7>
+<U4FB9>
+<U4FBB>
+<U4FBC>
+<U4FBD>
+<U4FBE>
+<U4FC0>
+<U4FC1>
+<U4FC5>
+<U4FC6>
+<U4FC8>
+<U4FC9>
+<U4FCB>
+<U4FCC>
+<U4FCD>
+<U4FCF>
+<U4FD2>
+<U4FDC>
+<U4FE0>
+<U4FE2>
+<U4FF0>
+<U4FF2>
+<U4FFC>
+<U4FFD>
+<U4FFF>
+<U5000>
+<U5001>
+<U5004>
+<U5007>
+<U500A>
+<U500C>
+<U500E>
+<U5010>
+<U5013>
+<U5017>
+<U5018>
+<U501B>
+<U501C>
+<U501D>
+<U501E>
+<U5022>
+<U5027>
+<U502E>
+<U5030>
+<U5032>
+<U5033>
+<U5035>
+<U5040>
+<U5041>
+<U5042>
+<U5045>
+<U5046>
+<U504A>
+<U504C>
+<U504E>
+<U5051>
+<U5052>
+<U5053>
+<U5057>
+<U5059>
+<U505F>
+<U5060>
+<U5062>
+<U5063>
+<U5066>
+<U5067>
+<U506A>
+<U506D>
+<U5070>
+<U5071>
+<U503B>
+<U5081>
+<U5083>
+<U5084>
+<U5086>
+<U508A>
+<U508E>
+<U508F>
+<U5090>
+<U5092>
+<U5093>
+<U5094>
+<U5096>
+<U509B>
+<U509C>
+<U509E>
+<U509F>
+<U50A0>
+<U50A1>
+<U50A2>
+<U50AA>
+<U50AF>
+<U50B0>
+<U50B9>
+<U50BA>
+<U50BD>
+<U50C0>
+<U50C3>
+<U50C4>
+<U50C7>
+<U50CC>
+<U50CE>
+<U50D0>
+<U50D3>
+<U50D4>
+<U50D8>
+<U50DC>
+<U50DD>
+<U50DF>
+<U50E2>
+<U50E4>
+<U50E6>
+<U50E8>
+<U50E9>
+<U50EF>
+<U50F1>
+<U50F6>
+<U50FA>
+<U50FE>
+<U5103>
+<U5106>
+<U5107>
+<U5108>
+<U510B>
+<U510C>
+<U510D>
+<U510E>
+<U50F2>
+<U5110>
+<U5117>
+<U5119>
+<U511B>
+<U511C>
+<U511D>
+<U511E>
+<U5123>
+<U5127>
+<U5128>
+<U512C>
+<U512D>
+<U512F>
+<U5131>
+<U5133>
+<U5134>
+<U5135>
+<U5138>
+<U5139>
+<U5142>
+<U514A>
+<U514F>
+<U5153>
+<U5155>
+<U5157>
+<U5158>
+<U515F>
+<U5164>
+<U5166>
+<U517E>
+<U5183>
+<U5184>
+<U518B>
+<U518E>
+<U5198>
+<U519D>
+<U51A1>
+<U51A3>
+<U51AD>
+<U51B8>
+<U51BA>
+<U51BC>
+<U51BE>
+<U51BF>
+<U51C2>
+<U51C8>
+<U51CF>
+<U51D1>
+<U51D2>
+<U51D3>
+<U51D5>
+<U51D8>
+<U51DE>
+<U51E2>
+<U51E5>
+<U51EE>
+<U51F2>
+<U51F3>
+<U51F4>
+<U51F7>
+<U5201>
+<U5202>
+<U5205>
+<U5212>
+<U5213>
+<U5215>
+<U5216>
+<U5218>
+<U5222>
+<U5228>
+<U5231>
+<U5232>
+<U5235>
+<U523C>
+<U5245>
+<U5249>
+<U5255>
+<U5257>
+<U5258>
+<U525A>
+<U525C>
+<U525F>
+<U5260>
+<U5261>
+<U5266>
+<U526E>
+<U5277>
+<U5278>
+<U5279>
+<U5280>
+<U5282>
+<U5285>
+<U528A>
+<U528C>
+<U5293>
+<U5295>
+<U5296>
+<U5297>
+<U5298>
+<U529A>
+<U529C>
+<U52A4>
+<U52A5>
+<U52A6>
+<U52A7>
+<U52AF>
+<U52B0>
+<U52B6>
+<U52B7>
+<U52B8>
+<U52BA>
+<U52BB>
+<U52BD>
+<U52C0>
+<U52C4>
+<U52C6>
+<U52C8>
+<U52CC>
+<U52CF>
+<U52D1>
+<U52D4>
+<U52D6>
+<U52DB>
+<U52DC>
+<U52E1>
+<U52E5>
+<U52E8>
+<U52E9>
+<U52EA>
+<U52EC>
+<U52F0>
+<U52F1>
+<U52F4>
+<U52F6>
+<U52F7>
+<U5300>
+<U5303>
+<U530A>
+<U530B>
+<U530C>
+<U5311>
+<U5313>
+<U5318>
+<U531B>
+<U531C>
+<U531E>
+<U531F>
+<U5325>
+<U5327>
+<U5328>
+<U5329>
+<U532B>
+<U532C>
+<U532D>
+<U5330>
+<U5332>
+<U5335>
+<U533C>
+<U533D>
+<U533E>
+<U5342>
+<U534C>
+<U534B>
+<U5359>
+<U535B>
+<U5361>
+<U5363>
+<U5365>
+<U536C>
+<U536D>
+<U5372>
+<U5379>
+<U537E>
+<U5383>
+<U5387>
+<U5388>
+<U538E>
+<U5393>
+<U5394>
+<U5399>
+<U539D>
+<U53A1>
+<U53A4>
+<U53AA>
+<U53AB>
+<U53AF>
+<U53B2>
+<U53B4>
+<U53B5>
+<U53B7>
+<U53B8>
+<U53BA>
+<U53BD>
+<U53C0>
+<U53C5>
+<U53CF>
+<U53D2>
+<U53D3>
+<U53D5>
+<U53DA>
+<U53DD>
+<U53DE>
+<U53E0>
+<U53E6>
+<U53E7>
+<U53F5>
+<U5402>
+<U5413>
+<U541A>
+<U5421>
+<U5427>
+<U5428>
+<U542A>
+<U542F>
+<U5431>
+<U5434>
+<U5435>
+<U5443>
+<U5444>
+<U5447>
+<U544D>
+<U544F>
+<U545E>
+<U5462>
+<U5464>
+<U5466>
+<U5467>
+<U5469>
+<U546B>
+<U546D>
+<U546E>
+<U5474>
+<U547F>
+<U5481>
+<U5483>
+<U5485>
+<U5488>
+<U5489>
+<U548D>
+<U5491>
+<U5495>
+<U5496>
+<U549C>
+<U549F>
+<U54A1>
+<U54A6>
+<U54A7>
+<U54A9>
+<U54AA>
+<U54AD>
+<U54AE>
+<U54B1>
+<U54B7>
+<U54B9>
+<U54BA>
+<U54BB>
+<U54BF>
+<U54C6>
+<U54CA>
+<U54CD>
+<U54CE>
+<U54E0>
+<U54EA>
+<U54EC>
+<U54EF>
+<U54F6>
+<U54FC>
+<U54FE>
+<U54FF>
+<U5500>
+<U5501>
+<U5505>
+<U5508>
+<U5509>
+<U550C>
+<U550D>
+<U550E>
+<U5515>
+<U552A>
+<U552B>
+<U5532>
+<U5535>
+<U5536>
+<U553B>
+<U553C>
+<U553D>
+<U5541>
+<U5547>
+<U5549>
+<U554A>
+<U554D>
+<U5550>
+<U5551>
+<U5558>
+<U555A>
+<U555B>
+<U555E>
+<U5560>
+<U5561>
+<U5564>
+<U5566>
+<U557F>
+<U5581>
+<U5582>
+<U5586>
+<U5588>
+<U558E>
+<U558F>
+<U5591>
+<U5592>
+<U5593>
+<U5594>
+<U5597>
+<U55A3>
+<U55A4>
+<U55AD>
+<U55B2>
+<U55BF>
+<U55C1>
+<U55C3>
+<U55C6>
+<U55C9>
+<U55CB>
+<U55CC>
+<U55CE>
+<U55D1>
+<U55D2>
+<U55D3>
+<U55D7>
+<U55D8>
+<U55DB>
+<U55DE>
+<U55E2>
+<U55E9>
+<U55F6>
+<U55FF>
+<U5605>
+<U5608>
+<U560A>
+<U560D>
+<U560E>
+<U560F>
+<U5610>
+<U5611>
+<U5612>
+<U5619>
+<U562C>
+<U5630>
+<U5633>
+<U5635>
+<U5637>
+<U5639>
+<U563B>
+<U563C>
+<U563D>
+<U563F>
+<U5640>
+<U5641>
+<U5643>
+<U5644>
+<U5646>
+<U5649>
+<U564B>
+<U564D>
+<U564F>
+<U5654>
+<U565E>
+<U5660>
+<U5661>
+<U5662>
+<U5663>
+<U5666>
+<U5669>
+<U566D>
+<U566F>
+<U5671>
+<U5672>
+<U5675>
+<U5684>
+<U5685>
+<U5688>
+<U568B>
+<U568C>
+<U5695>
+<U5699>
+<U569A>
+<U569D>
+<U569E>
+<U569F>
+<U56A6>
+<U56A7>
+<U56A8>
+<U56A9>
+<U56AB>
+<U56AC>
+<U56AD>
+<U56B1>
+<U56B3>
+<U56B7>
+<U56BE>
+<U56C5>
+<U56C9>
+<U56CA>
+<U56CB>
+<U56CF>
+<U56D0>
+<U56CC>
+<U56CD>
+<U56D9>
+<U56DC>
+<U56DD>
+<U56DF>
+<U56E1>
+<U56E4>
+<U56E5>
+<U56E6>
+<U56E7>
+<U56E8>
+<U56F1>
+<U56EB>
+<U56ED>
+<U56F6>
+<U56F7>
+<U5701>
+<U5702>
+<U5707>
+<U570A>
+<U570C>
+<U5711>
+<U5715>
+<U571A>
+<U571B>
+<U571D>
+<U5720>
+<U5722>
+<U5723>
+<U5724>
+<U5725>
+<U5729>
+<U572A>
+<U572C>
+<U572E>
+<U572F>
+<U5733>
+<U5734>
+<U573D>
+<U573E>
+<U573F>
+<U5745>
+<U5746>
+<U574C>
+<U574D>
+<U5752>
+<U5762>
+<U5765>
+<U5767>
+<U5768>
+<U576B>
+<U576D>
+<U576E>
+<U576F>
+<U5770>
+<U5771>
+<U5773>
+<U5774>
+<U5775>
+<U5777>
+<U5779>
+<U577A>
+<U577B>
+<U577C>
+<U577E>
+<U5781>
+<U5783>
+<U578C>
+<U5794>
+<U5797>
+<U5799>
+<U579A>
+<U579C>
+<U579D>
+<U579E>
+<U579F>
+<U57A1>
+<U5795>
+<U57A7>
+<U57A8>
+<U57A9>
+<U57AC>
+<U57B8>
+<U57BD>
+<U57C7>
+<U57C8>
+<U57CC>
+<U57CF>
+<U57D5>
+<U57DD>
+<U57DE>
+<U57E4>
+<U57E6>
+<U57E7>
+<U57E9>
+<U57ED>
+<U57F0>
+<U57F5>
+<U57F6>
+<U57F8>
+<U57FD>
+<U57FE>
+<U57FF>
+<U5803>
+<U5804>
+<U5808>
+<U5809>
+<U57E1>
+<U580C>
+<U580D>
+<U581B>
+<U581E>
+<U581F>
+<U5820>
+<U5826>
+<U5827>
+<U582D>
+<U5832>
+<U5839>
+<U583F>
+<U5849>
+<U584C>
+<U584D>
+<U584F>
+<U5850>
+<U5855>
+<U585F>
+<U5861>
+<U5864>
+<U5867>
+<U5868>
+<U5878>
+<U587C>
+<U587F>
+<U5880>
+<U5881>
+<U5887>
+<U5888>
+<U5889>
+<U588A>
+<U588C>
+<U588D>
+<U588F>
+<U5890>
+<U5894>
+<U5896>
+<U589D>
+<U58A0>
+<U58A1>
+<U58A2>
+<U58A6>
+<U58A9>
+<U58B1>
+<U58B2>
+<U58C4>
+<U58BC>
+<U58C2>
+<U58C8>
+<U58CD>
+<U58CE>
+<U58D0>
+<U58D2>
+<U58D4>
+<U58D6>
+<U58DA>
+<U58DD>
+<U58E1>
+<U58E2>
+<U58E9>
+<U58F3>
+<U5905>
+<U5906>
+<U590B>
+<U590C>
+<U5912>
+<U5913>
+<U5914>
+<U8641>
+<U591D>
+<U5921>
+<U5923>
+<U5924>
+<U5928>
+<U592F>
+<U5930>
+<U5933>
+<U5935>
+<U5936>
+<U593F>
+<U5943>
+<U5946>
+<U5952>
+<U5953>
+<U5959>
+<U595B>
+<U595D>
+<U595E>
+<U595F>
+<U5961>
+<U5963>
+<U596B>
+<U596D>
+<U596F>
+<U5972>
+<U5975>
+<U5976>
+<U5979>
+<U597B>
+<U597C>
+<U598B>
+<U598C>
+<U598E>
+<U5992>
+<U5995>
+<U5997>
+<U599F>
+<U59A4>
+<U59A7>
+<U59AD>
+<U59AE>
+<U59AF>
+<U59B0>
+<U59B3>
+<U59B7>
+<U59BA>
+<U59BC>
+<U59C1>
+<U59C3>
+<U59C4>
+<U59C8>
+<U59CA>
+<U59CD>
+<U59D2>
+<U59DD>
+<U59DE>
+<U59DF>
+<U59E3>
+<U59E4>
+<U59E7>
+<U59EE>
+<U59EF>
+<U59F1>
+<U59F2>
+<U59F4>
+<U59F7>
+<U5A00>
+<U5A04>
+<U5A0C>
+<U5A0D>
+<U5A0E>
+<U5A12>
+<U5A13>
+<U5A1E>
+<U5A23>
+<U5A24>
+<U5A27>
+<U5A28>
+<U5A2A>
+<U5A2D>
+<U5A30>
+<U5A44>
+<U5A45>
+<U5A47>
+<U5A48>
+<U5A4C>
+<U5A50>
+<U5A55>
+<U5A5E>
+<U5A63>
+<U5A65>
+<U5A67>
+<U5A6D>
+<U5A77>
+<U5A7A>
+<U5A7B>
+<U5A7E>
+<U5A8B>
+<U5A90>
+<U5A93>
+<U5A96>
+<U5A99>
+<U5A9C>
+<U5A9E>
+<U5A9F>
+<U5AA0>
+<U5AA2>
+<U5AA7>
+<U5AAC>
+<U5AB1>
+<U5AB2>
+<U5AB3>
+<U5AB5>
+<U5AB8>
+<U5ABA>
+<U5ABB>
+<U5ABF>
+<U5AC4>
+<U5AC6>
+<U5AC8>
+<U5ACF>
+<U5ADA>
+<U5ADC>
+<U5AE0>
+<U5AE5>
+<U5AEA>
+<U5AEE>
+<U5AF5>
+<U5AF6>
+<U5AFD>
+<U5B00>
+<U5B01>
+<U5B08>
+<U5B17>
+<U5B34>
+<U5B19>
+<U5B1B>
+<U5B1D>
+<U5B21>
+<U5B25>
+<U5B2D>
+<U5B38>
+<U5B41>
+<U5B4B>
+<U5B4C>
+<U5B52>
+<U5B56>
+<U5B5E>
+<U5B68>
+<U5B6E>
+<U5B6F>
+<U5B7C>
+<U5B7D>
+<U5B7E>
+<U5B7F>
+<U5B81>
+<U5B84>
+<U5B86>
+<U5B8A>
+<U5B8E>
+<U5B90>
+<U5B91>
+<U5B93>
+<U5B94>
+<U5B96>
+<U5BA8>
+<U5BA9>
+<U5BAC>
+<U5BAD>
+<U5BAF>
+<U5BB1>
+<U5BB2>
+<U5BB7>
+<U5BBA>
+<U5BBC>
+<U5BC0>
+<U5BC1>
+<U5BCD>
+<U5BCF>
+<U5BD6>
+<U5BD7>
+<U5BD8>
+<U5BD9>
+<U5BDA>
+<U5BE0>
+<U5BEF>
+<U5BF1>
+<U5BF4>
+<U5BFD>
+<U5C0C>
+<U5C17>
+<U5C1E>
+<U5C1F>
+<U5C23>
+<U5C26>
+<U5C29>
+<U5C2B>
+<U5C2C>
+<U5C2E>
+<U5C30>
+<U5C32>
+<U5C35>
+<U5C36>
+<U5C59>
+<U5C5A>
+<U5C5C>
+<U5C62>
+<U5C63>
+<U5C67>
+<U5C68>
+<U5C69>
+<U5C6D>
+<U5C70>
+<U5C74>
+<U5C75>
+<U5C7A>
+<U5C7B>
+<U5C7C>
+<U5C7D>
+<U5C87>
+<U5C88>
+<U5C8A>
+<U5C8F>
+<U5C92>
+<U5C9D>
+<U5C9F>
+<U5CA0>
+<U5CA2>
+<U5CA3>
+<U5CA6>
+<U5CAA>
+<U5CB2>
+<U5CB4>
+<U5CB5>
+<U5CBA>
+<U5CC9>
+<U5CCB>
+<U5CD2>
+<U5CDD>
+<U5CD7>
+<U5CEE>
+<U5CF1>
+<U5CF2>
+<U5CF4>
+<U5D01>
+<U5D06>
+<U5D0D>
+<U5D12>
+<U5D2B>
+<U5D23>
+<U5D24>
+<U5D26>
+<U5D27>
+<U5D31>
+<U5D34>
+<U5D39>
+<U5D3D>
+<U5D3F>
+<U5D42>
+<U5D43>
+<U5D46>
+<U5D48>
+<U5D55>
+<U5D51>
+<U5D59>
+<U5D4A>
+<U5D5F>
+<U5D60>
+<U5D61>
+<U5D62>
+<U5D64>
+<U5D6A>
+<U5D6D>
+<U5D70>
+<U5D79>
+<U5D7A>
+<U5D7E>
+<U5D7F>
+<U5D81>
+<U5D83>
+<U5D88>
+<U5D8A>
+<U5D92>
+<U5D93>
+<U5D94>
+<U5D95>
+<U5D99>
+<U5D9B>
+<U5D9F>
+<U5DA0>
+<U5DA7>
+<U5DAB>
+<U5DB0>
+<U5DB4>
+<U5DB8>
+<U5DB9>
+<U5DC3>
+<U5DC7>
+<U5DCB>
+<U5DD0>
+<U5DCE>
+<U5DD8>
+<U5DD9>
+<U5DE0>
+<U5DE4>
+<U5DE9>
+<U5DF8>
+<U5DF9>
+<U5E00>
+<U5E07>
+<U5E0D>
+<U5E12>
+<U5E14>
+<U5E15>
+<U5E18>
+<U5E1F>
+<U5E20>
+<U5E2E>
+<U5E28>
+<U5E32>
+<U5E35>
+<U5E3E>
+<U5E4B>
+<U5E50>
+<U5E49>
+<U5E51>
+<U5E56>
+<U5E58>
+<U5E5B>
+<U5E5C>
+<U5E5E>
+<U5E68>
+<U5E6A>
+<U5E6B>
+<U5E6C>
+<U5E6D>
+<U5E6E>
+<U5E70>
+<U5E80>
+<U5E8B>
+<U5E8E>
+<U5EA2>
+<U5EA4>
+<U5EA5>
+<U5EA8>
+<U5EAA>
+<U5EAC>
+<U5EB1>
+<U5EB3>
+<U5EBD>
+<U5EBE>
+<U5EBF>
+<U5EC6>
+<U5ECC>
+<U5ECB>
+<U5ECE>
+<U5ED1>
+<U5ED2>
+<U5ED4>
+<U5ED5>
+<U5EDC>
+<U5EDE>
+<U5EE5>
+<U5EEB>
+<U5F02>
+<U5F06>
+<U5F07>
+<U5F08>
+<U5F0E>
+<U5F19>
+<U5F1C>
+<U5F1D>
+<U5F21>
+<U5F22>
+<U5F23>
+<U5F24>
+<U5F28>
+<U5F2B>
+<U5F2C>
+<U5F2E>
+<U5F30>
+<U5F34>
+<U5F36>
+<U5F3B>
+<U5F3D>
+<U5F3F>
+<U5F40>
+<U5F44>
+<U5F45>
+<U5F47>
+<U5F4D>
+<U5F50>
+<U5F54>
+<U5F58>
+<U5F5B>
+<U5F60>
+<U5F63>
+<U5F64>
+<U5F67>
+<U5F6F>
+<U5F72>
+<U5F74>
+<U5F75>
+<U5F78>
+<U5F7A>
+<U5F7D>
+<U5F7E>
+<U5F89>
+<U5F8D>
+<U5F8F>
+<U5F96>
+<U5F9C>
+<U5F9D>
+<U5FA2>
+<U5FA7>
+<U5FAB>
+<U5FA4>
+<U5FAC>
+<U5FAF>
+<U5FB0>
+<U5FB1>
+<U5FB8>
+<U5FC4>
+<U5FC7>
+<U5FC8>
+<U5FC9>
+<U5FCB>
+<U5FD0>
+<U5FD1>
+<U5FD2>
+<U5FD3>
+<U5FD4>
+<U5FDE>
+<U5FE1>
+<U5FE2>
+<U5FE8>
+<U5FE9>
+<U5FEA>
+<U5FEC>
+<U5FED>
+<U5FEE>
+<U5FEF>
+<U5FF2>
+<U5FF3>
+<U5FF6>
+<U5FFA>
+<U5FFC>
+<U6007>
+<U600A>
+<U600D>
+<U6013>
+<U6014>
+<U6017>
+<U6018>
+<U601A>
+<U601F>
+<U6024>
+<U602D>
+<U6033>
+<U6035>
+<U6040>
+<U6047>
+<U6048>
+<U6049>
+<U604C>
+<U6051>
+<U6054>
+<U6056>
+<U6057>
+<U605D>
+<U6061>
+<U6067>
+<U6071>
+<U607E>
+<U607F>
+<U6082>
+<U6086>
+<U6088>
+<U608A>
+<U608E>
+<U6091>
+<U6093>
+<U6095>
+<U6098>
+<U609D>
+<U609E>
+<U60A2>
+<U60A4>
+<U60A5>
+<U60A8>
+<U60B0>
+<U60B1>
+<U60B7>
+<U60BB>
+<U60BE>
+<U60C2>
+<U60C4>
+<U60C8>
+<U60C9>
+<U60CA>
+<U60CB>
+<U60CE>
+<U60CF>
+<U60D4>
+<U60D5>
+<U60D9>
+<U60DB>
+<U60DD>
+<U60DE>
+<U60E2>
+<U60E5>
+<U60F2>
+<U60F5>
+<U60F8>
+<U60FC>
+<U60FD>
+<U6102>
+<U6107>
+<U610A>
+<U610C>
+<U6110>
+<U6111>
+<U6112>
+<U6113>
+<U6114>
+<U6116>
+<U6117>
+<U6119>
+<U611C>
+<U611E>
+<U6122>
+<U612A>
+<U612B>
+<U6130>
+<U6131>
+<U6135>
+<U6136>
+<U6137>
+<U6139>
+<U6141>
+<U6145>
+<U6146>
+<U6149>
+<U615E>
+<U6160>
+<U616C>
+<U6172>
+<U6178>
+<U617B>
+<U617C>
+<U617F>
+<U6180>
+<U6181>
+<U6183>
+<U6184>
+<U618B>
+<U618D>
+<U6192>
+<U6193>
+<U6197>
+<U6198>
+<U619C>
+<U619D>
+<U619F>
+<U61A0>
+<U61A5>
+<U61A8>
+<U61AA>
+<U61AD>
+<U61B8>
+<U61B9>
+<U61BC>
+<U61C0>
+<U61C1>
+<U61C2>
+<U61CE>
+<U61CF>
+<U61D5>
+<U61DC>
+<U61DD>
+<U61DE>
+<U61DF>
+<U61E1>
+<U61E2>
+<U61E7>
+<U61E9>
+<U61E5>
+<U61EC>
+<U61ED>
+<U61EF>
+<U6201>
+<U6203>
+<U6204>
+<U6207>
+<U6213>
+<U6215>
+<U621C>
+<U6220>
+<U6222>
+<U6223>
+<U6227>
+<U6229>
+<U622B>
+<U6239>
+<U623D>
+<U6242>
+<U6243>
+<U6244>
+<U6246>
+<U624C>
+<U6250>
+<U6251>
+<U6252>
+<U6254>
+<U6256>
+<U625A>
+<U625C>
+<U6264>
+<U626D>
+<U626F>
+<U6273>
+<U627A>
+<U627D>
+<U628D>
+<U628E>
+<U628F>
+<U6290>
+<U62A6>
+<U62A8>
+<U62B3>
+<U62B6>
+<U62B7>
+<U62BA>
+<U62BE>
+<U62BF>
+<U62C4>
+<U62CE>
+<U62D5>
+<U62D6>
+<U62DA>
+<U62EA>
+<U62F2>
+<U62F4>
+<U62FC>
+<U62FD>
+<U6303>
+<U6304>
+<U630A>
+<U630B>
+<U630D>
+<U6310>
+<U6313>
+<U6316>
+<U6318>
+<U6329>
+<U632A>
+<U632D>
+<U6335>
+<U6336>
+<U6339>
+<U633C>
+<U6341>
+<U6342>
+<U6343>
+<U6344>
+<U6346>
+<U634A>
+<U634B>
+<U634E>
+<U6352>
+<U6353>
+<U6354>
+<U6358>
+<U635B>
+<U6365>
+<U6366>
+<U636C>
+<U636D>
+<U6371>
+<U6374>
+<U6375>
+<U6378>
+<U637C>
+<U637D>
+<U637F>
+<U6382>
+<U6384>
+<U6387>
+<U638A>
+<U6390>
+<U6394>
+<U6395>
+<U6399>
+<U639A>
+<U639E>
+<U63A4>
+<U63A6>
+<U63AD>
+<U63AE>
+<U63AF>
+<U63BD>
+<U63C1>
+<U63C5>
+<U63C8>
+<U63CE>
+<U63D1>
+<U63D3>
+<U63D4>
+<U63D5>
+<U63DC>
+<U63E0>
+<U63E5>
+<U63EA>
+<U63EC>
+<U63F2>
+<U63F3>
+<U63F5>
+<U63F8>
+<U63F9>
+<U6409>
+<U640A>
+<U6410>
+<U6412>
+<U6414>
+<U6418>
+<U641E>
+<U6420>
+<U6422>
+<U6424>
+<U6425>
+<U6429>
+<U642A>
+<U642F>
+<U6430>
+<U6435>
+<U643D>
+<U643F>
+<U644B>
+<U644F>
+<U6451>
+<U6452>
+<U6453>
+<U6454>
+<U645A>
+<U645B>
+<U645C>
+<U645D>
+<U645F>
+<U6460>
+<U6461>
+<U6463>
+<U646D>
+<U6473>
+<U6474>
+<U647B>
+<U647D>
+<U6485>
+<U6487>
+<U648F>
+<U6490>
+<U6491>
+<U6498>
+<U6499>
+<U649B>
+<U649D>
+<U649F>
+<U64A1>
+<U64A3>
+<U64A6>
+<U64A8>
+<U64AC>
+<U64B3>
+<U64BD>
+<U64BE>
+<U64BF>
+<U64C4>
+<U64C9>
+<U64CA>
+<U64CB>
+<U64CC>
+<U64CE>
+<U64D0>
+<U64D1>
+<U64D5>
+<U64D7>
+<U64E4>
+<U64E5>
+<U64E9>
+<U64EA>
+<U64ED>
+<U64F0>
+<U64F5>
+<U64F7>
+<U64FB>
+<U64FF>
+<U6501>
+<U6504>
+<U6508>
+<U6509>
+<U650A>
+<U650F>
+<U6513>
+<U6514>
+<U6516>
+<U6519>
+<U651B>
+<U651E>
+<U651F>
+<U6522>
+<U6526>
+<U6529>
+<U652E>
+<U6531>
+<U653A>
+<U653C>
+<U653D>
+<U6543>
+<U6547>
+<U6549>
+<U6550>
+<U6552>
+<U6554>
+<U655F>
+<U6560>
+<U6567>
+<U656B>
+<U657A>
+<U657D>
+<U6581>
+<U6585>
+<U658A>
+<U6592>
+<U6595>
+<U6598>
+<U659D>
+<U65A0>
+<U65A3>
+<U65A6>
+<U65AE>
+<U65B2>
+<U65B3>
+<U65B4>
+<U65BF>
+<U65C2>
+<U65C8>
+<U65C9>
+<U65CE>
+<U65D0>
+<U65D4>
+<U65D6>
+<U65D8>
+<U65DF>
+<U65F0>
+<U65F2>
+<U65F4>
+<U65F5>
+<U65F9>
+<U65FE>
+<U65FF>
+<U6600>
+<U6604>
+<U6608>
+<U6609>
+<U660D>
+<U6611>
+<U6612>
+<U6615>
+<U6616>
+<U661D>
+<U661E>
+<U6621>
+<U6622>
+<U6623>
+<U6624>
+<U6626>
+<U6629>
+<U662A>
+<U662B>
+<U662C>
+<U662E>
+<U6630>
+<U6631>
+<U6633>
+<U6639>
+<U6637>
+<U6640>
+<U6645>
+<U6646>
+<U664A>
+<U664C>
+<U6651>
+<U664E>
+<U6657>
+<U6658>
+<U6659>
+<U665B>
+<U665C>
+<U6660>
+<U6661>
+<U66FB>
+<U666A>
+<U666B>
+<U666C>
+<U667E>
+<U6673>
+<U6675>
+<U667F>
+<U6677>
+<U6678>
+<U6679>
+<U667B>
+<U6680>
+<U667C>
+<U668B>
+<U668C>
+<U668D>
+<U6690>
+<U6692>
+<U6699>
+<U669A>
+<U669B>
+<U669C>
+<U669F>
+<U66A0>
+<U66A4>
+<U66AD>
+<U66B1>
+<U66B2>
+<U66B5>
+<U66BB>
+<U66BF>
+<U66C0>
+<U66C2>
+<U66C3>
+<U66C8>
+<U66CC>
+<U66CE>
+<U66CF>
+<U66D4>
+<U66DB>
+<U66DF>
+<U66E8>
+<U66EB>
+<U66EC>
+<U66EE>
+<U66FA>
+<U6705>
+<U6707>
+<U670E>
+<U6713>
+<U6719>
+<U671C>
+<U6720>
+<U6722>
+<U6733>
+<U673E>
+<U6745>
+<U6747>
+<U6748>
+<U674C>
+<U6754>
+<U6755>
+<U675D>
+<U6766>
+<U676C>
+<U676E>
+<U6774>
+<U6776>
+<U677B>
+<U6781>
+<U6784>
+<U678E>
+<U678F>
+<U6791>
+<U6793>
+<U6796>
+<U6798>
+<U6799>
+<U679B>
+<U67B0>
+<U67B1>
+<U67B2>
+<U67B5>
+<U67BB>
+<U67BC>
+<U67BD>
+<U67F9>
+<U67C0>
+<U67C2>
+<U67C3>
+<U67C5>
+<U67C8>
+<U67C9>
+<U67D2>
+<U67D7>
+<U67D9>
+<U67DC>
+<U67E1>
+<U67E6>
+<U67F0>
+<U67F2>
+<U67F6>
+<U67F7>
+<U6852>
+<U6814>
+<U6819>
+<U681D>
+<U681F>
+<U6828>
+<U6827>
+<U682C>
+<U682D>
+<U682F>
+<U6830>
+<U6831>
+<U6833>
+<U683B>
+<U683F>
+<U6844>
+<U6845>
+<U684A>
+<U684C>
+<U6855>
+<U6857>
+<U6858>
+<U685B>
+<U686B>
+<U686E>
+<U686F>
+<U6870>
+<U6871>
+<U6872>
+<U6875>
+<U6879>
+<U687A>
+<U687B>
+<U687C>
+<U6882>
+<U6884>
+<U6886>
+<U6888>
+<U6896>
+<U6898>
+<U689A>
+<U689C>
+<U68A1>
+<U68A3>
+<U68A5>
+<U68A9>
+<U68AA>
+<U68AE>
+<U68B2>
+<U68BB>
+<U68C5>
+<U68C8>
+<U68CC>
+<U68CF>
+<U68D0>
+<U68D1>
+<U68D3>
+<U68D6>
+<U68D9>
+<U68DC>
+<U68DD>
+<U68E5>
+<U68E8>
+<U68EA>
+<U68EB>
+<U68EC>
+<U68ED>
+<U68F0>
+<U68F1>
+<U68F5>
+<U68F6>
+<U68FB>
+<U68FC>
+<U68FD>
+<U6906>
+<U6909>
+<U690A>
+<U6910>
+<U6911>
+<U6913>
+<U6916>
+<U6917>
+<U6931>
+<U6933>
+<U6935>
+<U6938>
+<U693B>
+<U6942>
+<U6945>
+<U6949>
+<U694E>
+<U6957>
+<U695B>
+<U6963>
+<U6964>
+<U6965>
+<U6966>
+<U6968>
+<U6969>
+<U696C>
+<U6970>
+<U6971>
+<U6972>
+<U697A>
+<U697B>
+<U697F>
+<U6980>
+<U698D>
+<U6992>
+<U6996>
+<U6998>
+<U69A1>
+<U69A5>
+<U69A6>
+<U69A8>
+<U69AB>
+<U69AD>
+<U69AF>
+<U69B7>
+<U69B8>
+<U69BA>
+<U69BC>
+<U69C5>
+<U69C8>
+<U69D1>
+<U69D6>
+<U69D7>
+<U69E2>
+<U69E5>
+<U69EE>
+<U69EF>
+<U69F1>
+<U69F3>
+<U69F5>
+<U69FE>
+<U6A00>
+<U6A01>
+<U6A03>
+<U6A0F>
+<U6A11>
+<U6A15>
+<U6A1A>
+<U6A1D>
+<U6A20>
+<U6A24>
+<U6A28>
+<U6A30>
+<U6A32>
+<U6A34>
+<U6A37>
+<U6A3B>
+<U6A3E>
+<U6A3F>
+<U6A45>
+<U6A46>
+<U6A49>
+<U6A4A>
+<U6A4E>
+<U6A50>
+<U6A51>
+<U6A52>
+<U6A55>
+<U6A56>
+<U6A5B>
+<U6A64>
+<U6A67>
+<U6A6A>
+<U6A71>
+<U6A73>
+<U6A7E>
+<U6A81>
+<U6A83>
+<U6A86>
+<U6A87>
+<U6A89>
+<U6A8B>
+<U6A91>
+<U6A9B>
+<U6A9D>
+<U6A9E>
+<U6A9F>
+<U6AA5>
+<U6AAB>
+<U6AAF>
+<U6AB0>
+<U6AB1>
+<U6AB4>
+<U6ABD>
+<U6ABE>
+<U6ABF>
+<U6AC6>
+<U6AC9>
+<U6AC8>
+<U6ACC>
+<U6AD0>
+<U6AD4>
+<U6AD5>
+<U6AD6>
+<U6ADC>
+<U6ADD>
+<U6AE4>
+<U6AE7>
+<U6AEC>
+<U6AF0>
+<U6AF1>
+<U6AF2>
+<U6AFC>
+<U6AFD>
+<U6B02>
+<U6B03>
+<U6B06>
+<U6B07>
+<U6B09>
+<U6B0F>
+<U6B10>
+<U6B11>
+<U6B17>
+<U6B1B>
+<U6B1E>
+<U6B24>
+<U6B28>
+<U6B2B>
+<U6B2C>
+<U6B2F>
+<U6B35>
+<U6B36>
+<U6B3B>
+<U6B3F>
+<U6B46>
+<U6B4A>
+<U6B4D>
+<U6B52>
+<U6B56>
+<U6B58>
+<U6B5D>
+<U6B60>
+<U6B67>
+<U6B6B>
+<U6B6E>
+<U6B70>
+<U6B75>
+<U6B7D>
+<U6B7E>
+<U6B82>
+<U6B85>
+<U6B97>
+<U6B9B>
+<U6B9F>
+<U6BA0>
+<U6BA2>
+<U6BA3>
+<U6BA8>
+<U6BA9>
+<U6BAC>
+<U6BAD>
+<U6BAE>
+<U6BB0>
+<U6BB8>
+<U6BB9>
+<U6BBD>
+<U6BBE>
+<U6BC3>
+<U6BC4>
+<U6BC9>
+<U6BCC>
+<U6BD6>
+<U6BDA>
+<U6BE1>
+<U6BE3>
+<U6BE6>
+<U6BE7>
+<U6BEE>
+<U6BF1>
+<U6BF7>
+<U6BF9>
+<U6BFF>
+<U6C02>
+<U6C04>
+<U6C05>
+<U6C09>
+<U6C0D>
+<U6C0E>
+<U6C10>
+<U6C12>
+<U6C19>
+<U6C1F>
+<U6C26>
+<U6C27>
+<U6C28>
+<U6C2C>
+<U6C2E>
+<U6C33>
+<U6C35>
+<U6C36>
+<U6C3A>
+<U6C3B>
+<U6C3F>
+<U6C4A>
+<U6C4B>
+<U6C4D>
+<U6C4F>
+<U6C52>
+<U6C54>
+<U6C59>
+<U6C5B>
+<U6C5C>
+<U6C6B>
+<U6C6D>
+<U6C6F>
+<U6C74>
+<U6C76>
+<U6C78>
+<U6C79>
+<U6C7B>
+<U6C85>
+<U6C86>
+<U6C87>
+<U6C89>
+<U6C94>
+<U6C95>
+<U6C97>
+<U6C98>
+<U6C9C>
+<U6C9F>
+<U6CB0>
+<U6CB2>
+<U6CB4>
+<U6CC2>
+<U6CC6>
+<U6CCD>
+<U6CCF>
+<U6CD0>
+<U6CD1>
+<U6CD2>
+<U6CD4>
+<U6CD6>
+<U6CDA>
+<U6CDC>
+<U6CE0>
+<U6CE7>
+<U6CE9>
+<U6CEB>
+<U6CEC>
+<U6CEE>
+<U6CF2>
+<U6CF4>
+<U6D04>
+<U6D07>
+<U6D0A>
+<U6D0E>
+<U6D0F>
+<U6D11>
+<U6D13>
+<U6D1A>
+<U6D26>
+<U6D27>
+<U6D28>
+<U6C67>
+<U6D2E>
+<U6D2F>
+<U6D31>
+<U6D39>
+<U6D3C>
+<U6D3F>
+<U6D57>
+<U6D5E>
+<U6D5F>
+<U6D61>
+<U6D65>
+<U6D67>
+<U6D6F>
+<U6D70>
+<U6D7C>
+<U6D82>
+<U6D87>
+<U6D91>
+<U6D92>
+<U6D94>
+<U6D96>
+<U6D97>
+<U6D98>
+<U6DAA>
+<U6DAC>
+<U6DB4>
+<U6DB7>
+<U6DB9>
+<U6DBD>
+<U6DBF>
+<U6DC4>
+<U6DC8>
+<U6DCA>
+<U6DCE>
+<U6DCF>
+<U6DD6>
+<U6DDB>
+<U6DDD>
+<U6DDF>
+<U6DE0>
+<U6DE2>
+<U6DE5>
+<U6DE9>
+<U6DEF>
+<U6DF0>
+<U6DF4>
+<U6DF6>
+<U6DFC>
+<U6E00>
+<U6E04>
+<U6E1E>
+<U6E22>
+<U6E27>
+<U6E32>
+<U6E36>
+<U6E39>
+<U6E3B>
+<U6E3C>
+<U6E44>
+<U6E45>
+<U6E48>
+<U6E49>
+<U6E4B>
+<U6E4F>
+<U6E51>
+<U6E52>
+<U6E53>
+<U6E54>
+<U6E57>
+<U6E5C>
+<U6E5D>
+<U6E5E>
+<U6E62>
+<U6E63>
+<U6E68>
+<U6E73>
+<U6E7B>
+<U6E7D>
+<U6E8D>
+<U6E93>
+<U6E99>
+<U6EA0>
+<U6EA7>
+<U6EAD>
+<U6EAE>
+<U6EB1>
+<U6EB3>
+<U6EBB>
+<U6EBF>
+<U6EC0>
+<U6EC1>
+<U6EC3>
+<U6EC7>
+<U6EC8>
+<U6ECA>
+<U6ECD>
+<U6ECE>
+<U6ECF>
+<U6EEB>
+<U6EED>
+<U6EEE>
+<U6EF9>
+<U6EFB>
+<U6EFD>
+<U6F04>
+<U6F08>
+<U6F0A>
+<U6F0C>
+<U6F0D>
+<U6F16>
+<U6F18>
+<U6F1A>
+<U6F1B>
+<U6F26>
+<U6F29>
+<U6F2A>
+<U6F2F>
+<U6F30>
+<U6F33>
+<U6F36>
+<U6F3B>
+<U6F3C>
+<U6F2D>
+<U6F4F>
+<U6F51>
+<U6F52>
+<U6F53>
+<U6F57>
+<U6F59>
+<U6F5A>
+<U6F5D>
+<U6F5E>
+<U6F61>
+<U6F62>
+<U6F68>
+<U6F6C>
+<U6F7D>
+<U6F7E>
+<U6F83>
+<U6F87>
+<U6F88>
+<U6F8B>
+<U6F8C>
+<U6F8D>
+<U6F90>
+<U6F92>
+<U6F93>
+<U6F94>
+<U6F96>
+<U6F9A>
+<U6F9F>
+<U6FA0>
+<U6FA5>
+<U6FA6>
+<U6FA7>
+<U6FA8>
+<U6FAE>
+<U6FAF>
+<U6FB0>
+<U6FB5>
+<U6FB6>
+<U6FBC>
+<U6FC5>
+<U6FC7>
+<U6FC8>
+<U6FCA>
+<U6FDA>
+<U6FDE>
+<U6FE8>
+<U6FE9>
+<U6FF0>
+<U6FF5>
+<U6FF9>
+<U6FFC>
+<U6FFD>
+<U7000>
+<U7005>
+<U7006>
+<U7007>
+<U700D>
+<U7017>
+<U7020>
+<U7023>
+<U702F>
+<U7034>
+<U7037>
+<U7039>
+<U703C>
+<U7043>
+<U7044>
+<U7048>
+<U7049>
+<U704A>
+<U704B>
+<U7054>
+<U7055>
+<U705D>
+<U705E>
+<U704E>
+<U7064>
+<U7065>
+<U706C>
+<U706E>
+<U7075>
+<U7076>
+<U707E>
+<U7081>
+<U7085>
+<U7086>
+<U7094>
+<U7095>
+<U7096>
+<U7097>
+<U7098>
+<U709B>
+<U70A4>
+<U70AB>
+<U70B0>
+<U70B1>
+<U70B4>
+<U70B7>
+<U70CA>
+<U70D1>
+<U70D3>
+<U70D4>
+<U70D5>
+<U70D6>
+<U70D8>
+<U70DC>
+<U70E4>
+<U70FA>
+<U7103>
+<U7104>
+<U7105>
+<U7106>
+<U7107>
+<U710B>
+<U710C>
+<U710F>
+<U711E>
+<U7120>
+<U712B>
+<U712D>
+<U712F>
+<U7130>
+<U7131>
+<U7138>
+<U7141>
+<U7145>
+<U7146>
+<U7147>
+<U714A>
+<U714B>
+<U7150>
+<U7152>
+<U7157>
+<U715A>
+<U715C>
+<U715E>
+<U7160>
+<U7168>
+<U7179>
+<U7180>
+<U7185>
+<U7187>
+<U718C>
+<U7192>
+<U719A>
+<U719B>
+<U71A0>
+<U71A2>
+<U71AF>
+<U71B0>
+<U71B2>
+<U71B3>
+<U71BA>
+<U71BF>
+<U71C0>
+<U71C1>
+<U71C4>
+<U71CB>
+<U71CC>
+<U71D3>
+<U71D6>
+<U71D9>
+<U71DA>
+<U71DC>
+<U71F8>
+<U71FE>
+<U7200>
+<U7207>
+<U7208>
+<U7209>
+<U7213>
+<U7217>
+<U721A>
+<U721D>
+<U721F>
+<U7224>
+<U722B>
+<U722F>
+<U7234>
+<U7238>
+<U7239>
+<U7241>
+<U7242>
+<U7243>
+<U7245>
+<U724E>
+<U724F>
+<U7250>
+<U7253>
+<U7255>
+<U7256>
+<U725A>
+<U725C>
+<U725E>
+<U7260>
+<U7263>
+<U7268>
+<U726B>
+<U726E>
+<U726F>
+<U7271>
+<U7277>
+<U7278>
+<U727B>
+<U727C>
+<U727F>
+<U7284>
+<U7289>
+<U728D>
+<U728E>
+<U7293>
+<U729B>
+<U72A8>
+<U72AD>
+<U72AE>
+<U72B1>
+<U72B4>
+<U72BE>
+<U72C1>
+<U72C7>
+<U72C9>
+<U72CC>
+<U72D5>
+<U72D6>
+<U72D8>
+<U72DF>
+<U72E5>
+<U72F3>
+<U72F4>
+<U72FA>
+<U72FB>
+<U72FE>
+<U7302>
+<U7304>
+<U7305>
+<U7307>
+<U730B>
+<U730D>
+<U7312>
+<U7313>
+<U7318>
+<U7319>
+<U731E>
+<U7322>
+<U7324>
+<U7327>
+<U7328>
+<U732C>
+<U7331>
+<U7332>
+<U7335>
+<U733A>
+<U733B>
+<U733D>
+<U7343>
+<U734D>
+<U7350>
+<U7352>
+<U7356>
+<U7358>
+<U735D>
+<U735E>
+<U735F>
+<U7360>
+<U7366>
+<U7367>
+<U7369>
+<U736B>
+<U736C>
+<U736E>
+<U736F>
+<U7371>
+<U7377>
+<U7379>
+<U737C>
+<U7380>
+<U7381>
+<U7383>
+<U7385>
+<U7386>
+<U738E>
+<U7390>
+<U7393>
+<U7395>
+<U7397>
+<U7398>
+<U739C>
+<U739E>
+<U739F>
+<U73A0>
+<U73A2>
+<U73A5>
+<U73A6>
+<U73AA>
+<U73AB>
+<U73AD>
+<U73B5>
+<U73B7>
+<U73B9>
+<U73BC>
+<U73BD>
+<U73BF>
+<U73C5>
+<U73C6>
+<U73C9>
+<U73CB>
+<U73CC>
+<U73CF>
+<U73D2>
+<U73D3>
+<U73D6>
+<U73D9>
+<U73DD>
+<U73E1>
+<U73E3>
+<U73E6>
+<U73E7>
+<U73E9>
+<U73F4>
+<U73F5>
+<U73F7>
+<U73F9>
+<U73FA>
+<U73FB>
+<U73FD>
+<U73FF>
+<U7400>
+<U7401>
+<U7404>
+<U7407>
+<U740A>
+<U7411>
+<U741A>
+<U741B>
+<U7424>
+<U7426>
+<U7428>
+<U7429>
+<U742A>
+<U742B>
+<U742C>
+<U742D>
+<U742E>
+<U742F>
+<U7430>
+<U7431>
+<U7439>
+<U7440>
+<U7443>
+<U7444>
+<U7446>
+<U7447>
+<U744B>
+<U744D>
+<U7451>
+<U7452>
+<U7457>
+<U745D>
+<U7462>
+<U7466>
+<U7467>
+<U7468>
+<U746B>
+<U746D>
+<U746E>
+<U7471>
+<U7472>
+<U7480>
+<U7481>
+<U7485>
+<U7486>
+<U7487>
+<U7489>
+<U748F>
+<U7490>
+<U7491>
+<U7492>
+<U7498>
+<U7499>
+<U749A>
+<U749C>
+<U749F>
+<U74A0>
+<U74A1>
+<U74A3>
+<U74A6>
+<U74A8>
+<U74A9>
+<U74AA>
+<U74AB>
+<U74AE>
+<U74AF>
+<U74B1>
+<U74B2>
+<U74B5>
+<U74B9>
+<U74BB>
+<U74BF>
+<U74C8>
+<U74C9>
+<U74CC>
+<U74D0>
+<U74D3>
+<U74D8>
+<U74DA>
+<U74DB>
+<U74DE>
+<U74DF>
+<U74E4>
+<U74E8>
+<U74EA>
+<U74EB>
+<U74EF>
+<U74F4>
+<U74FA>
+<U74FB>
+<U74FC>
+<U74FF>
+<U7506>
+<U7512>
+<U7516>
+<U7517>
+<U7520>
+<U7521>
+<U7524>
+<U7527>
+<U7529>
+<U752A>
+<U752F>
+<U7536>
+<U7539>
+<U753D>
+<U753E>
+<U753F>
+<U7540>
+<U7543>
+<U7547>
+<U7548>
+<U754E>
+<U7550>
+<U7552>
+<U7557>
+<U755E>
+<U755F>
+<U7561>
+<U756F>
+<U7571>
+<U7579>
+<U757A>
+<U757B>
+<U757C>
+<U757D>
+<U757E>
+<U7581>
+<U7585>
+<U7590>
+<U7592>
+<U7593>
+<U7595>
+<U7599>
+<U759C>
+<U75A2>
+<U75A4>
+<U75B4>
+<U75BA>
+<U75BF>
+<U75C0>
+<U75C1>
+<U75C4>
+<U75C6>
+<U75CC>
+<U75CE>
+<U75CF>
+<U75D7>
+<U75DC>
+<U75DF>
+<U75E0>
+<U75E1>
+<U75E4>
+<U75E7>
+<U75EC>
+<U75EE>
+<U75EF>
+<U75F1>
+<U75F9>
+<U7600>
+<U7602>
+<U7603>
+<U7604>
+<U7607>
+<U7608>
+<U760A>
+<U760C>
+<U760F>
+<U7612>
+<U7613>
+<U7615>
+<U7616>
+<U7619>
+<U761B>
+<U761C>
+<U761D>
+<U761E>
+<U7623>
+<U7625>
+<U7626>
+<U7629>
+<U762D>
+<U7632>
+<U7633>
+<U7635>
+<U7638>
+<U7639>
+<U763A>
+<U763C>
+<U764A>
+<U7640>
+<U7641>
+<U7643>
+<U7644>
+<U7645>
+<U7649>
+<U764B>
+<U7655>
+<U7659>
+<U765F>
+<U7664>
+<U7665>
+<U766D>
+<U766E>
+<U766F>
+<U7671>
+<U7674>
+<U7681>
+<U7685>
+<U768C>
+<U768D>
+<U7695>
+<U769B>
+<U769C>
+<U769D>
+<U769F>
+<U76A0>
+<U76A2>
+<U76A3>
+<U76A4>
+<U76A5>
+<U76A6>
+<U76A7>
+<U76A8>
+<U76AA>
+<U76AD>
+<U76BD>
+<U76C1>
+<U76C5>
+<U76C9>
+<U76CB>
+<U76CC>
+<U76CE>
+<U76D4>
+<U76D9>
+<U76E0>
+<U76E6>
+<U76E8>
+<U76EC>
+<U76F0>
+<U76F1>
+<U76F6>
+<U76F9>
+<U76FC>
+<U7700>
+<U7706>
+<U770A>
+<U770E>
+<U7712>
+<U7714>
+<U7715>
+<U7717>
+<U7719>
+<U771A>
+<U771C>
+<U7722>
+<U7728>
+<U772D>
+<U772E>
+<U772F>
+<U7734>
+<U7735>
+<U7736>
+<U7739>
+<U773D>
+<U773E>
+<U7742>
+<U7745>
+<U7746>
+<U774A>
+<U774D>
+<U774E>
+<U774F>
+<U7752>
+<U7756>
+<U7757>
+<U775C>
+<U775E>
+<U775F>
+<U7760>
+<U7762>
+<U7764>
+<U7767>
+<U776A>
+<U776C>
+<U7770>
+<U7772>
+<U7773>
+<U7774>
+<U777A>
+<U777D>
+<U7780>
+<U7784>
+<U778C>
+<U778D>
+<U7794>
+<U7795>
+<U7796>
+<U779A>
+<U779F>
+<U77A2>
+<U77A7>
+<U77AA>
+<U77AE>
+<U77AF>
+<U77B1>
+<U77B5>
+<U77BE>
+<U77C3>
+<U77C9>
+<U77D1>
+<U77D2>
+<U77D5>
+<U77D9>
+<U77DE>
+<U77DF>
+<U77E0>
+<U77E4>
+<U77E6>
+<U77EA>
+<U77EC>
+<U77F0>
+<U77F1>
+<U77F4>
+<U77F8>
+<U77FB>
+<U7805>
+<U7806>
+<U7809>
+<U780D>
+<U780E>
+<U7811>
+<U781D>
+<U7821>
+<U7822>
+<U7823>
+<U782D>
+<U782E>
+<U7830>
+<U7835>
+<U7837>
+<U7843>
+<U7844>
+<U7847>
+<U7848>
+<U784C>
+<U784E>
+<U7852>
+<U785C>
+<U785E>
+<U7860>
+<U7861>
+<U7863>
+<U7864>
+<U7868>
+<U786A>
+<U786E>
+<U787A>
+<U787E>
+<U788A>
+<U788F>
+<U7894>
+<U7898>
+<U78A1>
+<U789D>
+<U789E>
+<U789F>
+<U78A4>
+<U78A8>
+<U78AC>
+<U78AD>
+<U78B0>
+<U78B1>
+<U78B2>
+<U78B3>
+<U78BB>
+<U78BD>
+<U78BF>
+<U78C7>
+<U78C8>
+<U78C9>
+<U78CC>
+<U78CE>
+<U78D2>
+<U78D3>
+<U78D5>
+<U78D6>
+<U78E4>
+<U78DB>
+<U78DF>
+<U78E0>
+<U78E1>
+<U78E6>
+<U78EA>
+<U78F2>
+<U78F3>
+<U7900>
+<U78F6>
+<U78F7>
+<U78FA>
+<U78FB>
+<U78FF>
+<U7906>
+<U790C>
+<U7910>
+<U791A>
+<U791C>
+<U791E>
+<U791F>
+<U7920>
+<U7925>
+<U7927>
+<U7929>
+<U792D>
+<U7931>
+<U7934>
+<U7935>
+<U793B>
+<U793D>
+<U793F>
+<U7944>
+<U7945>
+<U7946>
+<U794A>
+<U794B>
+<U794F>
+<U7951>
+<U7954>
+<U7958>
+<U795B>
+<U795C>
+<U7967>
+<U7969>
+<U796B>
+<U7972>
+<U7979>
+<U797B>
+<U797C>
+<U797E>
+<U798B>
+<U798C>
+<U7991>
+<U7993>
+<U7994>
+<U7995>
+<U7996>
+<U7998>
+<U799B>
+<U799C>
+<U79A1>
+<U79A8>
+<U79A9>
+<U79AB>
+<U79AF>
+<U79B1>
+<U79B4>
+<U79B8>
+<U79BB>
+<U79C2>
+<U79C4>
+<U79C7>
+<U79C8>
+<U79CA>
+<U79CF>
+<U79D4>
+<U79D6>
+<U79DA>
+<U79DD>
+<U79DE>
+<U79E0>
+<U79E2>
+<U79E5>
+<U79EA>
+<U79EB>
+<U79ED>
+<U79F1>
+<U79F8>
+<U79FC>
+<U7A02>
+<U7A03>
+<U7A07>
+<U7A09>
+<U7A0A>
+<U7A0C>
+<U7A11>
+<U7A15>
+<U7A1B>
+<U7A1E>
+<U7A21>
+<U7A27>
+<U7A2B>
+<U7A2D>
+<U7A2F>
+<U7A30>
+<U7A34>
+<U7A35>
+<U7A38>
+<U7A39>
+<U7A3A>
+<U7A44>
+<U7A45>
+<U7A47>
+<U7A48>
+<U7A4C>
+<U7A55>
+<U7A56>
+<U7A59>
+<U7A5C>
+<U7A5D>
+<U7A5F>
+<U7A60>
+<U7A65>
+<U7A67>
+<U7A6A>
+<U7A6D>
+<U7A75>
+<U7A78>
+<U7A7E>
+<U7A80>
+<U7A82>
+<U7A85>
+<U7A86>
+<U7A8A>
+<U7A8B>
+<U7A90>
+<U7A91>
+<U7A94>
+<U7A9E>
+<U7AA0>
+<U7AA3>
+<U7AAC>
+<U7AB3>
+<U7AB5>
+<U7AB9>
+<U7ABB>
+<U7ABC>
+<U7AC6>
+<U7AC9>
+<U7ACC>
+<U7ACE>
+<U7AD1>
+<U7ADB>
+<U7AE8>
+<U7AE9>
+<U7AEB>
+<U7AEC>
+<U7AF1>
+<U7AF4>
+<U7AFB>
+<U7AFD>
+<U7AFE>
+<U7B07>
+<U7B14>
+<U7B1F>
+<U7B23>
+<U7B27>
+<U7B29>
+<U7B2A>
+<U7B2B>
+<U7B2D>
+<U7B2E>
+<U7B2F>
+<U7B30>
+<U7B31>
+<U7B34>
+<U7B3D>
+<U7B3F>
+<U7B40>
+<U7B41>
+<U7B47>
+<U7B4E>
+<U7B55>
+<U7B60>
+<U7B64>
+<U7B66>
+<U7B69>
+<U7B6A>
+<U7B6D>
+<U7B6F>
+<U7B72>
+<U7B73>
+<U7B77>
+<U7B84>
+<U7B89>
+<U7B8E>
+<U7B90>
+<U7B91>
+<U7B96>
+<U7B9B>
+<U7B9E>
+<U7BA0>
+<U7BA5>
+<U7BAC>
+<U7BAF>
+<U7BB0>
+<U7BB2>
+<U7BB5>
+<U7BB6>
+<U7BBA>
+<U7BBB>
+<U7BBC>
+<U7BBD>
+<U7BC2>
+<U7BC5>
+<U7BC8>
+<U7BCA>
+<U7BD4>
+<U7BD6>
+<U7BD7>
+<U7BD9>
+<U7BDA>
+<U7BDB>
+<U7BE8>
+<U7BEA>
+<U7BF2>
+<U7BF4>
+<U7BF5>
+<U7BF8>
+<U7BF9>
+<U7BFA>
+<U7BFC>
+<U7BFE>
+<U7C01>
+<U7C02>
+<U7C03>
+<U7C04>
+<U7C06>
+<U7C09>
+<U7C0B>
+<U7C0C>
+<U7C0E>
+<U7C0F>
+<U7C19>
+<U7C1B>
+<U7C20>
+<U7C25>
+<U7C26>
+<U7C28>
+<U7C2C>
+<U7C31>
+<U7C33>
+<U7C34>
+<U7C36>
+<U7C39>
+<U7C3A>
+<U7C46>
+<U7C4A>
+<U7C55>
+<U7C51>
+<U7C52>
+<U7C53>
+<U7C59>
+<U7C5A>
+<U7C5B>
+<U7C5C>
+<U7C5D>
+<U7C5E>
+<U7C61>
+<U7C63>
+<U7C67>
+<U7C69>
+<U7C6D>
+<U7C6E>
+<U7C70>
+<U7C72>
+<U7C79>
+<U7C7C>
+<U7C7D>
+<U7C86>
+<U7C87>
+<U7C8F>
+<U7C94>
+<U7C9E>
+<U7CA0>
+<U7CA6>
+<U7CB0>
+<U7CB6>
+<U7CB7>
+<U7CBA>
+<U7CBB>
+<U7CBC>
+<U7CBF>
+<U7CC4>
+<U7CC7>
+<U7CC8>
+<U7CC9>
+<U7CCD>
+<U7CCF>
+<U7CD3>
+<U7CD4>
+<U7CD5>
+<U7CD7>
+<U7CD9>
+<U7CDA>
+<U7CDD>
+<U7CE6>
+<U7CE9>
+<U7CEB>
+<U7CF5>
+<U7D03>
+<U7D07>
+<U7D08>
+<U7D09>
+<U7D0F>
+<U7D11>
+<U7D12>
+<U7D13>
+<U7D16>
+<U7D1D>
+<U7D1E>
+<U7D23>
+<U7D26>
+<U7D2A>
+<U7D2D>
+<U7D31>
+<U7D3C>
+<U7D3D>
+<U7D3E>
+<U7D40>
+<U7D41>
+<U7D47>
+<U7D48>
+<U7D4D>
+<U7D51>
+<U7D53>
+<U7D57>
+<U7D59>
+<U7D5A>
+<U7D5C>
+<U7D5D>
+<U7D65>
+<U7D67>
+<U7D6A>
+<U7D70>
+<U7D78>
+<U7D7A>
+<U7D7B>
+<U7D7F>
+<U7D81>
+<U7D82>
+<U7D83>
+<U7D85>
+<U7D86>
+<U7D88>
+<U7D8B>
+<U7D8C>
+<U7D8D>
+<U7D91>
+<U7D96>
+<U7D97>
+<U7D9D>
+<U7D9E>
+<U7DA6>
+<U7DA7>
+<U7DAA>
+<U7DB3>
+<U7DB6>
+<U7DB7>
+<U7DB9>
+<U7DC2>
+<U7DC3>
+<U7DC4>
+<U7DC5>
+<U7DC6>
+<U7DCC>
+<U7DCD>
+<U7DCE>
+<U7DD7>
+<U7DD9>
+<U7E00>
+<U7DE2>
+<U7DE5>
+<U7DE6>
+<U7DEA>
+<U7DEB>
+<U7DED>
+<U7DF1>
+<U7DF5>
+<U7DF6>
+<U7DF9>
+<U7DFA>
+<U7E08>
+<U7E10>
+<U7E11>
+<U7E15>
+<U7E17>
+<U7E1C>
+<U7E1D>
+<U7E20>
+<U7E27>
+<U7E28>
+<U7E2C>
+<U7E2D>
+<U7E2F>
+<U7E33>
+<U7E36>
+<U7E3F>
+<U7E44>
+<U7E45>
+<U7E47>
+<U7E4E>
+<U7E50>
+<U7E52>
+<U7E58>
+<U7E5F>
+<U7E61>
+<U7E62>
+<U7E65>
+<U7E6B>
+<U7E6E>
+<U7E6F>
+<U7E73>
+<U7E78>
+<U7E7E>
+<U7E81>
+<U7E86>
+<U7E87>
+<U7E8A>
+<U7E8D>
+<U7E91>
+<U7E95>
+<U7E98>
+<U7E9A>
+<U7E9D>
+<U7E9E>
+<U7F3C>
+<U7F3B>
+<U7F3D>
+<U7F3E>
+<U7F3F>
+<U7F43>
+<U7F44>
+<U7F47>
+<U7F4F>
+<U7F52>
+<U7F53>
+<U7F5B>
+<U7F5C>
+<U7F5D>
+<U7F61>
+<U7F63>
+<U7F64>
+<U7F65>
+<U7F66>
+<U7F6D>
+<U7F71>
+<U7F7D>
+<U7F7E>
+<U7F7F>
+<U7F80>
+<U7F8B>
+<U7F8D>
+<U7F8F>
+<U7F90>
+<U7F91>
+<U7F96>
+<U7F97>
+<U7F9C>
+<U7FA1>
+<U7FA2>
+<U7FA6>
+<U7FAA>
+<U7FAD>
+<U7FB4>
+<U7FBC>
+<U7FBF>
+<U7FC0>
+<U7FC3>
+<U7FC8>
+<U7FCE>
+<U7FCF>
+<U7FDB>
+<U7FDF>
+<U7FE3>
+<U7FE5>
+<U7FE8>
+<U7FEC>
+<U7FEE>
+<U7FEF>
+<U7FF2>
+<U7FFA>
+<U7FFD>
+<U7FFE>
+<U7FFF>
+<U8007>
+<U8008>
+<U800A>
+<U800D>
+<U800E>
+<U800F>
+<U8011>
+<U8013>
+<U8014>
+<U8016>
+<U801D>
+<U801E>
+<U801F>
+<U8020>
+<U8024>
+<U8026>
+<U802C>
+<U802E>
+<U8030>
+<U8034>
+<U8035>
+<U8037>
+<U8039>
+<U803A>
+<U803C>
+<U803E>
+<U8040>
+<U8044>
+<U8060>
+<U8064>
+<U8066>
+<U806D>
+<U8071>
+<U8075>
+<U8081>
+<U8088>
+<U808E>
+<U809C>
+<U809E>
+<U80A6>
+<U80A7>
+<U80AB>
+<U80B8>
+<U80B9>
+<U80C8>
+<U80CD>
+<U80CF>
+<U80D2>
+<U80D4>
+<U80D5>
+<U80D7>
+<U80D8>
+<U80E0>
+<U80ED>
+<U80EE>
+<U80F0>
+<U80F2>
+<U80F3>
+<U80F6>
+<U80F9>
+<U80FA>
+<U80FE>
+<U8103>
+<U810B>
+<U8116>
+<U8117>
+<U8118>
+<U811C>
+<U811E>
+<U8120>
+<U8124>
+<U8127>
+<U812C>
+<U8130>
+<U8135>
+<U813A>
+<U813C>
+<U8145>
+<U8147>
+<U814A>
+<U814C>
+<U8152>
+<U8157>
+<U8160>
+<U8161>
+<U8167>
+<U8168>
+<U8169>
+<U816D>
+<U816F>
+<U8177>
+<U8181>
+<U8190>
+<U8184>
+<U8185>
+<U8186>
+<U818B>
+<U818E>
+<U8196>
+<U8198>
+<U819B>
+<U819E>
+<U81A2>
+<U81AE>
+<U81B2>
+<U81B4>
+<U81BB>
+<U81CB>
+<U81C3>
+<U81C5>
+<U81CA>
+<U81CE>
+<U81CF>
+<U81D5>
+<U81D7>
+<U81DB>
+<U81DD>
+<U81DE>
+<U81E1>
+<U81E4>
+<U81EB>
+<U81EC>
+<U81F0>
+<U81F1>
+<U81F2>
+<U81F5>
+<U81F6>
+<U81F8>
+<U81F9>
+<U81FD>
+<U81FF>
+<U8200>
+<U8203>
+<U820F>
+<U8213>
+<U8214>
+<U8219>
+<U821A>
+<U821D>
+<U8221>
+<U8222>
+<U8228>
+<U8232>
+<U8234>
+<U823A>
+<U8243>
+<U8244>
+<U8245>
+<U8246>
+<U824B>
+<U824E>
+<U824F>
+<U8251>
+<U8256>
+<U825C>
+<U8260>
+<U8263>
+<U8267>
+<U826D>
+<U8274>
+<U827B>
+<U827D>
+<U827F>
+<U8280>
+<U8281>
+<U8283>
+<U8284>
+<U8287>
+<U8289>
+<U828A>
+<U828E>
+<U8291>
+<U8294>
+<U8296>
+<U8298>
+<U829A>
+<U829B>
+<U82A0>
+<U82A1>
+<U82A3>
+<U82A4>
+<U82A7>
+<U82A8>
+<U82A9>
+<U82AA>
+<U82AE>
+<U82B0>
+<U82B2>
+<U82B4>
+<U82B7>
+<U82BA>
+<U82BC>
+<U82BE>
+<U82BF>
+<U82C6>
+<U82D0>
+<U82D5>
+<U82DA>
+<U82E0>
+<U82E2>
+<U82E4>
+<U82E8>
+<U82EA>
+<U82ED>
+<U82EF>
+<U82F6>
+<U82F7>
+<U82FD>
+<U82FE>
+<U8300>
+<U8301>
+<U8307>
+<U8308>
+<U830A>
+<U830B>
+<U8354>
+<U831B>
+<U831D>
+<U831E>
+<U831F>
+<U8321>
+<U8322>
+<U832C>
+<U832D>
+<U832E>
+<U8330>
+<U8333>
+<U8337>
+<U833A>
+<U833C>
+<U833D>
+<U8342>
+<U8343>
+<U8344>
+<U8347>
+<U834D>
+<U834E>
+<U8351>
+<U8355>
+<U8356>
+<U8357>
+<U8370>
+<U8378>
+<U837D>
+<U837F>
+<U8380>
+<U8382>
+<U8384>
+<U8386>
+<U838D>
+<U8392>
+<U8394>
+<U8395>
+<U8398>
+<U8399>
+<U839B>
+<U839C>
+<U839D>
+<U83A6>
+<U83A7>
+<U83A9>
+<U83AC>
+<U83BE>
+<U83BF>
+<U83C0>
+<U83C7>
+<U83C9>
+<U83CF>
+<U83D0>
+<U83D1>
+<U83D4>
+<U83DD>
+<U8353>
+<U83E8>
+<U83EA>
+<U83F6>
+<U83F8>
+<U83F9>
+<U83FC>
+<U8401>
+<U8406>
+<U840A>
+<U840F>
+<U8411>
+<U8415>
+<U8419>
+<U83AD>
+<U842F>
+<U8439>
+<U8445>
+<U8447>
+<U8448>
+<U844A>
+<U844D>
+<U844F>
+<U8451>
+<U8452>
+<U8456>
+<U8458>
+<U8459>
+<U845A>
+<U845C>
+<U8460>
+<U8464>
+<U8465>
+<U8467>
+<U846A>
+<U8470>
+<U8473>
+<U8474>
+<U8476>
+<U8478>
+<U847C>
+<U847D>
+<U8481>
+<U8485>
+<U8492>
+<U8493>
+<U8495>
+<U849E>
+<U84A6>
+<U84A8>
+<U84A9>
+<U84AA>
+<U84AF>
+<U84B1>
+<U84B4>
+<U84BA>
+<U84BD>
+<U84BE>
+<U84C0>
+<U84C2>
+<U84C7>
+<U84C8>
+<U84CC>
+<U84CF>
+<U84D3>
+<U84DC>
+<U84E7>
+<U84EA>
+<U84EF>
+<U84F0>
+<U84F1>
+<U84F2>
+<U84F7>
+<U8532>
+<U84FA>
+<U84FB>
+<U84FD>
+<U8502>
+<U8503>
+<U8507>
+<U850C>
+<U850E>
+<U8510>
+<U851C>
+<U851E>
+<U8522>
+<U8523>
+<U8524>
+<U8525>
+<U8527>
+<U852A>
+<U852B>
+<U852F>
+<U8533>
+<U8534>
+<U8536>
+<U853F>
+<U8546>
+<U854F>
+<U8550>
+<U8551>
+<U8552>
+<U8553>
+<U8556>
+<U8559>
+<U855C>
+<U855D>
+<U855E>
+<U855F>
+<U8560>
+<U8561>
+<U8562>
+<U8564>
+<U856B>
+<U856F>
+<U8579>
+<U857A>
+<U857B>
+<U857D>
+<U857F>
+<U8581>
+<U8585>
+<U8586>
+<U8589>
+<U858B>
+<U858C>
+<U858F>
+<U8593>
+<U8598>
+<U859D>
+<U859F>
+<U85A0>
+<U85A2>
+<U85A5>
+<U85A7>
+<U85B4>
+<U85B6>
+<U85B7>
+<U85B8>
+<U85BC>
+<U85BD>
+<U85BE>
+<U85BF>
+<U85C2>
+<U85C7>
+<U85CA>
+<U85CB>
+<U85CE>
+<U85AD>
+<U85D8>
+<U85DA>
+<U85DF>
+<U85E0>
+<U85E6>
+<U85E8>
+<U85ED>
+<U85F3>
+<U85F6>
+<U85FC>
+<U85FF>
+<U8600>
+<U8604>
+<U8605>
+<U860D>
+<U860E>
+<U8610>
+<U8611>
+<U8612>
+<U8618>
+<U8619>
+<U861B>
+<U861E>
+<U8621>
+<U8627>
+<U8629>
+<U8636>
+<U8638>
+<U863A>
+<U863C>
+<U863D>
+<U8640>
+<U8642>
+<U8646>
+<U8652>
+<U8653>
+<U8656>
+<U8657>
+<U8658>
+<U8659>
+<U865D>
+<U8660>
+<U8661>
+<U8662>
+<U8663>
+<U8664>
+<U8669>
+<U866C>
+<U866F>
+<U8675>
+<U8676>
+<U8677>
+<U867A>
+<U868D>
+<U8691>
+<U8696>
+<U8698>
+<U869A>
+<U869C>
+<U86A1>
+<U86A6>
+<U86A7>
+<U86A8>
+<U86AD>
+<U86B1>
+<U86B3>
+<U86B4>
+<U86B5>
+<U86B7>
+<U86B8>
+<U86B9>
+<U86BF>
+<U86C0>
+<U86C1>
+<U86C3>
+<U86C5>
+<U86D1>
+<U86D2>
+<U86D5>
+<U86D7>
+<U86DA>
+<U86DC>
+<U86E0>
+<U86E3>
+<U86E5>
+<U86E7>
+<U8688>
+<U86FA>
+<U86FC>
+<U86FD>
+<U8704>
+<U8705>
+<U8707>
+<U870B>
+<U870E>
+<U870F>
+<U8710>
+<U8713>
+<U8714>
+<U8719>
+<U871E>
+<U871F>
+<U8721>
+<U8723>
+<U8728>
+<U872E>
+<U872F>
+<U8731>
+<U8732>
+<U8739>
+<U873A>
+<U873C>
+<U873D>
+<U873E>
+<U8740>
+<U8743>
+<U8745>
+<U874D>
+<U8758>
+<U875D>
+<U8761>
+<U8764>
+<U8765>
+<U876F>
+<U8771>
+<U8772>
+<U877B>
+<U8783>
+<U8784>
+<U8785>
+<U8786>
+<U8787>
+<U8788>
+<U8789>
+<U878B>
+<U878C>
+<U8790>
+<U8793>
+<U8795>
+<U8797>
+<U8798>
+<U8799>
+<U879E>
+<U87A0>
+<U87A3>
+<U87A7>
+<U87AC>
+<U87AD>
+<U87AE>
+<U87B1>
+<U87B5>
+<U87BE>
+<U87BF>
+<U87C1>
+<U87C8>
+<U87C9>
+<U87CA>
+<U87CE>
+<U87D5>
+<U87D6>
+<U87D9>
+<U87DA>
+<U87DC>
+<U87DF>
+<U87E2>
+<U87E3>
+<U87E4>
+<U87EA>
+<U87EB>
+<U87ED>
+<U87F1>
+<U87F3>
+<U87F8>
+<U87FA>
+<U87FF>
+<U8801>
+<U8803>
+<U8806>
+<U8809>
+<U880A>
+<U880B>
+<U8810>
+<U8819>
+<U8812>
+<U8813>
+<U8814>
+<U8818>
+<U881A>
+<U881B>
+<U881C>
+<U881E>
+<U881F>
+<U8828>
+<U882D>
+<U882E>
+<U8830>
+<U8832>
+<U8835>
+<U883A>
+<U883C>
+<U8841>
+<U8843>
+<U8845>
+<U8848>
+<U8849>
+<U884A>
+<U884B>
+<U884E>
+<U8851>
+<U8855>
+<U8856>
+<U8858>
+<U885A>
+<U885C>
+<U885F>
+<U8860>
+<U8864>
+<U8869>
+<U8871>
+<U8879>
+<U887B>
+<U8880>
+<U8898>
+<U889A>
+<U889B>
+<U889C>
+<U889F>
+<U88A0>
+<U88A8>
+<U88AA>
+<U88BA>
+<U88BD>
+<U88BE>
+<U88C0>
+<U88CA>
+<U88CB>
+<U88CC>
+<U88CD>
+<U88CE>
+<U88D1>
+<U88D2>
+<U88D3>
+<U88DB>
+<U88DE>
+<U88E7>
+<U88EF>
+<U88F0>
+<U88F1>
+<U88F5>
+<U88F7>
+<U8901>
+<U8906>
+<U890D>
+<U890E>
+<U890F>
+<U8915>
+<U8916>
+<U8918>
+<U8919>
+<U891A>
+<U891C>
+<U8920>
+<U8926>
+<U8927>
+<U8928>
+<U8930>
+<U8931>
+<U8932>
+<U8935>
+<U8939>
+<U893A>
+<U893E>
+<U8940>
+<U8942>
+<U8945>
+<U8946>
+<U8949>
+<U894F>
+<U8952>
+<U8957>
+<U895A>
+<U895B>
+<U895C>
+<U8961>
+<U8962>
+<U8963>
+<U896B>
+<U896E>
+<U8970>
+<U8973>
+<U8975>
+<U897A>
+<U897B>
+<U897C>
+<U897D>
+<U8989>
+<U898D>
+<U8990>
+<U8994>
+<U8995>
+<U899B>
+<U899C>
+<U899F>
+<U89A0>
+<U89A5>
+<U89B0>
+<U89B4>
+<U89B5>
+<U89B6>
+<U89B7>
+<U89BC>
+<U89D4>
+<U89D5>
+<U89D6>
+<U89D7>
+<U89D8>
+<U89E5>
+<U89E9>
+<U89EB>
+<U89ED>
+<U89F1>
+<U89F3>
+<U89F6>
+<U89F9>
+<U89FD>
+<U89FF>
+<U8A04>
+<U8A05>
+<U8A07>
+<U8A0F>
+<U8A11>
+<U8A12>
+<U8A14>
+<U8A15>
+<U8A1E>
+<U8A20>
+<U8A22>
+<U8A24>
+<U8A26>
+<U8A2B>
+<U8A2C>
+<U8A2F>
+<U8A35>
+<U8A37>
+<U8A3D>
+<U8A3E>
+<U8A40>
+<U8A43>
+<U8A45>
+<U8A47>
+<U8A49>
+<U8A4D>
+<U8A4E>
+<U8A53>
+<U8A56>
+<U8A57>
+<U8A58>
+<U8A5C>
+<U8A5D>
+<U8A61>
+<U8A65>
+<U8A67>
+<U8A75>
+<U8A76>
+<U8A77>
+<U8A79>
+<U8A7A>
+<U8A7B>
+<U8A7E>
+<U8A7F>
+<U8A80>
+<U8A83>
+<U8A86>
+<U8A8B>
+<U8A8F>
+<U8A90>
+<U8A92>
+<U8A96>
+<U8A97>
+<U8A99>
+<U8A9F>
+<U8AA7>
+<U8AA9>
+<U8AAE>
+<U8AAF>
+<U8AB3>
+<U8AB6>
+<U8AB7>
+<U8ABB>
+<U8ABE>
+<U8AC3>
+<U8AC6>
+<U8AC8>
+<U8AC9>
+<U8ACA>
+<U8AD1>
+<U8AD3>
+<U8AD4>
+<U8AD5>
+<U8AD7>
+<U8ADD>
+<U8ADF>
+<U8AEC>
+<U8AF0>
+<U8AF4>
+<U8AF5>
+<U8AF6>
+<U8AFC>
+<U8AFF>
+<U8B05>
+<U8B06>
+<U8B0B>
+<U8B11>
+<U8B1C>
+<U8B1E>
+<U8B1F>
+<U8B0A>
+<U8B2D>
+<U8B30>
+<U8B37>
+<U8B3C>
+<U8B42>
+<U8B43>
+<U8B44>
+<U8B45>
+<U8B46>
+<U8B48>
+<U8B52>
+<U8B53>
+<U8B54>
+<U8B59>
+<U8B4D>
+<U8B5E>
+<U8B63>
+<U8B6D>
+<U8B76>
+<U8B78>
+<U8B79>
+<U8B7C>
+<U8B7E>
+<U8B81>
+<U8B84>
+<U8B85>
+<U8B8B>
+<U8B8D>
+<U8B8F>
+<U8B94>
+<U8B95>
+<U8B9C>
+<U8B9E>
+<U8B9F>
+<U8C38>
+<U8C39>
+<U8C3D>
+<U8C3E>
+<U8C45>
+<U8C47>
+<U8C49>
+<U8C4B>
+<U8C4F>
+<U8C51>
+<U8C53>
+<U8C54>
+<U8C57>
+<U8C58>
+<U8C5B>
+<U8C5D>
+<U8C59>
+<U8C63>
+<U8C64>
+<U8C66>
+<U8C68>
+<U8C69>
+<U8C6D>
+<U8C73>
+<U8C75>
+<U8C76>
+<U8C7B>
+<U8C7E>
+<U8C86>
+<U8C87>
+<U8C8B>
+<U8C90>
+<U8C92>
+<U8C93>
+<U8C99>
+<U8C9B>
+<U8C9C>
+<U8CA4>
+<U8CB9>
+<U8CBA>
+<U8CC5>
+<U8CC6>
+<U8CC9>
+<U8CCB>
+<U8CCF>
+<U8CD6>
+<U8CD5>
+<U8CD9>
+<U8CDD>
+<U8CE1>
+<U8CE8>
+<U8CEC>
+<U8CEF>
+<U8CF0>
+<U8CF2>
+<U8CF5>
+<U8CF7>
+<U8CF8>
+<U8CFE>
+<U8CFF>
+<U8D01>
+<U8D03>
+<U8D09>
+<U8D12>
+<U8D17>
+<U8D1B>
+<U8D65>
+<U8D69>
+<U8D6C>
+<U8D6E>
+<U8D7F>
+<U8D82>
+<U8D84>
+<U8D88>
+<U8D8D>
+<U8D90>
+<U8D91>
+<U8D95>
+<U8D9E>
+<U8D9F>
+<U8DA0>
+<U8DA6>
+<U8DAB>
+<U8DAC>
+<U8DAF>
+<U8DB2>
+<U8DB5>
+<U8DB7>
+<U8DB9>
+<U8DBB>
+<U8DC0>
+<U8DC5>
+<U8DC6>
+<U8DC7>
+<U8DC8>
+<U8DCA>
+<U8DCE>
+<U8DD1>
+<U8DD4>
+<U8DD5>
+<U8DD7>
+<U8DD9>
+<U8DE4>
+<U8DE5>
+<U8DE7>
+<U8DEC>
+<U8DF0>
+<U8DBC>
+<U8DF1>
+<U8DF2>
+<U8DF4>
+<U8DFD>
+<U8E01>
+<U8E04>
+<U8E05>
+<U8E06>
+<U8E0B>
+<U8E11>
+<U8E14>
+<U8E16>
+<U8E20>
+<U8E21>
+<U8E22>
+<U8E23>
+<U8E26>
+<U8E27>
+<U8E31>
+<U8E33>
+<U8E36>
+<U8E37>
+<U8E38>
+<U8E39>
+<U8E3D>
+<U8E40>
+<U8E41>
+<U8E4B>
+<U8E4D>
+<U8E4E>
+<U8E4F>
+<U8E54>
+<U8E5B>
+<U8E5C>
+<U8E5D>
+<U8E5E>
+<U8E61>
+<U8E62>
+<U8E69>
+<U8E6C>
+<U8E6D>
+<U8E6F>
+<U8E70>
+<U8E71>
+<U8E79>
+<U8E7A>
+<U8E7B>
+<U8E82>
+<U8E83>
+<U8E89>
+<U8E90>
+<U8E92>
+<U8E95>
+<U8E9A>
+<U8E9B>
+<U8E9D>
+<U8E9E>
+<U8EA2>
+<U8EA7>
+<U8EA9>
+<U8EAD>
+<U8EAE>
+<U8EB3>
+<U8EB5>
+<U8EBA>
+<U8EBB>
+<U8EC0>
+<U8EC1>
+<U8EC3>
+<U8EC4>
+<U8EC7>
+<U8ECF>
+<U8ED1>
+<U8ED4>
+<U8EDC>
+<U8EE8>
+<U8EEE>
+<U8EF0>
+<U8EF1>
+<U8EF7>
+<U8EF9>
+<U8EFA>
+<U8EED>
+<U8F00>
+<U8F02>
+<U8F07>
+<U8F08>
+<U8F0F>
+<U8F10>
+<U8F16>
+<U8F17>
+<U8F18>
+<U8F1E>
+<U8F20>
+<U8F21>
+<U8F23>
+<U8F25>
+<U8F27>
+<U8F28>
+<U8F2C>
+<U8F2D>
+<U8F2E>
+<U8F34>
+<U8F35>
+<U8F36>
+<U8F37>
+<U8F3A>
+<U8F40>
+<U8F41>
+<U8F43>
+<U8F47>
+<U8F4F>
+<U8F51>
+<U8F52>
+<U8F53>
+<U8F54>
+<U8F55>
+<U8F58>
+<U8F5D>
+<U8F5E>
+<U8F65>
+<U8F9D>
+<U8FA0>
+<U8FA1>
+<U8FA4>
+<U8FA5>
+<U8FA6>
+<U8FB5>
+<U8FB6>
+<U8FB8>
+<U8FBE>
+<U8FC0>
+<U8FC1>
+<U8FC6>
+<U8FCA>
+<U8FCB>
+<U8FCD>
+<U8FD0>
+<U8FD2>
+<U8FD3>
+<U8FD5>
+<U8FE0>
+<U8FE3>
+<U8FE4>
+<U8FE8>
+<U8FEE>
+<U8FF1>
+<U8FF5>
+<U8FF6>
+<U8FFB>
+<U8FFE>
+<U9002>
+<U9004>
+<U9008>
+<U900C>
+<U9018>
+<U901B>
+<U9028>
+<U9029>
+<U902F>
+<U902A>
+<U902C>
+<U902D>
+<U9033>
+<U9034>
+<U9037>
+<U903F>
+<U9043>
+<U9044>
+<U904C>
+<U905B>
+<U905D>
+<U9062>
+<U9066>
+<U9067>
+<U906C>
+<U9070>
+<U9074>
+<U9079>
+<U9085>
+<U9088>
+<U908B>
+<U908C>
+<U908E>
+<U9090>
+<U9095>
+<U9097>
+<U9098>
+<U9099>
+<U909B>
+<U90A0>
+<U90A1>
+<U90A2>
+<U90A5>
+<U90B0>
+<U90B2>
+<U90B3>
+<U90B4>
+<U90B6>
+<U90BD>
+<U90CC>
+<U90BE>
+<U90C3>
+<U90C4>
+<U90C5>
+<U90C7>
+<U90C8>
+<U90D5>
+<U90D7>
+<U90D8>
+<U90D9>
+<U90DC>
+<U90DD>
+<U90DF>
+<U90E5>
+<U90D2>
+<U90F6>
+<U90EB>
+<U90EF>
+<U90F0>
+<U90F4>
+<U90FE>
+<U90FF>
+<U9100>
+<U9104>
+<U9105>
+<U9106>
+<U9108>
+<U910D>
+<U9110>
+<U9114>
+<U9116>
+<U9117>
+<U9118>
+<U911A>
+<U911C>
+<U911E>
+<U9120>
+<U9125>
+<U9122>
+<U9123>
+<U9127>
+<U9129>
+<U912E>
+<U912F>
+<U9131>
+<U9134>
+<U9136>
+<U9137>
+<U9139>
+<U913A>
+<U913C>
+<U913D>
+<U9143>
+<U9147>
+<U9148>
+<U914F>
+<U9153>
+<U9157>
+<U9159>
+<U915A>
+<U915B>
+<U9161>
+<U9164>
+<U9167>
+<U916D>
+<U9174>
+<U9179>
+<U917A>
+<U917B>
+<U9181>
+<U9183>
+<U9185>
+<U9186>
+<U918A>
+<U918E>
+<U9191>
+<U9193>
+<U9194>
+<U9195>
+<U9198>
+<U919E>
+<U91A1>
+<U91A6>
+<U91A8>
+<U91AC>
+<U91AD>
+<U91AE>
+<U91B0>
+<U91B1>
+<U91B2>
+<U91B3>
+<U91B6>
+<U91BB>
+<U91BC>
+<U91BD>
+<U91BF>
+<U91C2>
+<U91C3>
+<U91C5>
+<U91D3>
+<U91D4>
+<U91D7>
+<U91D9>
+<U91DA>
+<U91DE>
+<U91E4>
+<U91E5>
+<U91E9>
+<U91EA>
+<U91EC>
+<U91ED>
+<U91EE>
+<U91EF>
+<U91F0>
+<U91F1>
+<U91F7>
+<U91F9>
+<U91FB>
+<U91FD>
+<U9200>
+<U9201>
+<U9204>
+<U9205>
+<U9206>
+<U9207>
+<U9209>
+<U920A>
+<U920C>
+<U9210>
+<U9212>
+<U9213>
+<U9216>
+<U9218>
+<U921C>
+<U921D>
+<U9223>
+<U9224>
+<U9225>
+<U9226>
+<U9228>
+<U922E>
+<U922F>
+<U9230>
+<U9233>
+<U9235>
+<U9236>
+<U9238>
+<U9239>
+<U923A>
+<U923C>
+<U923E>
+<U9240>
+<U9242>
+<U9243>
+<U9246>
+<U9247>
+<U924A>
+<U924D>
+<U924E>
+<U924F>
+<U9251>
+<U9258>
+<U9259>
+<U925C>
+<U925D>
+<U9260>
+<U9261>
+<U9265>
+<U9267>
+<U9268>
+<U9269>
+<U926E>
+<U926F>
+<U9270>
+<U9275>
+<U9276>
+<U9277>
+<U9278>
+<U9279>
+<U927B>
+<U927C>
+<U927D>
+<U927F>
+<U9288>
+<U9289>
+<U928A>
+<U928D>
+<U928E>
+<U9292>
+<U9297>
+<U9299>
+<U929F>
+<U92A0>
+<U92A4>
+<U92A5>
+<U92A7>
+<U92A8>
+<U92AB>
+<U92AF>
+<U92B2>
+<U92B6>
+<U92B8>
+<U92BA>
+<U92BB>
+<U92BC>
+<U92BD>
+<U92BF>
+<U92C0>
+<U92C1>
+<U92C2>
+<U92C3>
+<U92C5>
+<U92C6>
+<U92C7>
+<U92C8>
+<U92CB>
+<U92CC>
+<U92CD>
+<U92CE>
+<U92D0>
+<U92D3>
+<U92D5>
+<U92D7>
+<U92D8>
+<U92D9>
+<U92DC>
+<U92DD>
+<U92DF>
+<U92E0>
+<U92E1>
+<U92E3>
+<U92E5>
+<U92E7>
+<U92E8>
+<U92EC>
+<U92EE>
+<U92F0>
+<U92F9>
+<U92FB>
+<U92FF>
+<U9300>
+<U9302>
+<U9308>
+<U930D>
+<U9311>
+<U9314>
+<U9315>
+<U931C>
+<U931D>
+<U931E>
+<U931F>
+<U9321>
+<U9324>
+<U9325>
+<U9327>
+<U9329>
+<U932A>
+<U9333>
+<U9334>
+<U9336>
+<U9337>
+<U9347>
+<U9348>
+<U9349>
+<U9350>
+<U9351>
+<U9352>
+<U9355>
+<U9357>
+<U9358>
+<U935A>
+<U935E>
+<U9364>
+<U9365>
+<U9367>
+<U9369>
+<U936A>
+<U936D>
+<U936F>
+<U9370>
+<U9371>
+<U9373>
+<U9374>
+<U9376>
+<U937A>
+<U937D>
+<U937F>
+<U9380>
+<U9381>
+<U9382>
+<U9388>
+<U938A>
+<U938B>
+<U938D>
+<U938F>
+<U9392>
+<U9395>
+<U9398>
+<U939B>
+<U939E>
+<U93A1>
+<U93A3>
+<U93A4>
+<U93A6>
+<U93A8>
+<U93AB>
+<U93B4>
+<U93B5>
+<U93B6>
+<U93BA>
+<U93A9>
+<U93C1>
+<U93C4>
+<U93C5>
+<U93C6>
+<U93C7>
+<U93C9>
+<U93CA>
+<U93CB>
+<U93CC>
+<U93CD>
+<U93D3>
+<U93D9>
+<U93DC>
+<U93DE>
+<U93DF>
+<U93E2>
+<U93E6>
+<U93E7>
+<U93F9>
+<U93F7>
+<U93F8>
+<U93FA>
+<U93FB>
+<U93FD>
+<U9401>
+<U9402>
+<U9404>
+<U9408>
+<U9409>
+<U940D>
+<U940E>
+<U940F>
+<U9415>
+<U9416>
+<U9417>
+<U941F>
+<U942E>
+<U942F>
+<U9431>
+<U9432>
+<U9433>
+<U9434>
+<U943B>
+<U943F>
+<U943D>
+<U9443>
+<U9445>
+<U9448>
+<U944A>
+<U944C>
+<U9455>
+<U9459>
+<U945C>
+<U945F>
+<U9461>
+<U9463>
+<U9468>
+<U946B>
+<U946D>
+<U946E>
+<U946F>
+<U9471>
+<U9472>
+<U9484>
+<U9483>
+<U9578>
+<U9579>
+<U957E>
+<U9584>
+<U9588>
+<U958C>
+<U958D>
+<U958E>
+<U959D>
+<U959E>
+<U959F>
+<U95A1>
+<U95A6>
+<U95A9>
+<U95AB>
+<U95AC>
+<U95B4>
+<U95B6>
+<U95BA>
+<U95BD>
+<U95BF>
+<U95C6>
+<U95C8>
+<U95C9>
+<U95CB>
+<U95D0>
+<U95D1>
+<U95D2>
+<U95D3>
+<U95D9>
+<U95DA>
+<U95DD>
+<U95DE>
+<U95DF>
+<U95E0>
+<U95E4>
+<U95E6>
+<U961D>
+<U961E>
+<U9622>
+<U9624>
+<U9625>
+<U9626>
+<U962C>
+<U9631>
+<U9633>
+<U9637>
+<U9638>
+<U9639>
+<U963A>
+<U963C>
+<U963D>
+<U9641>
+<U9652>
+<U9654>
+<U9656>
+<U9657>
+<U9658>
+<U9661>
+<U966E>
+<U9674>
+<U967B>
+<U967C>
+<U967E>
+<U967F>
+<U9681>
+<U9682>
+<U9683>
+<U9684>
+<U9689>
+<U9691>
+<U9696>
+<U969A>
+<U969D>
+<U969F>
+<U96A4>
+<U96A5>
+<U96A6>
+<U96A9>
+<U96AE>
+<U96AF>
+<U96B3>
+<U96BA>
+<U96CA>
+<U96D2>
+<U5DB2>
+<U96D8>
+<U96DA>
+<U96DD>
+<U96DE>
+<U96DF>
+<U96E9>
+<U96EF>
+<U96F1>
+<U96FA>
+<U9702>
+<U9703>
+<U9705>
+<U9709>
+<U971A>
+<U971B>
+<U971D>
+<U9721>
+<U9722>
+<U9723>
+<U9728>
+<U9731>
+<U9733>
+<U9741>
+<U9743>
+<U974A>
+<U974E>
+<U974F>
+<U9755>
+<U9757>
+<U9758>
+<U975A>
+<U975B>
+<U9763>
+<U9767>
+<U976A>
+<U976E>
+<U9773>
+<U9776>
+<U9777>
+<U9778>
+<U977B>
+<U977D>
+<U977F>
+<U9780>
+<U9789>
+<U9795>
+<U9796>
+<U9797>
+<U9799>
+<U979A>
+<U979E>
+<U979F>
+<U97A2>
+<U97AC>
+<U97AE>
+<U97B1>
+<U97B2>
+<U97B5>
+<U97B6>
+<U97B8>
+<U97B9>
+<U97BA>
+<U97BC>
+<U97BE>
+<U97BF>
+<U97C1>
+<U97C4>
+<U97C5>
+<U97C7>
+<U97C9>
+<U97CA>
+<U97CC>
+<U97CD>
+<U97CE>
+<U97D0>
+<U97D1>
+<U97D4>
+<U97D7>
+<U97D8>
+<U97D9>
+<U97DD>
+<U97DE>
+<U97E0>
+<U97DB>
+<U97E1>
+<U97E4>
+<U97EF>
+<U97F1>
+<U97F4>
+<U97F7>
+<U97F8>
+<U97FA>
+<U9807>
+<U980A>
+<U9819>
+<U980D>
+<U980E>
+<U9814>
+<U9816>
+<U981C>
+<U981E>
+<U9820>
+<U9823>
+<U9826>
+<U982B>
+<U982E>
+<U982F>
+<U9830>
+<U9832>
+<U9833>
+<U9835>
+<U9825>
+<U983E>
+<U9844>
+<U9847>
+<U984A>
+<U9851>
+<U9852>
+<U9853>
+<U9856>
+<U9857>
+<U9859>
+<U985A>
+<U9862>
+<U9863>
+<U9865>
+<U9866>
+<U986A>
+<U986C>
+<U98AB>
+<U98AD>
+<U98AE>
+<U98B0>
+<U98B4>
+<U98B7>
+<U98B8>
+<U98BA>
+<U98BB>
+<U98BF>
+<U98C2>
+<U98C5>
+<U98C8>
+<U98CC>
+<U98E1>
+<U98E3>
+<U98E5>
+<U98E6>
+<U98E7>
+<U98EA>
+<U98F3>
+<U98F6>
+<U9902>
+<U9907>
+<U9908>
+<U9911>
+<U9915>
+<U9916>
+<U9917>
+<U991A>
+<U991B>
+<U991C>
+<U991F>
+<U9922>
+<U9926>
+<U9927>
+<U992B>
+<U9931>
+<U9932>
+<U9933>
+<U9934>
+<U9935>
+<U9939>
+<U993A>
+<U993B>
+<U993C>
+<U9940>
+<U9941>
+<U9946>
+<U9947>
+<U9948>
+<U994D>
+<U994E>
+<U9954>
+<U9958>
+<U9959>
+<U995B>
+<U995C>
+<U995E>
+<U995F>
+<U9960>
+<U999B>
+<U999D>
+<U999F>
+<U99A6>
+<U99B0>
+<U99B1>
+<U99B2>
+<U99B5>
+<U99B9>
+<U99BA>
+<U99BD>
+<U99BF>
+<U99C3>
+<U99C9>
+<U99D3>
+<U99D4>
+<U99D9>
+<U99DA>
+<U99DC>
+<U99DE>
+<U99E7>
+<U99EA>
+<U99EB>
+<U99EC>
+<U99F0>
+<U99F4>
+<U99F5>
+<U99F9>
+<U99FD>
+<U99FE>
+<U9A02>
+<U9A03>
+<U9A04>
+<U9A0B>
+<U9A0C>
+<U9A10>
+<U9A11>
+<U9A16>
+<U9A1E>
+<U9A20>
+<U9A22>
+<U9A23>
+<U9A24>
+<U9A27>
+<U9A2D>
+<U9A2E>
+<U9A33>
+<U9A35>
+<U9A36>
+<U9A38>
+<U9A47>
+<U9A41>
+<U9A44>
+<U9A4A>
+<U9A4B>
+<U9A4C>
+<U9A4E>
+<U9A51>
+<U9A54>
+<U9A56>
+<U9A5D>
+<U9AAA>
+<U9AAC>
+<U9AAE>
+<U9AAF>
+<U9AB2>
+<U9AB4>
+<U9AB5>
+<U9AB6>
+<U9AB9>
+<U9ABB>
+<U9ABE>
+<U9ABF>
+<U9AC1>
+<U9AC3>
+<U9AC6>
+<U9AC8>
+<U9ACE>
+<U9AD0>
+<U9AD2>
+<U9AD5>
+<U9AD6>
+<U9AD7>
+<U9ADB>
+<U9ADC>
+<U9AE0>
+<U9AE4>
+<U9AE5>
+<U9AE7>
+<U9AE9>
+<U9AEC>
+<U9AF2>
+<U9AF3>
+<U9AF5>
+<U9AF9>
+<U9AFA>
+<U9AFD>
+<U9AFF>
+<U9B00>
+<U9B01>
+<U9B02>
+<U9B03>
+<U9B04>
+<U9B05>
+<U9B08>
+<U9B09>
+<U9B0B>
+<U9B0C>
+<U9B0D>
+<U9B0E>
+<U9B10>
+<U9B12>
+<U9B16>
+<U9B19>
+<U9B1B>
+<U9B1C>
+<U9B20>
+<U9B26>
+<U9B2B>
+<U9B2D>
+<U9B33>
+<U9B34>
+<U9B35>
+<U9B37>
+<U9B39>
+<U9B3A>
+<U9B3D>
+<U9B48>
+<U9B4B>
+<U9B4C>
+<U9B55>
+<U9B56>
+<U9B57>
+<U9B5B>
+<U9B5E>
+<U9B61>
+<U9B63>
+<U9B65>
+<U9B66>
+<U9B68>
+<U9B6A>
+<U9B6B>
+<U9B6C>
+<U9B6D>
+<U9B6E>
+<U9B73>
+<U9B75>
+<U9B77>
+<U9B78>
+<U9B79>
+<U9B7F>
+<U9B80>
+<U9B84>
+<U9B85>
+<U9B86>
+<U9B87>
+<U9B89>
+<U9B8A>
+<U9B8B>
+<U9B8D>
+<U9B8F>
+<U9B90>
+<U9B94>
+<U9B9A>
+<U9B9D>
+<U9B9E>
+<U9BA6>
+<U9BA7>
+<U9BA9>
+<U9BAC>
+<U9BB0>
+<U9BB1>
+<U9BB2>
+<U9BB7>
+<U9BB8>
+<U9BBB>
+<U9BBC>
+<U9BBE>
+<U9BBF>
+<U9BC1>
+<U9BC7>
+<U9BC8>
+<U9BCE>
+<U9BD0>
+<U9BD7>
+<U9BD8>
+<U9BDD>
+<U9BDF>
+<U9BE5>
+<U9BE7>
+<U9BEA>
+<U9BEB>
+<U9BEF>
+<U9BF3>
+<U9BF7>
+<U9BF8>
+<U9BF9>
+<U9BFA>
+<U9BFD>
+<U9BFF>
+<U9C00>
+<U9C02>
+<U9C0B>
+<U9C0F>
+<U9C11>
+<U9C16>
+<U9C18>
+<U9C19>
+<U9C1A>
+<U9C1C>
+<U9C1E>
+<U9C22>
+<U9C23>
+<U9C26>
+<U9C27>
+<U9C28>
+<U9C29>
+<U9C2A>
+<U9C31>
+<U9C35>
+<U9C36>
+<U9C37>
+<U9C3D>
+<U9C41>
+<U9C43>
+<U9C44>
+<U9C45>
+<U9C49>
+<U9C4A>
+<U9C4E>
+<U9C4F>
+<U9C50>
+<U9C53>
+<U9C54>
+<U9C56>
+<U9C58>
+<U9C5B>
+<U9C5D>
+<U9C5E>
+<U9C5F>
+<U9C63>
+<U9C69>
+<U9C6A>
+<U9C5C>
+<U9C6B>
+<U9C68>
+<U9C6E>
+<U9C70>
+<U9C72>
+<U9C75>
+<U9C77>
+<U9C7B>
+<U9CE6>
+<U9CF2>
+<U9CF7>
+<U9CF9>
+<U9D0B>
+<U9D02>
+<U9D11>
+<U9D17>
+<U9D18>
+<U9D1C>
+<U9D1D>
+<U9D1E>
+<U9D2F>
+<U9D30>
+<U9D32>
+<U9D33>
+<U9D34>
+<U9D3A>
+<U9D3C>
+<U9D45>
+<U9D3D>
+<U9D42>
+<U9D43>
+<U9D47>
+<U9D4A>
+<U9D53>
+<U9D54>
+<U9D5F>
+<U9D63>
+<U9D62>
+<U9D65>
+<U9D69>
+<U9D6A>
+<U9D6B>
+<U9D70>
+<U9D76>
+<U9D77>
+<U9D7B>
+<U9D7C>
+<U9D7E>
+<U9D83>
+<U9D84>
+<U9D86>
+<U9D8A>
+<U9D8D>
+<U9D8E>
+<U9D92>
+<U9D93>
+<U9D95>
+<U9D96>
+<U9D97>
+<U9D98>
+<U9DA1>
+<U9DAA>
+<U9DAC>
+<U9DAE>
+<U9DB1>
+<U9DB5>
+<U9DB9>
+<U9DBC>
+<U9DBF>
+<U9DC3>
+<U9DC7>
+<U9DC9>
+<U9DCA>
+<U9DD4>
+<U9DD5>
+<U9DD6>
+<U9DD7>
+<U9DDA>
+<U9DDE>
+<U9DDF>
+<U9DE0>
+<U9DE5>
+<U9DE7>
+<U9DE9>
+<U9DEB>
+<U9DEE>
+<U9DF0>
+<U9DF3>
+<U9DF4>
+<U9DFE>
+<U9E0A>
+<U9E02>
+<U9E07>
+<U9E0E>
+<U9E10>
+<U9E11>
+<U9E12>
+<U9E15>
+<U9E16>
+<U9E19>
+<U9E1C>
+<U9E1D>
+<U9E7A>
+<U9E7B>
+<U9E7C>
+<U9E80>
+<U9E82>
+<U9E83>
+<U9E84>
+<U9E85>
+<U9E87>
+<U9E8E>
+<U9E8F>
+<U9E96>
+<U9E98>
+<U9E9B>
+<U9E9E>
+<U9EA4>
+<U9EA8>
+<U9EAC>
+<U9EAE>
+<U9EAF>
+<U9EB0>
+<U9EB3>
+<U9EB4>
+<U9EB5>
+<U9EC6>
+<U9EC8>
+<U9ECB>
+<U9ED5>
+<U9EDF>
+<U9EE4>
+<U9EE7>
+<U9EEC>
+<U9EED>
+<U9EEE>
+<U9EF0>
+<U9EF1>
+<U9EF2>
+<U9EF5>
+<U9EF8>
+<U9EFF>
+<U9F02>
+<U9F03>
+<U9F09>
+<U9F0F>
+<U9F10>
+<U9F11>
+<U9F12>
+<U9F14>
+<U9F16>
+<U9F17>
+<U9F19>
+<U9F1A>
+<U9F1B>
+<U9F1F>
+<U9F22>
+<U9F26>
+<U9F2A>
+<U9F2B>
+<U9F2F>
+<U9F31>
+<U9F32>
+<U9F34>
+<U9F37>
+<U9F39>
+<U9F3A>
+<U9F3C>
+<U9F3D>
+<U9F3F>
+<U9F41>
+<U9F43>
+<U9F44>
+<U9F45>
+<U9F46>
+<U9F47>
+<U9F53>
+<U9F55>
+<U9F56>
+<U9F57>
+<U9F58>
+<U9F5A>
+<U9F5D>
+<U9F5E>
+<U9F68>
+<U9F69>
+<U9F6D>
+<U9F6E>
+<U9F6F>
+<U9F70>
+<U9F71>
+<U9F73>
+<U9F75>
+<U9F7A>
+<U9F7D>
+<U9F8F>
+<U9F90>
+<U9F91>
+<U9F92>
+<U9F94>
+<U9F96>
+<U9F97>
+<U9F9E>
+<U9FA1>
+<U9FA2>
+<U9FA3>
+<U9FA5>
+UNDEFINED
+order_end
diff --git a/ap/build/uClibc/extra/locale/collation/ka_GE b/ap/build/uClibc/extra/locale/collation/ka_GE
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ka_GE
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/kl_GL b/ap/build/uClibc/extra/locale/collation/kl_GL
new file mode 100644
index 0000000..b7628e7
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/kl_GL
@@ -0,0 +1 @@
+copy "da_DK"
diff --git a/ap/build/uClibc/extra/locale/collation/ko_KR b/ap/build/uClibc/extra/locale/collation/ko_KR
new file mode 100644
index 0000000..d9898f1
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ko_KR
@@ -0,0 +1,6010 @@
+order_start forward
+<U0000>
+<U0001>
+<U0002>
+<U0005>
+<U0006>
+<U0007>
+<U0008>
+<U0009>
+<U000A>
+<U000B>
+<U000C>
+<U000D>
+<U000E>
+<U000F>
+<U0010>
+<U0011>
+<U0012>
+<U0013>
+<U0014>
+<U0015>
+<U0016>
+<U0018>
+<U001A>
+<U001B>
+<U001C>
+<U001D>
+<U001E>
+<U001F>
+<U0020>
+<U0021>
+<U0022>
+<U0023>
+<U0024>
+<U0025>
+<U0026>
+<U0027>
+<U0028>
+<U0029>
+<U002A>
+<U002B>
+<U002C>
+<U002D>
+<U002E>
+<U002F>
+<U0030>
+<U0031>
+<U0032>
+<U0033>
+<U0034>
+<U0035>
+<U0036>
+<U0037>
+<U0038>
+<U0039>
+<U003A>
+<U003B>
+<U003C>
+<U003D>
+<U003E>
+<U003F>
+<U0040>
+<U0041>
+<U0042>
+<U0043>
+<U0044>
+<U0045>
+<U0046>
+<U0047>
+<U0048>
+<U0049>
+<U004A>
+<U004B>
+<U004C>
+<U004D>
+<U004E>
+<U004F>
+<U0050>
+<U0051>
+<U0052>
+<U0053>
+<U0054>
+<U0055>
+<U0056>
+<U0057>
+<U0058>
+<U0059>
+<U005A>
+<U005B>
+<U20A9>
+<U005D>
+<U005E>
+<U005F>
+<U0060>
+<U0061>
+<U0062>
+<U0063>
+<U0064>
+<U0065>
+<U0066>
+<U0067>
+<U0068>
+<U0069>
+<U006A>
+<U006B>
+<U006C>
+<U006D>
+<U006E>
+<U006F>
+<U0070>
+<U0071>
+<U0072>
+<U0073>
+<U0074>
+<U0075>
+<U0076>
+<U0077>
+<U0078>
+<U0079>
+<U007A>
+<U007B>
+<U007C>
+<U007D>
+<U007E>
+<U007F>
+<U3000>
+<U3001>
+<U3002>
+<U00B7>
+<U2025>
+<U2026>
+<U00A8>
+<U3003>
+<U00AD>
+<U2015>
+<U2225>
+<UFF3C>
+<U223C>
+<U2018>
+<U2019>
+<U201C>
+<U201D>
+<U3014>
+<U3015>
+<U3008>
+<U3009>
+<U300A>
+<U300B>
+<U300C>
+<U300D>
+<U300E>
+<U300F>
+<U3010>
+<U3011>
+<U00B1>
+<U00D7>
+<U00F7>
+<U2260>
+<U2264>
+<U2265>
+<U221E>
+<U2234>
+<U00B0>
+<U2032>
+<U2033>
+<U2103>
+<U212B>
+<UFFE0>
+<UFFE1>
+<UFFE5>
+<U2642>
+<U2640>
+<U2220>
+<U22A5>
+<U2312>
+<U2202>
+<U2207>
+<U2261>
+<U2252>
+<U00A7>
+<U203B>
+<U2606>
+<U2605>
+<U25CB>
+<U25CF>
+<U25CE>
+<U25C7>
+<U25C6>
+<U25A1>
+<U25A0>
+<U25B3>
+<U25B2>
+<U25BD>
+<U25BC>
+<U2192>
+<U2190>
+<U2191>
+<U2193>
+<U2194>
+<U3013>
+<U226A>
+<U226B>
+<U221A>
+<U223D>
+<U221D>
+<U2235>
+<U222B>
+<U222C>
+<U2208>
+<U220B>
+<U2286>
+<U2287>
+<U2282>
+<U2283>
+<U222A>
+<U2229>
+<U2227>
+<U2228>
+<UFFE2>
+<U21D2>
+<U21D4>
+<U2200>
+<U2203>
+<U00B4>
+<UFF5E>
+<U02C7>
+<U02D8>
+<U02DD>
+<U02DA>
+<U02D9>
+<U00B8>
+<U02DB>
+<U00A1>
+<U00BF>
+<U02D0>
+<U222E>
+<U2211>
+<U220F>
+<U00A4>
+<U2109>
+<U2030>
+<U25C1>
+<U25C0>
+<U25B7>
+<U25B6>
+<U2664>
+<U2660>
+<U2661>
+<U2665>
+<U2667>
+<U2663>
+<U2299>
+<U25C8>
+<U25A3>
+<U25D0>
+<U25D1>
+<U2592>
+<U25A4>
+<U25A5>
+<U25A8>
+<U25A7>
+<U25A6>
+<U25A9>
+<U2668>
+<U260F>
+<U260E>
+<U261C>
+<U261E>
+<U00B6>
+<U2020>
+<U2021>
+<U2195>
+<U2197>
+<U2199>
+<U2196>
+<U2198>
+<U266D>
+<U2669>
+<U266A>
+<U266C>
+<U327F>
+<U321C>
+<U2116>
+<U33C7>
+<U2122>
+<U33C2>
+<U33D8>
+<U2121>
+<UFF01>
+<UFF02>
+<UFF03>
+<UFF04>
+<UFF05>
+<UFF06>
+<UFF07>
+<UFF08>
+<UFF09>
+<UFF0A>
+<UFF0B>
+<UFF0C>
+<UFF0D>
+<UFF0E>
+<UFF0F>
+<UFF10>
+<UFF11>
+<UFF12>
+<UFF13>
+<UFF14>
+<UFF15>
+<UFF16>
+<UFF17>
+<UFF18>
+<UFF19>
+<UFF1A>
+<UFF1B>
+<UFF1C>
+<UFF1D>
+<UFF1E>
+<UFF1F>
+<UFF20>
+<UFF21>
+<UFF22>
+<UFF23>
+<UFF24>
+<UFF25>
+<UFF26>
+<UFF27>
+<UFF28>
+<UFF29>
+<UFF2A>
+<UFF2B>
+<UFF2C>
+<UFF2D>
+<UFF2E>
+<UFF2F>
+<UFF30>
+<UFF31>
+<UFF32>
+<UFF33>
+<UFF34>
+<UFF35>
+<UFF36>
+<UFF37>
+<UFF38>
+<UFF39>
+<UFF3A>
+<UFF3B>
+<UFFE6>
+<UFF3D>
+<UFF3E>
+<UFF3F>
+<UFF40>
+<UFF41>
+<UFF42>
+<UFF43>
+<UFF44>
+<UFF45>
+<UFF46>
+<UFF47>
+<UFF48>
+<UFF49>
+<UFF4A>
+<UFF4B>
+<UFF4C>
+<UFF4D>
+<UFF4E>
+<UFF4F>
+<UFF50>
+<UFF51>
+<UFF52>
+<UFF53>
+<UFF54>
+<UFF55>
+<UFF56>
+<UFF57>
+<UFF58>
+<UFF59>
+<UFF5A>
+<UFF5B>
+<UFF5C>
+<UFF5D>
+<UFFE3>
+<U3131>
+<U3132>
+<U3133>
+<U3134>
+<U3135>
+<U3136>
+<U3137>
+<U3138>
+<U3139>
+<U313A>
+<U313B>
+<U313C>
+<U313D>
+<U313E>
+<U313F>
+<U3140>
+<U3141>
+<U3142>
+<U3143>
+<U3144>
+<U3145>
+<U3146>
+<U3147>
+<U3148>
+<U3149>
+<U314A>
+<U314B>
+<U314C>
+<U314D>
+<U314E>
+<U314F>
+<U3150>
+<U3151>
+<U3152>
+<U3153>
+<U3154>
+<U3155>
+<U3156>
+<U3157>
+<U3158>
+<U3159>
+<U315A>
+<U315B>
+<U315C>
+<U315D>
+<U315E>
+<U315F>
+<U3160>
+<U3161>
+<U3162>
+<U3163>
+<U3164>
+<U3165>
+<U3166>
+<U3167>
+<U3168>
+<U3169>
+<U316A>
+<U316B>
+<U316C>
+<U316D>
+<U316E>
+<U316F>
+<U3170>
+<U3171>
+<U3172>
+<U3173>
+<U3174>
+<U3175>
+<U3176>
+<U3177>
+<U3178>
+<U3179>
+<U317A>
+<U317B>
+<U317C>
+<U317D>
+<U317E>
+<U317F>
+<U3180>
+<U3181>
+<U3182>
+<U3183>
+<U3184>
+<U3185>
+<U3186>
+<U3187>
+<U3188>
+<U3189>
+<U318A>
+<U318B>
+<U318C>
+<U318D>
+<U318E>
+<U2170>
+<U2171>
+<U2172>
+<U2173>
+<U2174>
+<U2175>
+<U2176>
+<U2177>
+<U2178>
+<U2179>
+<U2160>
+<U2161>
+<U2162>
+<U2163>
+<U2164>
+<U2165>
+<U2166>
+<U2167>
+<U2168>
+<U2169>
+<U0391>
+<U0392>
+<U0393>
+<U0394>
+<U0395>
+<U0396>
+<U0397>
+<U0398>
+<U0399>
+<U039A>
+<U039B>
+<U039C>
+<U039D>
+<U039E>
+<U039F>
+<U03A0>
+<U03A1>
+<U03A3>
+<U03A4>
+<U03A5>
+<U03A6>
+<U03A7>
+<U03A8>
+<U03A9>
+<U03B1>
+<U03B2>
+<U03B3>
+<U03B4>
+<U03B5>
+<U03B6>
+<U03B7>
+<U03B8>
+<U03B9>
+<U03BA>
+<U03BB>
+<U03BC>
+<U03BD>
+<U03BE>
+<U03BF>
+<U03C0>
+<U03C1>
+<U03C3>
+<U03C4>
+<U03C5>
+<U03C6>
+<U03C7>
+<U03C8>
+<U03C9>
+<U2500>
+<U2502>
+<U250C>
+<U2510>
+<U2518>
+<U2514>
+<U251C>
+<U252C>
+<U2524>
+<U2534>
+<U253C>
+<U2501>
+<U2503>
+<U250F>
+<U2513>
+<U251B>
+<U2517>
+<U2523>
+<U2533>
+<U252B>
+<U253B>
+<U254B>
+<U2520>
+<U252F>
+<U2528>
+<U2537>
+<U253F>
+<U251D>
+<U2530>
+<U2525>
+<U2538>
+<U2542>
+<U2512>
+<U2511>
+<U251A>
+<U2519>
+<U2516>
+<U2515>
+<U250E>
+<U250D>
+<U251E>
+<U251F>
+<U2521>
+<U2522>
+<U2526>
+<U2527>
+<U2529>
+<U252A>
+<U252D>
+<U252E>
+<U2531>
+<U2532>
+<U2535>
+<U2536>
+<U2539>
+<U253A>
+<U253D>
+<U253E>
+<U2540>
+<U2541>
+<U2543>
+<U2544>
+<U2545>
+<U2546>
+<U2547>
+<U2548>
+<U2549>
+<U254A>
+<U3395>
+<U3396>
+<U3397>
+<U2113>
+<U3398>
+<U33C4>
+<U33A3>
+<U33A4>
+<U33A5>
+<U33A6>
+<U3399>
+<U339A>
+<U339B>
+<U339C>
+<U339D>
+<U339E>
+<U339F>
+<U33A0>
+<U33A1>
+<U33A2>
+<U33CA>
+<U338D>
+<U338E>
+<U338F>
+<U33CF>
+<U3388>
+<U3389>
+<U33C8>
+<U33A7>
+<U33A8>
+<U33B0>
+<U33B1>
+<U33B2>
+<U33B3>
+<U33B4>
+<U33B5>
+<U33B6>
+<U33B7>
+<U33B8>
+<U33B9>
+<U3380>
+<U3381>
+<U3382>
+<U3383>
+<U3384>
+<U33BA>
+<U33BB>
+<U33BC>
+<U33BD>
+<U33BE>
+<U33BF>
+<U3390>
+<U3391>
+<U3392>
+<U3393>
+<U3394>
+<U2126>
+<U33C0>
+<U33C1>
+<U338A>
+<U338B>
+<U338C>
+<U33D6>
+<U33C5>
+<U33AD>
+<U33AE>
+<U33AF>
+<U33DB>
+<U33A9>
+<U33AA>
+<U33AB>
+<U33AC>
+<U33DD>
+<U33D0>
+<U33D3>
+<U33C3>
+<U33C9>
+<U33DC>
+<U33C6>
+<U00C6>
+<U00D0>
+<U00AA>
+<U0126>
+<U0132>
+<U013F>
+<U0141>
+<U00D8>
+<U0152>
+<U00BA>
+<U00DE>
+<U0166>
+<U014A>
+<U3260>
+<U3261>
+<U3262>
+<U3263>
+<U3264>
+<U3265>
+<U3266>
+<U3267>
+<U3268>
+<U3269>
+<U326A>
+<U326B>
+<U326C>
+<U326D>
+<U326E>
+<U326F>
+<U3270>
+<U3271>
+<U3272>
+<U3273>
+<U3274>
+<U3275>
+<U3276>
+<U3277>
+<U3278>
+<U3279>
+<U327A>
+<U327B>
+<U24D0>
+<U24D1>
+<U24D2>
+<U24D3>
+<U24D4>
+<U24D5>
+<U24D6>
+<U24D7>
+<U24D8>
+<U24D9>
+<U24DA>
+<U24DB>
+<U24DC>
+<U24DD>
+<U24DE>
+<U24DF>
+<U24E0>
+<U24E1>
+<U24E2>
+<U24E3>
+<U24E4>
+<U24E5>
+<U24E6>
+<U24E7>
+<U24E8>
+<U24E9>
+<U2460>
+<U2461>
+<U2462>
+<U2463>
+<U2464>
+<U2465>
+<U2466>
+<U2467>
+<U2468>
+<U2469>
+<U246A>
+<U246B>
+<U246C>
+<U246D>
+<U246E>
+<U00BD>
+<U2153>
+<U2154>
+<U00BC>
+<U00BE>
+<U215B>
+<U215C>
+<U215D>
+<U215E>
+<U00E6>
+<U0111>
+<U00F0>
+<U0127>
+<U0131>
+<U0133>
+<U0138>
+<U0140>
+<U0142>
+<U00F8>
+<U0153>
+<U00DF>
+<U00FE>
+<U0167>
+<U014B>
+<U0149>
+<U3200>
+<U3201>
+<U3202>
+<U3203>
+<U3204>
+<U3205>
+<U3206>
+<U3207>
+<U3208>
+<U3209>
+<U320A>
+<U320B>
+<U320C>
+<U320D>
+<U320E>
+<U320F>
+<U3210>
+<U3211>
+<U3212>
+<U3213>
+<U3214>
+<U3215>
+<U3216>
+<U3217>
+<U3218>
+<U3219>
+<U321A>
+<U321B>
+<U249C>
+<U249D>
+<U249E>
+<U249F>
+<U24A0>
+<U24A1>
+<U24A2>
+<U24A3>
+<U24A4>
+<U24A5>
+<U24A6>
+<U24A7>
+<U24A8>
+<U24A9>
+<U24AA>
+<U24AB>
+<U24AC>
+<U24AD>
+<U24AE>
+<U24AF>
+<U24B0>
+<U24B1>
+<U24B2>
+<U24B3>
+<U24B4>
+<U24B5>
+<U2474>
+<U2475>
+<U2476>
+<U2477>
+<U2478>
+<U2479>
+<U247A>
+<U247B>
+<U247C>
+<U247D>
+<U247E>
+<U247F>
+<U2480>
+<U2481>
+<U2482>
+<U00B9>
+<U00B2>
+<U00B3>
+<U2074>
+<U207F>
+<U2081>
+<U2082>
+<U2083>
+<U2084>
+<U3041>
+<U3042>
+<U3043>
+<U3044>
+<U3045>
+<U3046>
+<U3047>
+<U3048>
+<U3049>
+<U304A>
+<U304B>
+<U304C>
+<U304D>
+<U304E>
+<U304F>
+<U3050>
+<U3051>
+<U3052>
+<U3053>
+<U3054>
+<U3055>
+<U3056>
+<U3057>
+<U3058>
+<U3059>
+<U305A>
+<U305B>
+<U305C>
+<U305D>
+<U305E>
+<U305F>
+<U3060>
+<U3061>
+<U3062>
+<U3063>
+<U3064>
+<U3065>
+<U3066>
+<U3067>
+<U3068>
+<U3069>
+<U306A>
+<U306B>
+<U306C>
+<U306D>
+<U306E>
+<U306F>
+<U3070>
+<U3071>
+<U3072>
+<U3073>
+<U3074>
+<U3075>
+<U3076>
+<U3077>
+<U3078>
+<U3079>
+<U307A>
+<U307B>
+<U307C>
+<U307D>
+<U307E>
+<U307F>
+<U3080>
+<U3081>
+<U3082>
+<U3083>
+<U3084>
+<U3085>
+<U3086>
+<U3087>
+<U3088>
+<U3089>
+<U308A>
+<U308B>
+<U308C>
+<U308D>
+<U308E>
+<U308F>
+<U3090>
+<U3091>
+<U3092>
+<U3093>
+<U30A1>
+<U30A2>
+<U30A3>
+<U30A4>
+<U30A5>
+<U30A6>
+<U30A7>
+<U30A8>
+<U30A9>
+<U30AA>
+<U30AB>
+<U30AC>
+<U30AD>
+<U30AE>
+<U30AF>
+<U30B0>
+<U30B1>
+<U30B2>
+<U30B3>
+<U30B4>
+<U30B5>
+<U30B6>
+<U30B7>
+<U30B8>
+<U30B9>
+<U30BA>
+<U30BB>
+<U30BC>
+<U30BD>
+<U30BE>
+<U30BF>
+<U30C0>
+<U30C1>
+<U30C2>
+<U30C3>
+<U30C4>
+<U30C5>
+<U30C6>
+<U30C7>
+<U30C8>
+<U30C9>
+<U30CA>
+<U30CB>
+<U30CC>
+<U30CD>
+<U30CE>
+<U30CF>
+<U30D0>
+<U30D1>
+<U30D2>
+<U30D3>
+<U30D4>
+<U30D5>
+<U30D6>
+<U30D7>
+<U30D8>
+<U30D9>
+<U30DA>
+<U30DB>
+<U30DC>
+<U30DD>
+<U30DE>
+<U30DF>
+<U30E0>
+<U30E1>
+<U30E2>
+<U30E3>
+<U30E4>
+<U30E5>
+<U30E6>
+<U30E7>
+<U30E8>
+<U30E9>
+<U30EA>
+<U30EB>
+<U30EC>
+<U30ED>
+<U30EE>
+<U30EF>
+<U30F0>
+<U30F1>
+<U30F2>
+<U30F3>
+<U30F4>
+<U30F5>
+<U30F6>
+<U0410>
+<U0411>
+<U0412>
+<U0413>
+<U0414>
+<U0415>
+<U0401>
+<U0416>
+<U0417>
+<U0418>
+<U0419>
+<U041A>
+<U041B>
+<U041C>
+<U041D>
+<U041E>
+<U041F>
+<U0420>
+<U0421>
+<U0422>
+<U0423>
+<U0424>
+<U0425>
+<U0426>
+<U0427>
+<U0428>
+<U0429>
+<U042A>
+<U042B>
+<U042C>
+<U042D>
+<U042E>
+<U042F>
+<U0430>
+<U0431>
+<U0432>
+<U0433>
+<U0434>
+<U0435>
+<U0451>
+<U0436>
+<U0437>
+<U0438>
+<U0439>
+<U043A>
+<U043B>
+<U043C>
+<U043D>
+<U043E>
+<U043F>
+<U0440>
+<U0441>
+<U0442>
+<U0443>
+<U0444>
+<U0445>
+<U0446>
+<U0447>
+<U0448>
+<U0449>
+<U044A>
+<U044B>
+<U044C>
+<U044D>
+<U044E>
+<U044F>
+%%%
+% HANGUL SYLLABLES
+UCLIBC_RANGE <UAC00> <UD7A3>
+#<UAC00>
+#..
+#<UD7A3>
+%%%
+% HANJA. For the moment, Hanjas defined in KS X 1001
+% are enumerated in the order they're listed in KS X 1001.
+<U4F3D>
+<U4F73>
+<U5047>
+<U50F9>
+<U52A0>
+<U53EF>
+<U5475>
+<U54E5>
+<U5609>
+<U5AC1>
+<U5BB6>
+<U6687>
+<U67B6>
+<U67B7>
+<U67EF>
+<U6B4C>
+<U73C2>
+<U75C2>
+<U7A3C>
+<U82DB>
+<U8304>
+<U8857>
+<U8888>
+<U8A36>
+<U8CC8>
+<U8DCF>
+<U8EFB>
+<U8FE6>
+<U99D5>
+<U523B>
+<U5374>
+<U5404>
+<U606A>
+<U6164>
+<U6BBC>
+<U73CF>
+<U811A>
+<U89BA>
+<U89D2>
+<U95A3>
+<U4F83>
+<U520A>
+<U58BE>
+<U5978>
+<U59E6>
+<U5E72>
+<U5E79>
+<U61C7>
+<U63C0>
+<U6746>
+<U67EC>
+<U687F>
+<U6F97>
+<U764E>
+<U770B>
+<U78F5>
+<U7A08>
+<U7AFF>
+<U7C21>
+<U809D>
+<U826E>
+<U8271>
+<U8AEB>
+<U9593>
+<U4E6B>
+<U559D>
+<U66F7>
+<U6E34>
+<U78A3>
+<U7AED>
+<U845B>
+<U8910>
+<U874E>
+<U97A8>
+<U52D8>
+<U574E>
+<U582A>
+<U5D4C>
+<U611F>
+<U61BE>
+<U6221>
+<U6562>
+<U67D1>
+<U6A44>
+<U6E1B>
+<U7518>
+<U75B3>
+<U76E3>
+<U77B0>
+<U7D3A>
+<U90AF>
+<U9451>
+<U9452>
+<U9F95>
+<U5323>
+<U5CAC>
+<U7532>
+<U80DB>
+<U9240>
+<U9598>
+<U525B>
+<U5808>
+<U59DC>
+<U5CA1>
+<U5D17>
+<U5EB7>
+<U5F3A>
+<U5F4A>
+<U6177>
+<U6C5F>
+<U757A>
+<U7586>
+<U7CE0>
+<U7D73>
+<U7DB1>
+<U7F8C>
+<U8154>
+<U8221>
+<U8591>
+<U8941>
+<U8B1B>
+<U92FC>
+<U964D>
+<U9C47>
+<U4ECB>
+<U4EF7>
+<U500B>
+<U51F1>
+<U584F>
+<U6137>
+<U613E>
+<U6168>
+<U6539>
+<U69EA>
+<U6F11>
+<U75A5>
+<U7686>
+<U76D6>
+<U7B87>
+<U82A5>
+<U84CB>
+<UF900>
+<U93A7>
+<U958B>
+<U5580>
+<U5BA2>
+<U5751>
+<UF901>
+<U7CB3>
+<U7FB9>
+<U91B5>
+<U5028>
+<U53BB>
+<U5C45>
+<U5DE8>
+<U62D2>
+<U636E>
+<U64DA>
+<U64E7>
+<U6E20>
+<U70AC>
+<U795B>
+<U8DDD>
+<U8E1E>
+<UF902>
+<U907D>
+<U9245>
+<U92F8>
+<U4E7E>
+<U4EF6>
+<U5065>
+<U5DFE>
+<U5EFA>
+<U6106>
+<U6957>
+<U8171>
+<U8654>
+<U8E47>
+<U9375>
+<U9A2B>
+<U4E5E>
+<U5091>
+<U6770>
+<U6840>
+<U5109>
+<U528D>
+<U5292>
+<U6AA2>
+<U77BC>
+<U9210>
+<U9ED4>
+<U52AB>
+<U602F>
+<U8FF2>
+<U5048>
+<U61A9>
+<U63ED>
+<U64CA>
+<U683C>
+<U6A84>
+<U6FC0>
+<U8188>
+<U89A1>
+<U9694>
+<U5805>
+<U727D>
+<U72AC>
+<U7504>
+<U7D79>
+<U7E6D>
+<U80A9>
+<U898B>
+<U8B74>
+<U9063>
+<U9D51>
+<U6289>
+<U6C7A>
+<U6F54>
+<U7D50>
+<U7F3A>
+<U8A23>
+<U517C>
+<U614A>
+<U7B9D>
+<U8B19>
+<U9257>
+<U938C>
+<U4EAC>
+<U4FD3>
+<U501E>
+<U50BE>
+<U5106>
+<U52C1>
+<U52CD>
+<U537F>
+<U5770>
+<U5883>
+<U5E9A>
+<U5F91>
+<U6176>
+<U61AC>
+<U64CE>
+<U656C>
+<U666F>
+<U66BB>
+<U66F4>
+<U6897>
+<U6D87>
+<U7085>
+<U70F1>
+<U749F>
+<U74A5>
+<U74CA>
+<U75D9>
+<U786C>
+<U78EC>
+<U7ADF>
+<U7AF6>
+<U7D45>
+<U7D93>
+<U8015>
+<U803F>
+<U811B>
+<U8396>
+<U8B66>
+<U8F15>
+<U9015>
+<U93E1>
+<U9803>
+<U9838>
+<U9A5A>
+<U9BE8>
+<U4FC2>
+<U5553>
+<U583A>
+<U5951>
+<U5B63>
+<U5C46>
+<U60B8>
+<U6212>
+<U6842>
+<U68B0>
+<U68E8>
+<U6EAA>
+<U754C>
+<U7678>
+<U78CE>
+<U7A3D>
+<U7CFB>
+<U7E6B>
+<U7E7C>
+<U8A08>
+<U8AA1>
+<U8C3F>
+<U968E>
+<U9DC4>
+<U53E4>
+<U53E9>
+<U544A>
+<U5471>
+<U56FA>
+<U59D1>
+<U5B64>
+<U5C3B>
+<U5EAB>
+<U62F7>
+<U6537>
+<U6545>
+<U6572>
+<U66A0>
+<U67AF>
+<U69C1>
+<U6CBD>
+<U75FC>
+<U7690>
+<U777E>
+<U7A3F>
+<U7F94>
+<U8003>
+<U80A1>
+<U818F>
+<U82E6>
+<U82FD>
+<U83F0>
+<U85C1>
+<U8831>
+<U88B4>
+<U8AA5>
+<UF903>
+<U8F9C>
+<U932E>
+<U96C7>
+<U9867>
+<U9AD8>
+<U9F13>
+<U54ED>
+<U659B>
+<U66F2>
+<U688F>
+<U7A40>
+<U8C37>
+<U9D60>
+<U56F0>
+<U5764>
+<U5D11>
+<U6606>
+<U68B1>
+<U68CD>
+<U6EFE>
+<U7428>
+<U889E>
+<U9BE4>
+<U6C68>
+<UF904>
+<U9AA8>
+<U4F9B>
+<U516C>
+<U5171>
+<U529F>
+<U5B54>
+<U5DE5>
+<U6050>
+<U606D>
+<U62F1>
+<U63A7>
+<U653B>
+<U73D9>
+<U7A7A>
+<U86A3>
+<U8CA2>
+<U978F>
+<U4E32>
+<U5BE1>
+<U6208>
+<U679C>
+<U74DC>
+<U79D1>
+<U83D3>
+<U8A87>
+<U8AB2>
+<U8DE8>
+<U904E>
+<U934B>
+<U9846>
+<U5ED3>
+<U69E8>
+<U85FF>
+<U90ED>
+<UF905>
+<U51A0>
+<U5B98>
+<U5BEC>
+<U6163>
+<U68FA>
+<U6B3E>
+<U704C>
+<U742F>
+<U74D8>
+<U7BA1>
+<U7F50>
+<U83C5>
+<U89C0>
+<U8CAB>
+<U95DC>
+<U9928>
+<U522E>
+<U605D>
+<U62EC>
+<U9002>
+<U4F8A>
+<U5149>
+<U5321>
+<U58D9>
+<U5EE3>
+<U66E0>
+<U6D38>
+<U709A>
+<U72C2>
+<U73D6>
+<U7B50>
+<U80F1>
+<U945B>
+<U5366>
+<U639B>
+<U7F6B>
+<U4E56>
+<U5080>
+<U584A>
+<U58DE>
+<U602A>
+<U6127>
+<U62D0>
+<U69D0>
+<U9B41>
+<U5B8F>
+<U7D18>
+<U80B1>
+<U8F5F>
+<U4EA4>
+<U50D1>
+<U54AC>
+<U55AC>
+<U5B0C>
+<U5DA0>
+<U5DE7>
+<U652A>
+<U654E>
+<U6821>
+<U6A4B>
+<U72E1>
+<U768E>
+<U77EF>
+<U7D5E>
+<U7FF9>
+<U81A0>
+<U854E>
+<U86DF>
+<U8F03>
+<U8F4E>
+<U90CA>
+<U9903>
+<U9A55>
+<U9BAB>
+<U4E18>
+<U4E45>
+<U4E5D>
+<U4EC7>
+<U4FF1>
+<U5177>
+<U52FE>
+<U5340>
+<U53E3>
+<U53E5>
+<U548E>
+<U5614>
+<U5775>
+<U57A2>
+<U5BC7>
+<U5D87>
+<U5ED0>
+<U61FC>
+<U62D8>
+<U6551>
+<U67B8>
+<U67E9>
+<U69CB>
+<U6B50>
+<U6BC6>
+<U6BEC>
+<U6C42>
+<U6E9D>
+<U7078>
+<U72D7>
+<U7396>
+<U7403>
+<U77BF>
+<U77E9>
+<U7A76>
+<U7D7F>
+<U8009>
+<U81FC>
+<U8205>
+<U820A>
+<U82DF>
+<U8862>
+<U8B33>
+<U8CFC>
+<U8EC0>
+<U9011>
+<U90B1>
+<U9264>
+<U92B6>
+<U99D2>
+<U9A45>
+<U9CE9>
+<U9DD7>
+<U9F9C>
+<U570B>
+<U5C40>
+<U83CA>
+<U97A0>
+<U97AB>
+<U9EB4>
+<U541B>
+<U7A98>
+<U7FA4>
+<U88D9>
+<U8ECD>
+<U90E1>
+<U5800>
+<U5C48>
+<U6398>
+<U7A9F>
+<U5BAE>
+<U5F13>
+<U7A79>
+<U7AAE>
+<U828E>
+<U8EAC>
+<U5026>
+<U5238>
+<U52F8>
+<U5377>
+<U5708>
+<U62F3>
+<U6372>
+<U6B0A>
+<U6DC3>
+<U7737>
+<U53A5>
+<U7357>
+<U8568>
+<U8E76>
+<U95D5>
+<U673A>
+<U6AC3>
+<U6F70>
+<U8A6D>
+<U8ECC>
+<U994B>
+<UF906>
+<U6677>
+<U6B78>
+<U8CB4>
+<U9B3C>
+<UF907>
+<U53EB>
+<U572D>
+<U594E>
+<U63C6>
+<U69FB>
+<U73EA>
+<U7845>
+<U7ABA>
+<U7AC5>
+<U7CFE>
+<U8475>
+<U898F>
+<U8D73>
+<U9035>
+<U95A8>
+<U52FB>
+<U5747>
+<U7547>
+<U7B60>
+<U83CC>
+<U921E>
+<UF908>
+<U6A58>
+<U514B>
+<U524B>
+<U5287>
+<U621F>
+<U68D8>
+<U6975>
+<U9699>
+<U50C5>
+<U52A4>
+<U52E4>
+<U61C3>
+<U65A4>
+<U6839>
+<U69FF>
+<U747E>
+<U7B4B>
+<U82B9>
+<U83EB>
+<U89B2>
+<U8B39>
+<U8FD1>
+<U9949>
+<UF909>
+<U4ECA>
+<U5997>
+<U64D2>
+<U6611>
+<U6A8E>
+<U7434>
+<U7981>
+<U79BD>
+<U82A9>
+<U887E>
+<U887F>
+<U895F>
+<UF90A>
+<U9326>
+<U4F0B>
+<U53CA>
+<U6025>
+<U6271>
+<U6C72>
+<U7D1A>
+<U7D66>
+<U4E98>
+<U5162>
+<U77DC>
+<U80AF>
+<U4F01>
+<U4F0E>
+<U5176>
+<U5180>
+<U55DC>
+<U5668>
+<U573B>
+<U57FA>
+<U57FC>
+<U5914>
+<U5947>
+<U5993>
+<U5BC4>
+<U5C90>
+<U5D0E>
+<U5DF1>
+<U5E7E>
+<U5FCC>
+<U6280>
+<U65D7>
+<U65E3>
+<U671E>
+<U671F>
+<U675E>
+<U68CB>
+<U68C4>
+<U6A5F>
+<U6B3A>
+<U6C23>
+<U6C7D>
+<U6C82>
+<U6DC7>
+<U7398>
+<U7426>
+<U742A>
+<U7482>
+<U74A3>
+<U7578>
+<U757F>
+<U7881>
+<U78EF>
+<U7941>
+<U7947>
+<U7948>
+<U797A>
+<U7B95>
+<U7D00>
+<U7DBA>
+<U7F88>
+<U8006>
+<U802D>
+<U808C>
+<U8A18>
+<U8B4F>
+<U8C48>
+<U8D77>
+<U9321>
+<U9324>
+<U98E2>
+<U9951>
+<U9A0E>
+<U9A0F>
+<U9A65>
+<U9E92>
+<U7DCA>
+<U4F76>
+<U5409>
+<U62EE>
+<U6854>
+<U91D1>
+<U55AB>
+<U513A>
+<UF90B>
+<UF90C>
+<U5A1C>
+<U61E6>
+<UF90D>
+<U62CF>
+<U62FF>
+<UF90E>
+<UF90F>
+<UF910>
+<UF911>
+<UF912>
+<UF913>
+<U90A3>
+<UF914>
+<UF915>
+<UF916>
+<UF917>
+<UF918>
+<U8AFE>
+<UF919>
+<UF91A>
+<UF91B>
+<UF91C>
+<U6696>
+<UF91D>
+<U7156>
+<UF91E>
+<UF91F>
+<U96E3>
+<UF920>
+<U634F>
+<U637A>
+<U5357>
+<UF921>
+<U678F>
+<U6960>
+<U6E73>
+<UF922>
+<U7537>
+<UF923>
+<UF924>
+<UF925>
+<U7D0D>
+<UF926>
+<UF927>
+<U8872>
+<U56CA>
+<U5A18>
+<UF928>
+<UF929>
+<UF92A>
+<UF92B>
+<UF92C>
+<U4E43>
+<UF92D>
+<U5167>
+<U5948>
+<U67F0>
+<U8010>
+<UF92E>
+<U5973>
+<U5E74>
+<U649A>
+<U79CA>
+<U5FF5>
+<U606C>
+<U62C8>
+<U637B>
+<U5BE7>
+<U5BD7>
+<U52AA>
+<UF92F>
+<U5974>
+<U5F29>
+<U6012>
+<UF930>
+<UF931>
+<UF932>
+<U7459>
+<UF933>
+<UF934>
+<UF935>
+<UF936>
+<UF937>
+<UF938>
+<U99D1>
+<UF939>
+<UF93A>
+<UF93B>
+<UF93C>
+<UF93D>
+<UF93E>
+<UF93F>
+<UF940>
+<UF941>
+<UF942>
+<UF943>
+<U6FC3>
+<UF944>
+<UF945>
+<U81BF>
+<U8FB2>
+<U60F1>
+<UF946>
+<UF947>
+<U8166>
+<UF948>
+<UF949>
+<U5C3F>
+<UF94A>
+<UF94B>
+<UF94C>
+<UF94D>
+<UF94E>
+<UF94F>
+<UF950>
+<UF951>
+<U5AE9>
+<U8A25>
+<U677B>
+<U7D10>
+<UF952>
+<UF953>
+<UF954>
+<UF955>
+<UF956>
+<UF957>
+<U80FD>
+<UF958>
+<UF959>
+<U5C3C>
+<U6CE5>
+<U533F>
+<U6EBA>
+<U591A>
+<U8336>
+<U4E39>
+<U4EB6>
+<U4F46>
+<U55AE>
+<U5718>
+<U58C7>
+<U5F56>
+<U65B7>
+<U65E6>
+<U6A80>
+<U6BB5>
+<U6E4D>
+<U77ED>
+<U7AEF>
+<U7C1E>
+<U7DDE>
+<U86CB>
+<U8892>
+<U9132>
+<U935B>
+<U64BB>
+<U6FBE>
+<U737A>
+<U75B8>
+<U9054>
+<U5556>
+<U574D>
+<U61BA>
+<U64D4>
+<U66C7>
+<U6DE1>
+<U6E5B>
+<U6F6D>
+<U6FB9>
+<U75F0>
+<U8043>
+<U81BD>
+<U8541>
+<U8983>
+<U8AC7>
+<U8B5A>
+<U931F>
+<U6C93>
+<U7553>
+<U7B54>
+<U8E0F>
+<U905D>
+<U5510>
+<U5802>
+<U5858>
+<U5E62>
+<U6207>
+<U649E>
+<U68E0>
+<U7576>
+<U7CD6>
+<U87B3>
+<U9EE8>
+<U4EE3>
+<U5788>
+<U576E>
+<U5927>
+<U5C0D>
+<U5CB1>
+<U5E36>
+<U5F85>
+<U6234>
+<U64E1>
+<U73B3>
+<U81FA>
+<U888B>
+<U8CB8>
+<U968A>
+<U9EDB>
+<U5B85>
+<U5FB7>
+<U60B3>
+<U5012>
+<U5200>
+<U5230>
+<U5716>
+<U5835>
+<U5857>
+<U5C0E>
+<U5C60>
+<U5CF6>
+<U5D8B>
+<U5EA6>
+<U5F92>
+<U60BC>
+<U6311>
+<U6389>
+<U6417>
+<U6843>
+<U68F9>
+<U6AC2>
+<U6DD8>
+<U6E21>
+<U6ED4>
+<U6FE4>
+<U71FE>
+<U76DC>
+<U7779>
+<U79B1>
+<U7A3B>
+<U8404>
+<U89A9>
+<U8CED>
+<U8DF3>
+<U8E48>
+<U9003>
+<U9014>
+<U9053>
+<U90FD>
+<U934D>
+<U9676>
+<U97DC>
+<U6BD2>
+<U7006>
+<U7258>
+<U72A2>
+<U7368>
+<U7763>
+<U79BF>
+<U7BE4>
+<U7E9B>
+<U8B80>
+<U58A9>
+<U60C7>
+<U6566>
+<U65FD>
+<U66BE>
+<U6C8C>
+<U711E>
+<U71C9>
+<U8C5A>
+<U9813>
+<U4E6D>
+<U7A81>
+<U4EDD>
+<U51AC>
+<U51CD>
+<U52D5>
+<U540C>
+<U61A7>
+<U6771>
+<U6850>
+<U68DF>
+<U6D1E>
+<U6F7C>
+<U75BC>
+<U77B3>
+<U7AE5>
+<U80F4>
+<U8463>
+<U9285>
+<U515C>
+<U6597>
+<U675C>
+<U6793>
+<U75D8>
+<U7AC7>
+<U8373>
+<UF95A>
+<U8C46>
+<U9017>
+<U982D>
+<U5C6F>
+<U81C0>
+<U829A>
+<U9041>
+<U906F>
+<U920D>
+<U5F97>
+<U5D9D>
+<U6A59>
+<U71C8>
+<U767B>
+<U7B49>
+<U85E4>
+<U8B04>
+<U9127>
+<U9A30>
+<U5587>
+<U61F6>
+<UF95B>
+<U7669>
+<U7F85>
+<U863F>
+<U87BA>
+<U88F8>
+<U908F>
+<UF95C>
+<U6D1B>
+<U70D9>
+<U73DE>
+<U7D61>
+<U843D>
+<UF95D>
+<U916A>
+<U99F1>
+<UF95E>
+<U4E82>
+<U5375>
+<U6B04>
+<U6B12>
+<U703E>
+<U721B>
+<U862D>
+<U9E1E>
+<U524C>
+<U8FA3>
+<U5D50>
+<U64E5>
+<U652C>
+<U6B16>
+<U6FEB>
+<U7C43>
+<U7E9C>
+<U85CD>
+<U8964>
+<U89BD>
+<U62C9>
+<U81D8>
+<U881F>
+<U5ECA>
+<U6717>
+<U6D6A>
+<U72FC>
+<U7405>
+<U746F>
+<U8782>
+<U90DE>
+<U4F86>
+<U5D0D>
+<U5FA0>
+<U840A>
+<U51B7>
+<U63A0>
+<U7565>
+<U4EAE>
+<U5006>
+<U5169>
+<U51C9>
+<U6881>
+<U6A11>
+<U7CAE>
+<U7CB1>
+<U7CE7>
+<U826F>
+<U8AD2>
+<U8F1B>
+<U91CF>
+<U4FB6>
+<U5137>
+<U52F5>
+<U5442>
+<U5EEC>
+<U616E>
+<U623E>
+<U65C5>
+<U6ADA>
+<U6FFE>
+<U792A>
+<U85DC>
+<U8823>
+<U95AD>
+<U9A62>
+<U9A6A>
+<U9E97>
+<U9ECE>
+<U529B>
+<U66C6>
+<U6B77>
+<U701D>
+<U792B>
+<U8F62>
+<U9742>
+<U6190>
+<U6200>
+<U6523>
+<U6F23>
+<U7149>
+<U7489>
+<U7DF4>
+<U806F>
+<U84EE>
+<U8F26>
+<U9023>
+<U934A>
+<U51BD>
+<U5217>
+<U52A3>
+<U6D0C>
+<U70C8>
+<U88C2>
+<U5EC9>
+<U6582>
+<U6BAE>
+<U6FC2>
+<U7C3E>
+<U7375>
+<U4EE4>
+<U4F36>
+<U56F9>
+<UF95F>
+<U5CBA>
+<U5DBA>
+<U601C>
+<U73B2>
+<U7B2D>
+<U7F9A>
+<U7FCE>
+<U8046>
+<U901E>
+<U9234>
+<U96F6>
+<U9748>
+<U9818>
+<U9F61>
+<U4F8B>
+<U6FA7>
+<U79AE>
+<U91B4>
+<U96B7>
+<U52DE>
+<UF960>
+<U6488>
+<U64C4>
+<U6AD3>
+<U6F5E>
+<U7018>
+<U7210>
+<U76E7>
+<U8001>
+<U8606>
+<U865C>
+<U8DEF>
+<U8F05>
+<U9732>
+<U9B6F>
+<U9DFA>
+<U9E75>
+<U788C>
+<U797F>
+<U7DA0>
+<U83C9>
+<U9304>
+<U9E7F>
+<U9E93>
+<U8AD6>
+<U58DF>
+<U5F04>
+<U6727>
+<U7027>
+<U74CF>
+<U7C60>
+<U807E>
+<U5121>
+<U7028>
+<U7262>
+<U78CA>
+<U8CC2>
+<U8CDA>
+<U8CF4>
+<U96F7>
+<U4E86>
+<U50DA>
+<U5BEE>
+<U5ED6>
+<U6599>
+<U71CE>
+<U7642>
+<U77AD>
+<U804A>
+<U84FC>
+<U907C>
+<U9B27>
+<U9F8D>
+<U58D8>
+<U5A41>
+<U5C62>
+<U6A13>
+<U6DDA>
+<U6F0F>
+<U763B>
+<U7D2F>
+<U7E37>
+<U851E>
+<U8938>
+<U93E4>
+<U964B>
+<U5289>
+<U65D2>
+<U67F3>
+<U69B4>
+<U6D41>
+<U6E9C>
+<U700F>
+<U7409>
+<U7460>
+<U7559>
+<U7624>
+<U786B>
+<U8B2C>
+<U985E>
+<U516D>
+<U622E>
+<U9678>
+<U4F96>
+<U502B>
+<U5D19>
+<U6DEA>
+<U7DB8>
+<U8F2A>
+<U5F8B>
+<U6144>
+<U6817>
+<UF961>
+<U9686>
+<U52D2>
+<U808B>
+<U51DC>
+<U51CC>
+<U695E>
+<U7A1C>
+<U7DBE>
+<U83F1>
+<U9675>
+<U4FDA>
+<U5229>
+<U5398>
+<U540F>
+<U550E>
+<U5C65>
+<U60A7>
+<U674E>
+<U68A8>
+<U6D6C>
+<U7281>
+<U72F8>
+<U7406>
+<U7483>
+<UF962>
+<U75E2>
+<U7C6C>
+<U7F79>
+<U7FB8>
+<U8389>
+<U88CF>
+<U88E1>
+<U91CC>
+<U91D0>
+<U96E2>
+<U9BC9>
+<U541D>
+<U6F7E>
+<U71D0>
+<U7498>
+<U85FA>
+<U8EAA>
+<U96A3>
+<U9C57>
+<U9E9F>
+<U6797>
+<U6DCB>
+<U7433>
+<U81E8>
+<U9716>
+<U782C>
+<U7ACB>
+<U7B20>
+<U7C92>
+<U6469>
+<U746A>
+<U75F2>
+<U78BC>
+<U78E8>
+<U99AC>
+<U9B54>
+<U9EBB>
+<U5BDE>
+<U5E55>
+<U6F20>
+<U819C>
+<U83AB>
+<U9088>
+<U4E07>
+<U534D>
+<U5A29>
+<U5DD2>
+<U5F4E>
+<U6162>
+<U633D>
+<U6669>
+<U66FC>
+<U6EFF>
+<U6F2B>
+<U7063>
+<U779E>
+<U842C>
+<U8513>
+<U883B>
+<U8F13>
+<U9945>
+<U9C3B>
+<U551C>
+<U62B9>
+<U672B>
+<U6CAB>
+<U8309>
+<U896A>
+<U977A>
+<U4EA1>
+<U5984>
+<U5FD8>
+<U5FD9>
+<U671B>
+<U7DB2>
+<U7F54>
+<U8292>
+<U832B>
+<U83BD>
+<U8F1E>
+<U9099>
+<U57CB>
+<U59B9>
+<U5A92>
+<U5BD0>
+<U6627>
+<U679A>
+<U6885>
+<U6BCF>
+<U7164>
+<U7F75>
+<U8CB7>
+<U8CE3>
+<U9081>
+<U9B45>
+<U8108>
+<U8C8A>
+<U964C>
+<U9A40>
+<U9EA5>
+<U5B5F>
+<U6C13>
+<U731B>
+<U76F2>
+<U76DF>
+<U840C>
+<U51AA>
+<U8993>
+<U514D>
+<U5195>
+<U52C9>
+<U68C9>
+<U6C94>
+<U7704>
+<U7720>
+<U7DBF>
+<U7DEC>
+<U9762>
+<U9EB5>
+<U6EC5>
+<U8511>
+<U51A5>
+<U540D>
+<U547D>
+<U660E>
+<U669D>
+<U6927>
+<U6E9F>
+<U76BF>
+<U7791>
+<U8317>
+<U84C2>
+<U879F>
+<U9169>
+<U9298>
+<U9CF4>
+<U8882>
+<U4FAE>
+<U5192>
+<U52DF>
+<U59C6>
+<U5E3D>
+<U6155>
+<U6478>
+<U6479>
+<U66AE>
+<U67D0>
+<U6A21>
+<U6BCD>
+<U6BDB>
+<U725F>
+<U7261>
+<U7441>
+<U7738>
+<U77DB>
+<U8017>
+<U82BC>
+<U8305>
+<U8B00>
+<U8B28>
+<U8C8C>
+<U6728>
+<U6C90>
+<U7267>
+<U76EE>
+<U7766>
+<U7A46>
+<U9DA9>
+<U6B7F>
+<U6C92>
+<U5922>
+<U6726>
+<U8499>
+<U536F>
+<U5893>
+<U5999>
+<U5EDF>
+<U63CF>
+<U6634>
+<U6773>
+<U6E3A>
+<U732B>
+<U7AD7>
+<U82D7>
+<U9328>
+<U52D9>
+<U5DEB>
+<U61AE>
+<U61CB>
+<U620A>
+<U62C7>
+<U64AB>
+<U65E0>
+<U6959>
+<U6B66>
+<U6BCB>
+<U7121>
+<U73F7>
+<U755D>
+<U7E46>
+<U821E>
+<U8302>
+<U856A>
+<U8AA3>
+<U8CBF>
+<U9727>
+<U9D61>
+<U58A8>
+<U9ED8>
+<U5011>
+<U520E>
+<U543B>
+<U554F>
+<U6587>
+<U6C76>
+<U7D0A>
+<U7D0B>
+<U805E>
+<U868A>
+<U9580>
+<U96EF>
+<U52FF>
+<U6C95>
+<U7269>
+<U5473>
+<U5A9A>
+<U5C3E>
+<U5D4B>
+<U5F4C>
+<U5FAE>
+<U672A>
+<U68B6>
+<U6963>
+<U6E3C>
+<U6E44>
+<U7709>
+<U7C73>
+<U7F8E>
+<U8587>
+<U8B0E>
+<U8FF7>
+<U9761>
+<U9EF4>
+<U5CB7>
+<U60B6>
+<U610D>
+<U61AB>
+<U654F>
+<U65FB>
+<U65FC>
+<U6C11>
+<U6CEF>
+<U739F>
+<U73C9>
+<U7DE1>
+<U9594>
+<U5BC6>
+<U871C>
+<U8B10>
+<U525D>
+<U535A>
+<U62CD>
+<U640F>
+<U64B2>
+<U6734>
+<U6A38>
+<U6CCA>
+<U73C0>
+<U749E>
+<U7B94>
+<U7C95>
+<U7E1B>
+<U818A>
+<U8236>
+<U8584>
+<U8FEB>
+<U96F9>
+<U99C1>
+<U4F34>
+<U534A>
+<U53CD>
+<U53DB>
+<U62CC>
+<U642C>
+<U6500>
+<U6591>
+<U69C3>
+<U6CEE>
+<U6F58>
+<U73ED>
+<U7554>
+<U7622>
+<U76E4>
+<U76FC>
+<U78D0>
+<U78FB>
+<U792C>
+<U7D46>
+<U822C>
+<U87E0>
+<U8FD4>
+<U9812>
+<U98EF>
+<U52C3>
+<U62D4>
+<U64A5>
+<U6E24>
+<U6F51>
+<U767C>
+<U8DCB>
+<U91B1>
+<U9262>
+<U9AEE>
+<U9B43>
+<U5023>
+<U508D>
+<U574A>
+<U59A8>
+<U5C28>
+<U5E47>
+<U5F77>
+<U623F>
+<U653E>
+<U65B9>
+<U65C1>
+<U6609>
+<U678B>
+<U699C>
+<U6EC2>
+<U78C5>
+<U7D21>
+<U80AA>
+<U8180>
+<U822B>
+<U82B3>
+<U84A1>
+<U868C>
+<U8A2A>
+<U8B17>
+<U90A6>
+<U9632>
+<U9F90>
+<U500D>
+<U4FF3>
+<UF963>
+<U57F9>
+<U5F98>
+<U62DC>
+<U6392>
+<U676F>
+<U6E43>
+<U7119>
+<U76C3>
+<U80CC>
+<U80DA>
+<U88F4>
+<U88F5>
+<U8919>
+<U8CE0>
+<U8F29>
+<U914D>
+<U966A>
+<U4F2F>
+<U4F70>
+<U5E1B>
+<U67CF>
+<U6822>
+<U767D>
+<U767E>
+<U9B44>
+<U5E61>
+<U6A0A>
+<U7169>
+<U71D4>
+<U756A>
+<UF964>
+<U7E41>
+<U8543>
+<U85E9>
+<U98DC>
+<U4F10>
+<U7B4F>
+<U7F70>
+<U95A5>
+<U51E1>
+<U5E06>
+<U68B5>
+<U6C3E>
+<U6C4E>
+<U6CDB>
+<U72AF>
+<U7BC4>
+<U8303>
+<U6CD5>
+<U743A>
+<U50FB>
+<U5288>
+<U58C1>
+<U64D8>
+<U6A97>
+<U74A7>
+<U7656>
+<U78A7>
+<U8617>
+<U95E2>
+<U9739>
+<UF965>
+<U535E>
+<U5F01>
+<U8B8A>
+<U8FA8>
+<U8FAF>
+<U908A>
+<U5225>
+<U77A5>
+<U9C49>
+<U9F08>
+<U4E19>
+<U5002>
+<U5175>
+<U5C5B>
+<U5E77>
+<U661E>
+<U663A>
+<U67C4>
+<U68C5>
+<U70B3>
+<U7501>
+<U75C5>
+<U79C9>
+<U7ADD>
+<U8F27>
+<U9920>
+<U9A08>
+<U4FDD>
+<U5821>
+<U5831>
+<U5BF6>
+<U666E>
+<U6B65>
+<U6D11>
+<U6E7A>
+<U6F7D>
+<U73E4>
+<U752B>
+<U83E9>
+<U88DC>
+<U8913>
+<U8B5C>
+<U8F14>
+<U4F0F>
+<U50D5>
+<U5310>
+<U535C>
+<U5B93>
+<U5FA9>
+<U670D>
+<U798F>
+<U8179>
+<U832F>
+<U8514>
+<U8907>
+<U8986>
+<U8F39>
+<U8F3B>
+<U99A5>
+<U9C12>
+<U672C>
+<U4E76>
+<U4FF8>
+<U5949>
+<U5C01>
+<U5CEF>
+<U5CF0>
+<U6367>
+<U68D2>
+<U70FD>
+<U71A2>
+<U742B>
+<U7E2B>
+<U84EC>
+<U8702>
+<U9022>
+<U92D2>
+<U9CF3>
+<U4E0D>
+<U4ED8>
+<U4FEF>
+<U5085>
+<U5256>
+<U526F>
+<U5426>
+<U5490>
+<U57E0>
+<U592B>
+<U5A66>
+<U5B5A>
+<U5B75>
+<U5BCC>
+<U5E9C>
+<UF966>
+<U6276>
+<U6577>
+<U65A7>
+<U6D6E>
+<U6EA5>
+<U7236>
+<U7B26>
+<U7C3F>
+<U7F36>
+<U8150>
+<U8151>
+<U819A>
+<U8240>
+<U8299>
+<U83A9>
+<U8A03>
+<U8CA0>
+<U8CE6>
+<U8CFB>
+<U8D74>
+<U8DBA>
+<U90E8>
+<U91DC>
+<U961C>
+<U9644>
+<U99D9>
+<U9CE7>
+<U5317>
+<U5206>
+<U5429>
+<U5674>
+<U58B3>
+<U5954>
+<U596E>
+<U5FFF>
+<U61A4>
+<U626E>
+<U6610>
+<U6C7E>
+<U711A>
+<U76C6>
+<U7C89>
+<U7CDE>
+<U7D1B>
+<U82AC>
+<U8CC1>
+<U96F0>
+<UF967>
+<U4F5B>
+<U5F17>
+<U5F7F>
+<U62C2>
+<U5D29>
+<U670B>
+<U68DA>
+<U787C>
+<U7E43>
+<U9D6C>
+<U4E15>
+<U5099>
+<U5315>
+<U532A>
+<U5351>
+<U5983>
+<U5A62>
+<U5E87>
+<U60B2>
+<U618A>
+<U6249>
+<U6279>
+<U6590>
+<U6787>
+<U69A7>
+<U6BD4>
+<U6BD6>
+<U6BD7>
+<U6BD8>
+<U6CB8>
+<UF968>
+<U7435>
+<U75FA>
+<U7812>
+<U7891>
+<U79D5>
+<U79D8>
+<U7C83>
+<U7DCB>
+<U7FE1>
+<U80A5>
+<U813E>
+<U81C2>
+<U83F2>
+<U871A>
+<U88E8>
+<U8AB9>
+<U8B6C>
+<U8CBB>
+<U9119>
+<U975E>
+<U98DB>
+<U9F3B>
+<U56AC>
+<U5B2A>
+<U5F6C>
+<U658C>
+<U6AB3>
+<U6BAF>
+<U6D5C>
+<U6FF1>
+<U7015>
+<U725D>
+<U73AD>
+<U8CA7>
+<U8CD3>
+<U983B>
+<U6191>
+<U6C37>
+<U8058>
+<U9A01>
+<U4E4D>
+<U4E8B>
+<U4E9B>
+<U4ED5>
+<U4F3A>
+<U4F3C>
+<U4F7F>
+<U4FDF>
+<U50FF>
+<U53F2>
+<U53F8>
+<U5506>
+<U55E3>
+<U56DB>
+<U58EB>
+<U5962>
+<U5A11>
+<U5BEB>
+<U5BFA>
+<U5C04>
+<U5DF3>
+<U5E2B>
+<U5F99>
+<U601D>
+<U6368>
+<U659C>
+<U65AF>
+<U67F6>
+<U67FB>
+<U68AD>
+<U6B7B>
+<U6C99>
+<U6CD7>
+<U6E23>
+<U7009>
+<U7345>
+<U7802>
+<U793E>
+<U7940>
+<U7960>
+<U79C1>
+<U7BE9>
+<U7D17>
+<U7D72>
+<U8086>
+<U820D>
+<U838E>
+<U84D1>
+<U86C7>
+<U88DF>
+<U8A50>
+<U8A5E>
+<U8B1D>
+<U8CDC>
+<U8D66>
+<U8FAD>
+<U90AA>
+<U98FC>
+<U99DF>
+<U9E9D>
+<U524A>
+<UF969>
+<U6714>
+<UF96A>
+<U5098>
+<U522A>
+<U5C71>
+<U6563>
+<U6C55>
+<U73CA>
+<U7523>
+<U759D>
+<U7B97>
+<U849C>
+<U9178>
+<U9730>
+<U4E77>
+<U6492>
+<U6BBA>
+<U715E>
+<U85A9>
+<U4E09>
+<UF96B>
+<U6749>
+<U68EE>
+<U6E17>
+<U829F>
+<U8518>
+<U886B>
+<U63F7>
+<U6F81>
+<U9212>
+<U98AF>
+<U4E0A>
+<U50B7>
+<U50CF>
+<U511F>
+<U5546>
+<U55AA>
+<U5617>
+<U5B40>
+<U5C19>
+<U5CE0>
+<U5E38>
+<U5E8A>
+<U5EA0>
+<U5EC2>
+<U60F3>
+<U6851>
+<U6A61>
+<U6E58>
+<U723D>
+<U7240>
+<U72C0>
+<U76F8>
+<U7965>
+<U7BB1>
+<U7FD4>
+<U88F3>
+<U89F4>
+<U8A73>
+<U8C61>
+<U8CDE>
+<U971C>
+<U585E>
+<U74BD>
+<U8CFD>
+<U55C7>
+<UF96C>
+<U7A61>
+<U7D22>
+<U8272>
+<U7272>
+<U751F>
+<U7525>
+<UF96D>
+<U7B19>
+<U5885>
+<U58FB>
+<U5DBC>
+<U5E8F>
+<U5EB6>
+<U5F90>
+<U6055>
+<U6292>
+<U637F>
+<U654D>
+<U6691>
+<U66D9>
+<U66F8>
+<U6816>
+<U68F2>
+<U7280>
+<U745E>
+<U7B6E>
+<U7D6E>
+<U7DD6>
+<U7F72>
+<U80E5>
+<U8212>
+<U85AF>
+<U897F>
+<U8A93>
+<U901D>
+<U92E4>
+<U9ECD>
+<U9F20>
+<U5915>
+<U596D>
+<U5E2D>
+<U60DC>
+<U6614>
+<U6673>
+<U6790>
+<U6C50>
+<U6DC5>
+<U6F5F>
+<U77F3>
+<U78A9>
+<U84C6>
+<U91CB>
+<U932B>
+<U4ED9>
+<U50CA>
+<U5148>
+<U5584>
+<U5B0B>
+<U5BA3>
+<U6247>
+<U657E>
+<U65CB>
+<U6E32>
+<U717D>
+<U7401>
+<U7444>
+<U7487>
+<U74BF>
+<U766C>
+<U79AA>
+<U7DDA>
+<U7E55>
+<U7FA8>
+<U817A>
+<U81B3>
+<U8239>
+<U861A>
+<U87EC>
+<U8A75>
+<U8DE3>
+<U9078>
+<U9291>
+<U9425>
+<U994D>
+<U9BAE>
+<U5368>
+<U5C51>
+<U6954>
+<U6CC4>
+<U6D29>
+<U6E2B>
+<U820C>
+<U859B>
+<U893B>
+<U8A2D>
+<U8AAA>
+<U96EA>
+<U9F67>
+<U5261>
+<U66B9>
+<U6BB2>
+<U7E96>
+<U87FE>
+<U8D0D>
+<U9583>
+<U965D>
+<U651D>
+<U6D89>
+<U71EE>
+<UF96E>
+<U57CE>
+<U59D3>
+<U5BAC>
+<U6027>
+<U60FA>
+<U6210>
+<U661F>
+<U665F>
+<U7329>
+<U73F9>
+<U76DB>
+<U7701>
+<U7B6C>
+<U8056>
+<U8072>
+<U8165>
+<U8AA0>
+<U9192>
+<U4E16>
+<U52E2>
+<U6B72>
+<U6D17>
+<U7A05>
+<U7B39>
+<U7D30>
+<UF96F>
+<U8CB0>
+<U53EC>
+<U562F>
+<U5851>
+<U5BB5>
+<U5C0F>
+<U5C11>
+<U5DE2>
+<U6240>
+<U6383>
+<U6414>
+<U662D>
+<U68B3>
+<U6CBC>
+<U6D88>
+<U6EAF>
+<U701F>
+<U70A4>
+<U71D2>
+<U7526>
+<U758F>
+<U758E>
+<U7619>
+<U7B11>
+<U7BE0>
+<U7C2B>
+<U7D20>
+<U7D39>
+<U852C>
+<U856D>
+<U8607>
+<U8A34>
+<U900D>
+<U9061>
+<U90B5>
+<U92B7>
+<U97F6>
+<U9A37>
+<U4FD7>
+<U5C6C>
+<U675F>
+<U6D91>
+<U7C9F>
+<U7E8C>
+<U8B16>
+<U8D16>
+<U901F>
+<U5B6B>
+<U5DFD>
+<U640D>
+<U84C0>
+<U905C>
+<U98E1>
+<U7387>
+<U5B8B>
+<U609A>
+<U677E>
+<U6DDE>
+<U8A1F>
+<U8AA6>
+<U9001>
+<U980C>
+<U5237>
+<UF970>
+<U7051>
+<U788E>
+<U9396>
+<U8870>
+<U91D7>
+<U4FEE>
+<U53D7>
+<U55FD>
+<U56DA>
+<U5782>
+<U58FD>
+<U5AC2>
+<U5B88>
+<U5CAB>
+<U5CC0>
+<U5E25>
+<U6101>
+<U620D>
+<U624B>
+<U6388>
+<U641C>
+<U6536>
+<U6578>
+<U6A39>
+<U6B8A>
+<U6C34>
+<U6D19>
+<U6F31>
+<U71E7>
+<U72E9>
+<U7378>
+<U7407>
+<U74B2>
+<U7626>
+<U7761>
+<U79C0>
+<U7A57>
+<U7AEA>
+<U7CB9>
+<U7D8F>
+<U7DAC>
+<U7E61>
+<U7F9E>
+<U8129>
+<U8331>
+<U8490>
+<U84DA>
+<U85EA>
+<U8896>
+<U8AB0>
+<U8B90>
+<U8F38>
+<U9042>
+<U9083>
+<U916C>
+<U9296>
+<U92B9>
+<U968B>
+<U96A7>
+<U96A8>
+<U96D6>
+<U9700>
+<U9808>
+<U9996>
+<U9AD3>
+<U9B1A>
+<U53D4>
+<U587E>
+<U5919>
+<U5B70>
+<U5BBF>
+<U6DD1>
+<U6F5A>
+<U719F>
+<U7421>
+<U74B9>
+<U8085>
+<U83FD>
+<U5DE1>
+<U5F87>
+<U5FAA>
+<U6042>
+<U65EC>
+<U6812>
+<U696F>
+<U6A53>
+<U6B89>
+<U6D35>
+<U6DF3>
+<U73E3>
+<U76FE>
+<U77AC>
+<U7B4D>
+<U7D14>
+<U8123>
+<U821C>
+<U8340>
+<U84F4>
+<U8563>
+<U8A62>
+<U8AC4>
+<U9187>
+<U931E>
+<U9806>
+<U99B4>
+<U620C>
+<U8853>
+<U8FF0>
+<U9265>
+<U5D07>
+<U5D27>
+<U5D69>
+<U745F>
+<U819D>
+<U8768>
+<U6FD5>
+<U62FE>
+<U7FD2>
+<U8936>
+<U8972>
+<U4E1E>
+<U4E58>
+<U50E7>
+<U52DD>
+<U5347>
+<U627F>
+<U6607>
+<U7E69>
+<U8805>
+<U965E>
+<U4F8D>
+<U5319>
+<U5636>
+<U59CB>
+<U5AA4>
+<U5C38>
+<U5C4E>
+<U5C4D>
+<U5E02>
+<U5F11>
+<U6043>
+<U65BD>
+<U662F>
+<U6642>
+<U67BE>
+<U67F4>
+<U731C>
+<U77E2>
+<U793A>
+<U7FC5>
+<U8494>
+<U84CD>
+<U8996>
+<U8A66>
+<U8A69>
+<U8AE1>
+<U8C55>
+<U8C7A>
+<U57F4>
+<U5BD4>
+<U5F0F>
+<U606F>
+<U62ED>
+<U690D>
+<U6B96>
+<U6E5C>
+<U7184>
+<U7BD2>
+<U8755>
+<U8B58>
+<U8EFE>
+<U98DF>
+<U98FE>
+<U4F38>
+<U4F81>
+<U4FE1>
+<U547B>
+<U5A20>
+<U5BB8>
+<U613C>
+<U65B0>
+<U6668>
+<U71FC>
+<U7533>
+<U795E>
+<U7D33>
+<U814E>
+<U81E3>
+<U8398>
+<U85AA>
+<U85CE>
+<U8703>
+<U8A0A>
+<U8EAB>
+<U8F9B>
+<UF971>
+<U8FC5>
+<U5931>
+<U5BA4>
+<U5BE6>
+<U6089>
+<U5BE9>
+<U5C0B>
+<U5FC3>
+<U6C81>
+<UF972>
+<U6DF1>
+<U700B>
+<U751A>
+<U82AF>
+<U8AF6>
+<U4EC0>
+<U5341>
+<UF973>
+<U96D9>
+<U6C0F>
+<U4E9E>
+<U4FC4>
+<U5152>
+<U555E>
+<U5A25>
+<U5CE8>
+<U6211>
+<U7259>
+<U82BD>
+<U83AA>
+<U86FE>
+<U8859>
+<U8A1D>
+<U963F>
+<U96C5>
+<U9913>
+<U9D09>
+<U9D5D>
+<U580A>
+<U5CB3>
+<U5DBD>
+<U5E44>
+<U60E1>
+<U6115>
+<U63E1>
+<U6A02>
+<U6E25>
+<U9102>
+<U9354>
+<U984E>
+<U9C10>
+<U9F77>
+<U5B89>
+<U5CB8>
+<U6309>
+<U664F>
+<U6848>
+<U773C>
+<U96C1>
+<U978D>
+<U9854>
+<U9B9F>
+<U65A1>
+<U8B01>
+<U8ECB>
+<U95BC>
+<U5535>
+<U5CA9>
+<U5DD6>
+<U5EB5>
+<U6697>
+<U764C>
+<U83F4>
+<U95C7>
+<U58D3>
+<U62BC>
+<U72CE>
+<U9D28>
+<U4EF0>
+<U592E>
+<U600F>
+<U663B>
+<U6B83>
+<U79E7>
+<U9D26>
+<U5393>
+<U54C0>
+<U57C3>
+<U5D16>
+<U611B>
+<U66D6>
+<U6DAF>
+<U788D>
+<U827E>
+<U9698>
+<U9744>
+<U5384>
+<U627C>
+<U6396>
+<U6DB2>
+<U7E0A>
+<U814B>
+<U984D>
+<U6AFB>
+<U7F4C>
+<U9DAF>
+<U9E1A>
+<U4E5F>
+<U503B>
+<U51B6>
+<U591C>
+<U60F9>
+<U63F6>
+<U6930>
+<U723A>
+<U8036>
+<UF974>
+<U91CE>
+<U5F31>
+<UF975>
+<UF976>
+<U7D04>
+<U82E5>
+<U846F>
+<U84BB>
+<U85E5>
+<U8E8D>
+<UF977>
+<U4F6F>
+<UF978>
+<UF979>
+<U58E4>
+<U5B43>
+<U6059>
+<U63DA>
+<U6518>
+<U656D>
+<U6698>
+<UF97A>
+<U694A>
+<U6A23>
+<U6D0B>
+<U7001>
+<U716C>
+<U75D2>
+<U760D>
+<U79B3>
+<U7A70>
+<UF97B>
+<U7F8A>
+<UF97C>
+<U8944>
+<UF97D>
+<U8B93>
+<U91C0>
+<U967D>
+<UF97E>
+<U990A>
+<U5704>
+<U5FA1>
+<U65BC>
+<U6F01>
+<U7600>
+<U79A6>
+<U8A9E>
+<U99AD>
+<U9B5A>
+<U9F6C>
+<U5104>
+<U61B6>
+<U6291>
+<U6A8D>
+<U81C6>
+<U5043>
+<U5830>
+<U5F66>
+<U7109>
+<U8A00>
+<U8AFA>
+<U5B7C>
+<U8616>
+<U4FFA>
+<U513C>
+<U56B4>
+<U5944>
+<U63A9>
+<U6DF9>
+<U5DAA>
+<U696D>
+<U5186>
+<U4E88>
+<U4F59>
+<UF97F>
+<UF980>
+<UF981>
+<U5982>
+<UF982>
+<UF983>
+<U6B5F>
+<U6C5D>
+<UF984>
+<U74B5>
+<U7916>
+<UF985>
+<U8207>
+<U8245>
+<U8339>
+<U8F3F>
+<U8F5D>
+<UF986>
+<U9918>
+<UF987>
+<UF988>
+<UF989>
+<U4EA6>
+<UF98A>
+<U57DF>
+<U5F79>
+<U6613>
+<UF98B>
+<UF98C>
+<U75AB>
+<U7E79>
+<U8B6F>
+<UF98D>
+<U9006>
+<U9A5B>
+<U56A5>
+<U5827>
+<U59F8>
+<U5A1F>
+<U5BB4>
+<UF98E>
+<U5EF6>
+<UF98F>
+<UF990>
+<U6350>
+<U633B>
+<UF991>
+<U693D>
+<U6C87>
+<U6CBF>
+<U6D8E>
+<U6D93>
+<U6DF5>
+<U6F14>
+<UF992>
+<U70DF>
+<U7136>
+<U7159>
+<UF993>
+<U71C3>
+<U71D5>
+<UF994>
+<U784F>
+<U786F>
+<UF995>
+<U7B75>
+<U7DE3>
+<UF996>
+<U7E2F>
+<UF997>
+<U884D>
+<U8EDF>
+<UF998>
+<UF999>
+<UF99A>
+<U925B>
+<UF99B>
+<U9CF6>
+<UF99C>
+<UF99D>
+<UF99E>
+<U6085>
+<U6D85>
+<UF99F>
+<U71B1>
+<UF9A0>
+<UF9A1>
+<U95B1>
+<U53AD>
+<UF9A2>
+<UF9A3>
+<UF9A4>
+<U67D3>
+<UF9A5>
+<U708E>
+<U7130>
+<U7430>
+<U8276>
+<U82D2>
+<UF9A6>
+<U95BB>
+<U9AE5>
+<U9E7D>
+<U66C4>
+<UF9A7>
+<U71C1>
+<U8449>
+<UF9A8>
+<UF9A9>
+<U584B>
+<UF9AA>
+<UF9AB>
+<U5DB8>
+<U5F71>
+<UF9AC>
+<U6620>
+<U668E>
+<U6979>
+<U69AE>
+<U6C38>
+<U6CF3>
+<U6E36>
+<U6F41>
+<U6FDA>
+<U701B>
+<U702F>
+<U7150>
+<U71DF>
+<U7370>
+<UF9AD>
+<U745B>
+<UF9AE>
+<U74D4>
+<U76C8>
+<U7A4E>
+<U7E93>
+<UF9AF>
+<UF9B0>
+<U82F1>
+<U8A60>
+<U8FCE>
+<UF9B1>
+<U9348>
+<UF9B2>
+<U9719>
+<UF9B3>
+<UF9B4>
+<U4E42>
+<U502A>
+<UF9B5>
+<U5208>
+<U53E1>
+<U66F3>
+<U6C6D>
+<U6FCA>
+<U730A>
+<U777F>
+<U7A62>
+<U82AE>
+<U85DD>
+<U8602>
+<UF9B6>
+<U88D4>
+<U8A63>
+<U8B7D>
+<U8C6B>
+<UF9B7>
+<U92B3>
+<UF9B8>
+<U9713>
+<U9810>
+<U4E94>
+<U4F0D>
+<U4FC9>
+<U50B2>
+<U5348>
+<U543E>
+<U5433>
+<U55DA>
+<U5862>
+<U58BA>
+<U5967>
+<U5A1B>
+<U5BE4>
+<U609F>
+<UF9B9>
+<U61CA>
+<U6556>
+<U65FF>
+<U6664>
+<U68A7>
+<U6C5A>
+<U6FB3>
+<U70CF>
+<U71AC>
+<U7352>
+<U7B7D>
+<U8708>
+<U8AA4>
+<U9C32>
+<U9F07>
+<U5C4B>
+<U6C83>
+<U7344>
+<U7389>
+<U923A>
+<U6EAB>
+<U7465>
+<U761F>
+<U7A69>
+<U7E15>
+<U860A>
+<U5140>
+<U58C5>
+<U64C1>
+<U74EE>
+<U7515>
+<U7670>
+<U7FC1>
+<U9095>
+<U96CD>
+<U9954>
+<U6E26>
+<U74E6>
+<U7AA9>
+<U7AAA>
+<U81E5>
+<U86D9>
+<U8778>
+<U8A1B>
+<U5A49>
+<U5B8C>
+<U5B9B>
+<U68A1>
+<U6900>
+<U6D63>
+<U73A9>
+<U7413>
+<U742C>
+<U7897>
+<U7DE9>
+<U7FEB>
+<U8118>
+<U8155>
+<U839E>
+<U8C4C>
+<U962E>
+<U9811>
+<U66F0>
+<U5F80>
+<U65FA>
+<U6789>
+<U6C6A>
+<U738B>
+<U502D>
+<U5A03>
+<U6B6A>
+<U77EE>
+<U5916>
+<U5D6C>
+<U5DCD>
+<U7325>
+<U754F>
+<UF9BA>
+<UF9BB>
+<U50E5>
+<U51F9>
+<U582F>
+<U592D>
+<U5996>
+<U59DA>
+<U5BE5>
+<UF9BC>
+<UF9BD>
+<U5DA2>
+<U62D7>
+<U6416>
+<U6493>
+<U64FE>
+<UF9BE>
+<U66DC>
+<UF9BF>
+<U6A48>
+<UF9C0>
+<U71FF>
+<U7464>
+<UF9C1>
+<U7A88>
+<U7AAF>
+<U7E47>
+<U7E5E>
+<U8000>
+<U8170>
+<UF9C2>
+<U87EF>
+<U8981>
+<U8B20>
+<U9059>
+<UF9C3>
+<U9080>
+<U9952>
+<U617E>
+<U6B32>
+<U6D74>
+<U7E1F>
+<U8925>
+<U8FB1>
+<U4FD1>
+<U50AD>
+<U5197>
+<U52C7>
+<U57C7>
+<U5889>
+<U5BB9>
+<U5EB8>
+<U6142>
+<U6995>
+<U6D8C>
+<U6E67>
+<U6EB6>
+<U7194>
+<U7462>
+<U7528>
+<U752C>
+<U8073>
+<U8338>
+<U84C9>
+<U8E0A>
+<U9394>
+<U93DE>
+<UF9C4>
+<U4E8E>
+<U4F51>
+<U5076>
+<U512A>
+<U53C8>
+<U53CB>
+<U53F3>
+<U5B87>
+<U5BD3>
+<U5C24>
+<U611A>
+<U6182>
+<U65F4>
+<U725B>
+<U7397>
+<U7440>
+<U76C2>
+<U7950>
+<U7991>
+<U79B9>
+<U7D06>
+<U7FBD>
+<U828B>
+<U85D5>
+<U865E>
+<U8FC2>
+<U9047>
+<U90F5>
+<U91EA>
+<U9685>
+<U96E8>
+<U96E9>
+<U52D6>
+<U5F67>
+<U65ED>
+<U6631>
+<U682F>
+<U715C>
+<U7A36>
+<U90C1>
+<U980A>
+<U4E91>
+<UF9C5>
+<U6A52>
+<U6B9E>
+<U6F90>
+<U7189>
+<U8018>
+<U82B8>
+<U8553>
+<U904B>
+<U9695>
+<U96F2>
+<U97FB>
+<U851A>
+<U9B31>
+<U4E90>
+<U718A>
+<U96C4>
+<U5143>
+<U539F>
+<U54E1>
+<U5713>
+<U5712>
+<U57A3>
+<U5A9B>
+<U5AC4>
+<U5BC3>
+<U6028>
+<U613F>
+<U63F4>
+<U6C85>
+<U6D39>
+<U6E72>
+<U6E90>
+<U7230>
+<U733F>
+<U7457>
+<U82D1>
+<U8881>
+<U8F45>
+<U9060>
+<UF9C6>
+<U9662>
+<U9858>
+<U9D1B>
+<U6708>
+<U8D8A>
+<U925E>
+<U4F4D>
+<U5049>
+<U50DE>
+<U5371>
+<U570D>
+<U59D4>
+<U5A01>
+<U5C09>
+<U6170>
+<U6690>
+<U6E2D>
+<U7232>
+<U744B>
+<U7DEF>
+<U80C3>
+<U840E>
+<U8466>
+<U853F>
+<U875F>
+<U885B>
+<U8918>
+<U8B02>
+<U9055>
+<U97CB>
+<U9B4F>
+<U4E73>
+<U4F91>
+<U5112>
+<U516A>
+<UF9C7>
+<U552F>
+<U55A9>
+<U5B7A>
+<U5BA5>
+<U5E7C>
+<U5E7D>
+<U5EBE>
+<U60A0>
+<U60DF>
+<U6108>
+<U6109>
+<U63C4>
+<U6538>
+<U6709>
+<UF9C8>
+<U67D4>
+<U67DA>
+<UF9C9>
+<U6961>
+<U6962>
+<U6CB9>
+<U6D27>
+<UF9CA>
+<U6E38>
+<UF9CB>
+<U6FE1>
+<U7336>
+<U7337>
+<UF9CC>
+<U745C>
+<U7531>
+<UF9CD>
+<U7652>
+<UF9CE>
+<UF9CF>
+<U7DAD>
+<U81FE>
+<U8438>
+<U88D5>
+<U8A98>
+<U8ADB>
+<U8AED>
+<U8E30>
+<U8E42>
+<U904A>
+<U903E>
+<U907A>
+<U9149>
+<U91C9>
+<U936E>
+<UF9D0>
+<UF9D1>
+<U5809>
+<UF9D2>
+<U6BD3>
+<U8089>
+<U80B2>
+<UF9D3>
+<UF9D4>
+<U5141>
+<U596B>
+<U5C39>
+<UF9D5>
+<UF9D6>
+<U6F64>
+<U73A7>
+<U80E4>
+<U8D07>
+<UF9D7>
+<U9217>
+<U958F>
+<UF9D8>
+<UF9D9>
+<UF9DA>
+<UF9DB>
+<U807F>
+<U620E>
+<U701C>
+<U7D68>
+<U878D>
+<UF9DC>
+<U57A0>
+<U6069>
+<U6147>
+<U6BB7>
+<U8ABE>
+<U9280>
+<U96B1>
+<U4E59>
+<U541F>
+<U6DEB>
+<U852D>
+<U9670>
+<U97F3>
+<U98EE>
+<U63D6>
+<U6CE3>
+<U9091>
+<U51DD>
+<U61C9>
+<U81BA>
+<U9DF9>
+<U4F9D>
+<U501A>
+<U5100>
+<U5B9C>
+<U610F>
+<U61FF>
+<U64EC>
+<U6905>
+<U6BC5>
+<U7591>
+<U77E3>
+<U7FA9>
+<U8264>
+<U858F>
+<U87FB>
+<U8863>
+<U8ABC>
+<U8B70>
+<U91AB>
+<U4E8C>
+<U4EE5>
+<U4F0A>
+<UF9DD>
+<UF9DE>
+<U5937>
+<U59E8>
+<UF9DF>
+<U5DF2>
+<U5F1B>
+<U5F5B>
+<U6021>
+<UF9E0>
+<UF9E1>
+<UF9E2>
+<UF9E3>
+<U723E>
+<U73E5>
+<UF9E4>
+<U7570>
+<U75CD>
+<UF9E5>
+<U79FB>
+<UF9E6>
+<U800C>
+<U8033>
+<U8084>
+<U82E1>
+<U8351>
+<UF9E7>
+<UF9E8>
+<U8CBD>
+<U8CB3>
+<U9087>
+<UF9E9>
+<UF9EA>
+<U98F4>
+<U990C>
+<UF9EB>
+<UF9EC>
+<U7037>
+<U76CA>
+<U7FCA>
+<U7FCC>
+<U7FFC>
+<U8B1A>
+<U4EBA>
+<U4EC1>
+<U5203>
+<U5370>
+<UF9ED>
+<U54BD>
+<U56E0>
+<U59FB>
+<U5BC5>
+<U5F15>
+<U5FCD>
+<U6E6E>
+<UF9EE>
+<UF9EF>
+<U7D6A>
+<U8335>
+<UF9F0>
+<U8693>
+<U8A8D>
+<UF9F1>
+<U976D>
+<U9777>
+<UF9F2>
+<UF9F3>
+<U4E00>
+<U4F5A>
+<U4F7E>
+<U58F9>
+<U65E5>
+<U6EA2>
+<U9038>
+<U93B0>
+<U99B9>
+<U4EFB>
+<U58EC>
+<U598A>
+<U59D9>
+<U6041>
+<UF9F4>
+<UF9F5>
+<U7A14>
+<UF9F6>
+<U834F>
+<U8CC3>
+<U5165>
+<U5344>
+<UF9F7>
+<UF9F8>
+<UF9F9>
+<U4ECD>
+<U5269>
+<U5B55>
+<U82BF>
+<U4ED4>
+<U523A>
+<U54A8>
+<U59C9>
+<U59FF>
+<U5B50>
+<U5B57>
+<U5B5C>
+<U6063>
+<U6148>
+<U6ECB>
+<U7099>
+<U716E>
+<U7386>
+<U74F7>
+<U75B5>
+<U78C1>
+<U7D2B>
+<U8005>
+<U81EA>
+<U8328>
+<U8517>
+<U85C9>
+<U8AEE>
+<U8CC7>
+<U96CC>
+<U4F5C>
+<U52FA>
+<U56BC>
+<U65AB>
+<U6628>
+<U707C>
+<U70B8>
+<U7235>
+<U7DBD>
+<U828D>
+<U914C>
+<U96C0>
+<U9D72>
+<U5B71>
+<U68E7>
+<U6B98>
+<U6F7A>
+<U76DE>
+<U5C91>
+<U66AB>
+<U6F5B>
+<U7BB4>
+<U7C2A>
+<U8836>
+<U96DC>
+<U4E08>
+<U4ED7>
+<U5320>
+<U5834>
+<U58BB>
+<U58EF>
+<U596C>
+<U5C07>
+<U5E33>
+<U5E84>
+<U5F35>
+<U638C>
+<U66B2>
+<U6756>
+<U6A1F>
+<U6AA3>
+<U6B0C>
+<U6F3F>
+<U7246>
+<UF9FA>
+<U7350>
+<U748B>
+<U7AE0>
+<U7CA7>
+<U8178>
+<U81DF>
+<U81E7>
+<U838A>
+<U846C>
+<U8523>
+<U8594>
+<U85CF>
+<U88DD>
+<U8D13>
+<U91AC>
+<U9577>
+<U969C>
+<U518D>
+<U54C9>
+<U5728>
+<U5BB0>
+<U624D>
+<U6750>
+<U683D>
+<U6893>
+<U6E3D>
+<U6ED3>
+<U707D>
+<U7E21>
+<U88C1>
+<U8CA1>
+<U8F09>
+<U9F4B>
+<U9F4E>
+<U722D>
+<U7B8F>
+<U8ACD>
+<U931A>
+<U4F47>
+<U4F4E>
+<U5132>
+<U5480>
+<U59D0>
+<U5E95>
+<U62B5>
+<U6775>
+<U696E>
+<U6A17>
+<U6CAE>
+<U6E1A>
+<U72D9>
+<U732A>
+<U75BD>
+<U7BB8>
+<U7D35>
+<U82E7>
+<U83F9>
+<U8457>
+<U85F7>
+<U8A5B>
+<U8CAF>
+<U8E87>
+<U9019>
+<U90B8>
+<U96CE>
+<U9F5F>
+<U52E3>
+<U540A>
+<U5AE1>
+<U5BC2>
+<U6458>
+<U6575>
+<U6EF4>
+<U72C4>
+<UF9FB>
+<U7684>
+<U7A4D>
+<U7B1B>
+<U7C4D>
+<U7E3E>
+<U7FDF>
+<U837B>
+<U8B2B>
+<U8CCA>
+<U8D64>
+<U8DE1>
+<U8E5F>
+<U8FEA>
+<U8FF9>
+<U9069>
+<U93D1>
+<U4F43>
+<U4F7A>
+<U50B3>
+<U5168>
+<U5178>
+<U524D>
+<U526A>
+<U5861>
+<U587C>
+<U5960>
+<U5C08>
+<U5C55>
+<U5EDB>
+<U609B>
+<U6230>
+<U6813>
+<U6BBF>
+<U6C08>
+<U6FB1>
+<U714E>
+<U7420>
+<U7530>
+<U7538>
+<U7551>
+<U7672>
+<U7B4C>
+<U7B8B>
+<U7BAD>
+<U7BC6>
+<U7E8F>
+<U8A6E>
+<U8F3E>
+<U8F49>
+<U923F>
+<U9293>
+<U9322>
+<U942B>
+<U96FB>
+<U985A>
+<U986B>
+<U991E>
+<U5207>
+<U622A>
+<U6298>
+<U6D59>
+<U7664>
+<U7ACA>
+<U7BC0>
+<U7D76>
+<U5360>
+<U5CBE>
+<U5E97>
+<U6F38>
+<U70B9>
+<U7C98>
+<U9711>
+<U9B8E>
+<U9EDE>
+<U63A5>
+<U647A>
+<U8776>
+<U4E01>
+<U4E95>
+<U4EAD>
+<U505C>
+<U5075>
+<U5448>
+<U59C3>
+<U5B9A>
+<U5E40>
+<U5EAD>
+<U5EF7>
+<U5F81>
+<U60C5>
+<U633A>
+<U653F>
+<U6574>
+<U65CC>
+<U6676>
+<U6678>
+<U67FE>
+<U6968>
+<U6A89>
+<U6B63>
+<U6C40>
+<U6DC0>
+<U6DE8>
+<U6E1F>
+<U6E5E>
+<U701E>
+<U70A1>
+<U738E>
+<U73FD>
+<U753A>
+<U775B>
+<U7887>
+<U798E>
+<U7A0B>
+<U7A7D>
+<U7CBE>
+<U7D8E>
+<U8247>
+<U8A02>
+<U8AEA>
+<U8C9E>
+<U912D>
+<U914A>
+<U91D8>
+<U9266>
+<U92CC>
+<U9320>
+<U9706>
+<U9756>
+<U975C>
+<U9802>
+<U9F0E>
+<U5236>
+<U5291>
+<U557C>
+<U5824>
+<U5E1D>
+<U5F1F>
+<U608C>
+<U63D0>
+<U68AF>
+<U6FDF>
+<U796D>
+<U7B2C>
+<U81CD>
+<U85BA>
+<U88FD>
+<U8AF8>
+<U8E44>
+<U918D>
+<U9664>
+<U969B>
+<U973D>
+<U984C>
+<U9F4A>
+<U4FCE>
+<U5146>
+<U51CB>
+<U52A9>
+<U5632>
+<U5F14>
+<U5F6B>
+<U63AA>
+<U64CD>
+<U65E9>
+<U6641>
+<U66FA>
+<U66F9>
+<U671D>
+<U689D>
+<U68D7>
+<U69FD>
+<U6F15>
+<U6F6E>
+<U7167>
+<U71E5>
+<U722A>
+<U74AA>
+<U773A>
+<U7956>
+<U795A>
+<U79DF>
+<U7A20>
+<U7A95>
+<U7C97>
+<U7CDF>
+<U7D44>
+<U7E70>
+<U8087>
+<U85FB>
+<U86A4>
+<U8A54>
+<U8ABF>
+<U8D99>
+<U8E81>
+<U9020>
+<U906D>
+<U91E3>
+<U963B>
+<U96D5>
+<U9CE5>
+<U65CF>
+<U7C07>
+<U8DB3>
+<U93C3>
+<U5B58>
+<U5C0A>
+<U5352>
+<U62D9>
+<U731D>
+<U5027>
+<U5B97>
+<U5F9E>
+<U60B0>
+<U616B>
+<U68D5>
+<U6DD9>
+<U742E>
+<U7A2E>
+<U7D42>
+<U7D9C>
+<U7E31>
+<U816B>
+<U8E2A>
+<U8E35>
+<U937E>
+<U9418>
+<U4F50>
+<U5750>
+<U5DE6>
+<U5EA7>
+<U632B>
+<U7F6A>
+<U4E3B>
+<U4F4F>
+<U4F8F>
+<U505A>
+<U59DD>
+<U80C4>
+<U546A>
+<U5468>
+<U55FE>
+<U594F>
+<U5B99>
+<U5DDE>
+<U5EDA>
+<U665D>
+<U6731>
+<U67F1>
+<U682A>
+<U6CE8>
+<U6D32>
+<U6E4A>
+<U6F8D>
+<U70B7>
+<U73E0>
+<U7587>
+<U7C4C>
+<U7D02>
+<U7D2C>
+<U7DA2>
+<U821F>
+<U86DB>
+<U8A3B>
+<U8A85>
+<U8D70>
+<U8E8A>
+<U8F33>
+<U9031>
+<U914E>
+<U9152>
+<U9444>
+<U99D0>
+<U7AF9>
+<U7CA5>
+<U4FCA>
+<U5101>
+<U51C6>
+<U57C8>
+<U5BEF>
+<U5CFB>
+<U6659>
+<U6A3D>
+<U6D5A>
+<U6E96>
+<U6FEC>
+<U710C>
+<U756F>
+<U7AE3>
+<U8822>
+<U9021>
+<U9075>
+<U96CB>
+<U99FF>
+<U8301>
+<U4E2D>
+<U4EF2>
+<U8846>
+<U91CD>
+<U537D>
+<U6ADB>
+<U696B>
+<U6C41>
+<U847A>
+<U589E>
+<U618E>
+<U66FE>
+<U62EF>
+<U70DD>
+<U7511>
+<U75C7>
+<U7E52>
+<U84B8>
+<U8B49>
+<U8D08>
+<U4E4B>
+<U53EA>
+<U54AB>
+<U5730>
+<U5740>
+<U5FD7>
+<U6301>
+<U6307>
+<U646F>
+<U652F>
+<U65E8>
+<U667A>
+<U679D>
+<U67B3>
+<U6B62>
+<U6C60>
+<U6C9A>
+<U6F2C>
+<U77E5>
+<U7825>
+<U7949>
+<U7957>
+<U7D19>
+<U80A2>
+<U8102>
+<U81F3>
+<U829D>
+<U82B7>
+<U8718>
+<U8A8C>
+<UF9FC>
+<U8D04>
+<U8DBE>
+<U9072>
+<U76F4>
+<U7A19>
+<U7A37>
+<U7E54>
+<U8077>
+<U5507>
+<U55D4>
+<U5875>
+<U632F>
+<U6422>
+<U6649>
+<U664B>
+<U686D>
+<U699B>
+<U6B84>
+<U6D25>
+<U6EB1>
+<U73CD>
+<U7468>
+<U74A1>
+<U755B>
+<U75B9>
+<U76E1>
+<U771E>
+<U778B>
+<U79E6>
+<U7E09>
+<U7E1D>
+<U81FB>
+<U852F>
+<U8897>
+<U8A3A>
+<U8CD1>
+<U8EEB>
+<U8FB0>
+<U9032>
+<U93AD>
+<U9663>
+<U9673>
+<U9707>
+<U4F84>
+<U53F1>
+<U59EA>
+<U5AC9>
+<U5E19>
+<U684E>
+<U74C6>
+<U75BE>
+<U79E9>
+<U7A92>
+<U81A3>
+<U86ED>
+<U8CEA>
+<U8DCC>
+<U8FED>
+<U659F>
+<U6715>
+<UF9FD>
+<U57F7>
+<U6F57>
+<U7DDD>
+<U8F2F>
+<U93F6>
+<U96C6>
+<U5FB5>
+<U61F2>
+<U6F84>
+<U4E14>
+<U4F98>
+<U501F>
+<U53C9>
+<U55DF>
+<U5D6F>
+<U5DEE>
+<U6B21>
+<U6B64>
+<U78CB>
+<U7B9A>
+<UF9FE>
+<U8E49>
+<U8ECA>
+<U906E>
+<U6349>
+<U643E>
+<U7740>
+<U7A84>
+<U932F>
+<U947F>
+<U9F6A>
+<U64B0>
+<U6FAF>
+<U71E6>
+<U74A8>
+<U74DA>
+<U7AC4>
+<U7C12>
+<U7E82>
+<U7CB2>
+<U7E98>
+<U8B9A>
+<U8D0A>
+<U947D>
+<U9910>
+<U994C>
+<U5239>
+<U5BDF>
+<U64E6>
+<U672D>
+<U7D2E>
+<U50ED>
+<U53C3>
+<U5879>
+<U6158>
+<U6159>
+<U61FA>
+<U65AC>
+<U7AD9>
+<U8B92>
+<U8B96>
+<U5009>
+<U5021>
+<U5275>
+<U5531>
+<U5A3C>
+<U5EE0>
+<U5F70>
+<U6134>
+<U655E>
+<U660C>
+<U6636>
+<U66A2>
+<U69CD>
+<U6EC4>
+<U6F32>
+<U7316>
+<U7621>
+<U7A93>
+<U8139>
+<U8259>
+<U83D6>
+<U84BC>
+<U50B5>
+<U57F0>
+<U5BC0>
+<U5BE8>
+<U5F69>
+<U63A1>
+<U7826>
+<U7DB5>
+<U83DC>
+<U8521>
+<U91C7>
+<U91F5>
+<U518A>
+<U67F5>
+<U7B56>
+<U8CAC>
+<U51C4>
+<U59BB>
+<U60BD>
+<U8655>
+<U501C>
+<UF9FF>
+<U5254>
+<U5C3A>
+<U617D>
+<U621A>
+<U62D3>
+<U64F2>
+<U65A5>
+<U6ECC>
+<U7620>
+<U810A>
+<U8E60>
+<U965F>
+<U96BB>
+<U4EDF>
+<U5343>
+<U5598>
+<U5929>
+<U5DDD>
+<U64C5>
+<U6CC9>
+<U6DFA>
+<U7394>
+<U7A7F>
+<U821B>
+<U85A6>
+<U8CE4>
+<U8E10>
+<U9077>
+<U91E7>
+<U95E1>
+<U9621>
+<U97C6>
+<U51F8>
+<U54F2>
+<U5586>
+<U5FB9>
+<U64A4>
+<U6F88>
+<U7DB4>
+<U8F1F>
+<U8F4D>
+<U9435>
+<U50C9>
+<U5C16>
+<U6CBE>
+<U6DFB>
+<U751B>
+<U77BB>
+<U7C3D>
+<U7C64>
+<U8A79>
+<U8AC2>
+<U581E>
+<U59BE>
+<U5E16>
+<U6377>
+<U7252>
+<U758A>
+<U776B>
+<U8ADC>
+<U8CBC>
+<U8F12>
+<U5EF3>
+<U6674>
+<U6DF8>
+<U807D>
+<U83C1>
+<U8ACB>
+<U9751>
+<U9BD6>
+<UFA00>
+<U5243>
+<U66FF>
+<U6D95>
+<U6EEF>
+<U7DE0>
+<U8AE6>
+<U902E>
+<U905E>
+<U9AD4>
+<U521D>
+<U527F>
+<U54E8>
+<U6194>
+<U6284>
+<U62DB>
+<U68A2>
+<U6912>
+<U695A>
+<U6A35>
+<U7092>
+<U7126>
+<U785D>
+<U7901>
+<U790E>
+<U79D2>
+<U7A0D>
+<U8096>
+<U8278>
+<U82D5>
+<U8349>
+<U8549>
+<U8C82>
+<U8D85>
+<U9162>
+<U918B>
+<U91AE>
+<U4FC3>
+<U56D1>
+<U71ED>
+<U77D7>
+<U8700>
+<U89F8>
+<U5BF8>
+<U5FD6>
+<U6751>
+<U90A8>
+<U53E2>
+<U585A>
+<U5BF5>
+<U60A4>
+<U6181>
+<U6460>
+<U7E3D>
+<U8070>
+<U8525>
+<U9283>
+<U64AE>
+<U50AC>
+<U5D14>
+<U6700>
+<U589C>
+<U62BD>
+<U63A8>
+<U690E>
+<U6978>
+<U6A1E>
+<U6E6B>
+<U76BA>
+<U79CB>
+<U82BB>
+<U8429>
+<U8ACF>
+<U8DA8>
+<U8FFD>
+<U9112>
+<U914B>
+<U919C>
+<U9310>
+<U9318>
+<U939A>
+<U96DB>
+<U9A36>
+<U9C0D>
+<U4E11>
+<U755C>
+<U795D>
+<U7AFA>
+<U7B51>
+<U7BC9>
+<U7E2E>
+<U84C4>
+<U8E59>
+<U8E74>
+<U8EF8>
+<U9010>
+<U6625>
+<U693F>
+<U7443>
+<U51FA>
+<U672E>
+<U9EDC>
+<U5145>
+<U5FE0>
+<U6C96>
+<U87F2>
+<U885D>
+<U8877>
+<U60B4>
+<U81B5>
+<U8403>
+<U8D05>
+<U53D6>
+<U5439>
+<U5634>
+<U5A36>
+<U5C31>
+<U708A>
+<U7FE0>
+<U805A>
+<U8106>
+<U81ED>
+<U8DA3>
+<U9189>
+<U9A5F>
+<U9DF2>
+<U5074>
+<U4EC4>
+<U53A0>
+<U60FB>
+<U6E2C>
+<U5C64>
+<U4F88>
+<U5024>
+<U55E4>
+<U5CD9>
+<U5E5F>
+<U6065>
+<U6894>
+<U6CBB>
+<U6DC4>
+<U71BE>
+<U75D4>
+<U75F4>
+<U7661>
+<U7A1A>
+<U7A49>
+<U7DC7>
+<U7DFB>
+<U7F6E>
+<U81F4>
+<U86A9>
+<U8F1C>
+<U96C9>
+<U99B3>
+<U9F52>
+<U5247>
+<U52C5>
+<U98ED>
+<U89AA>
+<U4E03>
+<U67D2>
+<U6F06>
+<U4FB5>
+<U5BE2>
+<U6795>
+<U6C88>
+<U6D78>
+<U741B>
+<U7827>
+<U91DD>
+<U937C>
+<U87C4>
+<U79E4>
+<U7A31>
+<U5FEB>
+<U4ED6>
+<U54A4>
+<U553E>
+<U58AE>
+<U59A5>
+<U60F0>
+<U6253>
+<U62D6>
+<U6736>
+<U6955>
+<U8235>
+<U9640>
+<U99B1>
+<U99DD>
+<U502C>
+<U5353>
+<U5544>
+<U577C>
+<UFA01>
+<U6258>
+<UFA02>
+<U64E2>
+<U666B>
+<U67DD>
+<U6FC1>
+<U6FEF>
+<U7422>
+<U7438>
+<U8A17>
+<U9438>
+<U5451>
+<U5606>
+<U5766>
+<U5F48>
+<U619A>
+<U6B4E>
+<U7058>
+<U70AD>
+<U7DBB>
+<U8A95>
+<U596A>
+<U812B>
+<U63A2>
+<U7708>
+<U803D>
+<U8CAA>
+<U5854>
+<U642D>
+<U69BB>
+<U5B95>
+<U5E11>
+<U6E6F>
+<UFA03>
+<U8569>
+<U514C>
+<U53F0>
+<U592A>
+<U6020>
+<U614B>
+<U6B86>
+<U6C70>
+<U6CF0>
+<U7B1E>
+<U80CE>
+<U82D4>
+<U8DC6>
+<U90B0>
+<U98B1>
+<UFA04>
+<U64C7>
+<U6FA4>
+<U6491>
+<U6504>
+<U514E>
+<U5410>
+<U571F>
+<U8A0E>
+<U615F>
+<U6876>
+<UFA05>
+<U75DB>
+<U7B52>
+<U7D71>
+<U901A>
+<U5806>
+<U69CC>
+<U817F>
+<U892A>
+<U9000>
+<U9839>
+<U5078>
+<U5957>
+<U59AC>
+<U6295>
+<U900F>
+<U9B2A>
+<U615D>
+<U7279>
+<U95D6>
+<U5761>
+<U5A46>
+<U5DF4>
+<U628A>
+<U64AD>
+<U64FA>
+<U6777>
+<U6CE2>
+<U6D3E>
+<U722C>
+<U7436>
+<U7834>
+<U7F77>
+<U82AD>
+<U8DDB>
+<U9817>
+<U5224>
+<U5742>
+<U677F>
+<U7248>
+<U74E3>
+<U8CA9>
+<U8FA6>
+<U9211>
+<U962A>
+<U516B>
+<U53ED>
+<U634C>
+<U4F69>
+<U5504>
+<U6096>
+<U6557>
+<U6C9B>
+<U6D7F>
+<U724C>
+<U72FD>
+<U7A17>
+<U8987>
+<U8C9D>
+<U5F6D>
+<U6F8E>
+<U70F9>
+<U81A8>
+<U610E>
+<U4FBF>
+<U504F>
+<U6241>
+<U7247>
+<U7BC7>
+<U7DE8>
+<U7FE9>
+<U904D>
+<U97AD>
+<U9A19>
+<U8CB6>
+<U576A>
+<U5E73>
+<U67B0>
+<U840D>
+<U8A55>
+<U5420>
+<U5B16>
+<U5E63>
+<U5EE2>
+<U5F0A>
+<U6583>
+<U80BA>
+<U853D>
+<U9589>
+<U965B>
+<U4F48>
+<U5305>
+<U530D>
+<U530F>
+<U5486>
+<U54FA>
+<U5703>
+<U5E03>
+<U6016>
+<U629B>
+<U62B1>
+<U6355>
+<UFA06>
+<U6CE1>
+<U6D66>
+<U75B1>
+<U7832>
+<U80DE>
+<U812F>
+<U82DE>
+<U8461>
+<U84B2>
+<U888D>
+<U8912>
+<U900B>
+<U92EA>
+<U98FD>
+<U9B91>
+<U5E45>
+<U66B4>
+<U66DD>
+<U7011>
+<U7206>
+<UFA07>
+<U4FF5>
+<U527D>
+<U5F6A>
+<U6153>
+<U6753>
+<U6A19>
+<U6F02>
+<U74E2>
+<U7968>
+<U8868>
+<U8C79>
+<U98C7>
+<U98C4>
+<U9A43>
+<U54C1>
+<U7A1F>
+<U6953>
+<U8AF7>
+<U8C4A>
+<U98A8>
+<U99AE>
+<U5F7C>
+<U62AB>
+<U75B2>
+<U76AE>
+<U88AB>
+<U907F>
+<U9642>
+<U5339>
+<U5F3C>
+<U5FC5>
+<U6CCC>
+<U73CC>
+<U7562>
+<U758B>
+<U7B46>
+<U82FE>
+<U999D>
+<U4E4F>
+<U903C>
+<U4E0B>
+<U4F55>
+<U53A6>
+<U590F>
+<U5EC8>
+<U6630>
+<U6CB3>
+<U7455>
+<U8377>
+<U8766>
+<U8CC0>
+<U9050>
+<U971E>
+<U9C15>
+<U58D1>
+<U5B78>
+<U8650>
+<U8B14>
+<U9DB4>
+<U5BD2>
+<U6068>
+<U608D>
+<U65F1>
+<U6C57>
+<U6F22>
+<U6FA3>
+<U701A>
+<U7F55>
+<U7FF0>
+<U9591>
+<U9592>
+<U9650>
+<U97D3>
+<U5272>
+<U8F44>
+<U51FD>
+<U542B>
+<U54B8>
+<U5563>
+<U558A>
+<U6ABB>
+<U6DB5>
+<U7DD8>
+<U8266>
+<U929C>
+<U9677>
+<U9E79>
+<U5408>
+<U54C8>
+<U76D2>
+<U86E4>
+<U95A4>
+<U95D4>
+<U965C>
+<U4EA2>
+<U4F09>
+<U59EE>
+<U5AE6>
+<U5DF7>
+<U6052>
+<U6297>
+<U676D>
+<U6841>
+<U6C86>
+<U6E2F>
+<U7F38>
+<U809B>
+<U822A>
+<UFA08>
+<UFA09>
+<U9805>
+<U4EA5>
+<U5055>
+<U54B3>
+<U5793>
+<U595A>
+<U5B69>
+<U5BB3>
+<U61C8>
+<U6977>
+<U6D77>
+<U7023>
+<U87F9>
+<U89E3>
+<U8A72>
+<U8AE7>
+<U9082>
+<U99ED>
+<U9AB8>
+<U52BE>
+<U6838>
+<U5016>
+<U5E78>
+<U674F>
+<U8347>
+<U884C>
+<U4EAB>
+<U5411>
+<U56AE>
+<U73E6>
+<U9115>
+<U97FF>
+<U9909>
+<U9957>
+<U9999>
+<U5653>
+<U589F>
+<U865B>
+<U8A31>
+<U61B2>
+<U6AF6>
+<U737B>
+<U8ED2>
+<U6B47>
+<U96AA>
+<U9A57>
+<U5955>
+<U7200>
+<U8D6B>
+<U9769>
+<U4FD4>
+<U5CF4>
+<U5F26>
+<U61F8>
+<U665B>
+<U6CEB>
+<U70AB>
+<U7384>
+<U73B9>
+<U73FE>
+<U7729>
+<U774D>
+<U7D43>
+<U7D62>
+<U7E23>
+<U8237>
+<U8852>
+<UFA0A>
+<U8CE2>
+<U9249>
+<U986F>
+<U5B51>
+<U7A74>
+<U8840>
+<U9801>
+<U5ACC>
+<U4FE0>
+<U5354>
+<U593E>
+<U5CFD>
+<U633E>
+<U6D79>
+<U72F9>
+<U8105>
+<U8107>
+<U83A2>
+<U92CF>
+<U9830>
+<U4EA8>
+<U5144>
+<U5211>
+<U578B>
+<U5F62>
+<U6CC2>
+<U6ECE>
+<U7005>
+<U7050>
+<U70AF>
+<U7192>
+<U73E9>
+<U7469>
+<U834A>
+<U87A2>
+<U8861>
+<U9008>
+<U90A2>
+<U93A3>
+<U99A8>
+<U516E>
+<U5F57>
+<U60E0>
+<U6167>
+<U66B3>
+<U8559>
+<U8E4A>
+<U91AF>
+<U978B>
+<U4E4E>
+<U4E92>
+<U547C>
+<U58D5>
+<U58FA>
+<U597D>
+<U5CB5>
+<U5F27>
+<U6236>
+<U6248>
+<U660A>
+<U6667>
+<U6BEB>
+<U6D69>
+<U6DCF>
+<U6E56>
+<U6EF8>
+<U6F94>
+<U6FE0>
+<U6FE9>
+<U705D>
+<U72D0>
+<U7425>
+<U745A>
+<U74E0>
+<U7693>
+<U795C>
+<U7CCA>
+<U7E1E>
+<U80E1>
+<U82A6>
+<U846B>
+<U84BF>
+<U864E>
+<U865F>
+<U8774>
+<U8B77>
+<U8C6A>
+<U93AC>
+<U9800>
+<U9865>
+<U60D1>
+<U6216>
+<U9177>
+<U5A5A>
+<U660F>
+<U6DF7>
+<U6E3E>
+<U743F>
+<U9B42>
+<U5FFD>
+<U60DA>
+<U7B0F>
+<U54C4>
+<U5F18>
+<U6C5E>
+<U6CD3>
+<U6D2A>
+<U70D8>
+<U7D05>
+<U8679>
+<U8A0C>
+<U9D3B>
+<U5316>
+<U548C>
+<U5B05>
+<U6A3A>
+<U706B>
+<U7575>
+<U798D>
+<U79BE>
+<U82B1>
+<U83EF>
+<U8A71>
+<U8B41>
+<U8CA8>
+<U9774>
+<UFA0B>
+<U64F4>
+<U652B>
+<U78BA>
+<U78BB>
+<U7A6B>
+<U4E38>
+<U559A>
+<U5950>
+<U5BA6>
+<U5E7B>
+<U60A3>
+<U63DB>
+<U6B61>
+<U6665>
+<U6853>
+<U6E19>
+<U7165>
+<U74B0>
+<U7D08>
+<U9084>
+<U9A69>
+<U9C25>
+<U6D3B>
+<U6ED1>
+<U733E>
+<U8C41>
+<U95CA>
+<U51F0>
+<U5E4C>
+<U5FA8>
+<U604D>
+<U60F6>
+<U6130>
+<U614C>
+<U6643>
+<U6644>
+<U69A5>
+<U6CC1>
+<U6E5F>
+<U6EC9>
+<U6F62>
+<U714C>
+<U749C>
+<U7687>
+<U7BC1>
+<U7C27>
+<U8352>
+<U8757>
+<U9051>
+<U968D>
+<U9EC3>
+<U532F>
+<U56DE>
+<U5EFB>
+<U5F8A>
+<U6062>
+<U6094>
+<U61F7>
+<U6666>
+<U6703>
+<U6A9C>
+<U6DEE>
+<U6FAE>
+<U7070>
+<U736A>
+<U7E6A>
+<U81BE>
+<U8334>
+<U86D4>
+<U8AA8>
+<U8CC4>
+<U5283>
+<U7372>
+<U5B96>
+<U6A6B>
+<U9404>
+<U54EE>
+<U5686>
+<U5B5D>
+<U6548>
+<U6585>
+<U66C9>
+<U689F>
+<U6D8D>
+<U6DC6>
+<U723B>
+<U80B4>
+<U9175>
+<U9A4D>
+<U4FAF>
+<U5019>
+<U539A>
+<U540E>
+<U543C>
+<U5589>
+<U55C5>
+<U5E3F>
+<U5F8C>
+<U673D>
+<U7166>
+<U73DD>
+<U9005>
+<U52DB>
+<U52F3>
+<U5864>
+<U58CE>
+<U7104>
+<U718F>
+<U71FB>
+<U85B0>
+<U8A13>
+<U6688>
+<U85A8>
+<U55A7>
+<U6684>
+<U714A>
+<U8431>
+<U5349>
+<U5599>
+<U6BC1>
+<U5F59>
+<U5FBD>
+<U63EE>
+<U6689>
+<U7147>
+<U8AF1>
+<U8F1D>
+<U9EBE>
+<U4F11>
+<U643A>
+<U70CB>
+<U7566>
+<U8667>
+<U6064>
+<U8B4E>
+<U9DF8>
+<U5147>
+<U51F6>
+<U5308>
+<U6D36>
+<U80F8>
+<U9ED1>
+<U6615>
+<U6B23>
+<U7098>
+<U75D5>
+<U5403>
+<U5C79>
+<U7D07>
+<U8A16>
+<U6B20>
+<U6B3D>
+<U6B46>
+<U5438>
+<U6070>
+<U6D3D>
+<U7FD5>
+<U8208>
+<U50D6>
+<U51DE>
+<U559C>
+<U566B>
+<U56CD>
+<U59EC>
+<U5B09>
+<U5E0C>
+<U6199>
+<U6198>
+<U6231>
+<U665E>
+<U66E6>
+<U7199>
+<U71B9>
+<U71BA>
+<U72A7>
+<U79A7>
+<U7A00>
+<U7FB2>
+<U8A70>
+UNDEFINED
+order_end
diff --git a/ap/build/uClibc/extra/locale/collation/kw_GB b/ap/build/uClibc/extra/locale/collation/kw_GB
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/kw_GB
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/lt_LT b/ap/build/uClibc/extra/locale/collation/lt_LT
new file mode 100644
index 0000000..707d08e
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/lt_LT
@@ -0,0 +1,2061 @@
+
+% Base collation scheme: 1994-03-22
+
+% Ordering algorithm:
+% 1. Spaces and hyphen (but not soft
+% hyphen) before punctuation
+% characters, punctuation characters
+% before numbers,
+% numbers before letters.
+% 2. Letters with diacritical marks are
+% members of equivalence classes
+% 3. A distinction is made with regards
+% to case as noted below.
+% 4. Special characters are ignored
+% when comparing letters, but then
+% they are considered
+% 5. The alphabets are sorted in order
+% of first appearance in ISO 10646:
+% Latin, Greek, Cyrillic, etc.
+%
+% According to Greek specifications,
+% the steps 2. and 3. above are reversed
+% for the Greek script
+
+% collating symbols
+
+% The collating symbol naming is
+% mostly taken from ISO 10646-1,
+% for example the case and accent
+% names are from this standard.
+
+collating-symbol <CAPITAL>
+collating-symbol <CAPITAL-SMALL>
+collating-symbol <SMALL-CAPITAL>
+collating-symbol <SMALL>
+
+% <CAPITAL-SMALL> and <SMALL-CAPITAL>
+% are for cases like Danish <U0041><U0061>
+% and Spanish <U0043><U0068> being treated
+% as one letter.
+
+% The <a8> ...... <z8> collating
+% symbols have defined weights as
+% the last character in a group of
+% Latin letters. They are used
+% to specify deltas by locales using
+% a locale as the default ordering
+% and by "replace-after" statements
+% specifying the changed placement
+% in an ordering of a character.
+
+collating-symbol <a8>
+collating-symbol <b8>
+collating-symbol <c8>
+collating-symbol <d8>
+collating-symbol <e8>
+collating-symbol <f8>
+collating-symbol <g8>
+collating-symbol <h8>
+collating-symbol <i8>
+collating-symbol <j8>
+collating-symbol <k8>
+collating-symbol <l8>
+collating-symbol <m8>
+collating-symbol <n8>
+collating-symbol <o8>
+collating-symbol <p8>
+collating-symbol <q8>
+collating-symbol <r8>
+collating-symbol <s8>
+collating-symbol <t8>
+collating-symbol <u8>
+collating-symbol <v8>
+collating-symbol <w8>
+collating-symbol <x8>
+collating-symbol <y8>
+collating-symbol <z8>
+
+collating-symbol <NONE>
+collating-symbol <ACUTE>
+collating-symbol <ACUTE+DOT>
+collating-symbol <GRAVE>
+collating-symbol <DOUBLE-GRAVE>
+collating-symbol <BREVE>
+collating-symbol <BREVE+ACUTE>
+collating-symbol <BREVE+GRAVE>
+collating-symbol <BREVE+MACRON>
+collating-symbol <BREVE+HOOK>
+collating-symbol <BREVE+TILDE>
+collating-symbol <BREVE+DOT-BELOW>
+collating-symbol <BREVE-BELOW>
+collating-symbol <INVERTED-BREVE>
+collating-symbol <CIRCUMFLEX>
+collating-symbol <CIRCUMFLEX+ACUTE>
+collating-symbol <CIRCUMFLEX+GRAVE>
+collating-symbol <CIRCUMFLEX+HOOK>
+collating-symbol <CIRCUMFLEX+TILDE>
+collating-symbol <CIRCUMFLEX+DOT-BELOW>
+collating-symbol <CARON>
+collating-symbol <CARON+DIAERESIS>
+collating-symbol <CARON+DOT>
+collating-symbol <RING>
+collating-symbol <RING+ACUTE>
+collating-symbol <RING-BELOW>
+collating-symbol <DIAERESIS>
+collating-symbol <DIAERESIS+MACRON>
+collating-symbol <DIAERESIS+ACUTE>
+collating-symbol <DIAERESIS+GRAVE>
+collating-symbol <DIAERESIS+CARON>
+collating-symbol <DOUBLE-ACUTE>
+collating-symbol <HOOK>
+collating-symbol <TILDE>
+collating-symbol <TILDE+ACUTE>
+collating-symbol <TILDE+DIAERESIS>
+collating-symbol <TILDE-BELOW>
+collating-symbol <DOT>
+collating-symbol <DOT-BELOW>
+collating-symbol <DOT+DOT-BELOW>
+collating-symbol <STROKE>
+collating-symbol <STROKE+ACUTE>
+collating-symbol <CEDILLA>
+collating-symbol <CEDILLA+ACUTE>
+collating-symbol <CEDILLA+GRAVE>
+collating-symbol <CEDILLA+BREVE>
+collating-symbol <OGONEK>
+collating-symbol <OGONEK+MACRON>
+collating-symbol <MACRON>
+collating-symbol <MACRON+ACUTE>
+collating-symbol <MACRON+GRAVE>
+collating-symbol <MACRON+DIAERESIS>
+collating-symbol <MACRON+DIAERESIS-BELOW>
+collating-symbol <MACRON+DOT>
+collating-symbol <MACRON+DOT-BELOW>
+collating-symbol <MACRON+CIRCUMFLEX>
+collating-symbol <LINE-BELOW>
+collating-symbol <HORN>
+collating-symbol <HORN+ACUTE>
+collating-symbol <HORN+GRAVE>
+collating-symbol <HORN+HOOK>
+collating-symbol <HORN+TILDE>
+collating-symbol <HORN+DOT-BELOW>
+collating-symbol <PRECEDED-BY-APOSTROPHE>
+collating-symbol <GREEK>
+collating-symbol <TONOS>
+collating-symbol <DIALYTICA>
+collating-symbol <DIALYTICA+TONOS>
+collating-symbol <CYRILLIC>
+collating-symbol <HIRAGANA>
+collating-symbol <KATAKANA>
+collating-symbol <SPECIAL>
+
+% letter;accent;case;specials
+
+order_start forward;backward;forward;position
+
+% <CAPITAL> or <SMALL> letters first:
+
+<CAPITAL>
+<CAPITAL-SMALL>
+<SMALL-CAPITAL>
+<SMALL>
+
+% Accents:
+
+<NONE>
+<ACUTE>
+<ACUTE+DOT>
+<GRAVE>
+<DOUBLE-GRAVE>
+<BREVE>
+<BREVE+ACUTE>
+<BREVE+GRAVE>
+<BREVE+MACRON>
+<BREVE+HOOK>
+<BREVE+TILDE>
+<BREVE+DOT-BELOW>
+<BREVE-BELOW>
+<INVERTED-BREVE>
+<CIRCUMFLEX>
+<CIRCUMFLEX+ACUTE>
+<CIRCUMFLEX+GRAVE>
+<CIRCUMFLEX+HOOK>
+<CIRCUMFLEX+TILDE>
+<CIRCUMFLEX+DOT-BELOW>
+<CARON>
+<CARON+DIAERESIS>
+<CARON+DOT>
+<RING>
+<RING+ACUTE>
+<RING-BELOW>
+<DIAERESIS>
+<DIAERESIS+MACRON>
+<DIAERESIS+ACUTE>
+<DIAERESIS+GRAVE>
+<DIAERESIS+CARON>
+<DOUBLE-ACUTE>
+<HOOK>
+<TILDE>
+<TILDE+ACUTE>
+<TILDE+DIAERESIS>
+<TILDE-BELOW>
+<DOT>
+<DOT-BELOW>
+<DOT+DOT-BELOW>
+<STROKE>
+<STROKE+ACUTE>
+<CEDILLA>
+<CEDILLA+ACUTE>
+<CEDILLA+GRAVE>
+<CEDILLA+BREVE>
+<OGONEK>
+<OGONEK+MACRON>
+<MACRON>
+<MACRON+ACUTE>
+<MACRON+GRAVE>
+<MACRON+DIAERESIS>
+<MACRON+DIAERESIS-BELOW>
+<MACRON+DOT>
+<MACRON+DOT-BELOW>
+<MACRON+CIRCUMFLEX>
+<LINE-BELOW>
+<HORN>
+<HORN+ACUTE>
+<HORN+GRAVE>
+<HORN+HOOK>
+<HORN+TILDE>
+<HORN+DOT-BELOW>
+<PRECEDED-BY-APOSTROPHE>
+<GREEK>
+<TONOS>
+<DIALYTICA>
+<DIALYTICA+TONOS>
+<CYRILLIC>
+<HIRAGANA>
+<KATAKANA>
+<SPECIAL>
+
+<U00A0> <U00A0>;<U00A0>;<U00A0>;IGNORE
+<U0020> IGNORE;IGNORE;IGNORE;<U0020>
+<U0009> IGNORE;IGNORE;IGNORE;<U0009>
+<U000B> IGNORE;IGNORE;IGNORE;<U000B>
+<U000D> IGNORE;IGNORE;IGNORE;<U000D>
+<U000A> IGNORE;IGNORE;IGNORE;<U000A>
+<U000C> IGNORE;IGNORE;IGNORE;<U000C>
+<U005F> IGNORE;IGNORE;IGNORE;<U005F>
+<U00AF> IGNORE;IGNORE;IGNORE;<U00AF>
+<U00AD> IGNORE;IGNORE;IGNORE;<U00AD>
+<U002D> IGNORE;IGNORE;IGNORE;<U002D>
+<U002C> IGNORE;IGNORE;IGNORE;<U002C>
+<U003B> IGNORE;IGNORE;IGNORE;<U003B>
+<U003A> IGNORE;IGNORE;IGNORE;<U003A>
+<U0021> IGNORE;IGNORE;IGNORE;<U0021>
+<U00A1> IGNORE;IGNORE;IGNORE;<U00A1>
+<U003F> IGNORE;IGNORE;IGNORE;<U003F>
+<U00BF> IGNORE;IGNORE;IGNORE;<U00BF>
+<U002F> IGNORE;IGNORE;IGNORE;<U002F>
+<U002E> IGNORE;IGNORE;IGNORE;<U002E>
+<U00B4> IGNORE;IGNORE;IGNORE;<U00B4>
+<U0060> IGNORE;IGNORE;IGNORE;<U0060>
+<U005E> IGNORE;IGNORE;IGNORE;<U005E>
+<U00A8> IGNORE;IGNORE;IGNORE;<U00A8>
+<U007E> IGNORE;IGNORE;IGNORE;<U007E>
+<U00B7> IGNORE;IGNORE;IGNORE;<U00B7>
+<U00B8> IGNORE;IGNORE;IGNORE;<U00B8>
+<U0027> IGNORE;IGNORE;IGNORE;<U0027>
+<U2018> IGNORE;IGNORE;IGNORE;<U2018>
+<U2019> IGNORE;IGNORE;IGNORE;<U2019>
+<U0022> IGNORE;IGNORE;IGNORE;<U0022>
+<U201C> IGNORE;IGNORE;IGNORE;<U201C>
+<U201D> IGNORE;IGNORE;IGNORE;<U201D>
+<U00AB> IGNORE;IGNORE;IGNORE;<U00AB>
+<U00BB> IGNORE;IGNORE;IGNORE;<U00BB>
+<U0028> IGNORE;IGNORE;IGNORE;<U0028>
+<U207D> IGNORE;IGNORE;IGNORE;<U207D>
+<U0029> IGNORE;IGNORE;IGNORE;<U0029>
+<U207E> IGNORE;IGNORE;IGNORE;<U207E>
+<U005B> IGNORE;IGNORE;IGNORE;<U005B>
+<U005D> IGNORE;IGNORE;IGNORE;<U005D>
+<U007B> IGNORE;IGNORE;IGNORE;<U007B>
+<U007D> IGNORE;IGNORE;IGNORE;<U007D>
+<U00A7> IGNORE;IGNORE;IGNORE;<U00A7>
+<U00B6> IGNORE;IGNORE;IGNORE;<U00B6>
+<U00A9> IGNORE;IGNORE;IGNORE;<U00A9>
+<U00AE> IGNORE;IGNORE;IGNORE;<U00AE>
+<U0040> IGNORE;IGNORE;IGNORE;<U0040>
+<U00A4> IGNORE;IGNORE;IGNORE;<U00A4>
+<U00A2> IGNORE;IGNORE;IGNORE;<U00A2>
+<U0024> IGNORE;IGNORE;IGNORE;<U0024>
+<U00A3> IGNORE;IGNORE;IGNORE;<U00A3>
+<U00A5> IGNORE;IGNORE;IGNORE;<U00A5>
+<U002A> IGNORE;IGNORE;IGNORE;<U002A>
+<U005C> IGNORE;IGNORE;IGNORE;<U005C>
+<U0026> IGNORE;IGNORE;IGNORE;<U0026>
+<U0023> IGNORE;IGNORE;IGNORE;<U0023>
+<U0025> IGNORE;IGNORE;IGNORE;<U0025>
+<U207B> IGNORE;IGNORE;IGNORE;<U207B>
+<U002B> IGNORE;IGNORE;IGNORE;<U002B>
+<U207A> IGNORE;IGNORE;IGNORE;<U207A>
+<U00B1> IGNORE;IGNORE;IGNORE;<U00B1>
+<U00F7> IGNORE;IGNORE;IGNORE;<U00F7>
+<U00D7> IGNORE;IGNORE;IGNORE;<U00D7>
+<U2260> IGNORE;IGNORE;IGNORE;<U2260>
+<U003C> IGNORE;IGNORE;IGNORE;<U003C>
+<U2264> IGNORE;IGNORE;IGNORE;<U2264>
+<U003D> IGNORE;IGNORE;IGNORE;<U003D>
+<U2265> IGNORE;IGNORE;IGNORE;<U2265>
+<U003E> IGNORE;IGNORE;IGNORE;<U003E>
+<U00AC> IGNORE;IGNORE;IGNORE;<U00AC>
+<U007C> IGNORE;IGNORE;IGNORE;<U007C>
+<U00A6> IGNORE;IGNORE;IGNORE;<U00A6>
+<U00B0> IGNORE;IGNORE;IGNORE;<U00B0>
+<U00B5> IGNORE;IGNORE;IGNORE;<U00B5>
+<U02C7> IGNORE;IGNORE;IGNORE;<U02C7>
+<U02D8> IGNORE;IGNORE;IGNORE;<U02D8>
+<U02D9> IGNORE;IGNORE;IGNORE;<U02D9>
+<U02DA> IGNORE;IGNORE;IGNORE;<U02DA>
+<U02DB> IGNORE;IGNORE;IGNORE;<U02DB>
+<U02DC> IGNORE;IGNORE;IGNORE;<U02DC>
+<U02DD> IGNORE;IGNORE;IGNORE;<U02DD>
+<U0374> IGNORE;IGNORE;IGNORE;<U0374>
+<U0375> IGNORE;IGNORE;IGNORE;<U0375>
+<U037A> IGNORE;IGNORE;IGNORE;<U037A>
+<U037E> IGNORE;IGNORE;IGNORE;<U037E>
+<U0384> IGNORE;IGNORE;IGNORE;<U0384>
+<U0385> IGNORE;IGNORE;IGNORE;<U0385>
+<U0387> IGNORE;IGNORE;IGNORE;<U0387>
+<U03D0> IGNORE;IGNORE;IGNORE;<U03D0>
+<U1FBF> IGNORE;IGNORE;IGNORE;<U1FBF>
+<U1FC0> IGNORE;IGNORE;IGNORE;<U1FC0>
+<U1FC1> IGNORE;IGNORE;IGNORE;<U1FC1>
+<U1FCD> IGNORE;IGNORE;IGNORE;<U1FCD>
+<U1FCE> IGNORE;IGNORE;IGNORE;<U1FCE>
+<U1FCF> IGNORE;IGNORE;IGNORE;<U1FCF>
+<U1FDD> IGNORE;IGNORE;IGNORE;<U1FDD>
+<U1FDE> IGNORE;IGNORE;IGNORE;<U1FDE>
+<U1FDF> IGNORE;IGNORE;IGNORE;<U1FDF>
+<U1FED> IGNORE;IGNORE;IGNORE;<U1FED>
+<U1FEF> IGNORE;IGNORE;IGNORE;<U1FEF>
+<U1FFE> IGNORE;IGNORE;IGNORE;<U1FFE>
+<U2002> IGNORE;IGNORE;IGNORE;<U2002>
+<U2003> IGNORE;IGNORE;IGNORE;<U2003>
+<U2004> IGNORE;IGNORE;IGNORE;<U2004>
+<U2005> IGNORE;IGNORE;IGNORE;<U2005>
+<U2006> IGNORE;IGNORE;IGNORE;<U2006>
+<U200E> IGNORE;IGNORE;IGNORE;<U200E>
+<U200F> IGNORE;IGNORE;IGNORE;<U200F>
+<U2009> IGNORE;IGNORE;IGNORE;<U2009>
+<U200A> IGNORE;IGNORE;IGNORE;<U200A>
+<U2010> IGNORE;IGNORE;IGNORE;<U2010>
+<U2013> IGNORE;IGNORE;IGNORE;<U2013>
+<U2014> IGNORE;IGNORE;IGNORE;<U2014>
+<U2015> IGNORE;IGNORE;IGNORE;<U2015>
+<U2016> IGNORE;IGNORE;IGNORE;<U2016>
+<U2017> IGNORE;IGNORE;IGNORE;<U2017>
+<U201A> IGNORE;IGNORE;IGNORE;<U201A>
+<U201B> IGNORE;IGNORE;IGNORE;<U201B>
+<U201E> IGNORE;IGNORE;IGNORE;<U201E>
+<U201F> IGNORE;IGNORE;IGNORE;<U201F>
+<U2020> IGNORE;IGNORE;IGNORE;<U2020>
+<U2021> IGNORE;IGNORE;IGNORE;<U2021>
+<U2219> IGNORE;IGNORE;IGNORE;<U2219>
+<U2025> IGNORE;IGNORE;IGNORE;<U2025>
+<U2026> IGNORE;IGNORE;IGNORE;<U2026>
+<U2030> IGNORE;IGNORE;IGNORE;<U2030>
+<U2032> IGNORE;IGNORE;IGNORE;<U2032>
+<U2033> IGNORE;IGNORE;IGNORE;<U2033>
+<U2034> IGNORE;IGNORE;IGNORE;<U2034>
+<U2035> IGNORE;IGNORE;IGNORE;<U2035>
+<U2036> IGNORE;IGNORE;IGNORE;<U2036>
+<U2037> IGNORE;IGNORE;IGNORE;<U2037>
+<U2038> IGNORE;IGNORE;IGNORE;<U2038>
+<U2039> IGNORE;IGNORE;IGNORE;<U2039>
+<U203A> IGNORE;IGNORE;IGNORE;<U203A>
+<U203B> IGNORE;IGNORE;IGNORE;<U203B>
+<U203C> IGNORE;IGNORE;IGNORE;<U203C>
+<U203E> IGNORE;IGNORE;IGNORE;<U203E>
+<U207C> IGNORE;IGNORE;IGNORE;<U207C>
+<U2080> IGNORE;IGNORE;IGNORE;<U2080>
+<U2081> IGNORE;IGNORE;IGNORE;<U2081>
+<U2082> IGNORE;IGNORE;IGNORE;<U2082>
+<U2083> IGNORE;IGNORE;IGNORE;<U2083>
+<U2084> IGNORE;IGNORE;IGNORE;<U2084>
+<U2085> IGNORE;IGNORE;IGNORE;<U2085>
+<U2086> IGNORE;IGNORE;IGNORE;<U2086>
+<U2087> IGNORE;IGNORE;IGNORE;<U2087>
+<U2088> IGNORE;IGNORE;IGNORE;<U2088>
+<U2089> IGNORE;IGNORE;IGNORE;<U2089>
+<U208A> IGNORE;IGNORE;IGNORE;<U208A>
+<U208B> IGNORE;IGNORE;IGNORE;<U208B>
+<U208C> IGNORE;IGNORE;IGNORE;<U208C>
+<U208D> IGNORE;IGNORE;IGNORE;<U208D>
+<U208E> IGNORE;IGNORE;IGNORE;<U208E>
+<U20A3> IGNORE;IGNORE;IGNORE;<U20A3>
+<U20A4> IGNORE;IGNORE;IGNORE;<U20A4>
+<U20A7> IGNORE;IGNORE;IGNORE;<U20A7>
+<U20A9> IGNORE;IGNORE;IGNORE;<U20A9>
+<U2103> IGNORE;IGNORE;IGNORE;<U2103>
+<U2105> IGNORE;IGNORE;IGNORE;<U2105>
+<U2109> IGNORE;IGNORE;IGNORE;<U2109>
+<U2116> IGNORE;IGNORE;IGNORE;<U2116>
+<U2117> IGNORE;IGNORE;IGNORE;<U2117>
+<U211E> IGNORE;IGNORE;IGNORE;<U211E>
+<U2120> IGNORE;IGNORE;IGNORE;<U2120>
+<U2122> IGNORE;IGNORE;IGNORE;<U2122>
+<U2126> IGNORE;IGNORE;IGNORE;<U2126>
+<U212B> IGNORE;IGNORE;IGNORE;<U212B>
+<U2153> IGNORE;IGNORE;IGNORE;<U2153>
+<U2154> IGNORE;IGNORE;IGNORE;<U2154>
+<U2155> IGNORE;IGNORE;IGNORE;<U2155>
+<U2156> IGNORE;IGNORE;IGNORE;<U2156>
+<U2157> IGNORE;IGNORE;IGNORE;<U2157>
+<U2158> IGNORE;IGNORE;IGNORE;<U2158>
+<U2159> IGNORE;IGNORE;IGNORE;<U2159>
+<U215A> IGNORE;IGNORE;IGNORE;<U215A>
+<U2160> IGNORE;IGNORE;IGNORE;<U2160>
+<U2161> IGNORE;IGNORE;IGNORE;<U2161>
+<U2162> IGNORE;IGNORE;IGNORE;<U2162>
+<U2163> IGNORE;IGNORE;IGNORE;<U2163>
+<U2164> IGNORE;IGNORE;IGNORE;<U2164>
+<U2165> IGNORE;IGNORE;IGNORE;<U2165>
+<U2166> IGNORE;IGNORE;IGNORE;<U2166>
+<U2167> IGNORE;IGNORE;IGNORE;<U2167>
+<U2168> IGNORE;IGNORE;IGNORE;<U2168>
+<U2169> IGNORE;IGNORE;IGNORE;<U2169>
+<U216A> IGNORE;IGNORE;IGNORE;<U216A>
+<U216B> IGNORE;IGNORE;IGNORE;<U216B>
+<U216C> IGNORE;IGNORE;IGNORE;<U216C>
+<U216D> IGNORE;IGNORE;IGNORE;<U216D>
+<U216E> IGNORE;IGNORE;IGNORE;<U216E>
+<U216F> IGNORE;IGNORE;IGNORE;<U216F>
+<U2170> IGNORE;IGNORE;IGNORE;<U2170>
+<U2171> IGNORE;IGNORE;IGNORE;<U2171>
+<U2172> IGNORE;IGNORE;IGNORE;<U2172>
+<U2173> IGNORE;IGNORE;IGNORE;<U2173>
+<U2174> IGNORE;IGNORE;IGNORE;<U2174>
+<U2175> IGNORE;IGNORE;IGNORE;<U2175>
+<U2176> IGNORE;IGNORE;IGNORE;<U2176>
+<U2177> IGNORE;IGNORE;IGNORE;<U2177>
+<U2178> IGNORE;IGNORE;IGNORE;<U2178>
+<U2179> IGNORE;IGNORE;IGNORE;<U2179>
+<U217A> IGNORE;IGNORE;IGNORE;<U217A>
+<U217B> IGNORE;IGNORE;IGNORE;<U217B>
+<U217C> IGNORE;IGNORE;IGNORE;<U217C>
+<U217D> IGNORE;IGNORE;IGNORE;<U217D>
+<U217E> IGNORE;IGNORE;IGNORE;<U217E>
+<U217F> IGNORE;IGNORE;IGNORE;<U217F>
+<U2180> IGNORE;IGNORE;IGNORE;<U2180>
+<U2181> IGNORE;IGNORE;IGNORE;<U2181>
+<U2182> IGNORE;IGNORE;IGNORE;<U2182>
+<U2191> IGNORE;IGNORE;IGNORE;<U2191>
+<U2193> IGNORE;IGNORE;IGNORE;<U2193>
+<U2194> IGNORE;IGNORE;IGNORE;<U2194>
+<U2195> IGNORE;IGNORE;IGNORE;<U2195>
+<U2196> IGNORE;IGNORE;IGNORE;<U2196>
+<U2197> IGNORE;IGNORE;IGNORE;<U2197>
+<U2198> IGNORE;IGNORE;IGNORE;<U2198>
+<U2199> IGNORE;IGNORE;IGNORE;<U2199>
+<U21A8> IGNORE;IGNORE;IGNORE;<U21A8>
+<U21C0> IGNORE;IGNORE;IGNORE;<U21C0>
+<U21D0> IGNORE;IGNORE;IGNORE;<U21D0>
+<U21D2> IGNORE;IGNORE;IGNORE;<U21D2>
+<U21D4> IGNORE;IGNORE;IGNORE;<U21D4>
+<U2200> IGNORE;IGNORE;IGNORE;<U2200>
+<U2202> IGNORE;IGNORE;IGNORE;<U2202>
+<U2203> IGNORE;IGNORE;IGNORE;<U2203>
+<U2205> IGNORE;IGNORE;IGNORE;<U2205>
+<U2206> IGNORE;IGNORE;IGNORE;<U2206>
+<U2207> IGNORE;IGNORE;IGNORE;<U2207>
+<U2208> IGNORE;IGNORE;IGNORE;<U2208>
+<U220B> IGNORE;IGNORE;IGNORE;<U220B>
+<U220F> IGNORE;IGNORE;IGNORE;<U220F>
+<U2211> IGNORE;IGNORE;IGNORE;<U2211>
+<U2212> IGNORE;IGNORE;IGNORE;<U2212>
+<U2213> IGNORE;IGNORE;IGNORE;<U2213>
+<U2214> IGNORE;IGNORE;IGNORE;<U2214>
+<U2044> IGNORE;IGNORE;IGNORE;<U2044>
+<U2217> IGNORE;IGNORE;IGNORE;<U2217>
+<U2218> IGNORE;IGNORE;IGNORE;<U2218>
+<U2022> IGNORE;IGNORE;IGNORE;<U2022>
+<U221A> IGNORE;IGNORE;IGNORE;<U221A>
+<U221D> IGNORE;IGNORE;IGNORE;<U221D>
+<U221E> IGNORE;IGNORE;IGNORE;<U221E>
+<U221F> IGNORE;IGNORE;IGNORE;<U221F>
+<U2220> IGNORE;IGNORE;IGNORE;<U2220>
+<U2225> IGNORE;IGNORE;IGNORE;<U2225>
+<U2227> IGNORE;IGNORE;IGNORE;<U2227>
+<U2228> IGNORE;IGNORE;IGNORE;<U2228>
+<U2229> IGNORE;IGNORE;IGNORE;<U2229>
+<U222A> IGNORE;IGNORE;IGNORE;<U222A>
+<U222B> IGNORE;IGNORE;IGNORE;<U222B>
+<U222C> IGNORE;IGNORE;IGNORE;<U222C>
+<U222E> IGNORE;IGNORE;IGNORE;<U222E>
+<U2234> IGNORE;IGNORE;IGNORE;<U2234>
+<U2235> IGNORE;IGNORE;IGNORE;<U2235>
+<U2236> IGNORE;IGNORE;IGNORE;<U2236>
+<U2237> IGNORE;IGNORE;IGNORE;<U2237>
+<U223C> IGNORE;IGNORE;IGNORE;<U223C>
+<U223E> IGNORE;IGNORE;IGNORE;<U223E>
+<U2243> IGNORE;IGNORE;IGNORE;<U2243>
+<U2245> IGNORE;IGNORE;IGNORE;<U2245>
+<U2248> IGNORE;IGNORE;IGNORE;<U2248>
+<U224C> IGNORE;IGNORE;IGNORE;<U224C>
+<U2253> IGNORE;IGNORE;IGNORE;<U2253>
+<U2261> IGNORE;IGNORE;IGNORE;<U2261>
+<U226A> IGNORE;IGNORE;IGNORE;<U226A>
+<U226B> IGNORE;IGNORE;IGNORE;<U226B>
+<U226E> IGNORE;IGNORE;IGNORE;<U226E>
+<U226F> IGNORE;IGNORE;IGNORE;<U226F>
+<U2282> IGNORE;IGNORE;IGNORE;<U2282>
+<U2283> IGNORE;IGNORE;IGNORE;<U2283>
+<U2286> IGNORE;IGNORE;IGNORE;<U2286>
+<U2287> IGNORE;IGNORE;IGNORE;<U2287>
+<U2299> IGNORE;IGNORE;IGNORE;<U2299>
+<U229A> IGNORE;IGNORE;IGNORE;<U229A>
+<U22A5> IGNORE;IGNORE;IGNORE;<U22A5>
+<U22C5> IGNORE;IGNORE;IGNORE;<U22C5>
+<U22EE> IGNORE;IGNORE;IGNORE;<U22EE>
+<U2302> IGNORE;IGNORE;IGNORE;<U2302>
+<U2308> IGNORE;IGNORE;IGNORE;<U2308>
+<U2309> IGNORE;IGNORE;IGNORE;<U2309>
+<U230A> IGNORE;IGNORE;IGNORE;<U230A>
+<U230B> IGNORE;IGNORE;IGNORE;<U230B>
+<U2310> IGNORE;IGNORE;IGNORE;<U2310>
+<U2312> IGNORE;IGNORE;IGNORE;<U2312>
+<U2315> IGNORE;IGNORE;IGNORE;<U2315>
+<U2320> IGNORE;IGNORE;IGNORE;<U2320>
+<U2321> IGNORE;IGNORE;IGNORE;<U2321>
+<U2423> IGNORE;IGNORE;IGNORE;<U2423>
+<U2440> IGNORE;IGNORE;IGNORE;<U2440>
+<U2441> IGNORE;IGNORE;IGNORE;<U2441>
+<U2442> IGNORE;IGNORE;IGNORE;<U2442>
+<U2443> IGNORE;IGNORE;IGNORE;<U2443>
+<U2446> IGNORE;IGNORE;IGNORE;<U2446>
+<U2447> IGNORE;IGNORE;IGNORE;<U2447>
+<U2448> IGNORE;IGNORE;IGNORE;<U2448>
+<U2449> IGNORE;IGNORE;IGNORE;<U2449>
+<U2460> IGNORE;IGNORE;IGNORE;<U2460>
+<U2461> IGNORE;IGNORE;IGNORE;<U2461>
+<U2462> IGNORE;IGNORE;IGNORE;<U2462>
+<U2463> IGNORE;IGNORE;IGNORE;<U2463>
+<U2464> IGNORE;IGNORE;IGNORE;<U2464>
+<U2465> IGNORE;IGNORE;IGNORE;<U2465>
+<U2466> IGNORE;IGNORE;IGNORE;<U2466>
+<U2467> IGNORE;IGNORE;IGNORE;<U2467>
+<U2468> IGNORE;IGNORE;IGNORE;<U2468>
+<U2469> IGNORE;IGNORE;IGNORE;<U2469>
+<U246A> IGNORE;IGNORE;IGNORE;<U246A>
+<U246B> IGNORE;IGNORE;IGNORE;<U246B>
+<U246C> IGNORE;IGNORE;IGNORE;<U246C>
+<U246D> IGNORE;IGNORE;IGNORE;<U246D>
+<U246E> IGNORE;IGNORE;IGNORE;<U246E>
+<U246F> IGNORE;IGNORE;IGNORE;<U246F>
+<U2470> IGNORE;IGNORE;IGNORE;<U2470>
+<U2471> IGNORE;IGNORE;IGNORE;<U2471>
+<U2472> IGNORE;IGNORE;IGNORE;<U2472>
+<U2473> IGNORE;IGNORE;IGNORE;<U2473>
+<U2474> IGNORE;IGNORE;IGNORE;<U2474>
+<U2475> IGNORE;IGNORE;IGNORE;<U2475>
+<U2476> IGNORE;IGNORE;IGNORE;<U2476>
+<U2477> IGNORE;IGNORE;IGNORE;<U2477>
+<U2478> IGNORE;IGNORE;IGNORE;<U2478>
+<U2479> IGNORE;IGNORE;IGNORE;<U2479>
+<U247A> IGNORE;IGNORE;IGNORE;<U247A>
+<U247B> IGNORE;IGNORE;IGNORE;<U247B>
+<U247C> IGNORE;IGNORE;IGNORE;<U247C>
+<U247D> IGNORE;IGNORE;IGNORE;<U247D>
+<U247E> IGNORE;IGNORE;IGNORE;<U247E>
+<U247F> IGNORE;IGNORE;IGNORE;<U247F>
+<U2480> IGNORE;IGNORE;IGNORE;<U2480>
+<U2481> IGNORE;IGNORE;IGNORE;<U2481>
+<U2482> IGNORE;IGNORE;IGNORE;<U2482>
+<U2483> IGNORE;IGNORE;IGNORE;<U2483>
+<U2484> IGNORE;IGNORE;IGNORE;<U2484>
+<U2485> IGNORE;IGNORE;IGNORE;<U2485>
+<U2486> IGNORE;IGNORE;IGNORE;<U2486>
+<U2487> IGNORE;IGNORE;IGNORE;<U2487>
+<U2488> IGNORE;IGNORE;IGNORE;<U2488>
+<U2489> IGNORE;IGNORE;IGNORE;<U2489>
+<U248A> IGNORE;IGNORE;IGNORE;<U248A>
+<U248B> IGNORE;IGNORE;IGNORE;<U248B>
+<U248C> IGNORE;IGNORE;IGNORE;<U248C>
+<U248D> IGNORE;IGNORE;IGNORE;<U248D>
+<U248E> IGNORE;IGNORE;IGNORE;<U248E>
+<U248F> IGNORE;IGNORE;IGNORE;<U248F>
+<U2490> IGNORE;IGNORE;IGNORE;<U2490>
+<U2491> IGNORE;IGNORE;IGNORE;<U2491>
+<U2492> IGNORE;IGNORE;IGNORE;<U2492>
+<U2493> IGNORE;IGNORE;IGNORE;<U2493>
+<U2494> IGNORE;IGNORE;IGNORE;<U2494>
+<U2495> IGNORE;IGNORE;IGNORE;<U2495>
+<U2496> IGNORE;IGNORE;IGNORE;<U2496>
+<U2497> IGNORE;IGNORE;IGNORE;<U2497>
+<U2498> IGNORE;IGNORE;IGNORE;<U2498>
+<U2499> IGNORE;IGNORE;IGNORE;<U2499>
+<U249A> IGNORE;IGNORE;IGNORE;<U249A>
+<U249B> IGNORE;IGNORE;IGNORE;<U249B>
+<U24EA> IGNORE;IGNORE;IGNORE;<U24EA>
+<U2500> IGNORE;IGNORE;IGNORE;<U2500>
+<U2550> IGNORE;IGNORE;IGNORE;<U2550>
+<U2502> IGNORE;IGNORE;IGNORE;<U2502>
+<U2551> IGNORE;IGNORE;IGNORE;<U2551>
+<U2504> IGNORE;IGNORE;IGNORE;<U2504>
+<U2505> IGNORE;IGNORE;IGNORE;<U2505>
+<U2506> IGNORE;IGNORE;IGNORE;<U2506>
+<U2507> IGNORE;IGNORE;IGNORE;<U2507>
+<U2508> IGNORE;IGNORE;IGNORE;<U2508>
+<U2509> IGNORE;IGNORE;IGNORE;<U2509>
+<U250A> IGNORE;IGNORE;IGNORE;<U250A>
+<U250B> IGNORE;IGNORE;IGNORE;<U250B>
+<U250C> IGNORE;IGNORE;IGNORE;<U250C>
+<U2552> IGNORE;IGNORE;IGNORE;<U2552>
+<U2553> IGNORE;IGNORE;IGNORE;<U2553>
+<U2554> IGNORE;IGNORE;IGNORE;<U2554>
+<U2510> IGNORE;IGNORE;IGNORE;<U2510>
+<U2555> IGNORE;IGNORE;IGNORE;<U2555>
+<U2556> IGNORE;IGNORE;IGNORE;<U2556>
+<U2557> IGNORE;IGNORE;IGNORE;<U2557>
+<U2514> IGNORE;IGNORE;IGNORE;<U2514>
+<U2558> IGNORE;IGNORE;IGNORE;<U2558>
+<U2559> IGNORE;IGNORE;IGNORE;<U2559>
+<U255A> IGNORE;IGNORE;IGNORE;<U255A>
+<U2518> IGNORE;IGNORE;IGNORE;<U2518>
+<U255B> IGNORE;IGNORE;IGNORE;<U255B>
+<U255C> IGNORE;IGNORE;IGNORE;<U255C>
+<U255D> IGNORE;IGNORE;IGNORE;<U255D>
+<U251C> IGNORE;IGNORE;IGNORE;<U251C>
+<U255E> IGNORE;IGNORE;IGNORE;<U255E>
+<U251E> IGNORE;IGNORE;IGNORE;<U251E>
+<U251F> IGNORE;IGNORE;IGNORE;<U251F>
+<U255F> IGNORE;IGNORE;IGNORE;<U255F>
+<U2521> IGNORE;IGNORE;IGNORE;<U2521>
+<U2522> IGNORE;IGNORE;IGNORE;<U2522>
+<U2560> IGNORE;IGNORE;IGNORE;<U2560>
+<U2524> IGNORE;IGNORE;IGNORE;<U2524>
+<U2561> IGNORE;IGNORE;IGNORE;<U2561>
+<U2526> IGNORE;IGNORE;IGNORE;<U2526>
+<U2527> IGNORE;IGNORE;IGNORE;<U2527>
+<U2562> IGNORE;IGNORE;IGNORE;<U2562>
+<U2529> IGNORE;IGNORE;IGNORE;<U2529>
+<U252A> IGNORE;IGNORE;IGNORE;<U252A>
+<U2563> IGNORE;IGNORE;IGNORE;<U2563>
+<U252C> IGNORE;IGNORE;IGNORE;<U252C>
+<U252D> IGNORE;IGNORE;IGNORE;<U252D>
+<U252E> IGNORE;IGNORE;IGNORE;<U252E>
+<U2564> IGNORE;IGNORE;IGNORE;<U2564>
+<U2565> IGNORE;IGNORE;IGNORE;<U2565>
+<U2531> IGNORE;IGNORE;IGNORE;<U2531>
+<U2532> IGNORE;IGNORE;IGNORE;<U2532>
+<U2566> IGNORE;IGNORE;IGNORE;<U2566>
+<U2534> IGNORE;IGNORE;IGNORE;<U2534>
+<U2535> IGNORE;IGNORE;IGNORE;<U2535>
+<U2536> IGNORE;IGNORE;IGNORE;<U2536>
+<U2567> IGNORE;IGNORE;IGNORE;<U2567>
+<U2568> IGNORE;IGNORE;IGNORE;<U2568>
+<U2539> IGNORE;IGNORE;IGNORE;<U2539>
+<U253A> IGNORE;IGNORE;IGNORE;<U253A>
+<U2569> IGNORE;IGNORE;IGNORE;<U2569>
+<U253C> IGNORE;IGNORE;IGNORE;<U253C>
+<U253D> IGNORE;IGNORE;IGNORE;<U253D>
+<U253E> IGNORE;IGNORE;IGNORE;<U253E>
+<U256A> IGNORE;IGNORE;IGNORE;<U256A>
+<U2540> IGNORE;IGNORE;IGNORE;<U2540>
+<U2541> IGNORE;IGNORE;IGNORE;<U2541>
+<U256B> IGNORE;IGNORE;IGNORE;<U256B>
+<U2543> IGNORE;IGNORE;IGNORE;<U2543>
+<U2544> IGNORE;IGNORE;IGNORE;<U2544>
+<U2545> IGNORE;IGNORE;IGNORE;<U2545>
+<U2546> IGNORE;IGNORE;IGNORE;<U2546>
+<U2547> IGNORE;IGNORE;IGNORE;<U2547>
+<U2548> IGNORE;IGNORE;IGNORE;<U2548>
+<U2549> IGNORE;IGNORE;IGNORE;<U2549>
+<U254A> IGNORE;IGNORE;IGNORE;<U254A>
+<U256C> IGNORE;IGNORE;IGNORE;<U256C>
+<U2571> IGNORE;IGNORE;IGNORE;<U2571>
+<U2572> IGNORE;IGNORE;IGNORE;<U2572>
+<U2580> IGNORE;IGNORE;IGNORE;<U2580>
+<U2584> IGNORE;IGNORE;IGNORE;<U2584>
+<U2588> IGNORE;IGNORE;IGNORE;<U2588>
+<U258C> IGNORE;IGNORE;IGNORE;<U258C>
+<U2590> IGNORE;IGNORE;IGNORE;<U2590>
+<U2591> IGNORE;IGNORE;IGNORE;<U2591>
+<U2592> IGNORE;IGNORE;IGNORE;<U2592>
+<U2593> IGNORE;IGNORE;IGNORE;<U2593>
+<U25A0> IGNORE;IGNORE;IGNORE;<U25A0>
+<U25A1> IGNORE;IGNORE;IGNORE;<U25A1>
+<U25A2> IGNORE;IGNORE;IGNORE;<U25A2>
+<U25A3> IGNORE;IGNORE;IGNORE;<U25A3>
+<U25A4> IGNORE;IGNORE;IGNORE;<U25A4>
+<U25A5> IGNORE;IGNORE;IGNORE;<U25A5>
+<U25A6> IGNORE;IGNORE;IGNORE;<U25A6>
+<U25A7> IGNORE;IGNORE;IGNORE;<U25A7>
+<U25A8> IGNORE;IGNORE;IGNORE;<U25A8>
+<U25A9> IGNORE;IGNORE;IGNORE;<U25A9>
+<U25AA> IGNORE;IGNORE;IGNORE;<U25AA>
+<U25AC> IGNORE;IGNORE;IGNORE;<U25AC>
+<U25AD> IGNORE;IGNORE;IGNORE;<U25AD>
+<U25B2> IGNORE;IGNORE;IGNORE;<U25B2>
+<U25B3> IGNORE;IGNORE;IGNORE;<U25B3>
+<U25B7> IGNORE;IGNORE;IGNORE;<U25B7>
+<U25BA> IGNORE;IGNORE;IGNORE;<U25BA>
+<U25BC> IGNORE;IGNORE;IGNORE;<U25BC>
+<U25BD> IGNORE;IGNORE;IGNORE;<U25BD>
+<U25C1> IGNORE;IGNORE;IGNORE;<U25C1>
+<U25C4> IGNORE;IGNORE;IGNORE;<U25C4>
+<U25C6> IGNORE;IGNORE;IGNORE;<U25C6>
+<U25C7> IGNORE;IGNORE;IGNORE;<U25C7>
+<U25CA> IGNORE;IGNORE;IGNORE;<U25CA>
+<U25CB> IGNORE;IGNORE;IGNORE;<U25CB>
+<U25CE> IGNORE;IGNORE;IGNORE;<U25CE>
+<U25CF> IGNORE;IGNORE;IGNORE;<U25CF>
+<U25D0> IGNORE;IGNORE;IGNORE;<U25D0>
+<U25D1> IGNORE;IGNORE;IGNORE;<U25D1>
+<U25D8> IGNORE;IGNORE;IGNORE;<U25D8>
+<U25D9> IGNORE;IGNORE;IGNORE;<U25D9>
+<U25E2> IGNORE;IGNORE;IGNORE;<U25E2>
+<U25E3> IGNORE;IGNORE;IGNORE;<U25E3>
+<U25EF> IGNORE;IGNORE;IGNORE;<U25EF>
+<U2605> IGNORE;IGNORE;IGNORE;<U2605>
+<U2606> IGNORE;IGNORE;IGNORE;<U2606>
+<U260E> IGNORE;IGNORE;IGNORE;<U260E>
+<U260F> IGNORE;IGNORE;IGNORE;<U260F>
+<U261C> IGNORE;IGNORE;IGNORE;<U261C>
+<U261E> IGNORE;IGNORE;IGNORE;<U261E>
+<U263A> IGNORE;IGNORE;IGNORE;<U263A>
+<U263B> IGNORE;IGNORE;IGNORE;<U263B>
+<U263C> IGNORE;IGNORE;IGNORE;<U263C>
+<U2640> IGNORE;IGNORE;IGNORE;<U2640>
+<U2642> IGNORE;IGNORE;IGNORE;<U2642>
+<U2660> IGNORE;IGNORE;IGNORE;<U2660>
+<U2661> IGNORE;IGNORE;IGNORE;<U2661>
+<U2662> IGNORE;IGNORE;IGNORE;<U2662>
+<U2663> IGNORE;IGNORE;IGNORE;<U2663>
+<U2664> IGNORE;IGNORE;IGNORE;<U2664>
+<U2665> IGNORE;IGNORE;IGNORE;<U2665>
+<U2666> IGNORE;IGNORE;IGNORE;<U2666>
+<U2667> IGNORE;IGNORE;IGNORE;<U2667>
+<U2669> IGNORE;IGNORE;IGNORE;<U2669>
+<U266A> IGNORE;IGNORE;IGNORE;<U266A>
+<U266B> IGNORE;IGNORE;IGNORE;<U266B>
+<U266C> IGNORE;IGNORE;IGNORE;<U266C>
+<U266D> IGNORE;IGNORE;IGNORE;<U266D>
+<U266E> IGNORE;IGNORE;IGNORE;<U266E>
+<U266F> IGNORE;IGNORE;IGNORE;<U266F>
+<U2713> IGNORE;IGNORE;IGNORE;<U2713>
+<U2717> IGNORE;IGNORE;IGNORE;<U2717>
+<U2720> IGNORE;IGNORE;IGNORE;<U2720>
+<U3000> IGNORE;IGNORE;IGNORE;<U3000>
+<U3001> IGNORE;IGNORE;IGNORE;<U3001>
+<U3002> IGNORE;IGNORE;IGNORE;<U3002>
+<U3003> IGNORE;IGNORE;IGNORE;<U3003>
+<U3004> IGNORE;IGNORE;IGNORE;<U3004>
+<U3005> IGNORE;IGNORE;IGNORE;<U3005>
+<U3006> IGNORE;IGNORE;IGNORE;<U3006>
+<U3007> IGNORE;IGNORE;IGNORE;<U3007>
+<U300A> IGNORE;IGNORE;IGNORE;<U300A>
+<U300B> IGNORE;IGNORE;IGNORE;<U300B>
+<U300C> IGNORE;IGNORE;IGNORE;<U300C>
+<U300D> IGNORE;IGNORE;IGNORE;<U300D>
+<U300E> IGNORE;IGNORE;IGNORE;<U300E>
+<U300F> IGNORE;IGNORE;IGNORE;<U300F>
+<U3010> IGNORE;IGNORE;IGNORE;<U3010>
+<U3011> IGNORE;IGNORE;IGNORE;<U3011>
+<U3012> IGNORE;IGNORE;IGNORE;<U3012>
+<U3013> IGNORE;IGNORE;IGNORE;<U3013>
+<U3014> IGNORE;IGNORE;IGNORE;<U3014>
+<U3015> IGNORE;IGNORE;IGNORE;<U3015>
+<U3016> IGNORE;IGNORE;IGNORE;<U3016>
+<U3017> IGNORE;IGNORE;IGNORE;<U3017>
+<U301C> IGNORE;IGNORE;IGNORE;<U301C>
+<U3020> IGNORE;IGNORE;IGNORE;<U3020>
+<U309B> IGNORE;IGNORE;IGNORE;<U309B>
+<U309C> IGNORE;IGNORE;IGNORE;<U309C>
+<U309D> IGNORE;IGNORE;IGNORE;<U309D>
+<U309E> IGNORE;IGNORE;IGNORE;<U309E>
+<U30FB> IGNORE;IGNORE;IGNORE;<U30FB>
+<U30FC> IGNORE;IGNORE;IGNORE;<U30FC>
+<U30FD> IGNORE;IGNORE;IGNORE;<U30FD>
+<U30FE> IGNORE;IGNORE;IGNORE;<U30FE>
+<U321C> IGNORE;IGNORE;IGNORE;<U321C>
+<U3220> IGNORE;IGNORE;IGNORE;<U3220>
+<U3221> IGNORE;IGNORE;IGNORE;<U3221>
+<U3222> IGNORE;IGNORE;IGNORE;<U3222>
+<U3223> IGNORE;IGNORE;IGNORE;<U3223>
+<U3224> IGNORE;IGNORE;IGNORE;<U3224>
+<U3225> IGNORE;IGNORE;IGNORE;<U3225>
+<U3226> IGNORE;IGNORE;IGNORE;<U3226>
+<U3227> IGNORE;IGNORE;IGNORE;<U3227>
+<U3228> IGNORE;IGNORE;IGNORE;<U3228>
+<U3229> IGNORE;IGNORE;IGNORE;<U3229>
+<U327F> IGNORE;IGNORE;IGNORE;<U327F>
+<U33C2> IGNORE;IGNORE;IGNORE;<U33C2>
+<U33D8> IGNORE;IGNORE;IGNORE;<U33D8>
+<U0000> IGNORE;IGNORE;IGNORE;<U0000>
+<U0001> IGNORE;IGNORE;IGNORE;<U0001>
+<U0002> IGNORE;IGNORE;IGNORE;<U0002>
+<U0003> IGNORE;IGNORE;IGNORE;<U0003>
+<U0004> IGNORE;IGNORE;IGNORE;<U0004>
+<U0005> IGNORE;IGNORE;IGNORE;<U0005>
+<U0006> IGNORE;IGNORE;IGNORE;<U0006>
+<U0007> IGNORE;IGNORE;IGNORE;<U0007>
+<U0008> IGNORE;IGNORE;IGNORE;<U0008>
+<U000E> IGNORE;IGNORE;IGNORE;<U000E>
+<U000F> IGNORE;IGNORE;IGNORE;<U000F>
+<U0010> IGNORE;IGNORE;IGNORE;<U0010>
+<U0011> IGNORE;IGNORE;IGNORE;<U0011>
+<U0012> IGNORE;IGNORE;IGNORE;<U0012>
+<U0013> IGNORE;IGNORE;IGNORE;<U0013>
+<U0014> IGNORE;IGNORE;IGNORE;<U0014>
+<U0015> IGNORE;IGNORE;IGNORE;<U0015>
+<U0016> IGNORE;IGNORE;IGNORE;<U0016>
+<U0017> IGNORE;IGNORE;IGNORE;<U0017>
+<U0018> IGNORE;IGNORE;IGNORE;<U0018>
+<U0019> IGNORE;IGNORE;IGNORE;<U0019>
+<U001A> IGNORE;IGNORE;IGNORE;<U001A>
+<U001B> IGNORE;IGNORE;IGNORE;<U001B>
+<U001C> IGNORE;IGNORE;IGNORE;<U001C>
+<U001D> IGNORE;IGNORE;IGNORE;<U001D>
+<U001E> IGNORE;IGNORE;IGNORE;<U001E>
+<U001F> IGNORE;IGNORE;IGNORE;<U001F>
+<U007F> IGNORE;IGNORE;IGNORE;<U007F>
+<U0080> IGNORE;IGNORE;IGNORE;<U0080>
+<U0081> IGNORE;IGNORE;IGNORE;<U0081>
+<U0082> IGNORE;IGNORE;IGNORE;<U0082>
+<U0083> IGNORE;IGNORE;IGNORE;<U0083>
+<U0084> IGNORE;IGNORE;IGNORE;<U0084>
+<U0085> IGNORE;IGNORE;IGNORE;<U0085>
+<U0086> IGNORE;IGNORE;IGNORE;<U0086>
+<U0087> IGNORE;IGNORE;IGNORE;<U0087>
+<U0088> IGNORE;IGNORE;IGNORE;<U0088>
+<U0089> IGNORE;IGNORE;IGNORE;<U0089>
+<U008A> IGNORE;IGNORE;IGNORE;<U008A>
+<U008B> IGNORE;IGNORE;IGNORE;<U008B>
+<U008C> IGNORE;IGNORE;IGNORE;<U008C>
+<U008D> IGNORE;IGNORE;IGNORE;<U008D>
+<U008E> IGNORE;IGNORE;IGNORE;<U008E>
+<U008F> IGNORE;IGNORE;IGNORE;<U008F>
+<U0090> IGNORE;IGNORE;IGNORE;<U0090>
+<U0091> IGNORE;IGNORE;IGNORE;<U0091>
+<U0092> IGNORE;IGNORE;IGNORE;<U0092>
+<U0093> IGNORE;IGNORE;IGNORE;<U0093>
+<U0094> IGNORE;IGNORE;IGNORE;<U0094>
+<U0095> IGNORE;IGNORE;IGNORE;<U0095>
+<U0096> IGNORE;IGNORE;IGNORE;<U0096>
+<U0097> IGNORE;IGNORE;IGNORE;<U0097>
+<U0098> IGNORE;IGNORE;IGNORE;<U0098>
+<U0099> IGNORE;IGNORE;IGNORE;<U0099>
+<U009A> IGNORE;IGNORE;IGNORE;<U009A>
+<U009B> IGNORE;IGNORE;IGNORE;<U009B>
+<U009C> IGNORE;IGNORE;IGNORE;<U009C>
+<U009D> IGNORE;IGNORE;IGNORE;<U009D>
+<U009E> IGNORE;IGNORE;IGNORE;<U009E>
+<U009F> IGNORE;IGNORE;IGNORE;<U009F>
+<UE000> IGNORE;IGNORE;IGNORE;<UE000>
+<UE001> IGNORE;IGNORE;IGNORE;<UE001>
+<UE002> IGNORE;IGNORE;IGNORE;<UE002>
+<U0301> IGNORE;IGNORE;IGNORE;<U0301>
+<UE004> IGNORE;IGNORE;IGNORE;<UE004>
+<UE005> IGNORE;IGNORE;IGNORE;<UE005>
+<UE006> IGNORE;IGNORE;IGNORE;<UE006>
+<UE007> IGNORE;IGNORE;IGNORE;<UE007>
+<UE008> IGNORE;IGNORE;IGNORE;<UE008>
+<UE009> IGNORE;IGNORE;IGNORE;<UE009>
+<UE00A> IGNORE;IGNORE;IGNORE;<UE00A>
+<UE00B> IGNORE;IGNORE;IGNORE;<UE00B>
+<UE00C> IGNORE;IGNORE;IGNORE;<UE00C>
+<UE00D> IGNORE;IGNORE;IGNORE;<UE00D>
+<UE00E> IGNORE;IGNORE;IGNORE;<UE00E>
+<UE00F> IGNORE;IGNORE;IGNORE;<UE00F>
+<"=> IGNORE;IGNORE;IGNORE;<"=>
+<UE011> IGNORE;IGNORE;IGNORE;<UE011>
+<UE012> IGNORE;IGNORE;IGNORE;<UE012>
+<UE013> IGNORE;IGNORE;IGNORE;<UE013>
+<UE014> IGNORE;IGNORE;IGNORE;<UE014>
+<UE015> IGNORE;IGNORE;IGNORE;<UE015>
+<UE017> IGNORE;IGNORE;IGNORE;<UE017>
+<UE018> IGNORE;IGNORE;IGNORE;<UE018>
+<UE019> IGNORE;IGNORE;IGNORE;<UE019>
+UNDEFINED IGNORE;IGNORE;IGNORE
+
+<U0030> <U0030>;<U0030>;IGNORE;IGNORE
+<U2070> <U0030>;<U2070>;IGNORE;IGNORE
+<U215B> <U0030>;<U215B>;IGNORE;IGNORE
+<U00BC> <U0030>;<U00BC>;IGNORE;IGNORE
+<U215C> <U0030>;<U215C>;IGNORE;IGNORE
+<U00BD> <U0030>;<U00BD>;IGNORE;IGNORE
+<U215D> <U0030>;<U215D>;IGNORE;IGNORE
+<U00BE> <U0030>;<U00BE>;IGNORE;IGNORE
+<U215E> <U0030>;<U215E>;IGNORE;IGNORE
+<U0031> <U0031>;<U0031>;IGNORE;IGNORE
+<U0032> <U0032>;<U0032>;IGNORE;IGNORE
+<U0033> <U0033>;<U0033>;IGNORE;IGNORE
+<U0034> <U0034>;<U0034>;IGNORE;IGNORE
+<U0035> <U0035>;<U0035>;IGNORE;IGNORE
+<U0036> <U0036>;<U0036>;IGNORE;IGNORE
+<U0037> <U0037>;<U0037>;IGNORE;IGNORE
+<U0038> <U0038>;<U0038>;IGNORE;IGNORE
+<U0039> <U0039>;<U0039>;IGNORE;IGNORE
+<U00B9> <U0031>;<U00B9>;IGNORE;IGNORE
+<U00B2> <U0032>;<U00B2>;IGNORE;IGNORE
+<U00B3> <U0033>;<U00B3>;IGNORE;IGNORE
+<U2074> <U0034>;<U2074>;IGNORE;IGNORE
+<U2075> <U0035>;<U2075>;IGNORE;IGNORE
+<U2076> <U0036>;<U2076>;IGNORE;IGNORE
+<U2077> <U0037>;<U2077>;IGNORE;IGNORE
+<U2078> <U0038>;<U2078>;IGNORE;IGNORE
+<U2079> <U0039>;<U2079>;IGNORE;IGNORE
+<U0041> <U0041>;<NONE>;<CAPITAL>;IGNORE
+<U0061> <U0041>;<NONE>;<SMALL>;IGNORE
+<U00AA> <U0041>;<NONE>;<U00AA>;IGNORE
+<U00C1> <U0041>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E1> <U0041>;<ACUTE>;<SMALL>;IGNORE
+<U00C0> <U0041>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E0> <U0041>;<GRAVE>;<SMALL>;IGNORE
+<U0200> <U0041>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0201> <U0041>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0102> <U0041>;<BREVE>;<CAPITAL>;IGNORE
+<U0103> <U0041>;<BREVE>;<SMALL>;IGNORE
+<U1EAE> <U0041>;<BREVE+ACUTE>;<CAPITAL>;IGNORE
+<U1EAF> <U0041>;<BREVE+ACUTE>;<SMALL>;IGNORE
+<U1EB0> <U0041>;<BREVE+GRAVE>;<CAPITAL>;IGNORE
+<U1EB1> <U0041>;<BREVE+GRAVE>;<SMALL>;IGNORE
+<U1EB2> <U0041>;<BREVE+HOOK>;<CAPITAL>;IGNORE
+<U1EB3> <U0041>;<BREVE+HOOK>;<SMALL>;IGNORE
+<U1EB4> <U0041>;<BREVE+TILDE>;<CAPITAL>;IGNORE
+<U1EB5> <U0041>;<BREVE+TILDE>;<SMALL>;IGNORE
+<U1EB6> <U0041>;<BREVE+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB7> <U0041>;<BREVE+DOT-BELOW>;<SMALL>;IGNORE
+<U0202> <U0041>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0203> <U0041>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00C2> <U0041>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00E2> <U0041>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EA4> <U0041>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EA5> <U0041>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EA6> <U0041>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EA7> <U0041>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EA8> <U0041>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EA9> <U0041>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EAA> <U0041>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EAB> <U0041>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EAC> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EAD> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01CD> <U0041>;<CARON>;<CAPITAL>;IGNORE
+<U01CE> <U0041>;<CARON>;<SMALL>;IGNORE
+<U00C5> <U0041>;<RING>;<CAPITAL>;IGNORE
+<U00E5> <U0041>;<RING>;<SMALL>;IGNORE
+<U01FA> <U0041>;<RING+ACUTE>;<CAPITAL>;IGNORE
+<U01FB> <U0041>;<RING+ACUTE>;<SMALL>;IGNORE
+<U1E00> <U0041>;<RING-BELOW>;<CAPITAL>;IGNORE
+<U1E01> <U0041>;<RING-BELOW>;<SMALL>;IGNORE
+<U00C4> <U0041>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00E4> <U0041>;<DIAERESIS>;<SMALL>;IGNORE
+<U01DE> <U0041>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01DF> <U0041>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U1EA2> <U0041>;<HOOK>;<CAPITAL>;IGNORE
+<U1EA3> <U0041>;<HOOK>;<SMALL>;IGNORE
+<U00C3> <U0041>;<TILDE>;<CAPITAL>;IGNORE
+<U00E3> <U0041>;<TILDE>;<SMALL>;IGNORE
+<U1EA0> <U0041>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EA1> <U0041>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0104> <U0041>;<OGONEK>;<CAPITAL>;IGNORE
+<U0105> <U0041>;<OGONEK>;<SMALL>;IGNORE
+<U0100> <U0041>;<MACRON>;<CAPITAL>;IGNORE
+<U0101> <U0041>;<MACRON>;<SMALL>;IGNORE
+<U01E0> <U0041>;<MACRON+DOT>;<CAPITAL>;IGNORE
+<U01E1> <U0041>;<MACRON+DOT>;<SMALL>;IGNORE
+<a8>
+<U00C6> "<U0041><U0045>";"<U00C6><U00C6>";"<CAPITAL><CAPITAL>";IGNORE
+<U00E6> "<U0041><U0045>";"<U00C6><U00C6>";"<SMALL><SMALL>";IGNORE
+<U01FC> "<U0041><U0045>";"<U01FC><U01FC>";"<CAPITAL><CAPITAL>";IGNORE
+<U01FD> "<U0041><U0045>";"<U01FC><U01FC>";"<SMALL><SMALL>";IGNORE
+<U01E2> "<U0041><U0045>";"<U01E2><U01E2>";"<CAPITAL><CAPITAL>";IGNORE
+<U01E3> "<U0041><U0045>";"<U01E2><U01E2>";"<SMALL><SMALL>";IGNORE
+<U0042> <U0042>;<NONE>;<CAPITAL>;IGNORE
+<U0062> <U0042>;<NONE>;<SMALL>;IGNORE
+<U1E02> <U0042>;<DOT>;<CAPITAL>;IGNORE
+<U1E03> <U0042>;<DOT>;<SMALL>;IGNORE
+<U1E04> <U0042>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E05> <U0042>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E06> <U0042>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E07> <U0042>;<LINE-BELOW>;<SMALL>;IGNORE
+<b8>
+<U0043> <U0043>;<NONE>;<CAPITAL>;IGNORE
+<U0063> <U0043>;<NONE>;<SMALL>;IGNORE
+<U0106> <U0043>;<ACUTE>;<CAPITAL>;IGNORE
+<U0107> <U0043>;<ACUTE>;<SMALL>;IGNORE
+<U0108> <U0043>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0109> <U0043>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U010C> <U0043>;<CARON>;<CAPITAL>;IGNORE
+<U010D> <U0043>;<CARON>;<SMALL>;IGNORE
+<U0187> <U0043>;<HOOK>;<CAPITAL>;IGNORE
+<U0188> <U0043>;<HOOK>;<SMALL>;IGNORE
+<U010A> <U0043>;<DOT>;<CAPITAL>;IGNORE
+<U010B> <U0043>;<DOT>;<SMALL>;IGNORE
+<U00C7> <U0043>;<CEDILLA>;<CAPITAL>;IGNORE
+<U00E7> <U0043>;<CEDILLA>;<SMALL>;IGNORE
+<U1E08> <U0043>;<CEDILLA+ACUTE>;<CAPITAL>;IGNORE
+<U1E09> <U0043>;<CEDILLA+ACUTE>;<SMALL>;IGNORE
+<c8>
+<U0044> <U0044>;<NONE>;<CAPITAL>;IGNORE
+<U0064> <U0044>;<NONE>;<SMALL>;IGNORE
+<U010E> <U0044>;<CARON>;<CAPITAL>;IGNORE
+<U010F> <U0044>;<CARON>;<SMALL>;IGNORE
+<U1E0A> <U0044>;<DOT>;<CAPITAL>;IGNORE
+<U1E0B> <U0044>;<DOT>;<SMALL>;IGNORE
+<U1E0C> <U0044>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E0D> <U0044>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0110> <U0044>;<STROKE>;<CAPITAL>;IGNORE
+<U0111> <U0044>;<STROKE>;<SMALL>;IGNORE
+<U1E10> <U0044>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E11> <U0044>;<CEDILLA>;<SMALL>;IGNORE
+<U1E12> <U0044>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E13> <U0044>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E0E> <U0044>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E0F> <U0044>;<LINE-BELOW>;<SMALL>;IGNORE
+<d8>
+<U0045> <U0045>;<NONE>;<CAPITAL>;IGNORE
+<U0065> <U0045>;<NONE>;<SMALL>;IGNORE
+<U00C9> <U0045>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E9> <U0045>;<ACUTE>;<SMALL>;IGNORE
+<U00C8> <U0045>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E8> <U0045>;<GRAVE>;<SMALL>;IGNORE
+<U0204> <U0045>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0205> <U0045>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0114> <U0045>;<BREVE>;<CAPITAL>;IGNORE
+<U0115> <U0045>;<BREVE>;<SMALL>;IGNORE
+<U0206> <U0045>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0207> <U0045>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CA> <U0045>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EA> <U0045>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EBE> <U0045>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EBF> <U0045>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EC0> <U0045>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EC1> <U0045>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EC2> <U0045>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EC3> <U0045>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EC4> <U0045>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EC5> <U0045>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EC6> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EC7> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U011A> <U0045>;<CARON>;<CAPITAL>;IGNORE
+<U011B> <U0045>;<CARON>;<SMALL>;IGNORE
+<U00CB> <U0045>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EB> <U0045>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EBA> <U0045>;<HOOK>;<CAPITAL>;IGNORE
+<U1EBB> <U0045>;<HOOK>;<SMALL>;IGNORE
+<U1EBC> <U0045>;<TILDE>;<CAPITAL>;IGNORE
+<U1EBD> <U0045>;<TILDE>;<SMALL>;IGNORE
+<U1E1A> <U0045>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E1B> <U0045>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0116> <U0045>;<DOT>;<CAPITAL>;IGNORE
+<U0117> <U0045>;<DOT>;<SMALL>;IGNORE
+<U1EB8> <U0045>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB9> <U0045>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E1C> <U0045>;<CEDILLA+BREVE>;<CAPITAL>;IGNORE
+<U1E1D> <U0045>;<CEDILLA+BREVE>;<SMALL>;IGNORE
+<U0118> <U0045>;<OGONEK>;<CAPITAL>;IGNORE
+<U0119> <U0045>;<OGONEK>;<SMALL>;IGNORE
+<U0112> <U0045>;<MACRON>;<CAPITAL>;IGNORE
+<U0113> <U0045>;<MACRON>;<SMALL>;IGNORE
+<U1E16> <U0045>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E17> <U0045>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E14> <U0045>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E15> <U0045>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U1E18> <U0045>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E19> <U0045>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<e8>
+<U0046> <U0046>;<NONE>;<CAPITAL>;IGNORE
+<U0066> <U0046>;<NONE>;<SMALL>;IGNORE
+<U0191> <U0046>;<HOOK>;<CAPITAL>;IGNORE
+<U0192> <U0046>;<HOOK>;<SMALL>;IGNORE
+<U1E1E> <U0046>;<DOT>;<CAPITAL>;IGNORE
+<U1E1F> <U0046>;<DOT>;<SMALL>;IGNORE
+<f8>
+<UFB00> "<U0046><U0046>";"<NONE><NONE>";"<UFB00><UFB00>";IGNORE
+<UFB01> "<U0046><U0049>";"<NONE><NONE>";"<UFB01><UFB01>";IGNORE
+<UFB02> "<U0046><U004C>";"<NONE><NONE>";"<UFB02><UFB02>";IGNORE
+<UFB03> "<U0046><U0046><U0049>";"<NONE><NONE><NONE>";"<UFB03><UFB03><UFB03>";IGNORE
+<UFB04> "<U0046><U0046><U004C>";"<NONE><NONE><NONE>";"<UFB04><UFB04><UFB04>";IGNORE
+<U0047> <U0047>;<NONE>;<CAPITAL>;IGNORE
+<U0067> <U0047>;<NONE>;<SMALL>;IGNORE
+<U01F4> <U0047>;<ACUTE>;<CAPITAL>;IGNORE
+<U01F5> <U0047>;<ACUTE>;<SMALL>;IGNORE
+<U011E> <U0047>;<BREVE>;<CAPITAL>;IGNORE
+<U011F> <U0047>;<BREVE>;<SMALL>;IGNORE
+<U011C> <U0047>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U011D> <U0047>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01E6> <U0047>;<CARON>;<CAPITAL>;IGNORE
+<U01E7> <U0047>;<CARON>;<SMALL>;IGNORE
+<U0120> <U0047>;<DOT>;<CAPITAL>;IGNORE
+<U0121> <U0047>;<DOT>;<SMALL>;IGNORE
+<U01E4> <U0047>;<STROKE>;<CAPITAL>;IGNORE
+<U01E5> <U0047>;<STROKE>;<SMALL>;IGNORE
+<U0122> <U0047>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0123> <U0047>;<CEDILLA>;<SMALL>;IGNORE
+<U1E20> <U0047>;<MACRON>;<CAPITAL>;IGNORE
+<U1E21> <U0047>;<MACRON>;<SMALL>;IGNORE
+<g8>
+<U0048> <U0048>;<NONE>;<CAPITAL>;IGNORE
+<U0068> <U0048>;<NONE>;<SMALL>;IGNORE
+<U1E2A> <U0048>;<BREVE-BELOW>;<CAPITAL>;IGNORE
+<U1E2B> <U0048>;<BREVE-BELOW>;<SMALL>;IGNORE
+<U0124> <U0048>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0125> <U0048>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E26> <U0048>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E27> <U0048>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E22> <U0048>;<DOT>;<CAPITAL>;IGNORE
+<U1E23> <U0048>;<DOT>;<SMALL>;IGNORE
+<U1E24> <U0048>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E25> <U0048>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0126> <U0048>;<STROKE>;<CAPITAL>;IGNORE
+<U0127> <U0048>;<STROKE>;<SMALL>;IGNORE
+<U1E28> <U0048>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E29> <U0048>;<CEDILLA>;<SMALL>;IGNORE
+<h8>
+<U0049> <U0049>;<NONE>;<CAPITAL>;IGNORE
+<U0069> <U0049>;<NONE>;<SMALL>;IGNORE
+<U00CD> <U0049>;<ACUTE>;<CAPITAL>;IGNORE
+<U00ED> <U0049>;<ACUTE>;<SMALL>;IGNORE
+<U00CC> <U0049>;<GRAVE>;<CAPITAL>;IGNORE
+<U00EC> <U0049>;<GRAVE>;<SMALL>;IGNORE
+<U0208> <U0049>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0209> <U0049>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U012C> <U0049>;<BREVE>;<CAPITAL>;IGNORE
+<U012D> <U0049>;<BREVE>;<SMALL>;IGNORE
+<U020A> <U0049>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020B> <U0049>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CE> <U0049>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EE> <U0049>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01CF> <U0049>;<CARON>;<CAPITAL>;IGNORE
+<U01D0> <U0049>;<CARON>;<SMALL>;IGNORE
+<U00CF> <U0049>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EF> <U0049>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E2E> <U0049>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U1E2F> <U0049>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U1EC8> <U0049>;<HOOK>;<CAPITAL>;IGNORE
+<U1EC9> <U0049>;<HOOK>;<SMALL>;IGNORE
+<U0128> <U0049>;<TILDE>;<CAPITAL>;IGNORE
+<U0129> <U0049>;<TILDE>;<SMALL>;IGNORE
+<U1E2C> <U0049>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E2D> <U0049>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0130> <U0049>;<DOT>;<CAPITAL>;IGNORE
+<U0131> <U0049>;<DOT>;<SMALL>;IGNORE
+<U1ECA> <U0049>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECB> <U0049>;<DOT-BELOW>;<SMALL>;IGNORE
+<U012E> <U0049>;<OGONEK>;<CAPITAL>;IGNORE
+<U012F> <U0049>;<OGONEK>;<SMALL>;IGNORE
+<U012A> <U0049>;<MACRON>;<CAPITAL>;IGNORE
+<U012B> <U0049>;<MACRON>;<SMALL>;IGNORE
+<i8>
+<U0059> <U0059>;<NONE>;<CAPITAL>;IGNORE
+<U0079> <U0059>;<NONE>;<SMALL>;IGNORE
+<U0132> "<U0049><U004A>";"<U0132><U0132>";"<CAPITAL><CAPITAL>";IGNORE
+<U0133> "<U0049><U004A>";"<U0132><U0132>";"<SMALL><SMALL>";IGNORE
+<U004A> <U004A>;<NONE>;<CAPITAL>;IGNORE
+<U006A> <U004A>;<NONE>;<SMALL>;IGNORE
+<U0134> <U004A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0135> <U004A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<j8>
+<U004B> <U004B>;<NONE>;<CAPITAL>;IGNORE
+<U006B> <U004B>;<NONE>;<SMALL>;IGNORE
+<U1E30> <U004B>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E31> <U004B>;<ACUTE>;<SMALL>;IGNORE
+<U01E8> <U004B>;<CARON>;<CAPITAL>;IGNORE
+<U01E9> <U004B>;<CARON>;<SMALL>;IGNORE
+<U0198> <U004B>;<HOOK>;<CAPITAL>;IGNORE
+<U0199> <U004B>;<HOOK>;<SMALL>;IGNORE
+<U1E32> <U004B>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E33> <U004B>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0136> <U004B>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0137> <U004B>;<CEDILLA>;<SMALL>;IGNORE
+<U1E34> <U004B>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E35> <U004B>;<LINE-BELOW>;<SMALL>;IGNORE
+<k8>
+<U0138> <U004B>;<U0138>;<SMALL>;IGNORE
+<U004C> <U004C>;<NONE>;<CAPITAL>;IGNORE
+<U006C> <U004C>;<NONE>;<SMALL>;IGNORE
+<U0139> <U004C>;<ACUTE>;<CAPITAL>;IGNORE
+<U013A> <U004C>;<ACUTE>;<SMALL>;IGNORE
+<U013D> <U004C>;<CARON>;<CAPITAL>;IGNORE
+<U013E> <U004C>;<CARON>;<SMALL>;IGNORE
+<U013F> <U004C>;<DOT>;<CAPITAL>;IGNORE
+<U0140> <U004C>;<DOT>;<SMALL>;IGNORE
+<U1E36> <U004C>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E37> <U004C>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0141> <U004C>;<STROKE>;<CAPITAL>;IGNORE
+<U0142> <U004C>;<STROKE>;<SMALL>;IGNORE
+<U013B> <U004C>;<CEDILLA>;<CAPITAL>;IGNORE
+<U013C> <U004C>;<CEDILLA>;<SMALL>;IGNORE
+<U1E38> <U004C>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E39> <U004C>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E3C> <U004C>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E3D> <U004C>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E3A> <U004C>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E3B> <U004C>;<LINE-BELOW>;<SMALL>;IGNORE
+<l8>
+<U004D> <U004D>;<NONE>;<CAPITAL>;IGNORE
+<U006D> <U004D>;<NONE>;<SMALL>;IGNORE
+<U1E3E> <U004D>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E3F> <U004D>;<ACUTE>;<SMALL>;IGNORE
+<U1E40> <U004D>;<DOT>;<CAPITAL>;IGNORE
+<U1E41> <U004D>;<DOT>;<SMALL>;IGNORE
+<U1E42> <U004D>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E43> <U004D>;<DOT-BELOW>;<SMALL>;IGNORE
+<m8>
+<U004E> <U004E>;<NONE>;<CAPITAL>;IGNORE
+<U006E> <U004E>;<NONE>;<SMALL>;IGNORE
+<U0143> <U004E>;<ACUTE>;<CAPITAL>;IGNORE
+<U0144> <U004E>;<ACUTE>;<SMALL>;IGNORE
+<U0147> <U004E>;<CARON>;<CAPITAL>;IGNORE
+<U0148> <U004E>;<CARON>;<SMALL>;IGNORE
+<U00D1> <U004E>;<TILDE>;<CAPITAL>;IGNORE
+<U00F1> <U004E>;<TILDE>;<SMALL>;IGNORE
+<U1E44> <U004E>;<DOT>;<CAPITAL>;IGNORE
+<U1E45> <U004E>;<DOT>;<SMALL>;IGNORE
+<U1E46> <U004E>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E47> <U004E>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0145> <U004E>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0146> <U004E>;<CEDILLA>;<SMALL>;IGNORE
+<U1E4A> <U004E>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E4B> <U004E>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E48> <U004E>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E49> <U004E>;<LINE-BELOW>;<SMALL>;IGNORE
+<U0149> <U004E>;<PRECEDED-BY-APOSTROPHE>;<SMALL>;IGNORE
+<n8>
+<U014A> "<U004E><U0047>";"<U014A><U014A>";"<CAPITAL><CAPITAL>";IGNORE
+<U014B> "<U004E><U0047>";"<U014A><U014A>";"<SMALL><SMALL>";IGNORE
+<U004F> <U004F>;<NONE>;<CAPITAL>;IGNORE
+<U006F> <U004F>;<NONE>;<SMALL>;IGNORE
+<U00BA> <U004F>;<NONE>;<U00BA>;IGNORE
+<U00D3> <U004F>;<ACUTE>;<CAPITAL>;IGNORE
+<U00F3> <U004F>;<ACUTE>;<SMALL>;IGNORE
+<U00D2> <U004F>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F2> <U004F>;<GRAVE>;<SMALL>;IGNORE
+<U020C> <U004F>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U020D> <U004F>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U014E> <U004F>;<BREVE>;<CAPITAL>;IGNORE
+<U014F> <U004F>;<BREVE>;<SMALL>;IGNORE
+<U020E> <U004F>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020F> <U004F>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00D4> <U004F>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00F4> <U004F>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1ED0> <U004F>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1ED1> <U004F>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1ED2> <U004F>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1ED3> <U004F>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1ED4> <U004F>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1ED5> <U004F>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1ED6> <U004F>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1ED7> <U004F>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1ED8> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ED9> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01D1> <U004F>;<CARON>;<CAPITAL>;IGNORE
+<U01D2> <U004F>;<CARON>;<SMALL>;IGNORE
+<U00D6> <U004F>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00F6> <U004F>;<DIAERESIS>;<SMALL>;IGNORE
+<U0150> <U004F>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0151> <U004F>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1ECE> <U004F>;<HOOK>;<CAPITAL>;IGNORE
+<U1ECF> <U004F>;<HOOK>;<SMALL>;IGNORE
+<U00D5> <U004F>;<TILDE>;<CAPITAL>;IGNORE
+<U00F5> <U004F>;<TILDE>;<SMALL>;IGNORE
+<U1E4C> <U004F>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E4D> <U004F>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E4E> <U004F>;<TILDE+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E4F> <U004F>;<TILDE+DIAERESIS>;<SMALL>;IGNORE
+<U1ECC> <U004F>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECD> <U004F>;<DOT-BELOW>;<SMALL>;IGNORE
+<U00D8> <U004F>;<STROKE>;<CAPITAL>;IGNORE
+<U00F8> <U004F>;<STROKE>;<SMALL>;IGNORE
+<U01FE> <U004F>;<STROKE+ACUTE>;<CAPITAL>;IGNORE
+<U01FF> <U004F>;<STROKE+ACUTE>;<SMALL>;IGNORE
+<U01EA> <U004F>;<OGONEK>;<CAPITAL>;IGNORE
+<U01EB> <U004F>;<OGONEK>;<SMALL>;IGNORE
+<U01EC> <U004F>;<OGONEK+MACRON>;<CAPITAL>;IGNORE
+<U01ED> <U004F>;<OGONEK+MACRON>;<SMALL>;IGNORE
+<U014C> <U004F>;<MACRON>;<CAPITAL>;IGNORE
+<U014D> <U004F>;<MACRON>;<SMALL>;IGNORE
+<U1E52> <U004F>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E53> <U004F>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E50> <U004F>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E51> <U004F>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U01A0> <U004F>;<HORN>;<CAPITAL>;IGNORE
+<U01A1> <U004F>;<HORN>;<SMALL>;IGNORE
+<U1EDA> <U004F>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EDB> <U004F>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EDC> <U004F>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EDD> <U004F>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EDE> <U004F>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EDF> <U004F>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EE0> <U004F>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EE1> <U004F>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EE2> <U004F>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE3> <U004F>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<o8>
+<U0152> "<U004F><U0045>";"<U0152><U0152>";"<CAPITAL><CAPITAL>";IGNORE
+<U0153> "<U004F><U0045>";"<U0152><U0152>";"<SMALL><SMALL>";IGNORE
+<U0050> <U0050>;<NONE>;<CAPITAL>;IGNORE
+<U0070> <U0050>;<NONE>;<SMALL>;IGNORE
+<U1E54> <U0050>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E55> <U0050>;<ACUTE>;<SMALL>;IGNORE
+<U1E56> <U0050>;<DOT>;<CAPITAL>;IGNORE
+<U1E57> <U0050>;<DOT>;<SMALL>;IGNORE
+<p8>
+<U0051> <U0051>;<NONE>;<CAPITAL>;IGNORE
+<U0071> <U0051>;<NONE>;<SMALL>;IGNORE
+<q8>
+<U0052> <U0052>;<NONE>;<CAPITAL>;IGNORE
+<U0072> <U0052>;<NONE>;<SMALL>;IGNORE
+<U0154> <U0052>;<ACUTE>;<CAPITAL>;IGNORE
+<U0155> <U0052>;<ACUTE>;<SMALL>;IGNORE
+<U0210> <U0052>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0211> <U0052>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0212> <U0052>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0213> <U0052>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U0158> <U0052>;<CARON>;<CAPITAL>;IGNORE
+<U0159> <U0052>;<CARON>;<SMALL>;IGNORE
+<U1E58> <U0052>;<DOT>;<CAPITAL>;IGNORE
+<U1E59> <U0052>;<DOT>;<SMALL>;IGNORE
+<U1E5A> <U0052>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5B> <U0052>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0156> <U0052>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0157> <U0052>;<CEDILLA>;<SMALL>;IGNORE
+<U1E5C> <U0052>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5D> <U0052>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E5E> <U0052>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E5F> <U0052>;<LINE-BELOW>;<SMALL>;IGNORE
+<r8>
+<U0053> <U0053>;<NONE>;<CAPITAL>;IGNORE
+<U0073> <U0053>;<NONE>;<SMALL>;IGNORE
+<UFB06> "<U0053><U0054>";"<NONE><NONE>";"<UFB06><UFB06>";IGNORE
+<U015A> <U0053>;<ACUTE>;<CAPITAL>;IGNORE
+<U015B> <U0053>;<ACUTE>;<SMALL>;IGNORE
+<U1E64> <U0053>;<ACUTE+DOT>;<CAPITAL>;IGNORE
+<U1E65> <U0053>;<ACUTE+DOT>;<SMALL>;IGNORE
+<U015C> <U0053>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U015D> <U0053>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0160> <U0053>;<CARON>;<CAPITAL>;IGNORE
+<U0161> <U0053>;<CARON>;<SMALL>;IGNORE
+<U1E66> <U0053>;<CARON+DOT>;<CAPITAL>;IGNORE
+<U1E67> <U0053>;<CARON+DOT>;<SMALL>;IGNORE
+<U1E60> <U0053>;<DOT>;<CAPITAL>;IGNORE
+<U1E61> <U0053>;<DOT>;<SMALL>;IGNORE
+<U1E62> <U0053>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E63> <U0053>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E68> <U0053>;<DOT+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E69> <U0053>;<DOT+DOT-BELOW>;<SMALL>;IGNORE
+<U015E> <U0053>;<CEDILLA>;<CAPITAL>;IGNORE
+<U015F> <U0053>;<CEDILLA>;<SMALL>;IGNORE
+<s8>
+<U017F> <U0053>;<U017F>;<SMALL>;IGNORE
+<U00DF> "<U0053><U0053>";"<NONE><NONE>";"<SMALL><U00DF>";IGNORE
+<UFB05> "<U0053><U0054>";"<NONE><NONE>";"<UFB05><UFB05>";IGNORE
+<U0054> <U0054>;<NONE>;<CAPITAL>;IGNORE
+<U0074> <U0054>;<NONE>;<SMALL>;IGNORE
+<U0164> <U0054>;<CARON>;<CAPITAL>;IGNORE
+<U0165> <U0054>;<CARON>;<SMALL>;IGNORE
+<U1E6A> <U0054>;<DOT>;<CAPITAL>;IGNORE
+<U1E6B> <U0054>;<DOT>;<SMALL>;IGNORE
+<U1E6C> <U0054>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E6D> <U0054>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0166> <U0054>;<STROKE>;<CAPITAL>;IGNORE
+<U0167> <U0054>;<STROKE>;<SMALL>;IGNORE
+<U0162> <U0054>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0163> <U0054>;<CEDILLA>;<SMALL>;IGNORE
+<U1E70> <U0054>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E71> <U0054>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E6E> <U0054>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E6F> <U0054>;<LINE-BELOW>;<SMALL>;IGNORE
+<t8>
+<U00DE> "<U0054><U0048>";"<U00DE><U00DE>";"<CAPITAL><CAPITAL>";IGNORE
+<U00FE> "<U0054><U0048>";"<U00DE><U00DE>";"<SMALL><SMALL>";IGNORE
+<U0055> <U0055>;<NONE>;<CAPITAL>;IGNORE
+<U0075> <U0055>;<NONE>;<SMALL>;IGNORE
+<U00DA> <U0055>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FA> <U0055>;<ACUTE>;<SMALL>;IGNORE
+<U00D9> <U0055>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F9> <U0055>;<GRAVE>;<SMALL>;IGNORE
+<U0214> <U0055>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0215> <U0055>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U016C> <U0055>;<BREVE>;<CAPITAL>;IGNORE
+<U016D> <U0055>;<BREVE>;<SMALL>;IGNORE
+<U0216> <U0055>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0217> <U0055>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00DB> <U0055>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00FB> <U0055>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01D3> <U0055>;<CARON>;<CAPITAL>;IGNORE
+<U01D4> <U0055>;<CARON>;<SMALL>;IGNORE
+<U016E> <U0055>;<RING>;<CAPITAL>;IGNORE
+<U016F> <U0055>;<RING>;<SMALL>;IGNORE
+<U00DC> <U0055>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FC> <U0055>;<DIAERESIS>;<SMALL>;IGNORE
+<U01D5> <U0055>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01D6> <U0055>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U01D7> <U0055>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U01D8> <U0055>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U01DB> <U0055>;<DIAERESIS+GRAVE>;<CAPITAL>;IGNORE
+<U01DC> <U0055>;<DIAERESIS+GRAVE>;<SMALL>;IGNORE
+<U01D9> <U0055>;<DIAERESIS+CARON>;<CAPITAL>;IGNORE
+<U01DA> <U0055>;<DIAERESIS+CARON>;<SMALL>;IGNORE
+<U0170> <U0055>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0171> <U0055>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1EE6> <U0055>;<HOOK>;<CAPITAL>;IGNORE
+<U1EE7> <U0055>;<HOOK>;<SMALL>;IGNORE
+<U0168> <U0055>;<TILDE>;<CAPITAL>;IGNORE
+<U0169> <U0055>;<TILDE>;<SMALL>;IGNORE
+<U1E78> <U0055>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E79> <U0055>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E74> <U0055>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E75> <U0055>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U1EE4> <U0055>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE5> <U0055>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0172> <U0055>;<OGONEK>;<CAPITAL>;IGNORE
+<U0173> <U0055>;<OGONEK>;<SMALL>;IGNORE
+<U016A> <U0055>;<MACRON>;<CAPITAL>;IGNORE
+<U016B> <U0055>;<MACRON>;<SMALL>;IGNORE
+<U1E7A> <U0055>;<MACRON+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E7B> <U0055>;<MACRON+DIAERESIS>;<SMALL>;IGNORE
+<U1E72> <U0055>;<MACRON+DIAERESIS-BELOW>;<CAPITAL>;IGNORE
+<U1E73> <U0055>;<MACRON+DIAERESIS-BELOW>;<SMALL>;IGNORE
+<U1E76> <U0055>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E77> <U0055>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U01AF> <U0055>;<HORN>;<CAPITAL>;IGNORE
+<U01B0> <U0055>;<HORN>;<SMALL>;IGNORE
+<U1EE8> <U0055>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EE9> <U0055>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EEA> <U0055>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EEB> <U0055>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EEC> <U0055>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EED> <U0055>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EEE> <U0055>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EEF> <U0055>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EF0> <U0055>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF1> <U0055>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<u8>
+<U0056> <U0056>;<NONE>;<CAPITAL>;IGNORE
+<U0076> <U0056>;<NONE>;<SMALL>;IGNORE
+<U1E7C> <U0056>;<TILDE>;<CAPITAL>;IGNORE
+<U1E7D> <U0056>;<TILDE>;<SMALL>;IGNORE
+<U1E7E> <U0056>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E7F> <U0056>;<DOT-BELOW>;<SMALL>;IGNORE
+<v8>
+<U0057> <U0057>;<NONE>;<CAPITAL>;IGNORE
+<U0077> <U0057>;<NONE>;<SMALL>;IGNORE
+<U1E82> <U0057>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E83> <U0057>;<ACUTE>;<SMALL>;IGNORE
+<U1E80> <U0057>;<GRAVE>;<CAPITAL>;IGNORE
+<U1E81> <U0057>;<GRAVE>;<SMALL>;IGNORE
+<U0174> <U0057>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0175> <U0057>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E84> <U0057>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E85> <U0057>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E86> <U0057>;<DOT>;<CAPITAL>;IGNORE
+<U1E87> <U0057>;<DOT>;<SMALL>;IGNORE
+<U1E88> <U0057>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E89> <U0057>;<DOT-BELOW>;<SMALL>;IGNORE
+<w8>
+<U0058> <U0058>;<NONE>;<CAPITAL>;IGNORE
+<U0078> <U0058>;<NONE>;<SMALL>;IGNORE
+<U1E8C> <U0058>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E8D> <U0058>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E8A> <U0058>;<DOT>;<CAPITAL>;IGNORE
+<U1E8B> <U0058>;<DOT>;<SMALL>;IGNORE
+<x8>
+<U00DD> <U0059>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FD> <U0059>;<ACUTE>;<SMALL>;IGNORE
+<U1EF2> <U0059>;<GRAVE>;<CAPITAL>;IGNORE
+<U1EF3> <U0059>;<GRAVE>;<SMALL>;IGNORE
+<U0176> <U0059>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0177> <U0059>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0178> <U0059>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FF> <U0059>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EF6> <U0059>;<HOOK>;<CAPITAL>;IGNORE
+<U1EF7> <U0059>;<HOOK>;<SMALL>;IGNORE
+<U1EF8> <U0059>;<TILDE>;<CAPITAL>;IGNORE
+<U1EF9> <U0059>;<TILDE>;<SMALL>;IGNORE
+<U1E8E> <U0059>;<DOT>;<CAPITAL>;IGNORE
+<U1E8F> <U0059>;<DOT>;<SMALL>;IGNORE
+<U1EF4> <U0059>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF5> <U0059>;<DOT-BELOW>;<SMALL>;IGNORE
+<y8>
+<U005A> <U005A>;<NONE>;<CAPITAL>;IGNORE
+<U007A> <U005A>;<NONE>;<SMALL>;IGNORE
+<U0179> <U005A>;<ACUTE>;<CAPITAL>;IGNORE
+<U017A> <U005A>;<ACUTE>;<SMALL>;IGNORE
+<U1E90> <U005A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E91> <U005A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U017D> <U005A>;<CARON>;<CAPITAL>;IGNORE
+<U017E> <U005A>;<CARON>;<SMALL>;IGNORE
+<U017B> <U005A>;<DOT>;<CAPITAL>;IGNORE
+<U017C> <U005A>;<DOT>;<SMALL>;IGNORE
+<U1E92> <U005A>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E93> <U005A>;<DOT-BELOW>;<SMALL>;IGNORE
+<U01B5> <U005A>;<STROKE>;<CAPITAL>;IGNORE
+<U01B6> <U005A>;<STROKE>;<SMALL>;IGNORE
+<U1E94> <U005A>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E95> <U005A>;<LINE-BELOW>;<SMALL>;IGNORE
+<z8>
+<U0391> <U0391>;<CAPITAL>;<GREEK>;IGNORE
+<U0386> <U0391>;<CAPITAL>;<TONOS>;IGNORE
+<U03B1> <U0391>;<SMALL>;<GREEK>;IGNORE
+<U03AC> <U0391>;<SMALL>;<TONOS>;IGNORE
+<U0392> <U0392>;<CAPITAL>;<GREEK>;IGNORE
+<U03B2> <U0392>;<SMALL>;<GREEK>;IGNORE
+<U0393> <U0393>;<CAPITAL>;<GREEK>;IGNORE
+<U03B3> <U0393>;<SMALL>;<GREEK>;IGNORE
+<U0394> <U0394>;<CAPITAL>;<GREEK>;IGNORE
+<U03B4> <U0394>;<SMALL>;<GREEK>;IGNORE
+<U0395> <U0395>;<CAPITAL>;<GREEK>;IGNORE
+<U0388> <U0395>;<CAPITAL>;<TONOS>;IGNORE
+<U03B5> <U0395>;<SMALL>;<GREEK>;IGNORE
+<U03AD> <U0395>;<SMALL>;<TONOS>;IGNORE
+<U0396> <U0396>;<CAPITAL>;<GREEK>;IGNORE
+<U03B6> <U0396>;<SMALL>;<GREEK>;IGNORE
+<U0397> <U0397>;<CAPITAL>;<GREEK>;IGNORE
+<U0389> <U0397>;<CAPITAL>;<TONOS>;IGNORE
+<U03B7> <U0397>;<SMALL>;<GREEK>;IGNORE
+<U03AE> <U0397>;<SMALL>;<TONOS>;IGNORE
+<U0398> <U0398>;<CAPITAL>;<GREEK>;IGNORE
+<U03B8> <U0398>;<SMALL>;<GREEK>;IGNORE
+<U0399> <U0399>;<CAPITAL>;<GREEK>;IGNORE
+<U038A> <U0399>;<CAPITAL>;<TONOS>;IGNORE
+<U03AA> <U0399>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03B9> <U0399>;<SMALL>;<GREEK>;IGNORE
+<U03AF> <U0399>;<SMALL>;<TONOS>;IGNORE
+<U03CA> <U0399>;<SMALL>;<DIALYTICA>;IGNORE
+<U0390> <U0399>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U039A> <U039A>;<CAPITAL>;<GREEK>;IGNORE
+<U03BA> <U039A>;<SMALL>;<GREEK>;IGNORE
+<U039B> <U039B>;<CAPITAL>;<GREEK>;IGNORE
+<U03BB> <U039B>;<SMALL>;<GREEK>;IGNORE
+<U039C> <U039C>;<CAPITAL>;<GREEK>;IGNORE
+<U03BC> <U039C>;<SMALL>;<GREEK>;IGNORE
+<U039D> <U039D>;<CAPITAL>;<GREEK>;IGNORE
+<U03BD> <U039D>;<SMALL>;<GREEK>;IGNORE
+<U039E> <U039E>;<CAPITAL>;<GREEK>;IGNORE
+<U03BE> <U039E>;<SMALL>;<GREEK>;IGNORE
+<U039F> <U039F>;<CAPITAL>;<GREEK>;IGNORE
+<U038C> <U039F>;<CAPITAL>;<TONOS>;IGNORE
+<U03BF> <U039F>;<SMALL>;<GREEK>;IGNORE
+<U03CC> <U039F>;<SMALL>;<TONOS>;IGNORE
+<U03A0> <U03A0>;<CAPITAL>;<GREEK>;IGNORE
+<U03C0> <U03A0>;<SMALL>;<GREEK>;IGNORE
+<U03A1> <U03A1>;<CAPITAL>;<GREEK>;IGNORE
+<U03C1> <U03A1>;<SMALL>;<GREEK>;IGNORE
+<U03A3> <U03A3>;<CAPITAL>;<GREEK>;IGNORE
+<U03C3> <U03A3>;<SMALL>;<GREEK>;IGNORE
+<U03C2> <U03A3>;<SMALL>;<U03C2>;IGNORE
+<U03A4> <U03A4>;<CAPITAL>;<GREEK>;IGNORE
+<U03C4> <U03A4>;<SMALL>;<GREEK>;IGNORE
+<U03A5> <U03A5>;<CAPITAL>;<GREEK>;IGNORE
+<U038E> <U03A5>;<CAPITAL>;<TONOS>;IGNORE
+<U03AB> <U03A5>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03C5> <U03A5>;<SMALL>;<GREEK>;IGNORE
+<U03CD> <U03A5>;<SMALL>;<TONOS>;IGNORE
+<U03CB> <U03A5>;<SMALL>;<DIALYTICA>;IGNORE
+<U03B0> <U03A5>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U03A6> <U03A6>;<CAPITAL>;<GREEK>;IGNORE
+<U03C6> <U03A6>;<SMALL>;<GREEK>;IGNORE
+<U03A7> <U03A7>;<CAPITAL>;<GREEK>;IGNORE
+<U03C7> <U03A7>;<SMALL>;<GREEK>;IGNORE
+<U03A8> <U03A8>;<CAPITAL>;<GREEK>;IGNORE
+<U03C8> <U03A8>;<SMALL>;<GREEK>;IGNORE
+<U03A9> <U03A9>;<CAPITAL>;<GREEK>;IGNORE
+<U038F> <U03A9>;<CAPITAL>;<TONOS>;IGNORE
+<U03C9> <U03A9>;<SMALL>;<GREEK>;IGNORE
+<U03CE> <U03A9>;<SMALL>;<TONOS>;IGNORE
+<U0410> <U0410>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0430> <U0410>;<CYRILLIC>;<SMALL>;IGNORE
+<U0411> <U0411>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0431> <U0411>;<CYRILLIC>;<SMALL>;IGNORE
+<U0412> <U0412>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0432> <U0412>;<CYRILLIC>;<SMALL>;IGNORE
+<U0413> <U0413>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0433> <U0413>;<CYRILLIC>;<SMALL>;IGNORE
+<U0403> <U0403>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0453> <U0403>;<CYRILLIC>;<SMALL>;IGNORE
+<U0490> <U0490>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0491> <U0490>;<CYRILLIC>;<SMALL>;IGNORE
+<U0414> <U0414>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0434> <U0414>;<CYRILLIC>;<SMALL>;IGNORE
+<U0402> <U0402>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0452> <U0402>;<CYRILLIC>;<SMALL>;IGNORE
+<U0415> <U0415>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0435> <U0415>;<CYRILLIC>;<SMALL>;IGNORE
+<U0401> <U0401>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0451> <U0401>;<CYRILLIC>;<SMALL>;IGNORE
+<U0404> <U0404>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0454> <U0404>;<CYRILLIC>;<SMALL>;IGNORE
+<U0416> <U0416>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0436> <U0416>;<CYRILLIC>;<SMALL>;IGNORE
+<U0417> <U0417>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0437> <U0417>;<CYRILLIC>;<SMALL>;IGNORE
+<U0418> <U0418>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0438> <U0418>;<CYRILLIC>;<SMALL>;IGNORE
+<U0406> <U0406>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0456> <U0406>;<CYRILLIC>;<SMALL>;IGNORE
+<U0407> <U0407>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0457> <U0407>;<CYRILLIC>;<SMALL>;IGNORE
+<U0408> <U0408>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0458> <U0408>;<CYRILLIC>;<SMALL>;IGNORE
+<U0419> <U0419>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0439> <U0419>;<CYRILLIC>;<SMALL>;IGNORE
+<U041A> <U041A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043A> <U041A>;<CYRILLIC>;<SMALL>;IGNORE
+<U040C> <U040C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045C> <U040C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041B> <U041B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043B> <U041B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0409> <U0409>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0459> <U0409>;<CYRILLIC>;<SMALL>;IGNORE
+<U041C> <U041C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043C> <U041C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041D> <U041D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043D> <U041D>;<CYRILLIC>;<SMALL>;IGNORE
+<U040A> <U040A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045A> <U040A>;<CYRILLIC>;<SMALL>;IGNORE
+<U041E> <U041E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043E> <U041E>;<CYRILLIC>;<SMALL>;IGNORE
+<U041F> <U041F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043F> <U041F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0420> <U0420>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0440> <U0420>;<CYRILLIC>;<SMALL>;IGNORE
+<U0421> <U0421>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0441> <U0421>;<CYRILLIC>;<SMALL>;IGNORE
+<U0422> <U0422>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0442> <U0422>;<CYRILLIC>;<SMALL>;IGNORE
+<U040B> <U040B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045B> <U040B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0423> <U0423>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0443> <U0423>;<CYRILLIC>;<SMALL>;IGNORE
+<U040E> <U040E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045E> <U040E>;<CYRILLIC>;<SMALL>;IGNORE
+<U0424> <U0424>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0444> <U0424>;<CYRILLIC>;<SMALL>;IGNORE
+<U0425> <U0425>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0445> <U0425>;<CYRILLIC>;<SMALL>;IGNORE
+<U0426> <U0426>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0446> <U0426>;<CYRILLIC>;<SMALL>;IGNORE
+<U0405> <U0405>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0455> <U0405>;<CYRILLIC>;<SMALL>;IGNORE
+<U0427> <U0427>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0447> <U0427>;<CYRILLIC>;<SMALL>;IGNORE
+<U040F> <U040F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045F> <U040F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0428> <U0428>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0448> <U0428>;<CYRILLIC>;<SMALL>;IGNORE
+<U0429> <U0429>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0449> <U0429>;<CYRILLIC>;<SMALL>;IGNORE
+<U044A> <U044A>;<CYRILLIC>;<SMALL>;IGNORE
+<U042A> <U044A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042B> <U042B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044B> <U042B>;<CYRILLIC>;<SMALL>;IGNORE
+<U044C> <U044C>;<CYRILLIC>;<SMALL>;IGNORE
+<U042C> <U044C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042D> <U042D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044D> <U042D>;<CYRILLIC>;<SMALL>;IGNORE
+<U042E> <U042E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044E> <U042E>;<CYRILLIC>;<SMALL>;IGNORE
+<U042F> <U042F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044F> <U042F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0462> <U0462>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0463> <U0462>;<CYRILLIC>;<SMALL>;IGNORE
+<U046A> <U046A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U046B> <U046A>;<CYRILLIC>;<SMALL>;IGNORE
+<U0472> <U0472>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0473> <U0472>;<CYRILLIC>;<SMALL>;IGNORE
+<U0474> <U0474>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0475> <U0474>;<CYRILLIC>;<SMALL>;IGNORE
+<U0480> <U0480>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0481> <U0480>;<CYRILLIC>;<SMALL>;IGNORE
+<U05D0> <U05D0>;IGNORE;IGNORE;IGNORE
+<U05D1> <U05D1>;IGNORE;IGNORE;IGNORE
+<U05D2> <U05D2>;IGNORE;IGNORE;IGNORE
+<U05D3> <U05D3>;IGNORE;IGNORE;IGNORE
+<U05D4> <U05D4>;IGNORE;IGNORE;IGNORE
+<U05D5> <U05D5>;IGNORE;IGNORE;IGNORE
+<U05D6> <U05D6>;IGNORE;IGNORE;IGNORE
+<U05D7> <U05D7>;IGNORE;IGNORE;IGNORE
+<U05D8> <U05D8>;IGNORE;IGNORE;IGNORE
+<U05D9> <U05D9>;IGNORE;IGNORE;IGNORE
+<U05DA> <U05DA>;IGNORE;IGNORE;IGNORE
+<U05DB> <U05DB>;IGNORE;IGNORE;IGNORE
+<U05DC> <U05DC>;IGNORE;IGNORE;IGNORE
+<U05DD> <U05DD>;IGNORE;IGNORE;IGNORE
+<U05DE> <U05DE>;IGNORE;IGNORE;IGNORE
+<U05DF> <U05DF>;IGNORE;IGNORE;IGNORE
+<U05E0> <U05E0>;IGNORE;IGNORE;IGNORE
+<U05E1> <U05E1>;IGNORE;IGNORE;IGNORE
+<U05E2> <U05E2>;IGNORE;IGNORE;IGNORE
+<U05E3> <U05E3>;IGNORE;IGNORE;IGNORE
+<U05E4> <U05E4>;IGNORE;IGNORE;IGNORE
+<U05E5> <U05E5>;IGNORE;IGNORE;IGNORE
+<U05E6> <U05E6>;IGNORE;IGNORE;IGNORE
+<U05E7> <U05E7>;IGNORE;IGNORE;IGNORE
+<U05E8> <U05E8>;IGNORE;IGNORE;IGNORE
+<U05E9> <U05E9>;IGNORE;IGNORE;IGNORE
+<U05EA> <U05EA>;IGNORE;IGNORE;IGNORE
+
+% Arabic collating
+
+<U060C> IGNORE;IGNORE;IGNORE;<U060C>
+<U061B> IGNORE;IGNORE;IGNORE;<U061B>
+<U061F> IGNORE;IGNORE;IGNORE;<U061F>
+<U0640> IGNORE;IGNORE;IGNORE;<U0640>
+
+<U0621> <U0621>;<U0621>;IGNORE;IGNORE
+<U0622> <U0622>;<U0622>;IGNORE;IGNORE
+<UFE82> <U0622>;<UFE82>;IGNORE;IGNORE
+<U0623> <U0621>;<U0623>;IGNORE;IGNORE
+<UFE84> <U0621>;<UFE84>;IGNORE;IGNORE
+<U0624> <U0621>;<U0624>;IGNORE;IGNORE
+<U0625> <U0621>;<U0625>;IGNORE;IGNORE
+<UFE88> <U0621>;<UFE88>;IGNORE;IGNORE
+<U0626> <U0621>;<U0626>;IGNORE;IGNORE
+<U0670> <U0670>;<U0670>;IGNORE;IGNORE
+<U0627> <U0627>;<U0627>;IGNORE;IGNORE
+<UFE8D> <U0627>;<UFE8D>;IGNORE;IGNORE
+<UFE8E> <U0627>;<UFE8E>;IGNORE;IGNORE
+<UE016> <U0627>;<UE016>;IGNORE;IGNORE
+<U0628> <U0628>;<U0628>;IGNORE;IGNORE
+<UFE8F> <U0628>;<UFE8F>;IGNORE;IGNORE
+<UFE90> <U0628>;<UFE90>;IGNORE;IGNORE
+<UFE91> <U0628>;<UFE91>;IGNORE;IGNORE
+<UFE92> <U0628>;<UFE92>;IGNORE;IGNORE
+<U067E> <U067E>;<U067E>;IGNORE;IGNORE
+<U06A4> <U06A4>;<U06A4>;IGNORE;IGNORE
+<U0629> <U0629>;<U0629>;IGNORE;IGNORE
+<UFE93> <U0629>;<UFE93>;IGNORE;IGNORE
+<UFE94> <U0629>;<UFE94>;IGNORE;IGNORE
+<U062A> <U0629>;<U062A>;IGNORE;IGNORE
+<UFE95> <U0629>;<UFE95>;IGNORE;IGNORE
+<UFE96> <U0629>;<UFE96>;IGNORE;IGNORE
+<UFE97> <U0629>;<UFE97>;IGNORE;IGNORE
+<UFE98> <U0629>;<UFE98>;IGNORE;IGNORE
+<U062B> <U062B>;<U062B>;IGNORE;IGNORE
+<UFE99> <U062B>;<UFE99>;IGNORE;IGNORE
+<UFE9A> <U062B>;<UFE9A>;IGNORE;IGNORE
+<UFE9B> <U062B>;<UFE9B>;IGNORE;IGNORE
+<UFE9C> <U062B>;<UFE9C>;IGNORE;IGNORE
+<U062C> <U062C>;<U062C>;IGNORE;IGNORE
+<UFE9D> <U062C>;<UFE9D>;IGNORE;IGNORE
+<UFE9E> <U062C>;<UFE9E>;IGNORE;IGNORE
+<UFE9F> <U062C>;<UFE9F>;IGNORE;IGNORE
+<UFEA0> <U062C>;<UFEA0>;IGNORE;IGNORE
+<U062D> <U062D>;<U062D>;IGNORE;IGNORE
+<UFEA1> <U062D>;<UFEA1>;IGNORE;IGNORE
+<UFEA2> <U062D>;<UFEA2>;IGNORE;IGNORE
+<UFEA3> <U062D>;<UFEA3>;IGNORE;IGNORE
+<UFEA4> <U062D>;<UFEA4>;IGNORE;IGNORE
+<U062E> <U062E>;<U062E>;IGNORE;IGNORE
+<UFEA5> <U062E>;<UFEA5>;IGNORE;IGNORE
+<UFEA6> <U062E>;<UFEA6>;IGNORE;IGNORE
+<UFEA7> <U062E>;<UFEA7>;IGNORE;IGNORE
+<UFEA8> <U062E>;<UFEA8>;IGNORE;IGNORE
+<U062F> <U062F>;<U062F>;IGNORE;IGNORE
+<UFEA9> <U062F>;<UFEA9>;IGNORE;IGNORE
+<UFEAA> <U062F>;<UFEAA>;IGNORE;IGNORE
+<U0630> <U0630>;<U0630>;IGNORE;IGNORE
+<UFEAB> <U0630>;<UFEAB>;IGNORE;IGNORE
+<UFEAC> <U0630>;<UFEAC>;IGNORE;IGNORE
+<U0631> <U0631>;<U0631>;IGNORE;IGNORE
+<UFEAD> <U0631>;<UFEAD>;IGNORE;IGNORE
+<UFEAE> <U0631>;<UFEAE>;IGNORE;IGNORE
+<U0632> <U0632>;<U0632>;IGNORE;IGNORE
+<UFEAF> <U0632>;<UFEAF>;IGNORE;IGNORE
+<UFEB0> <U0632>;<UFEB0>;IGNORE;IGNORE
+<U0633> <U0633>;<U0633>;IGNORE;IGNORE
+<UFEB1> <U0633>;<UFEB1>;IGNORE;IGNORE
+<UFEB2> <U0633>;<UFEB2>;IGNORE;IGNORE
+<UFEB3> <U0633>;<UFEB3>;IGNORE;IGNORE
+<UFEB4> <U0633>;<UFEB4>;IGNORE;IGNORE
+<U0634> <U0634>;<U0634>;IGNORE;IGNORE
+<UFEB5> <U0634>;<UFEB5>;IGNORE;IGNORE
+<UFEB6> <U0634>;<UFEB6>;IGNORE;IGNORE
+<UFEB7> <U0634>;<UFEB7>;IGNORE;IGNORE
+<UFEB8> <U0634>;<UFEB8>;IGNORE;IGNORE
+<U0635> <U0635>;<U0635>;IGNORE;IGNORE
+<UFEB9> <U0635>;<UFEB9>;IGNORE;IGNORE
+<UFEBA> <U0635>;<UFEBA>;IGNORE;IGNORE
+<UFEBB> <U0635>;<UFEBB>;IGNORE;IGNORE
+<UFEBC> <U0635>;<UFEBC>;IGNORE;IGNORE
+<U0636> <U0636>;<U0636>;IGNORE;IGNORE
+<UFEBD> <U0636>;<UFEBD>;IGNORE;IGNORE
+<UFEBE> <U0636>;<UFEBE>;IGNORE;IGNORE
+<UFEBF> <U0636>;<UFEBF>;IGNORE;IGNORE
+<UFEC0> <U0636>;<UFEC0>;IGNORE;IGNORE
+<U0637> <U0637>;<U0637>;IGNORE;IGNORE
+<UFEC1> <U0637>;<UFEC1>;IGNORE;IGNORE
+<UFEC2> <U0637>;<UFEC2>;IGNORE;IGNORE
+<UFEC3> <U0637>;<UFEC3>;IGNORE;IGNORE
+<UFEC4> <U0637>;<UFEC4>;IGNORE;IGNORE
+<U0638> <U0638>;<U0638>;IGNORE;IGNORE
+<UFEC5> <U0638>;<UFEC5>;IGNORE;IGNORE
+<UFEC6> <U0638>;<UFEC6>;IGNORE;IGNORE
+<UFEC7> <U0638>;<UFEC7>;IGNORE;IGNORE
+<UFEC8> <U0638>;<UFEC8>;IGNORE;IGNORE
+<U0639> <U0639>;<U0639>;IGNORE;IGNORE
+<UFEC9> <U0639>;<UFEC9>;IGNORE;IGNORE
+<UFECA> <U0639>;<UFECA>;IGNORE;IGNORE
+<UFECB> <U0639>;<UFECB>;IGNORE;IGNORE
+<UFECC> <U0639>;<UFECC>;IGNORE;IGNORE
+<U063A> <U063A>;<U063A>;IGNORE;IGNORE
+<UFECD> <U063A>;<UFECD>;IGNORE;IGNORE
+<UFECE> <U063A>;<UFECE>;IGNORE;IGNORE
+<UFECF> <U063A>;<UFECF>;IGNORE;IGNORE
+<UFED0> <U063A>;<UFED0>;IGNORE;IGNORE
+<U0641> <U0641>;<U0641>;IGNORE;IGNORE
+<UFED1> <U0641>;<UFED1>;IGNORE;IGNORE
+<UFED2> <U0641>;<UFED2>;IGNORE;IGNORE
+<UFED3> <U0641>;<UFED3>;IGNORE;IGNORE
+<UFED4> <U0641>;<UFED4>;IGNORE;IGNORE
+<U0642> <U0642>;<U0642>;IGNORE;IGNORE
+<UFED5> <U0642>;<UFED5>;IGNORE;IGNORE
+<UFED6> <U0642>;<UFED6>;IGNORE;IGNORE
+<UFED7> <U0642>;<UFED7>;IGNORE;IGNORE
+<UFED8> <U0642>;<UFED8>;IGNORE;IGNORE
+<U0643> <U0643>;<U0643>;IGNORE;IGNORE
+<UFED9> <U0643>;<UFED9>;IGNORE;IGNORE
+<UFEDA> <U0643>;<UFEDA>;IGNORE;IGNORE
+<UFEDB> <U0643>;<UFEDB>;IGNORE;IGNORE
+<UFEDC> <U0643>;<UFEDC>;IGNORE;IGNORE
+<U0644> <U0644>;<U0644>;IGNORE;IGNORE
+<UFEDD> <U0644>;<UFEDD>;IGNORE;IGNORE
+<UFEDE> <U0644>;<UFEDE>;IGNORE;IGNORE
+<UFEDF> <U0644>;<UFEDF>;IGNORE;IGNORE
+<UFEE0> <U0644>;<UFEE0>;IGNORE;IGNORE
+<U0645> <U0645>;<U0645>;IGNORE;IGNORE
+<UFEE1> <U0645>;<UFEE1>;IGNORE;IGNORE
+<UFEE2> <U0645>;<UFEE2>;IGNORE;IGNORE
+<UFEE3> <U0645>;<UFEE3>;IGNORE;IGNORE
+<UFEE4> <U0645>;<UFEE4>;IGNORE;IGNORE
+<U0646> <U0646>;<U0646>;IGNORE;IGNORE
+<UFEE5> <U0646>;<UFEE5>;IGNORE;IGNORE
+<UFEE6> <U0646>;<UFEE6>;IGNORE;IGNORE
+<UFEE7> <U0646>;<UFEE7>;IGNORE;IGNORE
+<UFEE8> <U0646>;<UFEE8>;IGNORE;IGNORE
+<U0647> <U0647>;<U0647>;IGNORE;IGNORE
+<UFEE9> <U0647>;<UFEE9>;IGNORE;IGNORE
+<UFEEA> <U0647>;<UFEEA>;IGNORE;IGNORE
+<UFEEB> <U0647>;<UFEEB>;IGNORE;IGNORE
+<UFEEC> <U0647>;<UFEEC>;IGNORE;IGNORE
+<U0648> <U0648>;<U0648>;IGNORE;IGNORE
+<UFEED> <U0648>;<UFEED>;IGNORE;IGNORE
+<UFEEE> <U0648>;<UFEEE>;IGNORE;IGNORE
+<U0649> <U0649>;<U0649>;IGNORE;IGNORE
+<UFEEF> <U0649>;<UFEEF>;IGNORE;IGNORE
+<UFEF0> <U0649>;<UFEF0>;IGNORE;IGNORE
+<U064A> <U064A>;<U064A>;IGNORE;IGNORE
+<UFEF1> <U064A>;<UFEF1>;IGNORE;IGNORE
+<UFEF2> <U064A>;<UFEF2>;IGNORE;IGNORE
+<UFEF3> <U064A>;<UFEF3>;IGNORE;IGNORE
+<UFEF4> <U064A>;<UFEF4>;IGNORE;IGNORE
+
+<U064B> IGNORE;IGNORE;<U064B>;IGNORE
+<U064C> IGNORE;IGNORE;<U064C>;IGNORE
+<U064D> IGNORE;IGNORE;<U064D>;IGNORE
+<U064E> IGNORE;IGNORE;<U064E>;IGNORE
+<U064F> IGNORE;IGNORE;<U064F>;IGNORE
+<U0650> IGNORE;IGNORE;<U0650>;IGNORE
+<U0651> IGNORE;IGNORE;<U0651>;IGNORE
+<UFE7D> IGNORE;IGNORE;<UFE7D>;IGNORE
+<U0652> IGNORE;IGNORE;<U0652>;IGNORE
+
+<U0660> <U0030>;<U0660>;IGNORE;IGNORE
+<U0661> <U0031>;<U0661>;IGNORE;IGNORE
+<U0662> <U0032>;<U0662>;IGNORE;IGNORE
+<U0663> <U0033>;<U0663>;IGNORE;IGNORE
+<U0664> <U0034>;<U0664>;IGNORE;IGNORE
+<U0665> <U0035>;<U0665>;IGNORE;IGNORE
+<U0666> <U0036>;<U0666>;IGNORE;IGNORE
+<U0667> <U0037>;<U0667>;IGNORE;IGNORE
+<U0668> <U0038>;<U0668>;IGNORE;IGNORE
+<U0669> <U0039>;<U0669>;IGNORE;IGNORE
+
+<UFEF5> "<U0644><U0622>";"<U0644><U0622>";"<UFEF5><UFEF5>";IGNORE
+<UFEF6> "<U0644><U0622>";"<U0644><UFE82>";"<UFEF6><UFEF6>";IGNORE
+<UFEF7> "<U0644><U0623>";"<U0644><U0623>";"<UFEF7><UFEF7>";IGNORE
+<UFEF8> "<U0644><U0623>";"<U0644><UFE84>";"<UFEF8><UFEF8>";IGNORE
+<UFEF9> "<U0644><U0625>";"<U0644><U0625>";"<UFEF9><UFEF9>";IGNORE
+<UFEFA> "<U0644><U0625>";"<U0644><UFE88>";"<UFEFA><UFEFA>";IGNORE
+<UFEFB> "<U0644><U0627>";"<U0644><UFE8D>";"<UFEFB><UFEFB>";IGNORE
+<UFEFC> "<U0644><U0627>";"<U0644><UFE8E>";"<UFEFC><UFEFC>";IGNORE
+
+% katakana/hiragana sorting
+% base is katakana, as this is present in most charsets
+% normal before voiced before semi-voiced
+% small vocals before normal vocals
+% katakana before hiragana
+
+<U30A1> <U30A1>;<U30A1>;IGNORE;IGNORE
+<U3041> <U30A1>;<U3041>;IGNORE;IGNORE
+<U30A2> <U30A1>;<U30A2>;IGNORE;IGNORE
+<U3042> <U30A1>;<U3042>;IGNORE;IGNORE
+<U30A3> <U30A3>;<U30A3>;IGNORE;IGNORE
+<U3043> <U30A3>;<U3043>;IGNORE;IGNORE
+<U30A4> <U30A3>;<U30A4>;IGNORE;IGNORE
+<U3044> <U30A3>;<U3044>;IGNORE;IGNORE
+<U30A5> <U30A5>;<U30A5>;IGNORE;IGNORE
+<U3045> <U30A5>;<U3045>;IGNORE;IGNORE
+<U30A6> <U30A5>;<U30A6>;IGNORE;IGNORE
+<U3046> <U30A5>;<U3046>;IGNORE;IGNORE
+<U30F4> <U30A5>;<U30F4>;IGNORE;IGNORE
+<U30A7> <U30A7>;<U30A7>;IGNORE;IGNORE
+<U3047> <U30A7>;<U3047>;IGNORE;IGNORE
+<U30A8> <U30A7>;<U30A8>;IGNORE;IGNORE
+<U3048> <U30A7>;<U3048>;IGNORE;IGNORE
+<U30A9> <U30A9>;<U30A9>;IGNORE;IGNORE
+<U3049> <U30A9>;<U3049>;IGNORE;IGNORE
+<U30AA> <U30A9>;<U30AA>;IGNORE;IGNORE
+<U304A> <U30A9>;<U304A>;IGNORE;IGNORE
+<U30F5> <U30F5>;<U30F5>;IGNORE;IGNORE
+<U30AB> <U30F5>;<U30AB>;IGNORE;IGNORE
+<U304B> <U30F5>;<U304B>;IGNORE;IGNORE
+<U30AC> <U30F5>;<U30AC>;IGNORE;IGNORE
+<U304C> <U30F5>;<U304C>;IGNORE;IGNORE
+<U30AD> <U30AD>;<U30AD>;IGNORE;IGNORE
+<U304D> <U30AD>;<U304D>;IGNORE;IGNORE
+<U30AE> <U30AD>;<U30AE>;IGNORE;IGNORE
+<U304E> <U30AD>;<U304E>;IGNORE;IGNORE
+<U30AF> <U30AF>;<U30AF>;IGNORE;IGNORE
+<U304F> <U30AF>;<U304F>;IGNORE;IGNORE
+<U30B0> <U30AF>;<U30B0>;IGNORE;IGNORE
+<U3050> <U30AF>;<U3050>;IGNORE;IGNORE
+<U30F6> <U30F6>;<U30F6>;IGNORE;IGNORE
+<U30B1> <U30F6>;<U30B1>;IGNORE;IGNORE
+<U3051> <U30F6>;<U3051>;IGNORE;IGNORE
+<U30B2> <U30F6>;<U30B2>;IGNORE;IGNORE
+<U3052> <U30F6>;<U3052>;IGNORE;IGNORE
+<U30B3> <U30B3>;<U30B3>;IGNORE;IGNORE
+<U3053> <U30B3>;<U3053>;IGNORE;IGNORE
+<U30B4> <U30B3>;<U30B4>;IGNORE;IGNORE
+<U3054> <U30B3>;<U3054>;IGNORE;IGNORE
+<U30B5> <U30B5>;<U30B5>;IGNORE;IGNORE
+<U3055> <U30B5>;<U3055>;IGNORE;IGNORE
+<U30B6> <U30B5>;<U30B6>;IGNORE;IGNORE
+<U3056> <U30B5>;<U3056>;IGNORE;IGNORE
+<U30B7> <U30B7>;<U30B7>;IGNORE;IGNORE
+<U3057> <U30B7>;<U3057>;IGNORE;IGNORE
+<U30B8> <U30B7>;<U30B8>;IGNORE;IGNORE
+<U3058> <U30B7>;<U3058>;IGNORE;IGNORE
+<U30B9> <U30B9>;<U30B9>;IGNORE;IGNORE
+<U3059> <U30B9>;<U3059>;IGNORE;IGNORE
+<U30BA> <U30B9>;<U30BA>;IGNORE;IGNORE
+<U305A> <U30B9>;<U305A>;IGNORE;IGNORE
+<U30BB> <U30BB>;<U30BB>;IGNORE;IGNORE
+<U305B> <U30BB>;<U305B>;IGNORE;IGNORE
+<U30BC> <U30BB>;<U30BC>;IGNORE;IGNORE
+<U305C> <U30BB>;<U305C>;IGNORE;IGNORE
+<U30BD> <U30BD>;<U30BD>;IGNORE;IGNORE
+<U305D> <U30BD>;<U305D>;IGNORE;IGNORE
+<U30BE> <U30BD>;<U30BE>;IGNORE;IGNORE
+<U305E> <U30BD>;<U305E>;IGNORE;IGNORE
+<U30BF> <U30BF>;<U30BF>;IGNORE;IGNORE
+<U305F> <U30BF>;<U305F>;IGNORE;IGNORE
+<U30C0> <U30BF>;<U30C0>;IGNORE;IGNORE
+<U3060> <U30BF>;<U3060>;IGNORE;IGNORE
+<U30C1> <U30C1>;<U30C1>;IGNORE;IGNORE
+<U3061> <U30C1>;<U3061>;IGNORE;IGNORE
+<U30C2> <U30C1>;<U30C2>;IGNORE;IGNORE
+<U3062> <U30C1>;<U3062>;IGNORE;IGNORE
+<U30C3> <U30C3>;<U30C3>;IGNORE;IGNORE
+<U3063> <U30C3>;<U3063>;IGNORE;IGNORE
+<U30C4> <U30C3>;<U30C4>;IGNORE;IGNORE
+<U3064> <U30C3>;<U3064>;IGNORE;IGNORE
+<U30C5> <U30C3>;<U30C5>;IGNORE;IGNORE
+<U3065> <U30C3>;<U3065>;IGNORE;IGNORE
+<U30C6> <U30C6>;<U30C6>;IGNORE;IGNORE
+<U3066> <U30C6>;<U3066>;IGNORE;IGNORE
+<U30C7> <U30C6>;<U30C7>;IGNORE;IGNORE
+<U3067> <U30C6>;<U3067>;IGNORE;IGNORE
+<U30C8> <U30C8>;<U30C8>;IGNORE;IGNORE
+<U3068> <U30C8>;<U3068>;IGNORE;IGNORE
+<U30C9> <U30C8>;<U30C9>;IGNORE;IGNORE
+<U3069> <U30C8>;<U3069>;IGNORE;IGNORE
+<U30CA> <U30CA>;<U30CA>;IGNORE;IGNORE
+<U306A> <U30CA>;<U306A>;IGNORE;IGNORE
+<U30CB> <U30CB>;<U30CB>;IGNORE;IGNORE
+<U306B> <U30CB>;<U306B>;IGNORE;IGNORE
+<U30CC> <U30CC>;<U30CC>;IGNORE;IGNORE
+<U306C> <U30CC>;<U306C>;IGNORE;IGNORE
+<U30CD> <U30CD>;<U30CD>;IGNORE;IGNORE
+<U306D> <U30CD>;<U306D>;IGNORE;IGNORE
+<U30CE> <U30CE>;<U30CE>;IGNORE;IGNORE
+<U306E> <U30CE>;<U306E>;IGNORE;IGNORE
+<U30CF> <U30CF>;<U30CF>;IGNORE;IGNORE
+<U306F> <U30CF>;<U306F>;IGNORE;IGNORE
+<U30D0> <U30CF>;<U30D0>;IGNORE;IGNORE
+<U3070> <U30CF>;<U3070>;IGNORE;IGNORE
+<U30D1> <U30CF>;<U30D1>;IGNORE;IGNORE
+<U3071> <U30CF>;<U3071>;IGNORE;IGNORE
+<U30D2> <U30D2>;<U30D2>;IGNORE;IGNORE
+<U3072> <U30D2>;<U3072>;IGNORE;IGNORE
+<U30D3> <U30D2>;<U30D3>;IGNORE;IGNORE
+<U3073> <U30D2>;<U3073>;IGNORE;IGNORE
+<U30D4> <U30D2>;<U30D4>;IGNORE;IGNORE
+<U3074> <U30D2>;<U3074>;IGNORE;IGNORE
+<U30D5> <U30D5>;<U30D5>;IGNORE;IGNORE
+<U3075> <U30D5>;<U3075>;IGNORE;IGNORE
+<U30D6> <U30D5>;<U30D6>;IGNORE;IGNORE
+<U3076> <U30D5>;<U3076>;IGNORE;IGNORE
+<U30D7> <U30D5>;<U30D7>;IGNORE;IGNORE
+<U3077> <U30D5>;<U3077>;IGNORE;IGNORE
+<U30D8> <U30D8>;<U30D8>;IGNORE;IGNORE
+<U3078> <U30D8>;<U3078>;IGNORE;IGNORE
+<U30D9> <U30D8>;<U30D9>;IGNORE;IGNORE
+<U3079> <U30D8>;<U3079>;IGNORE;IGNORE
+<U30DA> <U30D8>;<U30DA>;IGNORE;IGNORE
+<U307A> <U30D8>;<U307A>;IGNORE;IGNORE
+<U30DB> <U30DB>;<U30DB>;IGNORE;IGNORE
+<U307B> <U30DB>;<U307B>;IGNORE;IGNORE
+<U30DC> <U30DB>;<U30DC>;IGNORE;IGNORE
+<U307C> <U30DB>;<U307C>;IGNORE;IGNORE
+<U30DD> <U30DB>;<U30DD>;IGNORE;IGNORE
+<U307D> <U30DB>;<U307D>;IGNORE;IGNORE
+<U30DE> <U30DE>;<U30DE>;IGNORE;IGNORE
+<U307E> <U30DE>;<U307E>;IGNORE;IGNORE
+<U30DF> <U30DF>;<U30DF>;IGNORE;IGNORE
+<U307F> <U30DF>;<U307F>;IGNORE;IGNORE
+<U30E0> <U30E0>;<U30E0>;IGNORE;IGNORE
+<U3080> <U30E0>;<U3080>;IGNORE;IGNORE
+<U30E1> <U30E1>;<U30E1>;IGNORE;IGNORE
+<U3081> <U30E1>;<U3081>;IGNORE;IGNORE
+<U30E2> <U30E2>;<U30E2>;IGNORE;IGNORE
+<U3082> <U30E2>;<U3082>;IGNORE;IGNORE
+<U30E3> <U30E3>;<U30E3>;IGNORE;IGNORE
+<U3083> <U30E3>;<U3083>;IGNORE;IGNORE
+<U30E4> <U30E3>;<U30E4>;IGNORE;IGNORE
+<U3084> <U30E3>;<U3084>;IGNORE;IGNORE
+<U30E5> <U30E5>;<U30E5>;IGNORE;IGNORE
+<U3085> <U30E5>;<U3085>;IGNORE;IGNORE
+<U30E6> <U30E5>;<U30E6>;IGNORE;IGNORE
+<U3086> <U30E5>;<U3086>;IGNORE;IGNORE
+<U30E7> <U30E7>;<U30E7>;IGNORE;IGNORE
+<U3087> <U30E7>;<U3087>;IGNORE;IGNORE
+<U30E8> <U30E7>;<U30E8>;IGNORE;IGNORE
+<U3088> <U30E7>;<U3088>;IGNORE;IGNORE
+<U30E9> <U30E9>;<U30E9>;IGNORE;IGNORE
+<U3089> <U30E9>;<U3089>;IGNORE;IGNORE
+<U30EA> <U30EA>;<U30EA>;IGNORE;IGNORE
+<U308A> <U30EA>;<U308A>;IGNORE;IGNORE
+<U30EB> <U30EB>;<U30EB>;IGNORE;IGNORE
+<U308B> <U30EB>;<U308B>;IGNORE;IGNORE
+<U30EC> <U30EC>;<U30EC>;IGNORE;IGNORE
+<U308C> <U30EC>;<U308C>;IGNORE;IGNORE
+<U30ED> <U30ED>;<U30ED>;IGNORE;IGNORE
+<U308D> <U30ED>;<U308D>;IGNORE;IGNORE
+<U30EE> <U30EE>;<U30EE>;IGNORE;IGNORE
+<U308E> <U30EE>;<U308E>;IGNORE;IGNORE
+<U30EF> <U30EE>;<U30EF>;IGNORE;IGNORE
+<U308F> <U30EE>;<U308F>;IGNORE;IGNORE
+<U30F0> <U30F0>;<U30F0>;IGNORE;IGNORE
+<U3090> <U30F0>;<U3090>;IGNORE;IGNORE
+<U30F1> <U30F1>;<U30F1>;IGNORE;IGNORE
+<U3091> <U30F1>;<U3091>;IGNORE;IGNORE
+<U30F2> <U30F2>;<U30F2>;IGNORE;IGNORE
+<U3092> <U30F2>;<U3092>;IGNORE;IGNORE
+<U30F3> <U30F3>;<U30F3>;IGNORE;IGNORE
+<U3093> <U30F3>;<U3093>;IGNORE;IGNORE
+
+order_end
+
diff --git a/ap/build/uClibc/extra/locale/collation/lv_LV b/ap/build/uClibc/extra/locale/collation/lv_LV
new file mode 100644
index 0000000..8492731
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/lv_LV
@@ -0,0 +1,2061 @@
+
+% Base collation scheme: 1994-03-22
+
+% Ordering algorithm:
+% 1. Spaces and hyphen (but not soft
+% hyphen) before punctuation
+% characters, punctuation characters
+% before numbers,
+% numbers before letters.
+% 2. Letters with diacritical marks are
+% members of equivalence classes
+% 3. A distinction is made with regards
+% to case as noted below.
+% 4. Special characters are ignored
+% when comparing letters, but then
+% they are considered
+% 5. The alphabets are sorted in order
+% of first appearance in ISO 10646:
+% Latin, Greek, Cyrillic, etc.
+%
+% According to Greek specifications,
+% the steps 2. and 3. above are reversed
+% for the Greek script
+
+% collating symbols
+
+% The collating symbol naming is
+% mostly taken from ISO 10646-1,
+% for example the case and accent
+% names are from this standard.
+
+collating-symbol <CAPITAL>
+collating-symbol <CAPITAL-SMALL>
+collating-symbol <SMALL-CAPITAL>
+collating-symbol <SMALL>
+
+% <CAPITAL-SMALL> and <SMALL-CAPITAL>
+% are for cases like Danish <U0041><U0061>
+% and Spanish <U0043><U0068> being treated
+% as one letter.
+
+% The <a8> ...... <z8> collating
+% symbols have defined weights as
+% the last character in a group of
+% Latin letters. They are used
+% to specify deltas by locales using
+% a locale as the default ordering
+% and by "replace-after" statements
+% specifying the changed placement
+% in an ordering of a character.
+
+collating-symbol <a8>
+collating-symbol <b8>
+collating-symbol <c8>
+collating-symbol <d8>
+collating-symbol <e8>
+collating-symbol <f8>
+collating-symbol <g8>
+collating-symbol <h8>
+collating-symbol <i8>
+collating-symbol <j8>
+collating-symbol <k8>
+collating-symbol <l8>
+collating-symbol <m8>
+collating-symbol <n8>
+collating-symbol <o8>
+collating-symbol <p8>
+collating-symbol <q8>
+collating-symbol <r8>
+collating-symbol <s8>
+collating-symbol <t8>
+collating-symbol <u8>
+collating-symbol <v8>
+collating-symbol <w8>
+collating-symbol <x8>
+collating-symbol <y8>
+collating-symbol <z8>
+
+collating-symbol <NONE>
+collating-symbol <ACUTE>
+collating-symbol <ACUTE+DOT>
+collating-symbol <GRAVE>
+collating-symbol <DOUBLE-GRAVE>
+collating-symbol <BREVE>
+collating-symbol <BREVE+ACUTE>
+collating-symbol <BREVE+GRAVE>
+collating-symbol <BREVE+MACRON>
+collating-symbol <BREVE+HOOK>
+collating-symbol <BREVE+TILDE>
+collating-symbol <BREVE+DOT-BELOW>
+collating-symbol <BREVE-BELOW>
+collating-symbol <INVERTED-BREVE>
+collating-symbol <CIRCUMFLEX>
+collating-symbol <CIRCUMFLEX+ACUTE>
+collating-symbol <CIRCUMFLEX+GRAVE>
+collating-symbol <CIRCUMFLEX+HOOK>
+collating-symbol <CIRCUMFLEX+TILDE>
+collating-symbol <CIRCUMFLEX+DOT-BELOW>
+collating-symbol <CARON>
+collating-symbol <CARON+DIAERESIS>
+collating-symbol <CARON+DOT>
+collating-symbol <RING>
+collating-symbol <RING+ACUTE>
+collating-symbol <RING-BELOW>
+collating-symbol <DIAERESIS>
+collating-symbol <DIAERESIS+MACRON>
+collating-symbol <DIAERESIS+ACUTE>
+collating-symbol <DIAERESIS+GRAVE>
+collating-symbol <DIAERESIS+CARON>
+collating-symbol <DOUBLE-ACUTE>
+collating-symbol <HOOK>
+collating-symbol <TILDE>
+collating-symbol <TILDE+ACUTE>
+collating-symbol <TILDE+DIAERESIS>
+collating-symbol <TILDE-BELOW>
+collating-symbol <DOT>
+collating-symbol <DOT-BELOW>
+collating-symbol <DOT+DOT-BELOW>
+collating-symbol <STROKE>
+collating-symbol <STROKE+ACUTE>
+collating-symbol <CEDILLA>
+collating-symbol <CEDILLA+ACUTE>
+collating-symbol <CEDILLA+GRAVE>
+collating-symbol <CEDILLA+BREVE>
+collating-symbol <OGONEK>
+collating-symbol <OGONEK+MACRON>
+collating-symbol <MACRON>
+collating-symbol <MACRON+ACUTE>
+collating-symbol <MACRON+GRAVE>
+collating-symbol <MACRON+DIAERESIS>
+collating-symbol <MACRON+DIAERESIS-BELOW>
+collating-symbol <MACRON+DOT>
+collating-symbol <MACRON+DOT-BELOW>
+collating-symbol <MACRON+CIRCUMFLEX>
+collating-symbol <LINE-BELOW>
+collating-symbol <HORN>
+collating-symbol <HORN+ACUTE>
+collating-symbol <HORN+GRAVE>
+collating-symbol <HORN+HOOK>
+collating-symbol <HORN+TILDE>
+collating-symbol <HORN+DOT-BELOW>
+collating-symbol <PRECEDED-BY-APOSTROPHE>
+collating-symbol <GREEK>
+collating-symbol <TONOS>
+collating-symbol <DIALYTICA>
+collating-symbol <DIALYTICA+TONOS>
+collating-symbol <CYRILLIC>
+collating-symbol <HIRAGANA>
+collating-symbol <KATAKANA>
+collating-symbol <SPECIAL>
+
+% letter;accent;case;specials
+
+order_start forward;backward;forward;position
+
+% <CAPITAL> or <SMALL> letters first:
+
+<CAPITAL>
+<CAPITAL-SMALL>
+<SMALL-CAPITAL>
+<SMALL>
+
+% Accents:
+
+<NONE>
+<ACUTE>
+<ACUTE+DOT>
+<GRAVE>
+<DOUBLE-GRAVE>
+<BREVE>
+<BREVE+ACUTE>
+<BREVE+GRAVE>
+<BREVE+MACRON>
+<BREVE+HOOK>
+<BREVE+TILDE>
+<BREVE+DOT-BELOW>
+<BREVE-BELOW>
+<INVERTED-BREVE>
+<CIRCUMFLEX>
+<CIRCUMFLEX+ACUTE>
+<CIRCUMFLEX+GRAVE>
+<CIRCUMFLEX+HOOK>
+<CIRCUMFLEX+TILDE>
+<CIRCUMFLEX+DOT-BELOW>
+<CARON>
+<CARON+DIAERESIS>
+<CARON+DOT>
+<RING>
+<RING+ACUTE>
+<RING-BELOW>
+<DIAERESIS>
+<DIAERESIS+MACRON>
+<DIAERESIS+ACUTE>
+<DIAERESIS+GRAVE>
+<DIAERESIS+CARON>
+<DOUBLE-ACUTE>
+<HOOK>
+<TILDE>
+<TILDE+ACUTE>
+<TILDE+DIAERESIS>
+<TILDE-BELOW>
+<DOT>
+<DOT-BELOW>
+<DOT+DOT-BELOW>
+<STROKE>
+<STROKE+ACUTE>
+<CEDILLA>
+<CEDILLA+ACUTE>
+<CEDILLA+GRAVE>
+<CEDILLA+BREVE>
+<OGONEK>
+<OGONEK+MACRON>
+<MACRON>
+<MACRON+ACUTE>
+<MACRON+GRAVE>
+<MACRON+DIAERESIS>
+<MACRON+DIAERESIS-BELOW>
+<MACRON+DOT>
+<MACRON+DOT-BELOW>
+<MACRON+CIRCUMFLEX>
+<LINE-BELOW>
+<HORN>
+<HORN+ACUTE>
+<HORN+GRAVE>
+<HORN+HOOK>
+<HORN+TILDE>
+<HORN+DOT-BELOW>
+<PRECEDED-BY-APOSTROPHE>
+<GREEK>
+<TONOS>
+<DIALYTICA>
+<DIALYTICA+TONOS>
+<CYRILLIC>
+<HIRAGANA>
+<KATAKANA>
+<SPECIAL>
+
+<U00A0> <U00A0>;<U00A0>;<U00A0>;IGNORE
+<U0020> IGNORE;IGNORE;IGNORE;<U0020>
+<U0009> IGNORE;IGNORE;IGNORE;<U0009>
+<U000B> IGNORE;IGNORE;IGNORE;<U000B>
+<U000D> IGNORE;IGNORE;IGNORE;<U000D>
+<U000A> IGNORE;IGNORE;IGNORE;<U000A>
+<U000C> IGNORE;IGNORE;IGNORE;<U000C>
+<U005F> IGNORE;IGNORE;IGNORE;<U005F>
+<U00AF> IGNORE;IGNORE;IGNORE;<U00AF>
+<U00AD> IGNORE;IGNORE;IGNORE;<U00AD>
+<U002D> IGNORE;IGNORE;IGNORE;<U002D>
+<U002C> IGNORE;IGNORE;IGNORE;<U002C>
+<U003B> IGNORE;IGNORE;IGNORE;<U003B>
+<U003A> IGNORE;IGNORE;IGNORE;<U003A>
+<U0021> IGNORE;IGNORE;IGNORE;<U0021>
+<U00A1> IGNORE;IGNORE;IGNORE;<U00A1>
+<U003F> IGNORE;IGNORE;IGNORE;<U003F>
+<U00BF> IGNORE;IGNORE;IGNORE;<U00BF>
+<U002F> IGNORE;IGNORE;IGNORE;<U002F>
+<U002E> IGNORE;IGNORE;IGNORE;<U002E>
+<U00B4> IGNORE;IGNORE;IGNORE;<U00B4>
+<U0060> IGNORE;IGNORE;IGNORE;<U0060>
+<U005E> IGNORE;IGNORE;IGNORE;<U005E>
+<U00A8> IGNORE;IGNORE;IGNORE;<U00A8>
+<U007E> IGNORE;IGNORE;IGNORE;<U007E>
+<U00B7> IGNORE;IGNORE;IGNORE;<U00B7>
+<U00B8> IGNORE;IGNORE;IGNORE;<U00B8>
+<U0027> IGNORE;IGNORE;IGNORE;<U0027>
+<U2018> IGNORE;IGNORE;IGNORE;<U2018>
+<U2019> IGNORE;IGNORE;IGNORE;<U2019>
+<U0022> IGNORE;IGNORE;IGNORE;<U0022>
+<U201C> IGNORE;IGNORE;IGNORE;<U201C>
+<U201D> IGNORE;IGNORE;IGNORE;<U201D>
+<U00AB> IGNORE;IGNORE;IGNORE;<U00AB>
+<U00BB> IGNORE;IGNORE;IGNORE;<U00BB>
+<U0028> IGNORE;IGNORE;IGNORE;<U0028>
+<U207D> IGNORE;IGNORE;IGNORE;<U207D>
+<U0029> IGNORE;IGNORE;IGNORE;<U0029>
+<U207E> IGNORE;IGNORE;IGNORE;<U207E>
+<U005B> IGNORE;IGNORE;IGNORE;<U005B>
+<U005D> IGNORE;IGNORE;IGNORE;<U005D>
+<U007B> IGNORE;IGNORE;IGNORE;<U007B>
+<U007D> IGNORE;IGNORE;IGNORE;<U007D>
+<U00A7> IGNORE;IGNORE;IGNORE;<U00A7>
+<U00B6> IGNORE;IGNORE;IGNORE;<U00B6>
+<U00A9> IGNORE;IGNORE;IGNORE;<U00A9>
+<U00AE> IGNORE;IGNORE;IGNORE;<U00AE>
+<U0040> IGNORE;IGNORE;IGNORE;<U0040>
+<U00A4> IGNORE;IGNORE;IGNORE;<U00A4>
+<U00A2> IGNORE;IGNORE;IGNORE;<U00A2>
+<U0024> IGNORE;IGNORE;IGNORE;<U0024>
+<U00A3> IGNORE;IGNORE;IGNORE;<U00A3>
+<U00A5> IGNORE;IGNORE;IGNORE;<U00A5>
+<U002A> IGNORE;IGNORE;IGNORE;<U002A>
+<U005C> IGNORE;IGNORE;IGNORE;<U005C>
+<U0026> IGNORE;IGNORE;IGNORE;<U0026>
+<U0023> IGNORE;IGNORE;IGNORE;<U0023>
+<U0025> IGNORE;IGNORE;IGNORE;<U0025>
+<U207B> IGNORE;IGNORE;IGNORE;<U207B>
+<U002B> IGNORE;IGNORE;IGNORE;<U002B>
+<U207A> IGNORE;IGNORE;IGNORE;<U207A>
+<U00B1> IGNORE;IGNORE;IGNORE;<U00B1>
+<U00F7> IGNORE;IGNORE;IGNORE;<U00F7>
+<U00D7> IGNORE;IGNORE;IGNORE;<U00D7>
+<U2260> IGNORE;IGNORE;IGNORE;<U2260>
+<U003C> IGNORE;IGNORE;IGNORE;<U003C>
+<U2264> IGNORE;IGNORE;IGNORE;<U2264>
+<U003D> IGNORE;IGNORE;IGNORE;<U003D>
+<U2265> IGNORE;IGNORE;IGNORE;<U2265>
+<U003E> IGNORE;IGNORE;IGNORE;<U003E>
+<U00AC> IGNORE;IGNORE;IGNORE;<U00AC>
+<U007C> IGNORE;IGNORE;IGNORE;<U007C>
+<U00A6> IGNORE;IGNORE;IGNORE;<U00A6>
+<U00B0> IGNORE;IGNORE;IGNORE;<U00B0>
+<U00B5> IGNORE;IGNORE;IGNORE;<U00B5>
+<U02C7> IGNORE;IGNORE;IGNORE;<U02C7>
+<U02D8> IGNORE;IGNORE;IGNORE;<U02D8>
+<U02D9> IGNORE;IGNORE;IGNORE;<U02D9>
+<U02DA> IGNORE;IGNORE;IGNORE;<U02DA>
+<U02DB> IGNORE;IGNORE;IGNORE;<U02DB>
+<U02DC> IGNORE;IGNORE;IGNORE;<U02DC>
+<U02DD> IGNORE;IGNORE;IGNORE;<U02DD>
+<U0374> IGNORE;IGNORE;IGNORE;<U0374>
+<U0375> IGNORE;IGNORE;IGNORE;<U0375>
+<U037A> IGNORE;IGNORE;IGNORE;<U037A>
+<U037E> IGNORE;IGNORE;IGNORE;<U037E>
+<U0384> IGNORE;IGNORE;IGNORE;<U0384>
+<U0385> IGNORE;IGNORE;IGNORE;<U0385>
+<U0387> IGNORE;IGNORE;IGNORE;<U0387>
+<U03D0> IGNORE;IGNORE;IGNORE;<U03D0>
+<U1FBF> IGNORE;IGNORE;IGNORE;<U1FBF>
+<U1FC0> IGNORE;IGNORE;IGNORE;<U1FC0>
+<U1FC1> IGNORE;IGNORE;IGNORE;<U1FC1>
+<U1FCD> IGNORE;IGNORE;IGNORE;<U1FCD>
+<U1FCE> IGNORE;IGNORE;IGNORE;<U1FCE>
+<U1FCF> IGNORE;IGNORE;IGNORE;<U1FCF>
+<U1FDD> IGNORE;IGNORE;IGNORE;<U1FDD>
+<U1FDE> IGNORE;IGNORE;IGNORE;<U1FDE>
+<U1FDF> IGNORE;IGNORE;IGNORE;<U1FDF>
+<U1FED> IGNORE;IGNORE;IGNORE;<U1FED>
+<U1FEF> IGNORE;IGNORE;IGNORE;<U1FEF>
+<U1FFE> IGNORE;IGNORE;IGNORE;<U1FFE>
+<U2002> IGNORE;IGNORE;IGNORE;<U2002>
+<U2003> IGNORE;IGNORE;IGNORE;<U2003>
+<U2004> IGNORE;IGNORE;IGNORE;<U2004>
+<U2005> IGNORE;IGNORE;IGNORE;<U2005>
+<U2006> IGNORE;IGNORE;IGNORE;<U2006>
+<U200E> IGNORE;IGNORE;IGNORE;<U200E>
+<U200F> IGNORE;IGNORE;IGNORE;<U200F>
+<U2009> IGNORE;IGNORE;IGNORE;<U2009>
+<U200A> IGNORE;IGNORE;IGNORE;<U200A>
+<U2010> IGNORE;IGNORE;IGNORE;<U2010>
+<U2013> IGNORE;IGNORE;IGNORE;<U2013>
+<U2014> IGNORE;IGNORE;IGNORE;<U2014>
+<U2015> IGNORE;IGNORE;IGNORE;<U2015>
+<U2016> IGNORE;IGNORE;IGNORE;<U2016>
+<U2017> IGNORE;IGNORE;IGNORE;<U2017>
+<U201A> IGNORE;IGNORE;IGNORE;<U201A>
+<U201B> IGNORE;IGNORE;IGNORE;<U201B>
+<U201E> IGNORE;IGNORE;IGNORE;<U201E>
+<U201F> IGNORE;IGNORE;IGNORE;<U201F>
+<U2020> IGNORE;IGNORE;IGNORE;<U2020>
+<U2021> IGNORE;IGNORE;IGNORE;<U2021>
+<U2219> IGNORE;IGNORE;IGNORE;<U2219>
+<U2025> IGNORE;IGNORE;IGNORE;<U2025>
+<U2026> IGNORE;IGNORE;IGNORE;<U2026>
+<U2030> IGNORE;IGNORE;IGNORE;<U2030>
+<U2032> IGNORE;IGNORE;IGNORE;<U2032>
+<U2033> IGNORE;IGNORE;IGNORE;<U2033>
+<U2034> IGNORE;IGNORE;IGNORE;<U2034>
+<U2035> IGNORE;IGNORE;IGNORE;<U2035>
+<U2036> IGNORE;IGNORE;IGNORE;<U2036>
+<U2037> IGNORE;IGNORE;IGNORE;<U2037>
+<U2038> IGNORE;IGNORE;IGNORE;<U2038>
+<U2039> IGNORE;IGNORE;IGNORE;<U2039>
+<U203A> IGNORE;IGNORE;IGNORE;<U203A>
+<U203B> IGNORE;IGNORE;IGNORE;<U203B>
+<U203C> IGNORE;IGNORE;IGNORE;<U203C>
+<U203E> IGNORE;IGNORE;IGNORE;<U203E>
+<U207C> IGNORE;IGNORE;IGNORE;<U207C>
+<U2080> IGNORE;IGNORE;IGNORE;<U2080>
+<U2081> IGNORE;IGNORE;IGNORE;<U2081>
+<U2082> IGNORE;IGNORE;IGNORE;<U2082>
+<U2083> IGNORE;IGNORE;IGNORE;<U2083>
+<U2084> IGNORE;IGNORE;IGNORE;<U2084>
+<U2085> IGNORE;IGNORE;IGNORE;<U2085>
+<U2086> IGNORE;IGNORE;IGNORE;<U2086>
+<U2087> IGNORE;IGNORE;IGNORE;<U2087>
+<U2088> IGNORE;IGNORE;IGNORE;<U2088>
+<U2089> IGNORE;IGNORE;IGNORE;<U2089>
+<U208A> IGNORE;IGNORE;IGNORE;<U208A>
+<U208B> IGNORE;IGNORE;IGNORE;<U208B>
+<U208C> IGNORE;IGNORE;IGNORE;<U208C>
+<U208D> IGNORE;IGNORE;IGNORE;<U208D>
+<U208E> IGNORE;IGNORE;IGNORE;<U208E>
+<U20A3> IGNORE;IGNORE;IGNORE;<U20A3>
+<U20A4> IGNORE;IGNORE;IGNORE;<U20A4>
+<U20A7> IGNORE;IGNORE;IGNORE;<U20A7>
+<U20A9> IGNORE;IGNORE;IGNORE;<U20A9>
+<U2103> IGNORE;IGNORE;IGNORE;<U2103>
+<U2105> IGNORE;IGNORE;IGNORE;<U2105>
+<U2109> IGNORE;IGNORE;IGNORE;<U2109>
+<U2116> IGNORE;IGNORE;IGNORE;<U2116>
+<U2117> IGNORE;IGNORE;IGNORE;<U2117>
+<U211E> IGNORE;IGNORE;IGNORE;<U211E>
+<U2120> IGNORE;IGNORE;IGNORE;<U2120>
+<U2122> IGNORE;IGNORE;IGNORE;<U2122>
+<U2126> IGNORE;IGNORE;IGNORE;<U2126>
+<U212B> IGNORE;IGNORE;IGNORE;<U212B>
+<U2153> IGNORE;IGNORE;IGNORE;<U2153>
+<U2154> IGNORE;IGNORE;IGNORE;<U2154>
+<U2155> IGNORE;IGNORE;IGNORE;<U2155>
+<U2156> IGNORE;IGNORE;IGNORE;<U2156>
+<U2157> IGNORE;IGNORE;IGNORE;<U2157>
+<U2158> IGNORE;IGNORE;IGNORE;<U2158>
+<U2159> IGNORE;IGNORE;IGNORE;<U2159>
+<U215A> IGNORE;IGNORE;IGNORE;<U215A>
+<U2160> IGNORE;IGNORE;IGNORE;<U2160>
+<U2161> IGNORE;IGNORE;IGNORE;<U2161>
+<U2162> IGNORE;IGNORE;IGNORE;<U2162>
+<U2163> IGNORE;IGNORE;IGNORE;<U2163>
+<U2164> IGNORE;IGNORE;IGNORE;<U2164>
+<U2165> IGNORE;IGNORE;IGNORE;<U2165>
+<U2166> IGNORE;IGNORE;IGNORE;<U2166>
+<U2167> IGNORE;IGNORE;IGNORE;<U2167>
+<U2168> IGNORE;IGNORE;IGNORE;<U2168>
+<U2169> IGNORE;IGNORE;IGNORE;<U2169>
+<U216A> IGNORE;IGNORE;IGNORE;<U216A>
+<U216B> IGNORE;IGNORE;IGNORE;<U216B>
+<U216C> IGNORE;IGNORE;IGNORE;<U216C>
+<U216D> IGNORE;IGNORE;IGNORE;<U216D>
+<U216E> IGNORE;IGNORE;IGNORE;<U216E>
+<U216F> IGNORE;IGNORE;IGNORE;<U216F>
+<U2170> IGNORE;IGNORE;IGNORE;<U2170>
+<U2171> IGNORE;IGNORE;IGNORE;<U2171>
+<U2172> IGNORE;IGNORE;IGNORE;<U2172>
+<U2173> IGNORE;IGNORE;IGNORE;<U2173>
+<U2174> IGNORE;IGNORE;IGNORE;<U2174>
+<U2175> IGNORE;IGNORE;IGNORE;<U2175>
+<U2176> IGNORE;IGNORE;IGNORE;<U2176>
+<U2177> IGNORE;IGNORE;IGNORE;<U2177>
+<U2178> IGNORE;IGNORE;IGNORE;<U2178>
+<U2179> IGNORE;IGNORE;IGNORE;<U2179>
+<U217A> IGNORE;IGNORE;IGNORE;<U217A>
+<U217B> IGNORE;IGNORE;IGNORE;<U217B>
+<U217C> IGNORE;IGNORE;IGNORE;<U217C>
+<U217D> IGNORE;IGNORE;IGNORE;<U217D>
+<U217E> IGNORE;IGNORE;IGNORE;<U217E>
+<U217F> IGNORE;IGNORE;IGNORE;<U217F>
+<U2180> IGNORE;IGNORE;IGNORE;<U2180>
+<U2181> IGNORE;IGNORE;IGNORE;<U2181>
+<U2182> IGNORE;IGNORE;IGNORE;<U2182>
+<U2191> IGNORE;IGNORE;IGNORE;<U2191>
+<U2193> IGNORE;IGNORE;IGNORE;<U2193>
+<U2194> IGNORE;IGNORE;IGNORE;<U2194>
+<U2195> IGNORE;IGNORE;IGNORE;<U2195>
+<U2196> IGNORE;IGNORE;IGNORE;<U2196>
+<U2197> IGNORE;IGNORE;IGNORE;<U2197>
+<U2198> IGNORE;IGNORE;IGNORE;<U2198>
+<U2199> IGNORE;IGNORE;IGNORE;<U2199>
+<U21A8> IGNORE;IGNORE;IGNORE;<U21A8>
+<U21C0> IGNORE;IGNORE;IGNORE;<U21C0>
+<U21D0> IGNORE;IGNORE;IGNORE;<U21D0>
+<U21D2> IGNORE;IGNORE;IGNORE;<U21D2>
+<U21D4> IGNORE;IGNORE;IGNORE;<U21D4>
+<U2200> IGNORE;IGNORE;IGNORE;<U2200>
+<U2202> IGNORE;IGNORE;IGNORE;<U2202>
+<U2203> IGNORE;IGNORE;IGNORE;<U2203>
+<U2205> IGNORE;IGNORE;IGNORE;<U2205>
+<U2206> IGNORE;IGNORE;IGNORE;<U2206>
+<U2207> IGNORE;IGNORE;IGNORE;<U2207>
+<U2208> IGNORE;IGNORE;IGNORE;<U2208>
+<U220B> IGNORE;IGNORE;IGNORE;<U220B>
+<U220F> IGNORE;IGNORE;IGNORE;<U220F>
+<U2211> IGNORE;IGNORE;IGNORE;<U2211>
+<U2212> IGNORE;IGNORE;IGNORE;<U2212>
+<U2213> IGNORE;IGNORE;IGNORE;<U2213>
+<U2214> IGNORE;IGNORE;IGNORE;<U2214>
+<U2044> IGNORE;IGNORE;IGNORE;<U2044>
+<U2217> IGNORE;IGNORE;IGNORE;<U2217>
+<U2218> IGNORE;IGNORE;IGNORE;<U2218>
+<U2022> IGNORE;IGNORE;IGNORE;<U2022>
+<U221A> IGNORE;IGNORE;IGNORE;<U221A>
+<U221D> IGNORE;IGNORE;IGNORE;<U221D>
+<U221E> IGNORE;IGNORE;IGNORE;<U221E>
+<U221F> IGNORE;IGNORE;IGNORE;<U221F>
+<U2220> IGNORE;IGNORE;IGNORE;<U2220>
+<U2225> IGNORE;IGNORE;IGNORE;<U2225>
+<U2227> IGNORE;IGNORE;IGNORE;<U2227>
+<U2228> IGNORE;IGNORE;IGNORE;<U2228>
+<U2229> IGNORE;IGNORE;IGNORE;<U2229>
+<U222A> IGNORE;IGNORE;IGNORE;<U222A>
+<U222B> IGNORE;IGNORE;IGNORE;<U222B>
+<U222C> IGNORE;IGNORE;IGNORE;<U222C>
+<U222E> IGNORE;IGNORE;IGNORE;<U222E>
+<U2234> IGNORE;IGNORE;IGNORE;<U2234>
+<U2235> IGNORE;IGNORE;IGNORE;<U2235>
+<U2236> IGNORE;IGNORE;IGNORE;<U2236>
+<U2237> IGNORE;IGNORE;IGNORE;<U2237>
+<U223C> IGNORE;IGNORE;IGNORE;<U223C>
+<U223E> IGNORE;IGNORE;IGNORE;<U223E>
+<U2243> IGNORE;IGNORE;IGNORE;<U2243>
+<U2245> IGNORE;IGNORE;IGNORE;<U2245>
+<U2248> IGNORE;IGNORE;IGNORE;<U2248>
+<U224C> IGNORE;IGNORE;IGNORE;<U224C>
+<U2253> IGNORE;IGNORE;IGNORE;<U2253>
+<U2261> IGNORE;IGNORE;IGNORE;<U2261>
+<U226A> IGNORE;IGNORE;IGNORE;<U226A>
+<U226B> IGNORE;IGNORE;IGNORE;<U226B>
+<U226E> IGNORE;IGNORE;IGNORE;<U226E>
+<U226F> IGNORE;IGNORE;IGNORE;<U226F>
+<U2282> IGNORE;IGNORE;IGNORE;<U2282>
+<U2283> IGNORE;IGNORE;IGNORE;<U2283>
+<U2286> IGNORE;IGNORE;IGNORE;<U2286>
+<U2287> IGNORE;IGNORE;IGNORE;<U2287>
+<U2299> IGNORE;IGNORE;IGNORE;<U2299>
+<U229A> IGNORE;IGNORE;IGNORE;<U229A>
+<U22A5> IGNORE;IGNORE;IGNORE;<U22A5>
+<U22C5> IGNORE;IGNORE;IGNORE;<U22C5>
+<U22EE> IGNORE;IGNORE;IGNORE;<U22EE>
+<U2302> IGNORE;IGNORE;IGNORE;<U2302>
+<U2308> IGNORE;IGNORE;IGNORE;<U2308>
+<U2309> IGNORE;IGNORE;IGNORE;<U2309>
+<U230A> IGNORE;IGNORE;IGNORE;<U230A>
+<U230B> IGNORE;IGNORE;IGNORE;<U230B>
+<U2310> IGNORE;IGNORE;IGNORE;<U2310>
+<U2312> IGNORE;IGNORE;IGNORE;<U2312>
+<U2315> IGNORE;IGNORE;IGNORE;<U2315>
+<U2320> IGNORE;IGNORE;IGNORE;<U2320>
+<U2321> IGNORE;IGNORE;IGNORE;<U2321>
+<U2423> IGNORE;IGNORE;IGNORE;<U2423>
+<U2440> IGNORE;IGNORE;IGNORE;<U2440>
+<U2441> IGNORE;IGNORE;IGNORE;<U2441>
+<U2442> IGNORE;IGNORE;IGNORE;<U2442>
+<U2443> IGNORE;IGNORE;IGNORE;<U2443>
+<U2446> IGNORE;IGNORE;IGNORE;<U2446>
+<U2447> IGNORE;IGNORE;IGNORE;<U2447>
+<U2448> IGNORE;IGNORE;IGNORE;<U2448>
+<U2449> IGNORE;IGNORE;IGNORE;<U2449>
+<U2460> IGNORE;IGNORE;IGNORE;<U2460>
+<U2461> IGNORE;IGNORE;IGNORE;<U2461>
+<U2462> IGNORE;IGNORE;IGNORE;<U2462>
+<U2463> IGNORE;IGNORE;IGNORE;<U2463>
+<U2464> IGNORE;IGNORE;IGNORE;<U2464>
+<U2465> IGNORE;IGNORE;IGNORE;<U2465>
+<U2466> IGNORE;IGNORE;IGNORE;<U2466>
+<U2467> IGNORE;IGNORE;IGNORE;<U2467>
+<U2468> IGNORE;IGNORE;IGNORE;<U2468>
+<U2469> IGNORE;IGNORE;IGNORE;<U2469>
+<U246A> IGNORE;IGNORE;IGNORE;<U246A>
+<U246B> IGNORE;IGNORE;IGNORE;<U246B>
+<U246C> IGNORE;IGNORE;IGNORE;<U246C>
+<U246D> IGNORE;IGNORE;IGNORE;<U246D>
+<U246E> IGNORE;IGNORE;IGNORE;<U246E>
+<U246F> IGNORE;IGNORE;IGNORE;<U246F>
+<U2470> IGNORE;IGNORE;IGNORE;<U2470>
+<U2471> IGNORE;IGNORE;IGNORE;<U2471>
+<U2472> IGNORE;IGNORE;IGNORE;<U2472>
+<U2473> IGNORE;IGNORE;IGNORE;<U2473>
+<U2474> IGNORE;IGNORE;IGNORE;<U2474>
+<U2475> IGNORE;IGNORE;IGNORE;<U2475>
+<U2476> IGNORE;IGNORE;IGNORE;<U2476>
+<U2477> IGNORE;IGNORE;IGNORE;<U2477>
+<U2478> IGNORE;IGNORE;IGNORE;<U2478>
+<U2479> IGNORE;IGNORE;IGNORE;<U2479>
+<U247A> IGNORE;IGNORE;IGNORE;<U247A>
+<U247B> IGNORE;IGNORE;IGNORE;<U247B>
+<U247C> IGNORE;IGNORE;IGNORE;<U247C>
+<U247D> IGNORE;IGNORE;IGNORE;<U247D>
+<U247E> IGNORE;IGNORE;IGNORE;<U247E>
+<U247F> IGNORE;IGNORE;IGNORE;<U247F>
+<U2480> IGNORE;IGNORE;IGNORE;<U2480>
+<U2481> IGNORE;IGNORE;IGNORE;<U2481>
+<U2482> IGNORE;IGNORE;IGNORE;<U2482>
+<U2483> IGNORE;IGNORE;IGNORE;<U2483>
+<U2484> IGNORE;IGNORE;IGNORE;<U2484>
+<U2485> IGNORE;IGNORE;IGNORE;<U2485>
+<U2486> IGNORE;IGNORE;IGNORE;<U2486>
+<U2487> IGNORE;IGNORE;IGNORE;<U2487>
+<U2488> IGNORE;IGNORE;IGNORE;<U2488>
+<U2489> IGNORE;IGNORE;IGNORE;<U2489>
+<U248A> IGNORE;IGNORE;IGNORE;<U248A>
+<U248B> IGNORE;IGNORE;IGNORE;<U248B>
+<U248C> IGNORE;IGNORE;IGNORE;<U248C>
+<U248D> IGNORE;IGNORE;IGNORE;<U248D>
+<U248E> IGNORE;IGNORE;IGNORE;<U248E>
+<U248F> IGNORE;IGNORE;IGNORE;<U248F>
+<U2490> IGNORE;IGNORE;IGNORE;<U2490>
+<U2491> IGNORE;IGNORE;IGNORE;<U2491>
+<U2492> IGNORE;IGNORE;IGNORE;<U2492>
+<U2493> IGNORE;IGNORE;IGNORE;<U2493>
+<U2494> IGNORE;IGNORE;IGNORE;<U2494>
+<U2495> IGNORE;IGNORE;IGNORE;<U2495>
+<U2496> IGNORE;IGNORE;IGNORE;<U2496>
+<U2497> IGNORE;IGNORE;IGNORE;<U2497>
+<U2498> IGNORE;IGNORE;IGNORE;<U2498>
+<U2499> IGNORE;IGNORE;IGNORE;<U2499>
+<U249A> IGNORE;IGNORE;IGNORE;<U249A>
+<U249B> IGNORE;IGNORE;IGNORE;<U249B>
+<U24EA> IGNORE;IGNORE;IGNORE;<U24EA>
+<U2500> IGNORE;IGNORE;IGNORE;<U2500>
+<U2550> IGNORE;IGNORE;IGNORE;<U2550>
+<U2502> IGNORE;IGNORE;IGNORE;<U2502>
+<U2551> IGNORE;IGNORE;IGNORE;<U2551>
+<U2504> IGNORE;IGNORE;IGNORE;<U2504>
+<U2505> IGNORE;IGNORE;IGNORE;<U2505>
+<U2506> IGNORE;IGNORE;IGNORE;<U2506>
+<U2507> IGNORE;IGNORE;IGNORE;<U2507>
+<U2508> IGNORE;IGNORE;IGNORE;<U2508>
+<U2509> IGNORE;IGNORE;IGNORE;<U2509>
+<U250A> IGNORE;IGNORE;IGNORE;<U250A>
+<U250B> IGNORE;IGNORE;IGNORE;<U250B>
+<U250C> IGNORE;IGNORE;IGNORE;<U250C>
+<U2552> IGNORE;IGNORE;IGNORE;<U2552>
+<U2553> IGNORE;IGNORE;IGNORE;<U2553>
+<U2554> IGNORE;IGNORE;IGNORE;<U2554>
+<U2510> IGNORE;IGNORE;IGNORE;<U2510>
+<U2555> IGNORE;IGNORE;IGNORE;<U2555>
+<U2556> IGNORE;IGNORE;IGNORE;<U2556>
+<U2557> IGNORE;IGNORE;IGNORE;<U2557>
+<U2514> IGNORE;IGNORE;IGNORE;<U2514>
+<U2558> IGNORE;IGNORE;IGNORE;<U2558>
+<U2559> IGNORE;IGNORE;IGNORE;<U2559>
+<U255A> IGNORE;IGNORE;IGNORE;<U255A>
+<U2518> IGNORE;IGNORE;IGNORE;<U2518>
+<U255B> IGNORE;IGNORE;IGNORE;<U255B>
+<U255C> IGNORE;IGNORE;IGNORE;<U255C>
+<U255D> IGNORE;IGNORE;IGNORE;<U255D>
+<U251C> IGNORE;IGNORE;IGNORE;<U251C>
+<U255E> IGNORE;IGNORE;IGNORE;<U255E>
+<U251E> IGNORE;IGNORE;IGNORE;<U251E>
+<U251F> IGNORE;IGNORE;IGNORE;<U251F>
+<U255F> IGNORE;IGNORE;IGNORE;<U255F>
+<U2521> IGNORE;IGNORE;IGNORE;<U2521>
+<U2522> IGNORE;IGNORE;IGNORE;<U2522>
+<U2560> IGNORE;IGNORE;IGNORE;<U2560>
+<U2524> IGNORE;IGNORE;IGNORE;<U2524>
+<U2561> IGNORE;IGNORE;IGNORE;<U2561>
+<U2526> IGNORE;IGNORE;IGNORE;<U2526>
+<U2527> IGNORE;IGNORE;IGNORE;<U2527>
+<U2562> IGNORE;IGNORE;IGNORE;<U2562>
+<U2529> IGNORE;IGNORE;IGNORE;<U2529>
+<U252A> IGNORE;IGNORE;IGNORE;<U252A>
+<U2563> IGNORE;IGNORE;IGNORE;<U2563>
+<U252C> IGNORE;IGNORE;IGNORE;<U252C>
+<U252D> IGNORE;IGNORE;IGNORE;<U252D>
+<U252E> IGNORE;IGNORE;IGNORE;<U252E>
+<U2564> IGNORE;IGNORE;IGNORE;<U2564>
+<U2565> IGNORE;IGNORE;IGNORE;<U2565>
+<U2531> IGNORE;IGNORE;IGNORE;<U2531>
+<U2532> IGNORE;IGNORE;IGNORE;<U2532>
+<U2566> IGNORE;IGNORE;IGNORE;<U2566>
+<U2534> IGNORE;IGNORE;IGNORE;<U2534>
+<U2535> IGNORE;IGNORE;IGNORE;<U2535>
+<U2536> IGNORE;IGNORE;IGNORE;<U2536>
+<U2567> IGNORE;IGNORE;IGNORE;<U2567>
+<U2568> IGNORE;IGNORE;IGNORE;<U2568>
+<U2539> IGNORE;IGNORE;IGNORE;<U2539>
+<U253A> IGNORE;IGNORE;IGNORE;<U253A>
+<U2569> IGNORE;IGNORE;IGNORE;<U2569>
+<U253C> IGNORE;IGNORE;IGNORE;<U253C>
+<U253D> IGNORE;IGNORE;IGNORE;<U253D>
+<U253E> IGNORE;IGNORE;IGNORE;<U253E>
+<U256A> IGNORE;IGNORE;IGNORE;<U256A>
+<U2540> IGNORE;IGNORE;IGNORE;<U2540>
+<U2541> IGNORE;IGNORE;IGNORE;<U2541>
+<U256B> IGNORE;IGNORE;IGNORE;<U256B>
+<U2543> IGNORE;IGNORE;IGNORE;<U2543>
+<U2544> IGNORE;IGNORE;IGNORE;<U2544>
+<U2545> IGNORE;IGNORE;IGNORE;<U2545>
+<U2546> IGNORE;IGNORE;IGNORE;<U2546>
+<U2547> IGNORE;IGNORE;IGNORE;<U2547>
+<U2548> IGNORE;IGNORE;IGNORE;<U2548>
+<U2549> IGNORE;IGNORE;IGNORE;<U2549>
+<U254A> IGNORE;IGNORE;IGNORE;<U254A>
+<U256C> IGNORE;IGNORE;IGNORE;<U256C>
+<U2571> IGNORE;IGNORE;IGNORE;<U2571>
+<U2572> IGNORE;IGNORE;IGNORE;<U2572>
+<U2580> IGNORE;IGNORE;IGNORE;<U2580>
+<U2584> IGNORE;IGNORE;IGNORE;<U2584>
+<U2588> IGNORE;IGNORE;IGNORE;<U2588>
+<U258C> IGNORE;IGNORE;IGNORE;<U258C>
+<U2590> IGNORE;IGNORE;IGNORE;<U2590>
+<U2591> IGNORE;IGNORE;IGNORE;<U2591>
+<U2592> IGNORE;IGNORE;IGNORE;<U2592>
+<U2593> IGNORE;IGNORE;IGNORE;<U2593>
+<U25A0> IGNORE;IGNORE;IGNORE;<U25A0>
+<U25A1> IGNORE;IGNORE;IGNORE;<U25A1>
+<U25A2> IGNORE;IGNORE;IGNORE;<U25A2>
+<U25A3> IGNORE;IGNORE;IGNORE;<U25A3>
+<U25A4> IGNORE;IGNORE;IGNORE;<U25A4>
+<U25A5> IGNORE;IGNORE;IGNORE;<U25A5>
+<U25A6> IGNORE;IGNORE;IGNORE;<U25A6>
+<U25A7> IGNORE;IGNORE;IGNORE;<U25A7>
+<U25A8> IGNORE;IGNORE;IGNORE;<U25A8>
+<U25A9> IGNORE;IGNORE;IGNORE;<U25A9>
+<U25AA> IGNORE;IGNORE;IGNORE;<U25AA>
+<U25AC> IGNORE;IGNORE;IGNORE;<U25AC>
+<U25AD> IGNORE;IGNORE;IGNORE;<U25AD>
+<U25B2> IGNORE;IGNORE;IGNORE;<U25B2>
+<U25B3> IGNORE;IGNORE;IGNORE;<U25B3>
+<U25B7> IGNORE;IGNORE;IGNORE;<U25B7>
+<U25BA> IGNORE;IGNORE;IGNORE;<U25BA>
+<U25BC> IGNORE;IGNORE;IGNORE;<U25BC>
+<U25BD> IGNORE;IGNORE;IGNORE;<U25BD>
+<U25C1> IGNORE;IGNORE;IGNORE;<U25C1>
+<U25C4> IGNORE;IGNORE;IGNORE;<U25C4>
+<U25C6> IGNORE;IGNORE;IGNORE;<U25C6>
+<U25C7> IGNORE;IGNORE;IGNORE;<U25C7>
+<U25CA> IGNORE;IGNORE;IGNORE;<U25CA>
+<U25CB> IGNORE;IGNORE;IGNORE;<U25CB>
+<U25CE> IGNORE;IGNORE;IGNORE;<U25CE>
+<U25CF> IGNORE;IGNORE;IGNORE;<U25CF>
+<U25D0> IGNORE;IGNORE;IGNORE;<U25D0>
+<U25D1> IGNORE;IGNORE;IGNORE;<U25D1>
+<U25D8> IGNORE;IGNORE;IGNORE;<U25D8>
+<U25D9> IGNORE;IGNORE;IGNORE;<U25D9>
+<U25E2> IGNORE;IGNORE;IGNORE;<U25E2>
+<U25E3> IGNORE;IGNORE;IGNORE;<U25E3>
+<U25EF> IGNORE;IGNORE;IGNORE;<U25EF>
+<U2605> IGNORE;IGNORE;IGNORE;<U2605>
+<U2606> IGNORE;IGNORE;IGNORE;<U2606>
+<U260E> IGNORE;IGNORE;IGNORE;<U260E>
+<U260F> IGNORE;IGNORE;IGNORE;<U260F>
+<U261C> IGNORE;IGNORE;IGNORE;<U261C>
+<U261E> IGNORE;IGNORE;IGNORE;<U261E>
+<U263A> IGNORE;IGNORE;IGNORE;<U263A>
+<U263B> IGNORE;IGNORE;IGNORE;<U263B>
+<U263C> IGNORE;IGNORE;IGNORE;<U263C>
+<U2640> IGNORE;IGNORE;IGNORE;<U2640>
+<U2642> IGNORE;IGNORE;IGNORE;<U2642>
+<U2660> IGNORE;IGNORE;IGNORE;<U2660>
+<U2661> IGNORE;IGNORE;IGNORE;<U2661>
+<U2662> IGNORE;IGNORE;IGNORE;<U2662>
+<U2663> IGNORE;IGNORE;IGNORE;<U2663>
+<U2664> IGNORE;IGNORE;IGNORE;<U2664>
+<U2665> IGNORE;IGNORE;IGNORE;<U2665>
+<U2666> IGNORE;IGNORE;IGNORE;<U2666>
+<U2667> IGNORE;IGNORE;IGNORE;<U2667>
+<U2669> IGNORE;IGNORE;IGNORE;<U2669>
+<U266A> IGNORE;IGNORE;IGNORE;<U266A>
+<U266B> IGNORE;IGNORE;IGNORE;<U266B>
+<U266C> IGNORE;IGNORE;IGNORE;<U266C>
+<U266D> IGNORE;IGNORE;IGNORE;<U266D>
+<U266E> IGNORE;IGNORE;IGNORE;<U266E>
+<U266F> IGNORE;IGNORE;IGNORE;<U266F>
+<U2713> IGNORE;IGNORE;IGNORE;<U2713>
+<U2717> IGNORE;IGNORE;IGNORE;<U2717>
+<U2720> IGNORE;IGNORE;IGNORE;<U2720>
+<U3000> IGNORE;IGNORE;IGNORE;<U3000>
+<U3001> IGNORE;IGNORE;IGNORE;<U3001>
+<U3002> IGNORE;IGNORE;IGNORE;<U3002>
+<U3003> IGNORE;IGNORE;IGNORE;<U3003>
+<U3004> IGNORE;IGNORE;IGNORE;<U3004>
+<U3005> IGNORE;IGNORE;IGNORE;<U3005>
+<U3006> IGNORE;IGNORE;IGNORE;<U3006>
+<U3007> IGNORE;IGNORE;IGNORE;<U3007>
+<U300A> IGNORE;IGNORE;IGNORE;<U300A>
+<U300B> IGNORE;IGNORE;IGNORE;<U300B>
+<U300C> IGNORE;IGNORE;IGNORE;<U300C>
+<U300D> IGNORE;IGNORE;IGNORE;<U300D>
+<U300E> IGNORE;IGNORE;IGNORE;<U300E>
+<U300F> IGNORE;IGNORE;IGNORE;<U300F>
+<U3010> IGNORE;IGNORE;IGNORE;<U3010>
+<U3011> IGNORE;IGNORE;IGNORE;<U3011>
+<U3012> IGNORE;IGNORE;IGNORE;<U3012>
+<U3013> IGNORE;IGNORE;IGNORE;<U3013>
+<U3014> IGNORE;IGNORE;IGNORE;<U3014>
+<U3015> IGNORE;IGNORE;IGNORE;<U3015>
+<U3016> IGNORE;IGNORE;IGNORE;<U3016>
+<U3017> IGNORE;IGNORE;IGNORE;<U3017>
+<U301C> IGNORE;IGNORE;IGNORE;<U301C>
+<U3020> IGNORE;IGNORE;IGNORE;<U3020>
+<U309B> IGNORE;IGNORE;IGNORE;<U309B>
+<U309C> IGNORE;IGNORE;IGNORE;<U309C>
+<U309D> IGNORE;IGNORE;IGNORE;<U309D>
+<U309E> IGNORE;IGNORE;IGNORE;<U309E>
+<U30FB> IGNORE;IGNORE;IGNORE;<U30FB>
+<U30FC> IGNORE;IGNORE;IGNORE;<U30FC>
+<U30FD> IGNORE;IGNORE;IGNORE;<U30FD>
+<U30FE> IGNORE;IGNORE;IGNORE;<U30FE>
+<U321C> IGNORE;IGNORE;IGNORE;<U321C>
+<U3220> IGNORE;IGNORE;IGNORE;<U3220>
+<U3221> IGNORE;IGNORE;IGNORE;<U3221>
+<U3222> IGNORE;IGNORE;IGNORE;<U3222>
+<U3223> IGNORE;IGNORE;IGNORE;<U3223>
+<U3224> IGNORE;IGNORE;IGNORE;<U3224>
+<U3225> IGNORE;IGNORE;IGNORE;<U3225>
+<U3226> IGNORE;IGNORE;IGNORE;<U3226>
+<U3227> IGNORE;IGNORE;IGNORE;<U3227>
+<U3228> IGNORE;IGNORE;IGNORE;<U3228>
+<U3229> IGNORE;IGNORE;IGNORE;<U3229>
+<U327F> IGNORE;IGNORE;IGNORE;<U327F>
+<U33C2> IGNORE;IGNORE;IGNORE;<U33C2>
+<U33D8> IGNORE;IGNORE;IGNORE;<U33D8>
+<U0000> IGNORE;IGNORE;IGNORE;<U0000>
+<U0001> IGNORE;IGNORE;IGNORE;<U0001>
+<U0002> IGNORE;IGNORE;IGNORE;<U0002>
+<U0003> IGNORE;IGNORE;IGNORE;<U0003>
+<U0004> IGNORE;IGNORE;IGNORE;<U0004>
+<U0005> IGNORE;IGNORE;IGNORE;<U0005>
+<U0006> IGNORE;IGNORE;IGNORE;<U0006>
+<U0007> IGNORE;IGNORE;IGNORE;<U0007>
+<U0008> IGNORE;IGNORE;IGNORE;<U0008>
+<U000E> IGNORE;IGNORE;IGNORE;<U000E>
+<U000F> IGNORE;IGNORE;IGNORE;<U000F>
+<U0010> IGNORE;IGNORE;IGNORE;<U0010>
+<U0011> IGNORE;IGNORE;IGNORE;<U0011>
+<U0012> IGNORE;IGNORE;IGNORE;<U0012>
+<U0013> IGNORE;IGNORE;IGNORE;<U0013>
+<U0014> IGNORE;IGNORE;IGNORE;<U0014>
+<U0015> IGNORE;IGNORE;IGNORE;<U0015>
+<U0016> IGNORE;IGNORE;IGNORE;<U0016>
+<U0017> IGNORE;IGNORE;IGNORE;<U0017>
+<U0018> IGNORE;IGNORE;IGNORE;<U0018>
+<U0019> IGNORE;IGNORE;IGNORE;<U0019>
+<U001A> IGNORE;IGNORE;IGNORE;<U001A>
+<U001B> IGNORE;IGNORE;IGNORE;<U001B>
+<U001C> IGNORE;IGNORE;IGNORE;<U001C>
+<U001D> IGNORE;IGNORE;IGNORE;<U001D>
+<U001E> IGNORE;IGNORE;IGNORE;<U001E>
+<U001F> IGNORE;IGNORE;IGNORE;<U001F>
+<U007F> IGNORE;IGNORE;IGNORE;<U007F>
+<U0080> IGNORE;IGNORE;IGNORE;<U0080>
+<U0081> IGNORE;IGNORE;IGNORE;<U0081>
+<U0082> IGNORE;IGNORE;IGNORE;<U0082>
+<U0083> IGNORE;IGNORE;IGNORE;<U0083>
+<U0084> IGNORE;IGNORE;IGNORE;<U0084>
+<U0085> IGNORE;IGNORE;IGNORE;<U0085>
+<U0086> IGNORE;IGNORE;IGNORE;<U0086>
+<U0087> IGNORE;IGNORE;IGNORE;<U0087>
+<U0088> IGNORE;IGNORE;IGNORE;<U0088>
+<U0089> IGNORE;IGNORE;IGNORE;<U0089>
+<U008A> IGNORE;IGNORE;IGNORE;<U008A>
+<U008B> IGNORE;IGNORE;IGNORE;<U008B>
+<U008C> IGNORE;IGNORE;IGNORE;<U008C>
+<U008D> IGNORE;IGNORE;IGNORE;<U008D>
+<U008E> IGNORE;IGNORE;IGNORE;<U008E>
+<U008F> IGNORE;IGNORE;IGNORE;<U008F>
+<U0090> IGNORE;IGNORE;IGNORE;<U0090>
+<U0091> IGNORE;IGNORE;IGNORE;<U0091>
+<U0092> IGNORE;IGNORE;IGNORE;<U0092>
+<U0093> IGNORE;IGNORE;IGNORE;<U0093>
+<U0094> IGNORE;IGNORE;IGNORE;<U0094>
+<U0095> IGNORE;IGNORE;IGNORE;<U0095>
+<U0096> IGNORE;IGNORE;IGNORE;<U0096>
+<U0097> IGNORE;IGNORE;IGNORE;<U0097>
+<U0098> IGNORE;IGNORE;IGNORE;<U0098>
+<U0099> IGNORE;IGNORE;IGNORE;<U0099>
+<U009A> IGNORE;IGNORE;IGNORE;<U009A>
+<U009B> IGNORE;IGNORE;IGNORE;<U009B>
+<U009C> IGNORE;IGNORE;IGNORE;<U009C>
+<U009D> IGNORE;IGNORE;IGNORE;<U009D>
+<U009E> IGNORE;IGNORE;IGNORE;<U009E>
+<U009F> IGNORE;IGNORE;IGNORE;<U009F>
+<UE000> IGNORE;IGNORE;IGNORE;<UE000>
+<UE001> IGNORE;IGNORE;IGNORE;<UE001>
+<UE002> IGNORE;IGNORE;IGNORE;<UE002>
+<U0301> IGNORE;IGNORE;IGNORE;<U0301>
+<UE004> IGNORE;IGNORE;IGNORE;<UE004>
+<UE005> IGNORE;IGNORE;IGNORE;<UE005>
+<UE006> IGNORE;IGNORE;IGNORE;<UE006>
+<UE007> IGNORE;IGNORE;IGNORE;<UE007>
+<UE008> IGNORE;IGNORE;IGNORE;<UE008>
+<UE009> IGNORE;IGNORE;IGNORE;<UE009>
+<UE00A> IGNORE;IGNORE;IGNORE;<UE00A>
+<UE00B> IGNORE;IGNORE;IGNORE;<UE00B>
+<UE00C> IGNORE;IGNORE;IGNORE;<UE00C>
+<UE00D> IGNORE;IGNORE;IGNORE;<UE00D>
+<UE00E> IGNORE;IGNORE;IGNORE;<UE00E>
+<UE00F> IGNORE;IGNORE;IGNORE;<UE00F>
+<"=> IGNORE;IGNORE;IGNORE;<"=>
+<UE011> IGNORE;IGNORE;IGNORE;<UE011>
+<UE012> IGNORE;IGNORE;IGNORE;<UE012>
+<UE013> IGNORE;IGNORE;IGNORE;<UE013>
+<UE014> IGNORE;IGNORE;IGNORE;<UE014>
+<UE015> IGNORE;IGNORE;IGNORE;<UE015>
+<UE017> IGNORE;IGNORE;IGNORE;<UE017>
+<UE018> IGNORE;IGNORE;IGNORE;<UE018>
+<UE019> IGNORE;IGNORE;IGNORE;<UE019>
+UNDEFINED IGNORE;IGNORE;IGNORE
+
+<U0030> <U0030>;<U0030>;IGNORE;IGNORE
+<U2070> <U0030>;<U2070>;IGNORE;IGNORE
+<U215B> <U0030>;<U215B>;IGNORE;IGNORE
+<U00BC> <U0030>;<U00BC>;IGNORE;IGNORE
+<U215C> <U0030>;<U215C>;IGNORE;IGNORE
+<U00BD> <U0030>;<U00BD>;IGNORE;IGNORE
+<U215D> <U0030>;<U215D>;IGNORE;IGNORE
+<U00BE> <U0030>;<U00BE>;IGNORE;IGNORE
+<U215E> <U0030>;<U215E>;IGNORE;IGNORE
+<U0031> <U0031>;<U0031>;IGNORE;IGNORE
+<U0032> <U0032>;<U0032>;IGNORE;IGNORE
+<U0033> <U0033>;<U0033>;IGNORE;IGNORE
+<U0034> <U0034>;<U0034>;IGNORE;IGNORE
+<U0035> <U0035>;<U0035>;IGNORE;IGNORE
+<U0036> <U0036>;<U0036>;IGNORE;IGNORE
+<U0037> <U0037>;<U0037>;IGNORE;IGNORE
+<U0038> <U0038>;<U0038>;IGNORE;IGNORE
+<U0039> <U0039>;<U0039>;IGNORE;IGNORE
+<U00B9> <U0031>;<U00B9>;IGNORE;IGNORE
+<U00B2> <U0032>;<U00B2>;IGNORE;IGNORE
+<U00B3> <U0033>;<U00B3>;IGNORE;IGNORE
+<U2074> <U0034>;<U2074>;IGNORE;IGNORE
+<U2075> <U0035>;<U2075>;IGNORE;IGNORE
+<U2076> <U0036>;<U2076>;IGNORE;IGNORE
+<U2077> <U0037>;<U2077>;IGNORE;IGNORE
+<U2078> <U0038>;<U2078>;IGNORE;IGNORE
+<U2079> <U0039>;<U2079>;IGNORE;IGNORE
+<U0041> <U0041>;<NONE>;<CAPITAL>;IGNORE
+<U0061> <U0041>;<NONE>;<SMALL>;IGNORE
+<U00AA> <U0041>;<NONE>;<U00AA>;IGNORE
+<U00C1> <U0041>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E1> <U0041>;<ACUTE>;<SMALL>;IGNORE
+<U00C0> <U0041>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E0> <U0041>;<GRAVE>;<SMALL>;IGNORE
+<U0200> <U0041>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0201> <U0041>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0102> <U0041>;<BREVE>;<CAPITAL>;IGNORE
+<U0103> <U0041>;<BREVE>;<SMALL>;IGNORE
+<U1EAE> <U0041>;<BREVE+ACUTE>;<CAPITAL>;IGNORE
+<U1EAF> <U0041>;<BREVE+ACUTE>;<SMALL>;IGNORE
+<U1EB0> <U0041>;<BREVE+GRAVE>;<CAPITAL>;IGNORE
+<U1EB1> <U0041>;<BREVE+GRAVE>;<SMALL>;IGNORE
+<U1EB2> <U0041>;<BREVE+HOOK>;<CAPITAL>;IGNORE
+<U1EB3> <U0041>;<BREVE+HOOK>;<SMALL>;IGNORE
+<U1EB4> <U0041>;<BREVE+TILDE>;<CAPITAL>;IGNORE
+<U1EB5> <U0041>;<BREVE+TILDE>;<SMALL>;IGNORE
+<U1EB6> <U0041>;<BREVE+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB7> <U0041>;<BREVE+DOT-BELOW>;<SMALL>;IGNORE
+<U0202> <U0041>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0203> <U0041>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00C2> <U0041>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00E2> <U0041>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EA4> <U0041>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EA5> <U0041>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EA6> <U0041>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EA7> <U0041>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EA8> <U0041>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EA9> <U0041>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EAA> <U0041>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EAB> <U0041>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EAC> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EAD> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01CD> <U0041>;<CARON>;<CAPITAL>;IGNORE
+<U01CE> <U0041>;<CARON>;<SMALL>;IGNORE
+<U00C5> <U0041>;<RING>;<CAPITAL>;IGNORE
+<U00E5> <U0041>;<RING>;<SMALL>;IGNORE
+<U01FA> <U0041>;<RING+ACUTE>;<CAPITAL>;IGNORE
+<U01FB> <U0041>;<RING+ACUTE>;<SMALL>;IGNORE
+<U1E00> <U0041>;<RING-BELOW>;<CAPITAL>;IGNORE
+<U1E01> <U0041>;<RING-BELOW>;<SMALL>;IGNORE
+<U00C4> <U0041>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00E4> <U0041>;<DIAERESIS>;<SMALL>;IGNORE
+<U01DE> <U0041>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01DF> <U0041>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U1EA2> <U0041>;<HOOK>;<CAPITAL>;IGNORE
+<U1EA3> <U0041>;<HOOK>;<SMALL>;IGNORE
+<U00C3> <U0041>;<TILDE>;<CAPITAL>;IGNORE
+<U00E3> <U0041>;<TILDE>;<SMALL>;IGNORE
+<U1EA0> <U0041>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EA1> <U0041>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0104> <U0041>;<OGONEK>;<CAPITAL>;IGNORE
+<U0105> <U0041>;<OGONEK>;<SMALL>;IGNORE
+<U01E0> <U0041>;<MACRON+DOT>;<CAPITAL>;IGNORE
+<U01E1> <U0041>;<MACRON+DOT>;<SMALL>;IGNORE
+<a8>
+<U0100> <U0100>;<NONE>;<CAPITAL>;IGNORE
+<U0101> <U0100>;<NONE>;<SMALL>;IGNORE
+<U00C6> "<U0041><U0045>";"<U00C6><U00C6>";"<CAPITAL><CAPITAL>";IGNORE
+<U00E6> "<U0041><U0045>";"<U00C6><U00C6>";"<SMALL><SMALL>";IGNORE
+<U01FC> "<U0041><U0045>";"<U01FC><U01FC>";"<CAPITAL><CAPITAL>";IGNORE
+<U01FD> "<U0041><U0045>";"<U01FC><U01FC>";"<SMALL><SMALL>";IGNORE
+<U01E2> "<U0041><U0045>";"<U01E2><U01E2>";"<CAPITAL><CAPITAL>";IGNORE
+<U01E3> "<U0041><U0045>";"<U01E2><U01E2>";"<SMALL><SMALL>";IGNORE
+<U0042> <U0042>;<NONE>;<CAPITAL>;IGNORE
+<U0062> <U0042>;<NONE>;<SMALL>;IGNORE
+<U1E02> <U0042>;<DOT>;<CAPITAL>;IGNORE
+<U1E03> <U0042>;<DOT>;<SMALL>;IGNORE
+<U1E04> <U0042>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E05> <U0042>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E06> <U0042>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E07> <U0042>;<LINE-BELOW>;<SMALL>;IGNORE
+<b8>
+<U0043> <U0043>;<NONE>;<CAPITAL>;IGNORE
+<U0063> <U0043>;<NONE>;<SMALL>;IGNORE
+<U0106> <U0043>;<ACUTE>;<CAPITAL>;IGNORE
+<U0107> <U0043>;<ACUTE>;<SMALL>;IGNORE
+<U0108> <U0043>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0109> <U0043>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0187> <U0043>;<HOOK>;<CAPITAL>;IGNORE
+<U0188> <U0043>;<HOOK>;<SMALL>;IGNORE
+<U010A> <U0043>;<DOT>;<CAPITAL>;IGNORE
+<U010B> <U0043>;<DOT>;<SMALL>;IGNORE
+<U00C7> <U0043>;<CEDILLA>;<CAPITAL>;IGNORE
+<U00E7> <U0043>;<CEDILLA>;<SMALL>;IGNORE
+<U1E08> <U0043>;<CEDILLA+ACUTE>;<CAPITAL>;IGNORE
+<U1E09> <U0043>;<CEDILLA+ACUTE>;<SMALL>;IGNORE
+<c8>
+<U010C> <U010C>;<NONE>;<CAPITAL>;IGNORE
+<U010D> <U010C>;<NONE>;<SMALL>;IGNORE
+<U0044> <U0044>;<NONE>;<CAPITAL>;IGNORE
+<U0064> <U0044>;<NONE>;<SMALL>;IGNORE
+<U010E> <U0044>;<CARON>;<CAPITAL>;IGNORE
+<U010F> <U0044>;<CARON>;<SMALL>;IGNORE
+<U1E0A> <U0044>;<DOT>;<CAPITAL>;IGNORE
+<U1E0B> <U0044>;<DOT>;<SMALL>;IGNORE
+<U1E0C> <U0044>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E0D> <U0044>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0110> <U0044>;<STROKE>;<CAPITAL>;IGNORE
+<U0111> <U0044>;<STROKE>;<SMALL>;IGNORE
+<U1E10> <U0044>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E11> <U0044>;<CEDILLA>;<SMALL>;IGNORE
+<U1E12> <U0044>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E13> <U0044>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E0E> <U0044>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E0F> <U0044>;<LINE-BELOW>;<SMALL>;IGNORE
+<d8>
+<U0045> <U0045>;<NONE>;<CAPITAL>;IGNORE
+<U0065> <U0045>;<NONE>;<SMALL>;IGNORE
+<U00C9> <U0045>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E9> <U0045>;<ACUTE>;<SMALL>;IGNORE
+<U00C8> <U0045>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E8> <U0045>;<GRAVE>;<SMALL>;IGNORE
+<U0204> <U0045>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0205> <U0045>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0114> <U0045>;<BREVE>;<CAPITAL>;IGNORE
+<U0115> <U0045>;<BREVE>;<SMALL>;IGNORE
+<U0206> <U0045>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0207> <U0045>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CA> <U0045>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EA> <U0045>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EBE> <U0045>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EBF> <U0045>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EC0> <U0045>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EC1> <U0045>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EC2> <U0045>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EC3> <U0045>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EC4> <U0045>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EC5> <U0045>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EC6> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EC7> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U011A> <U0045>;<CARON>;<CAPITAL>;IGNORE
+<U011B> <U0045>;<CARON>;<SMALL>;IGNORE
+<U00CB> <U0045>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EB> <U0045>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EBA> <U0045>;<HOOK>;<CAPITAL>;IGNORE
+<U1EBB> <U0045>;<HOOK>;<SMALL>;IGNORE
+<U1EBC> <U0045>;<TILDE>;<CAPITAL>;IGNORE
+<U1EBD> <U0045>;<TILDE>;<SMALL>;IGNORE
+<U1E1A> <U0045>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E1B> <U0045>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0116> <U0045>;<DOT>;<CAPITAL>;IGNORE
+<U0117> <U0045>;<DOT>;<SMALL>;IGNORE
+<U1EB8> <U0045>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB9> <U0045>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E1C> <U0045>;<CEDILLA+BREVE>;<CAPITAL>;IGNORE
+<U1E1D> <U0045>;<CEDILLA+BREVE>;<SMALL>;IGNORE
+<U0118> <U0045>;<OGONEK>;<CAPITAL>;IGNORE
+<U0119> <U0045>;<OGONEK>;<SMALL>;IGNORE
+<U1E16> <U0045>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E17> <U0045>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E14> <U0045>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E15> <U0045>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U1E18> <U0045>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E19> <U0045>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<e8>
+<U0112> <U0112>;<NONE>;<CAPITAL>;IGNORE
+<U0113> <U0112>;<NONE>;<SMALL>;IGNORE
+<U0046> <U0046>;<NONE>;<CAPITAL>;IGNORE
+<U0066> <U0046>;<NONE>;<SMALL>;IGNORE
+<U0191> <U0046>;<HOOK>;<CAPITAL>;IGNORE
+<U0192> <U0046>;<HOOK>;<SMALL>;IGNORE
+<U1E1E> <U0046>;<DOT>;<CAPITAL>;IGNORE
+<U1E1F> <U0046>;<DOT>;<SMALL>;IGNORE
+<f8>
+<UFB00> "<U0046><U0046>";"<NONE><NONE>";"<UFB00><UFB00>";IGNORE
+<UFB01> "<U0046><U0049>";"<NONE><NONE>";"<UFB01><UFB01>";IGNORE
+<UFB02> "<U0046><U004C>";"<NONE><NONE>";"<UFB02><UFB02>";IGNORE
+<UFB03> "<U0046><U0046><U0049>";"<NONE><NONE><NONE>";"<UFB03><UFB03><UFB03>";IGNORE
+<UFB04> "<U0046><U0046><U004C>";"<NONE><NONE><NONE>";"<UFB04><UFB04><UFB04>";IGNORE
+<U0047> <U0047>;<NONE>;<CAPITAL>;IGNORE
+<U0067> <U0047>;<NONE>;<SMALL>;IGNORE
+<U01F4> <U0047>;<ACUTE>;<CAPITAL>;IGNORE
+<U01F5> <U0047>;<ACUTE>;<SMALL>;IGNORE
+<U011E> <U0047>;<BREVE>;<CAPITAL>;IGNORE
+<U011F> <U0047>;<BREVE>;<SMALL>;IGNORE
+<U011C> <U0047>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U011D> <U0047>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01E6> <U0047>;<CARON>;<CAPITAL>;IGNORE
+<U01E7> <U0047>;<CARON>;<SMALL>;IGNORE
+<U0120> <U0047>;<DOT>;<CAPITAL>;IGNORE
+<U0121> <U0047>;<DOT>;<SMALL>;IGNORE
+<U01E4> <U0047>;<STROKE>;<CAPITAL>;IGNORE
+<U01E5> <U0047>;<STROKE>;<SMALL>;IGNORE
+<U1E20> <U0047>;<MACRON>;<CAPITAL>;IGNORE
+<U1E21> <U0047>;<MACRON>;<SMALL>;IGNORE
+<g8>
+<U0122> <U0122>;<NONE>;<CAPITAL>;IGNORE
+<U0123> <U0122>;<NONE>;<SMALL>;IGNORE
+<U0048> <U0048>;<NONE>;<CAPITAL>;IGNORE
+<U0068> <U0048>;<NONE>;<SMALL>;IGNORE
+<U1E2A> <U0048>;<BREVE-BELOW>;<CAPITAL>;IGNORE
+<U1E2B> <U0048>;<BREVE-BELOW>;<SMALL>;IGNORE
+<U0124> <U0048>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0125> <U0048>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E26> <U0048>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E27> <U0048>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E22> <U0048>;<DOT>;<CAPITAL>;IGNORE
+<U1E23> <U0048>;<DOT>;<SMALL>;IGNORE
+<U1E24> <U0048>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E25> <U0048>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0126> <U0048>;<STROKE>;<CAPITAL>;IGNORE
+<U0127> <U0048>;<STROKE>;<SMALL>;IGNORE
+<U1E28> <U0048>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E29> <U0048>;<CEDILLA>;<SMALL>;IGNORE
+<h8>
+<U0049> <U0049>;<NONE>;<CAPITAL>;IGNORE
+<U0069> <U0049>;<NONE>;<SMALL>;IGNORE
+<U00CD> <U0049>;<ACUTE>;<CAPITAL>;IGNORE
+<U00ED> <U0049>;<ACUTE>;<SMALL>;IGNORE
+<U00CC> <U0049>;<GRAVE>;<CAPITAL>;IGNORE
+<U00EC> <U0049>;<GRAVE>;<SMALL>;IGNORE
+<U0208> <U0049>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0209> <U0049>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U012C> <U0049>;<BREVE>;<CAPITAL>;IGNORE
+<U012D> <U0049>;<BREVE>;<SMALL>;IGNORE
+<U020A> <U0049>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020B> <U0049>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CE> <U0049>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EE> <U0049>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01CF> <U0049>;<CARON>;<CAPITAL>;IGNORE
+<U01D0> <U0049>;<CARON>;<SMALL>;IGNORE
+<U00CF> <U0049>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EF> <U0049>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E2E> <U0049>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U1E2F> <U0049>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U1EC8> <U0049>;<HOOK>;<CAPITAL>;IGNORE
+<U1EC9> <U0049>;<HOOK>;<SMALL>;IGNORE
+<U0128> <U0049>;<TILDE>;<CAPITAL>;IGNORE
+<U0129> <U0049>;<TILDE>;<SMALL>;IGNORE
+<U1E2C> <U0049>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E2D> <U0049>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0130> <U0049>;<DOT>;<CAPITAL>;IGNORE
+<U0131> <U0049>;<DOT>;<SMALL>;IGNORE
+<U1ECA> <U0049>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECB> <U0049>;<DOT-BELOW>;<SMALL>;IGNORE
+<U012E> <U0049>;<OGONEK>;<CAPITAL>;IGNORE
+<U012F> <U0049>;<OGONEK>;<SMALL>;IGNORE
+<i8>
+<U0059> <U0059>;<NONE>;<CAPITAL>;IGNORE
+<U0079> <U0059>;<NONE>;<SMALL>;IGNORE
+<U00DD> <U0059>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FD> <U0059>;<ACUTE>;<SMALL>;IGNORE
+<y8>
+<U012A> <U012A>;<NONE>;<CAPITAL>;IGNORE
+<U012B> <U012A>;<NONE>;<SMALL>;IGNORE
+<U0132> "<U0049><U004A>";"<U0132><U0132>";"<CAPITAL><CAPITAL>";IGNORE
+<U0133> "<U0049><U004A>";"<U0132><U0132>";"<SMALL><SMALL>";IGNORE
+<U004A> <U004A>;<NONE>;<CAPITAL>;IGNORE
+<U006A> <U004A>;<NONE>;<SMALL>;IGNORE
+<U0134> <U004A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0135> <U004A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<j8>
+<U004B> <U004B>;<NONE>;<CAPITAL>;IGNORE
+<U006B> <U004B>;<NONE>;<SMALL>;IGNORE
+<U1E30> <U004B>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E31> <U004B>;<ACUTE>;<SMALL>;IGNORE
+<U01E8> <U004B>;<CARON>;<CAPITAL>;IGNORE
+<U01E9> <U004B>;<CARON>;<SMALL>;IGNORE
+<U0198> <U004B>;<HOOK>;<CAPITAL>;IGNORE
+<U0199> <U004B>;<HOOK>;<SMALL>;IGNORE
+<U1E32> <U004B>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E33> <U004B>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E34> <U004B>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E35> <U004B>;<LINE-BELOW>;<SMALL>;IGNORE
+<k8>
+<U0136> <U0136>;<NONE>;<CAPITAL>;IGNORE
+<U0137> <U0136>;<NONE>;<SMALL>;IGNORE
+<U0138> <U004B>;<U0138>;<SMALL>;IGNORE
+<U004C> <U004C>;<NONE>;<CAPITAL>;IGNORE
+<U006C> <U004C>;<NONE>;<SMALL>;IGNORE
+<U0139> <U004C>;<ACUTE>;<CAPITAL>;IGNORE
+<U013A> <U004C>;<ACUTE>;<SMALL>;IGNORE
+<U013D> <U004C>;<CARON>;<CAPITAL>;IGNORE
+<U013E> <U004C>;<CARON>;<SMALL>;IGNORE
+<U013F> <U004C>;<DOT>;<CAPITAL>;IGNORE
+<U0140> <U004C>;<DOT>;<SMALL>;IGNORE
+<U1E36> <U004C>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E37> <U004C>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0141> <U004C>;<STROKE>;<CAPITAL>;IGNORE
+<U0142> <U004C>;<STROKE>;<SMALL>;IGNORE
+<U1E38> <U004C>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E39> <U004C>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E3C> <U004C>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E3D> <U004C>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E3A> <U004C>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E3B> <U004C>;<LINE-BELOW>;<SMALL>;IGNORE
+<l8>
+<U013B> <U013B>;<NONE>;<CAPITAL>;IGNORE
+<U013C> <U013B>;<NONE>;<SMALL>;IGNORE
+<U004D> <U004D>;<NONE>;<CAPITAL>;IGNORE
+<U006D> <U004D>;<NONE>;<SMALL>;IGNORE
+<U1E3E> <U004D>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E3F> <U004D>;<ACUTE>;<SMALL>;IGNORE
+<U1E40> <U004D>;<DOT>;<CAPITAL>;IGNORE
+<U1E41> <U004D>;<DOT>;<SMALL>;IGNORE
+<U1E42> <U004D>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E43> <U004D>;<DOT-BELOW>;<SMALL>;IGNORE
+<m8>
+<U004E> <U004E>;<NONE>;<CAPITAL>;IGNORE
+<U006E> <U004E>;<NONE>;<SMALL>;IGNORE
+<U0143> <U004E>;<ACUTE>;<CAPITAL>;IGNORE
+<U0144> <U004E>;<ACUTE>;<SMALL>;IGNORE
+<U0147> <U004E>;<CARON>;<CAPITAL>;IGNORE
+<U0148> <U004E>;<CARON>;<SMALL>;IGNORE
+<U00D1> <U004E>;<TILDE>;<CAPITAL>;IGNORE
+<U00F1> <U004E>;<TILDE>;<SMALL>;IGNORE
+<U1E44> <U004E>;<DOT>;<CAPITAL>;IGNORE
+<U1E45> <U004E>;<DOT>;<SMALL>;IGNORE
+<U1E46> <U004E>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E47> <U004E>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E4A> <U004E>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E4B> <U004E>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E48> <U004E>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E49> <U004E>;<LINE-BELOW>;<SMALL>;IGNORE
+<U0149> <U004E>;<PRECEDED-BY-APOSTROPHE>;<SMALL>;IGNORE
+<n8>
+<U0145> <U0145>;<NONE>;<CAPITAL>;IGNORE
+<U0146> <U0145>;<NONE>;<SMALL>;IGNORE
+<U014A> "<U004E><U0047>";"<U014A><U014A>";"<CAPITAL><CAPITAL>";IGNORE
+<U014B> "<U004E><U0047>";"<U014A><U014A>";"<SMALL><SMALL>";IGNORE
+<U004F> <U004F>;<NONE>;<CAPITAL>;IGNORE
+<U006F> <U004F>;<NONE>;<SMALL>;IGNORE
+<U00BA> <U004F>;<NONE>;<U00BA>;IGNORE
+<U00D3> <U004F>;<ACUTE>;<CAPITAL>;IGNORE
+<U00F3> <U004F>;<ACUTE>;<SMALL>;IGNORE
+<U00D2> <U004F>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F2> <U004F>;<GRAVE>;<SMALL>;IGNORE
+<U020C> <U004F>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U020D> <U004F>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U014E> <U004F>;<BREVE>;<CAPITAL>;IGNORE
+<U014F> <U004F>;<BREVE>;<SMALL>;IGNORE
+<U020E> <U004F>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020F> <U004F>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00D4> <U004F>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00F4> <U004F>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1ED0> <U004F>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1ED1> <U004F>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1ED2> <U004F>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1ED3> <U004F>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1ED4> <U004F>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1ED5> <U004F>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1ED6> <U004F>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1ED7> <U004F>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1ED8> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ED9> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01D1> <U004F>;<CARON>;<CAPITAL>;IGNORE
+<U01D2> <U004F>;<CARON>;<SMALL>;IGNORE
+<U00D6> <U004F>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00F6> <U004F>;<DIAERESIS>;<SMALL>;IGNORE
+<U0150> <U004F>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0151> <U004F>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1ECE> <U004F>;<HOOK>;<CAPITAL>;IGNORE
+<U1ECF> <U004F>;<HOOK>;<SMALL>;IGNORE
+<U00D5> <U004F>;<TILDE>;<CAPITAL>;IGNORE
+<U00F5> <U004F>;<TILDE>;<SMALL>;IGNORE
+<U1E4C> <U004F>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E4D> <U004F>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E4E> <U004F>;<TILDE+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E4F> <U004F>;<TILDE+DIAERESIS>;<SMALL>;IGNORE
+<U1ECC> <U004F>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECD> <U004F>;<DOT-BELOW>;<SMALL>;IGNORE
+<U00D8> <U004F>;<STROKE>;<CAPITAL>;IGNORE
+<U00F8> <U004F>;<STROKE>;<SMALL>;IGNORE
+<U01FE> <U004F>;<STROKE+ACUTE>;<CAPITAL>;IGNORE
+<U01FF> <U004F>;<STROKE+ACUTE>;<SMALL>;IGNORE
+<U01EA> <U004F>;<OGONEK>;<CAPITAL>;IGNORE
+<U01EB> <U004F>;<OGONEK>;<SMALL>;IGNORE
+<U01EC> <U004F>;<OGONEK+MACRON>;<CAPITAL>;IGNORE
+<U01ED> <U004F>;<OGONEK+MACRON>;<SMALL>;IGNORE
+<U1E52> <U004F>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E53> <U004F>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E50> <U004F>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E51> <U004F>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U01A0> <U004F>;<HORN>;<CAPITAL>;IGNORE
+<U01A1> <U004F>;<HORN>;<SMALL>;IGNORE
+<U1EDA> <U004F>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EDB> <U004F>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EDC> <U004F>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EDD> <U004F>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EDE> <U004F>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EDF> <U004F>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EE0> <U004F>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EE1> <U004F>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EE2> <U004F>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE3> <U004F>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<o8>
+<U014C> <U014C>;<NONE>;<CAPITAL>;IGNORE
+<U014D> <U014C>;<NONE>;<SMALL>;IGNORE
+<U0152> "<U004F><U0045>";"<U0152><U0152>";"<CAPITAL><CAPITAL>";IGNORE
+<U0153> "<U004F><U0045>";"<U0152><U0152>";"<SMALL><SMALL>";IGNORE
+<U0050> <U0050>;<NONE>;<CAPITAL>;IGNORE
+<U0070> <U0050>;<NONE>;<SMALL>;IGNORE
+<U1E54> <U0050>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E55> <U0050>;<ACUTE>;<SMALL>;IGNORE
+<U1E56> <U0050>;<DOT>;<CAPITAL>;IGNORE
+<U1E57> <U0050>;<DOT>;<SMALL>;IGNORE
+<p8>
+<U0051> <U0051>;<NONE>;<CAPITAL>;IGNORE
+<U0071> <U0051>;<NONE>;<SMALL>;IGNORE
+<q8>
+<U0052> <U0052>;<NONE>;<CAPITAL>;IGNORE
+<U0072> <U0052>;<NONE>;<SMALL>;IGNORE
+<U0154> <U0052>;<ACUTE>;<CAPITAL>;IGNORE
+<U0155> <U0052>;<ACUTE>;<SMALL>;IGNORE
+<U0210> <U0052>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0211> <U0052>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0212> <U0052>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0213> <U0052>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U0158> <U0052>;<CARON>;<CAPITAL>;IGNORE
+<U0159> <U0052>;<CARON>;<SMALL>;IGNORE
+<U1E58> <U0052>;<DOT>;<CAPITAL>;IGNORE
+<U1E59> <U0052>;<DOT>;<SMALL>;IGNORE
+<U1E5A> <U0052>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5B> <U0052>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E5C> <U0052>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5D> <U0052>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E5E> <U0052>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E5F> <U0052>;<LINE-BELOW>;<SMALL>;IGNORE
+<r8>
+<U0156> <U0156>;<NONE>;<CAPITAL>;IGNORE
+<U0157> <U0156>;<NONE>;<SMALL>;IGNORE
+<U0053> <U0053>;<NONE>;<CAPITAL>;IGNORE
+<U0073> <U0053>;<NONE>;<SMALL>;IGNORE
+<UFB06> "<U0053><U0054>";"<NONE><NONE>";"<UFB06><UFB06>";IGNORE
+<U015A> <U0053>;<ACUTE>;<CAPITAL>;IGNORE
+<U015B> <U0053>;<ACUTE>;<SMALL>;IGNORE
+<U1E64> <U0053>;<ACUTE+DOT>;<CAPITAL>;IGNORE
+<U1E65> <U0053>;<ACUTE+DOT>;<SMALL>;IGNORE
+<U015C> <U0053>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U015D> <U0053>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E66> <U0053>;<CARON+DOT>;<CAPITAL>;IGNORE
+<U1E67> <U0053>;<CARON+DOT>;<SMALL>;IGNORE
+<U1E60> <U0053>;<DOT>;<CAPITAL>;IGNORE
+<U1E61> <U0053>;<DOT>;<SMALL>;IGNORE
+<U1E62> <U0053>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E63> <U0053>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E68> <U0053>;<DOT+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E69> <U0053>;<DOT+DOT-BELOW>;<SMALL>;IGNORE
+<U015E> <U0053>;<CEDILLA>;<CAPITAL>;IGNORE
+<U015F> <U0053>;<CEDILLA>;<SMALL>;IGNORE
+<s8>
+<U0160> <U0160>;<NONE>;<CAPITAL>;IGNORE
+<U0161> <U0160>;<NONE>;<SMALL>;IGNORE
+<U017F> <U0053>;<U017F>;<SMALL>;IGNORE
+<U00DF> "<U0053><U0053>";"<NONE><NONE>";"<SMALL><U00DF>";IGNORE
+<UFB05> "<U0053><U0054>";"<NONE><NONE>";"<UFB05><UFB05>";IGNORE
+<U0054> <U0054>;<NONE>;<CAPITAL>;IGNORE
+<U0074> <U0054>;<NONE>;<SMALL>;IGNORE
+<U0164> <U0054>;<CARON>;<CAPITAL>;IGNORE
+<U0165> <U0054>;<CARON>;<SMALL>;IGNORE
+<U1E6A> <U0054>;<DOT>;<CAPITAL>;IGNORE
+<U1E6B> <U0054>;<DOT>;<SMALL>;IGNORE
+<U1E6C> <U0054>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E6D> <U0054>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0166> <U0054>;<STROKE>;<CAPITAL>;IGNORE
+<U0167> <U0054>;<STROKE>;<SMALL>;IGNORE
+<U0162> <U0054>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0163> <U0054>;<CEDILLA>;<SMALL>;IGNORE
+<U1E70> <U0054>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E71> <U0054>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E6E> <U0054>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E6F> <U0054>;<LINE-BELOW>;<SMALL>;IGNORE
+<t8>
+<U00DE> "<U0054><U0048>";"<U00DE><U00DE>";"<CAPITAL><CAPITAL>";IGNORE
+<U00FE> "<U0054><U0048>";"<U00DE><U00DE>";"<SMALL><SMALL>";IGNORE
+<U0055> <U0055>;<NONE>;<CAPITAL>;IGNORE
+<U0075> <U0055>;<NONE>;<SMALL>;IGNORE
+<U00DA> <U0055>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FA> <U0055>;<ACUTE>;<SMALL>;IGNORE
+<U00D9> <U0055>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F9> <U0055>;<GRAVE>;<SMALL>;IGNORE
+<U0214> <U0055>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0215> <U0055>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U016C> <U0055>;<BREVE>;<CAPITAL>;IGNORE
+<U016D> <U0055>;<BREVE>;<SMALL>;IGNORE
+<U0216> <U0055>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0217> <U0055>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00DB> <U0055>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00FB> <U0055>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01D3> <U0055>;<CARON>;<CAPITAL>;IGNORE
+<U01D4> <U0055>;<CARON>;<SMALL>;IGNORE
+<U016E> <U0055>;<RING>;<CAPITAL>;IGNORE
+<U016F> <U0055>;<RING>;<SMALL>;IGNORE
+<U00DC> <U0055>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FC> <U0055>;<DIAERESIS>;<SMALL>;IGNORE
+<U01D5> <U0055>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01D6> <U0055>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U01D7> <U0055>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U01D8> <U0055>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U01DB> <U0055>;<DIAERESIS+GRAVE>;<CAPITAL>;IGNORE
+<U01DC> <U0055>;<DIAERESIS+GRAVE>;<SMALL>;IGNORE
+<U01D9> <U0055>;<DIAERESIS+CARON>;<CAPITAL>;IGNORE
+<U01DA> <U0055>;<DIAERESIS+CARON>;<SMALL>;IGNORE
+<U0170> <U0055>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0171> <U0055>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1EE6> <U0055>;<HOOK>;<CAPITAL>;IGNORE
+<U1EE7> <U0055>;<HOOK>;<SMALL>;IGNORE
+<U0168> <U0055>;<TILDE>;<CAPITAL>;IGNORE
+<U0169> <U0055>;<TILDE>;<SMALL>;IGNORE
+<U1E78> <U0055>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E79> <U0055>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E74> <U0055>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E75> <U0055>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U1EE4> <U0055>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE5> <U0055>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0172> <U0055>;<OGONEK>;<CAPITAL>;IGNORE
+<U0173> <U0055>;<OGONEK>;<SMALL>;IGNORE
+<U1E7A> <U0055>;<MACRON+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E7B> <U0055>;<MACRON+DIAERESIS>;<SMALL>;IGNORE
+<U1E72> <U0055>;<MACRON+DIAERESIS-BELOW>;<CAPITAL>;IGNORE
+<U1E73> <U0055>;<MACRON+DIAERESIS-BELOW>;<SMALL>;IGNORE
+<U1E76> <U0055>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E77> <U0055>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U01AF> <U0055>;<HORN>;<CAPITAL>;IGNORE
+<U01B0> <U0055>;<HORN>;<SMALL>;IGNORE
+<U1EE8> <U0055>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EE9> <U0055>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EEA> <U0055>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EEB> <U0055>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EEC> <U0055>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EED> <U0055>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EEE> <U0055>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EEF> <U0055>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EF0> <U0055>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF1> <U0055>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<u8>
+<U016A> <U016A>;<NONE>;<CAPITAL>;IGNORE
+<U016B> <U016A>;<NONE>;<SMALL>;IGNORE
+<U0056> <U0056>;<NONE>;<CAPITAL>;IGNORE
+<U0076> <U0056>;<NONE>;<SMALL>;IGNORE
+<U1E7C> <U0056>;<TILDE>;<CAPITAL>;IGNORE
+<U1E7D> <U0056>;<TILDE>;<SMALL>;IGNORE
+<U1E7E> <U0056>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E7F> <U0056>;<DOT-BELOW>;<SMALL>;IGNORE
+<v8>
+<U0057> <U0057>;<NONE>;<CAPITAL>;IGNORE
+<U0077> <U0057>;<NONE>;<SMALL>;IGNORE
+<U1E82> <U0057>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E83> <U0057>;<ACUTE>;<SMALL>;IGNORE
+<U1E80> <U0057>;<GRAVE>;<CAPITAL>;IGNORE
+<U1E81> <U0057>;<GRAVE>;<SMALL>;IGNORE
+<U0174> <U0057>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0175> <U0057>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E84> <U0057>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E85> <U0057>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E86> <U0057>;<DOT>;<CAPITAL>;IGNORE
+<U1E87> <U0057>;<DOT>;<SMALL>;IGNORE
+<U1E88> <U0057>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E89> <U0057>;<DOT-BELOW>;<SMALL>;IGNORE
+<w8>
+<U0058> <U0058>;<NONE>;<CAPITAL>;IGNORE
+<U0078> <U0058>;<NONE>;<SMALL>;IGNORE
+<U1E8C> <U0058>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E8D> <U0058>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E8A> <U0058>;<DOT>;<CAPITAL>;IGNORE
+<U1E8B> <U0058>;<DOT>;<SMALL>;IGNORE
+<x8>
+<U1EF2> <U0059>;<GRAVE>;<CAPITAL>;IGNORE
+<U1EF3> <U0059>;<GRAVE>;<SMALL>;IGNORE
+<U0176> <U0059>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0177> <U0059>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0178> <U0059>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FF> <U0059>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EF6> <U0059>;<HOOK>;<CAPITAL>;IGNORE
+<U1EF7> <U0059>;<HOOK>;<SMALL>;IGNORE
+<U1EF8> <U0059>;<TILDE>;<CAPITAL>;IGNORE
+<U1EF9> <U0059>;<TILDE>;<SMALL>;IGNORE
+<U1E8E> <U0059>;<DOT>;<CAPITAL>;IGNORE
+<U1E8F> <U0059>;<DOT>;<SMALL>;IGNORE
+<U1EF4> <U0059>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF5> <U0059>;<DOT-BELOW>;<SMALL>;IGNORE
+<U005A> <U005A>;<NONE>;<CAPITAL>;IGNORE
+<U007A> <U005A>;<NONE>;<SMALL>;IGNORE
+<U0179> <U005A>;<ACUTE>;<CAPITAL>;IGNORE
+<U017A> <U005A>;<ACUTE>;<SMALL>;IGNORE
+<U1E90> <U005A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E91> <U005A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U017B> <U005A>;<DOT>;<CAPITAL>;IGNORE
+<U017C> <U005A>;<DOT>;<SMALL>;IGNORE
+<U1E92> <U005A>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E93> <U005A>;<DOT-BELOW>;<SMALL>;IGNORE
+<U01B5> <U005A>;<STROKE>;<CAPITAL>;IGNORE
+<U01B6> <U005A>;<STROKE>;<SMALL>;IGNORE
+<U1E94> <U005A>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E95> <U005A>;<LINE-BELOW>;<SMALL>;IGNORE
+<z8>
+<U017D> <U017D>;<NONE>;<CAPITAL>;IGNORE
+<U017E> <U017D>;<NONE>;<SMALL>;IGNORE
+<U0391> <U0391>;<CAPITAL>;<GREEK>;IGNORE
+<U0386> <U0391>;<CAPITAL>;<TONOS>;IGNORE
+<U03B1> <U0391>;<SMALL>;<GREEK>;IGNORE
+<U03AC> <U0391>;<SMALL>;<TONOS>;IGNORE
+<U0392> <U0392>;<CAPITAL>;<GREEK>;IGNORE
+<U03B2> <U0392>;<SMALL>;<GREEK>;IGNORE
+<U0393> <U0393>;<CAPITAL>;<GREEK>;IGNORE
+<U03B3> <U0393>;<SMALL>;<GREEK>;IGNORE
+<U0394> <U0394>;<CAPITAL>;<GREEK>;IGNORE
+<U03B4> <U0394>;<SMALL>;<GREEK>;IGNORE
+<U0395> <U0395>;<CAPITAL>;<GREEK>;IGNORE
+<U0388> <U0395>;<CAPITAL>;<TONOS>;IGNORE
+<U03B5> <U0395>;<SMALL>;<GREEK>;IGNORE
+<U03AD> <U0395>;<SMALL>;<TONOS>;IGNORE
+<U0396> <U0396>;<CAPITAL>;<GREEK>;IGNORE
+<U03B6> <U0396>;<SMALL>;<GREEK>;IGNORE
+<U0397> <U0397>;<CAPITAL>;<GREEK>;IGNORE
+<U0389> <U0397>;<CAPITAL>;<TONOS>;IGNORE
+<U03B7> <U0397>;<SMALL>;<GREEK>;IGNORE
+<U03AE> <U0397>;<SMALL>;<TONOS>;IGNORE
+<U0398> <U0398>;<CAPITAL>;<GREEK>;IGNORE
+<U03B8> <U0398>;<SMALL>;<GREEK>;IGNORE
+<U0399> <U0399>;<CAPITAL>;<GREEK>;IGNORE
+<U038A> <U0399>;<CAPITAL>;<TONOS>;IGNORE
+<U03AA> <U0399>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03B9> <U0399>;<SMALL>;<GREEK>;IGNORE
+<U03AF> <U0399>;<SMALL>;<TONOS>;IGNORE
+<U03CA> <U0399>;<SMALL>;<DIALYTICA>;IGNORE
+<U0390> <U0399>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U039A> <U039A>;<CAPITAL>;<GREEK>;IGNORE
+<U03BA> <U039A>;<SMALL>;<GREEK>;IGNORE
+<U039B> <U039B>;<CAPITAL>;<GREEK>;IGNORE
+<U03BB> <U039B>;<SMALL>;<GREEK>;IGNORE
+<U039C> <U039C>;<CAPITAL>;<GREEK>;IGNORE
+<U03BC> <U039C>;<SMALL>;<GREEK>;IGNORE
+<U039D> <U039D>;<CAPITAL>;<GREEK>;IGNORE
+<U03BD> <U039D>;<SMALL>;<GREEK>;IGNORE
+<U039E> <U039E>;<CAPITAL>;<GREEK>;IGNORE
+<U03BE> <U039E>;<SMALL>;<GREEK>;IGNORE
+<U039F> <U039F>;<CAPITAL>;<GREEK>;IGNORE
+<U038C> <U039F>;<CAPITAL>;<TONOS>;IGNORE
+<U03BF> <U039F>;<SMALL>;<GREEK>;IGNORE
+<U03CC> <U039F>;<SMALL>;<TONOS>;IGNORE
+<U03A0> <U03A0>;<CAPITAL>;<GREEK>;IGNORE
+<U03C0> <U03A0>;<SMALL>;<GREEK>;IGNORE
+<U03A1> <U03A1>;<CAPITAL>;<GREEK>;IGNORE
+<U03C1> <U03A1>;<SMALL>;<GREEK>;IGNORE
+<U03A3> <U03A3>;<CAPITAL>;<GREEK>;IGNORE
+<U03C3> <U03A3>;<SMALL>;<GREEK>;IGNORE
+<U03C2> <U03A3>;<SMALL>;<U03C2>;IGNORE
+<U03A4> <U03A4>;<CAPITAL>;<GREEK>;IGNORE
+<U03C4> <U03A4>;<SMALL>;<GREEK>;IGNORE
+<U03A5> <U03A5>;<CAPITAL>;<GREEK>;IGNORE
+<U038E> <U03A5>;<CAPITAL>;<TONOS>;IGNORE
+<U03AB> <U03A5>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03C5> <U03A5>;<SMALL>;<GREEK>;IGNORE
+<U03CD> <U03A5>;<SMALL>;<TONOS>;IGNORE
+<U03CB> <U03A5>;<SMALL>;<DIALYTICA>;IGNORE
+<U03B0> <U03A5>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U03A6> <U03A6>;<CAPITAL>;<GREEK>;IGNORE
+<U03C6> <U03A6>;<SMALL>;<GREEK>;IGNORE
+<U03A7> <U03A7>;<CAPITAL>;<GREEK>;IGNORE
+<U03C7> <U03A7>;<SMALL>;<GREEK>;IGNORE
+<U03A8> <U03A8>;<CAPITAL>;<GREEK>;IGNORE
+<U03C8> <U03A8>;<SMALL>;<GREEK>;IGNORE
+<U03A9> <U03A9>;<CAPITAL>;<GREEK>;IGNORE
+<U038F> <U03A9>;<CAPITAL>;<TONOS>;IGNORE
+<U03C9> <U03A9>;<SMALL>;<GREEK>;IGNORE
+<U03CE> <U03A9>;<SMALL>;<TONOS>;IGNORE
+<U0410> <U0410>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0430> <U0410>;<CYRILLIC>;<SMALL>;IGNORE
+<U0411> <U0411>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0431> <U0411>;<CYRILLIC>;<SMALL>;IGNORE
+<U0412> <U0412>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0432> <U0412>;<CYRILLIC>;<SMALL>;IGNORE
+<U0413> <U0413>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0433> <U0413>;<CYRILLIC>;<SMALL>;IGNORE
+<U0403> <U0403>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0453> <U0403>;<CYRILLIC>;<SMALL>;IGNORE
+<U0490> <U0490>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0491> <U0490>;<CYRILLIC>;<SMALL>;IGNORE
+<U0414> <U0414>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0434> <U0414>;<CYRILLIC>;<SMALL>;IGNORE
+<U0402> <U0402>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0452> <U0402>;<CYRILLIC>;<SMALL>;IGNORE
+<U0415> <U0415>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0435> <U0415>;<CYRILLIC>;<SMALL>;IGNORE
+<U0401> <U0401>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0451> <U0401>;<CYRILLIC>;<SMALL>;IGNORE
+<U0404> <U0404>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0454> <U0404>;<CYRILLIC>;<SMALL>;IGNORE
+<U0416> <U0416>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0436> <U0416>;<CYRILLIC>;<SMALL>;IGNORE
+<U0417> <U0417>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0437> <U0417>;<CYRILLIC>;<SMALL>;IGNORE
+<U0418> <U0418>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0438> <U0418>;<CYRILLIC>;<SMALL>;IGNORE
+<U0406> <U0406>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0456> <U0406>;<CYRILLIC>;<SMALL>;IGNORE
+<U0407> <U0407>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0457> <U0407>;<CYRILLIC>;<SMALL>;IGNORE
+<U0408> <U0408>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0458> <U0408>;<CYRILLIC>;<SMALL>;IGNORE
+<U0419> <U0419>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0439> <U0419>;<CYRILLIC>;<SMALL>;IGNORE
+<U041A> <U041A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043A> <U041A>;<CYRILLIC>;<SMALL>;IGNORE
+<U040C> <U040C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045C> <U040C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041B> <U041B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043B> <U041B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0409> <U0409>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0459> <U0409>;<CYRILLIC>;<SMALL>;IGNORE
+<U041C> <U041C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043C> <U041C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041D> <U041D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043D> <U041D>;<CYRILLIC>;<SMALL>;IGNORE
+<U040A> <U040A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045A> <U040A>;<CYRILLIC>;<SMALL>;IGNORE
+<U041E> <U041E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043E> <U041E>;<CYRILLIC>;<SMALL>;IGNORE
+<U041F> <U041F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043F> <U041F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0420> <U0420>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0440> <U0420>;<CYRILLIC>;<SMALL>;IGNORE
+<U0421> <U0421>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0441> <U0421>;<CYRILLIC>;<SMALL>;IGNORE
+<U0422> <U0422>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0442> <U0422>;<CYRILLIC>;<SMALL>;IGNORE
+<U040B> <U040B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045B> <U040B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0423> <U0423>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0443> <U0423>;<CYRILLIC>;<SMALL>;IGNORE
+<U040E> <U040E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045E> <U040E>;<CYRILLIC>;<SMALL>;IGNORE
+<U0424> <U0424>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0444> <U0424>;<CYRILLIC>;<SMALL>;IGNORE
+<U0425> <U0425>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0445> <U0425>;<CYRILLIC>;<SMALL>;IGNORE
+<U0426> <U0426>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0446> <U0426>;<CYRILLIC>;<SMALL>;IGNORE
+<U0405> <U0405>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0455> <U0405>;<CYRILLIC>;<SMALL>;IGNORE
+<U0427> <U0427>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0447> <U0427>;<CYRILLIC>;<SMALL>;IGNORE
+<U040F> <U040F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045F> <U040F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0428> <U0428>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0448> <U0428>;<CYRILLIC>;<SMALL>;IGNORE
+<U0429> <U0429>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0449> <U0429>;<CYRILLIC>;<SMALL>;IGNORE
+<U044A> <U044A>;<CYRILLIC>;<SMALL>;IGNORE
+<U042A> <U044A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042B> <U042B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044B> <U042B>;<CYRILLIC>;<SMALL>;IGNORE
+<U044C> <U044C>;<CYRILLIC>;<SMALL>;IGNORE
+<U042C> <U044C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042D> <U042D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044D> <U042D>;<CYRILLIC>;<SMALL>;IGNORE
+<U042E> <U042E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044E> <U042E>;<CYRILLIC>;<SMALL>;IGNORE
+<U042F> <U042F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044F> <U042F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0462> <U0462>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0463> <U0462>;<CYRILLIC>;<SMALL>;IGNORE
+<U046A> <U046A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U046B> <U046A>;<CYRILLIC>;<SMALL>;IGNORE
+<U0472> <U0472>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0473> <U0472>;<CYRILLIC>;<SMALL>;IGNORE
+<U0474> <U0474>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0475> <U0474>;<CYRILLIC>;<SMALL>;IGNORE
+<U0480> <U0480>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0481> <U0480>;<CYRILLIC>;<SMALL>;IGNORE
+<U05D0> <U05D0>;IGNORE;IGNORE;IGNORE
+<U05D1> <U05D1>;IGNORE;IGNORE;IGNORE
+<U05D2> <U05D2>;IGNORE;IGNORE;IGNORE
+<U05D3> <U05D3>;IGNORE;IGNORE;IGNORE
+<U05D4> <U05D4>;IGNORE;IGNORE;IGNORE
+<U05D5> <U05D5>;IGNORE;IGNORE;IGNORE
+<U05D6> <U05D6>;IGNORE;IGNORE;IGNORE
+<U05D7> <U05D7>;IGNORE;IGNORE;IGNORE
+<U05D8> <U05D8>;IGNORE;IGNORE;IGNORE
+<U05D9> <U05D9>;IGNORE;IGNORE;IGNORE
+<U05DA> <U05DA>;IGNORE;IGNORE;IGNORE
+<U05DB> <U05DB>;IGNORE;IGNORE;IGNORE
+<U05DC> <U05DC>;IGNORE;IGNORE;IGNORE
+<U05DD> <U05DD>;IGNORE;IGNORE;IGNORE
+<U05DE> <U05DE>;IGNORE;IGNORE;IGNORE
+<U05DF> <U05DF>;IGNORE;IGNORE;IGNORE
+<U05E0> <U05E0>;IGNORE;IGNORE;IGNORE
+<U05E1> <U05E1>;IGNORE;IGNORE;IGNORE
+<U05E2> <U05E2>;IGNORE;IGNORE;IGNORE
+<U05E3> <U05E3>;IGNORE;IGNORE;IGNORE
+<U05E4> <U05E4>;IGNORE;IGNORE;IGNORE
+<U05E5> <U05E5>;IGNORE;IGNORE;IGNORE
+<U05E6> <U05E6>;IGNORE;IGNORE;IGNORE
+<U05E7> <U05E7>;IGNORE;IGNORE;IGNORE
+<U05E8> <U05E8>;IGNORE;IGNORE;IGNORE
+<U05E9> <U05E9>;IGNORE;IGNORE;IGNORE
+<U05EA> <U05EA>;IGNORE;IGNORE;IGNORE
+
+% Arabic collating
+
+<U060C> IGNORE;IGNORE;IGNORE;<U060C>
+<U061B> IGNORE;IGNORE;IGNORE;<U061B>
+<U061F> IGNORE;IGNORE;IGNORE;<U061F>
+<U0640> IGNORE;IGNORE;IGNORE;<U0640>
+
+<U0621> <U0621>;<U0621>;IGNORE;IGNORE
+<U0622> <U0622>;<U0622>;IGNORE;IGNORE
+<UFE82> <U0622>;<UFE82>;IGNORE;IGNORE
+<U0623> <U0621>;<U0623>;IGNORE;IGNORE
+<UFE84> <U0621>;<UFE84>;IGNORE;IGNORE
+<U0624> <U0621>;<U0624>;IGNORE;IGNORE
+<U0625> <U0621>;<U0625>;IGNORE;IGNORE
+<UFE88> <U0621>;<UFE88>;IGNORE;IGNORE
+<U0626> <U0621>;<U0626>;IGNORE;IGNORE
+<U0670> <U0670>;<U0670>;IGNORE;IGNORE
+<U0627> <U0627>;<U0627>;IGNORE;IGNORE
+<UFE8D> <U0627>;<UFE8D>;IGNORE;IGNORE
+<UFE8E> <U0627>;<UFE8E>;IGNORE;IGNORE
+<UE016> <U0627>;<UE016>;IGNORE;IGNORE
+<U0628> <U0628>;<U0628>;IGNORE;IGNORE
+<UFE8F> <U0628>;<UFE8F>;IGNORE;IGNORE
+<UFE90> <U0628>;<UFE90>;IGNORE;IGNORE
+<UFE91> <U0628>;<UFE91>;IGNORE;IGNORE
+<UFE92> <U0628>;<UFE92>;IGNORE;IGNORE
+<U067E> <U067E>;<U067E>;IGNORE;IGNORE
+<U06A4> <U06A4>;<U06A4>;IGNORE;IGNORE
+<U0629> <U0629>;<U0629>;IGNORE;IGNORE
+<UFE93> <U0629>;<UFE93>;IGNORE;IGNORE
+<UFE94> <U0629>;<UFE94>;IGNORE;IGNORE
+<U062A> <U0629>;<U062A>;IGNORE;IGNORE
+<UFE95> <U0629>;<UFE95>;IGNORE;IGNORE
+<UFE96> <U0629>;<UFE96>;IGNORE;IGNORE
+<UFE97> <U0629>;<UFE97>;IGNORE;IGNORE
+<UFE98> <U0629>;<UFE98>;IGNORE;IGNORE
+<U062B> <U062B>;<U062B>;IGNORE;IGNORE
+<UFE99> <U062B>;<UFE99>;IGNORE;IGNORE
+<UFE9A> <U062B>;<UFE9A>;IGNORE;IGNORE
+<UFE9B> <U062B>;<UFE9B>;IGNORE;IGNORE
+<UFE9C> <U062B>;<UFE9C>;IGNORE;IGNORE
+<U062C> <U062C>;<U062C>;IGNORE;IGNORE
+<UFE9D> <U062C>;<UFE9D>;IGNORE;IGNORE
+<UFE9E> <U062C>;<UFE9E>;IGNORE;IGNORE
+<UFE9F> <U062C>;<UFE9F>;IGNORE;IGNORE
+<UFEA0> <U062C>;<UFEA0>;IGNORE;IGNORE
+<U062D> <U062D>;<U062D>;IGNORE;IGNORE
+<UFEA1> <U062D>;<UFEA1>;IGNORE;IGNORE
+<UFEA2> <U062D>;<UFEA2>;IGNORE;IGNORE
+<UFEA3> <U062D>;<UFEA3>;IGNORE;IGNORE
+<UFEA4> <U062D>;<UFEA4>;IGNORE;IGNORE
+<U062E> <U062E>;<U062E>;IGNORE;IGNORE
+<UFEA5> <U062E>;<UFEA5>;IGNORE;IGNORE
+<UFEA6> <U062E>;<UFEA6>;IGNORE;IGNORE
+<UFEA7> <U062E>;<UFEA7>;IGNORE;IGNORE
+<UFEA8> <U062E>;<UFEA8>;IGNORE;IGNORE
+<U062F> <U062F>;<U062F>;IGNORE;IGNORE
+<UFEA9> <U062F>;<UFEA9>;IGNORE;IGNORE
+<UFEAA> <U062F>;<UFEAA>;IGNORE;IGNORE
+<U0630> <U0630>;<U0630>;IGNORE;IGNORE
+<UFEAB> <U0630>;<UFEAB>;IGNORE;IGNORE
+<UFEAC> <U0630>;<UFEAC>;IGNORE;IGNORE
+<U0631> <U0631>;<U0631>;IGNORE;IGNORE
+<UFEAD> <U0631>;<UFEAD>;IGNORE;IGNORE
+<UFEAE> <U0631>;<UFEAE>;IGNORE;IGNORE
+<U0632> <U0632>;<U0632>;IGNORE;IGNORE
+<UFEAF> <U0632>;<UFEAF>;IGNORE;IGNORE
+<UFEB0> <U0632>;<UFEB0>;IGNORE;IGNORE
+<U0633> <U0633>;<U0633>;IGNORE;IGNORE
+<UFEB1> <U0633>;<UFEB1>;IGNORE;IGNORE
+<UFEB2> <U0633>;<UFEB2>;IGNORE;IGNORE
+<UFEB3> <U0633>;<UFEB3>;IGNORE;IGNORE
+<UFEB4> <U0633>;<UFEB4>;IGNORE;IGNORE
+<U0634> <U0634>;<U0634>;IGNORE;IGNORE
+<UFEB5> <U0634>;<UFEB5>;IGNORE;IGNORE
+<UFEB6> <U0634>;<UFEB6>;IGNORE;IGNORE
+<UFEB7> <U0634>;<UFEB7>;IGNORE;IGNORE
+<UFEB8> <U0634>;<UFEB8>;IGNORE;IGNORE
+<U0635> <U0635>;<U0635>;IGNORE;IGNORE
+<UFEB9> <U0635>;<UFEB9>;IGNORE;IGNORE
+<UFEBA> <U0635>;<UFEBA>;IGNORE;IGNORE
+<UFEBB> <U0635>;<UFEBB>;IGNORE;IGNORE
+<UFEBC> <U0635>;<UFEBC>;IGNORE;IGNORE
+<U0636> <U0636>;<U0636>;IGNORE;IGNORE
+<UFEBD> <U0636>;<UFEBD>;IGNORE;IGNORE
+<UFEBE> <U0636>;<UFEBE>;IGNORE;IGNORE
+<UFEBF> <U0636>;<UFEBF>;IGNORE;IGNORE
+<UFEC0> <U0636>;<UFEC0>;IGNORE;IGNORE
+<U0637> <U0637>;<U0637>;IGNORE;IGNORE
+<UFEC1> <U0637>;<UFEC1>;IGNORE;IGNORE
+<UFEC2> <U0637>;<UFEC2>;IGNORE;IGNORE
+<UFEC3> <U0637>;<UFEC3>;IGNORE;IGNORE
+<UFEC4> <U0637>;<UFEC4>;IGNORE;IGNORE
+<U0638> <U0638>;<U0638>;IGNORE;IGNORE
+<UFEC5> <U0638>;<UFEC5>;IGNORE;IGNORE
+<UFEC6> <U0638>;<UFEC6>;IGNORE;IGNORE
+<UFEC7> <U0638>;<UFEC7>;IGNORE;IGNORE
+<UFEC8> <U0638>;<UFEC8>;IGNORE;IGNORE
+<U0639> <U0639>;<U0639>;IGNORE;IGNORE
+<UFEC9> <U0639>;<UFEC9>;IGNORE;IGNORE
+<UFECA> <U0639>;<UFECA>;IGNORE;IGNORE
+<UFECB> <U0639>;<UFECB>;IGNORE;IGNORE
+<UFECC> <U0639>;<UFECC>;IGNORE;IGNORE
+<U063A> <U063A>;<U063A>;IGNORE;IGNORE
+<UFECD> <U063A>;<UFECD>;IGNORE;IGNORE
+<UFECE> <U063A>;<UFECE>;IGNORE;IGNORE
+<UFECF> <U063A>;<UFECF>;IGNORE;IGNORE
+<UFED0> <U063A>;<UFED0>;IGNORE;IGNORE
+<U0641> <U0641>;<U0641>;IGNORE;IGNORE
+<UFED1> <U0641>;<UFED1>;IGNORE;IGNORE
+<UFED2> <U0641>;<UFED2>;IGNORE;IGNORE
+<UFED3> <U0641>;<UFED3>;IGNORE;IGNORE
+<UFED4> <U0641>;<UFED4>;IGNORE;IGNORE
+<U0642> <U0642>;<U0642>;IGNORE;IGNORE
+<UFED5> <U0642>;<UFED5>;IGNORE;IGNORE
+<UFED6> <U0642>;<UFED6>;IGNORE;IGNORE
+<UFED7> <U0642>;<UFED7>;IGNORE;IGNORE
+<UFED8> <U0642>;<UFED8>;IGNORE;IGNORE
+<U0643> <U0643>;<U0643>;IGNORE;IGNORE
+<UFED9> <U0643>;<UFED9>;IGNORE;IGNORE
+<UFEDA> <U0643>;<UFEDA>;IGNORE;IGNORE
+<UFEDB> <U0643>;<UFEDB>;IGNORE;IGNORE
+<UFEDC> <U0643>;<UFEDC>;IGNORE;IGNORE
+<U0644> <U0644>;<U0644>;IGNORE;IGNORE
+<UFEDD> <U0644>;<UFEDD>;IGNORE;IGNORE
+<UFEDE> <U0644>;<UFEDE>;IGNORE;IGNORE
+<UFEDF> <U0644>;<UFEDF>;IGNORE;IGNORE
+<UFEE0> <U0644>;<UFEE0>;IGNORE;IGNORE
+<U0645> <U0645>;<U0645>;IGNORE;IGNORE
+<UFEE1> <U0645>;<UFEE1>;IGNORE;IGNORE
+<UFEE2> <U0645>;<UFEE2>;IGNORE;IGNORE
+<UFEE3> <U0645>;<UFEE3>;IGNORE;IGNORE
+<UFEE4> <U0645>;<UFEE4>;IGNORE;IGNORE
+<U0646> <U0646>;<U0646>;IGNORE;IGNORE
+<UFEE5> <U0646>;<UFEE5>;IGNORE;IGNORE
+<UFEE6> <U0646>;<UFEE6>;IGNORE;IGNORE
+<UFEE7> <U0646>;<UFEE7>;IGNORE;IGNORE
+<UFEE8> <U0646>;<UFEE8>;IGNORE;IGNORE
+<U0647> <U0647>;<U0647>;IGNORE;IGNORE
+<UFEE9> <U0647>;<UFEE9>;IGNORE;IGNORE
+<UFEEA> <U0647>;<UFEEA>;IGNORE;IGNORE
+<UFEEB> <U0647>;<UFEEB>;IGNORE;IGNORE
+<UFEEC> <U0647>;<UFEEC>;IGNORE;IGNORE
+<U0648> <U0648>;<U0648>;IGNORE;IGNORE
+<UFEED> <U0648>;<UFEED>;IGNORE;IGNORE
+<UFEEE> <U0648>;<UFEEE>;IGNORE;IGNORE
+<U0649> <U0649>;<U0649>;IGNORE;IGNORE
+<UFEEF> <U0649>;<UFEEF>;IGNORE;IGNORE
+<UFEF0> <U0649>;<UFEF0>;IGNORE;IGNORE
+<U064A> <U064A>;<U064A>;IGNORE;IGNORE
+<UFEF1> <U064A>;<UFEF1>;IGNORE;IGNORE
+<UFEF2> <U064A>;<UFEF2>;IGNORE;IGNORE
+<UFEF3> <U064A>;<UFEF3>;IGNORE;IGNORE
+<UFEF4> <U064A>;<UFEF4>;IGNORE;IGNORE
+
+<U064B> IGNORE;IGNORE;<U064B>;IGNORE
+<U064C> IGNORE;IGNORE;<U064C>;IGNORE
+<U064D> IGNORE;IGNORE;<U064D>;IGNORE
+<U064E> IGNORE;IGNORE;<U064E>;IGNORE
+<U064F> IGNORE;IGNORE;<U064F>;IGNORE
+<U0650> IGNORE;IGNORE;<U0650>;IGNORE
+<U0651> IGNORE;IGNORE;<U0651>;IGNORE
+<UFE7D> IGNORE;IGNORE;<UFE7D>;IGNORE
+<U0652> IGNORE;IGNORE;<U0652>;IGNORE
+
+<U0660> <U0030>;<U0660>;IGNORE;IGNORE
+<U0661> <U0031>;<U0661>;IGNORE;IGNORE
+<U0662> <U0032>;<U0662>;IGNORE;IGNORE
+<U0663> <U0033>;<U0663>;IGNORE;IGNORE
+<U0664> <U0034>;<U0664>;IGNORE;IGNORE
+<U0665> <U0035>;<U0665>;IGNORE;IGNORE
+<U0666> <U0036>;<U0666>;IGNORE;IGNORE
+<U0667> <U0037>;<U0667>;IGNORE;IGNORE
+<U0668> <U0038>;<U0668>;IGNORE;IGNORE
+<U0669> <U0039>;<U0669>;IGNORE;IGNORE
+
+<UFEF5> "<U0644><U0622>";"<U0644><U0622>";"<UFEF5><UFEF5>";IGNORE
+<UFEF6> "<U0644><U0622>";"<U0644><UFE82>";"<UFEF6><UFEF6>";IGNORE
+<UFEF7> "<U0644><U0623>";"<U0644><U0623>";"<UFEF7><UFEF7>";IGNORE
+<UFEF8> "<U0644><U0623>";"<U0644><UFE84>";"<UFEF8><UFEF8>";IGNORE
+<UFEF9> "<U0644><U0625>";"<U0644><U0625>";"<UFEF9><UFEF9>";IGNORE
+<UFEFA> "<U0644><U0625>";"<U0644><UFE88>";"<UFEFA><UFEFA>";IGNORE
+<UFEFB> "<U0644><U0627>";"<U0644><UFE8D>";"<UFEFB><UFEFB>";IGNORE
+<UFEFC> "<U0644><U0627>";"<U0644><UFE8E>";"<UFEFC><UFEFC>";IGNORE
+
+% katakana/hiragana sorting
+% base is katakana, as this is present in most charsets
+% normal before voiced before semi-voiced
+% small vocals before normal vocals
+% katakana before hiragana
+
+<U30A1> <U30A1>;<U30A1>;IGNORE;IGNORE
+<U3041> <U30A1>;<U3041>;IGNORE;IGNORE
+<U30A2> <U30A1>;<U30A2>;IGNORE;IGNORE
+<U3042> <U30A1>;<U3042>;IGNORE;IGNORE
+<U30A3> <U30A3>;<U30A3>;IGNORE;IGNORE
+<U3043> <U30A3>;<U3043>;IGNORE;IGNORE
+<U30A4> <U30A3>;<U30A4>;IGNORE;IGNORE
+<U3044> <U30A3>;<U3044>;IGNORE;IGNORE
+<U30A5> <U30A5>;<U30A5>;IGNORE;IGNORE
+<U3045> <U30A5>;<U3045>;IGNORE;IGNORE
+<U30A6> <U30A5>;<U30A6>;IGNORE;IGNORE
+<U3046> <U30A5>;<U3046>;IGNORE;IGNORE
+<U30F4> <U30A5>;<U30F4>;IGNORE;IGNORE
+<U30A7> <U30A7>;<U30A7>;IGNORE;IGNORE
+<U3047> <U30A7>;<U3047>;IGNORE;IGNORE
+<U30A8> <U30A7>;<U30A8>;IGNORE;IGNORE
+<U3048> <U30A7>;<U3048>;IGNORE;IGNORE
+<U30A9> <U30A9>;<U30A9>;IGNORE;IGNORE
+<U3049> <U30A9>;<U3049>;IGNORE;IGNORE
+<U30AA> <U30A9>;<U30AA>;IGNORE;IGNORE
+<U304A> <U30A9>;<U304A>;IGNORE;IGNORE
+<U30F5> <U30F5>;<U30F5>;IGNORE;IGNORE
+<U30AB> <U30F5>;<U30AB>;IGNORE;IGNORE
+<U304B> <U30F5>;<U304B>;IGNORE;IGNORE
+<U30AC> <U30F5>;<U30AC>;IGNORE;IGNORE
+<U304C> <U30F5>;<U304C>;IGNORE;IGNORE
+<U30AD> <U30AD>;<U30AD>;IGNORE;IGNORE
+<U304D> <U30AD>;<U304D>;IGNORE;IGNORE
+<U30AE> <U30AD>;<U30AE>;IGNORE;IGNORE
+<U304E> <U30AD>;<U304E>;IGNORE;IGNORE
+<U30AF> <U30AF>;<U30AF>;IGNORE;IGNORE
+<U304F> <U30AF>;<U304F>;IGNORE;IGNORE
+<U30B0> <U30AF>;<U30B0>;IGNORE;IGNORE
+<U3050> <U30AF>;<U3050>;IGNORE;IGNORE
+<U30F6> <U30F6>;<U30F6>;IGNORE;IGNORE
+<U30B1> <U30F6>;<U30B1>;IGNORE;IGNORE
+<U3051> <U30F6>;<U3051>;IGNORE;IGNORE
+<U30B2> <U30F6>;<U30B2>;IGNORE;IGNORE
+<U3052> <U30F6>;<U3052>;IGNORE;IGNORE
+<U30B3> <U30B3>;<U30B3>;IGNORE;IGNORE
+<U3053> <U30B3>;<U3053>;IGNORE;IGNORE
+<U30B4> <U30B3>;<U30B4>;IGNORE;IGNORE
+<U3054> <U30B3>;<U3054>;IGNORE;IGNORE
+<U30B5> <U30B5>;<U30B5>;IGNORE;IGNORE
+<U3055> <U30B5>;<U3055>;IGNORE;IGNORE
+<U30B6> <U30B5>;<U30B6>;IGNORE;IGNORE
+<U3056> <U30B5>;<U3056>;IGNORE;IGNORE
+<U30B7> <U30B7>;<U30B7>;IGNORE;IGNORE
+<U3057> <U30B7>;<U3057>;IGNORE;IGNORE
+<U30B8> <U30B7>;<U30B8>;IGNORE;IGNORE
+<U3058> <U30B7>;<U3058>;IGNORE;IGNORE
+<U30B9> <U30B9>;<U30B9>;IGNORE;IGNORE
+<U3059> <U30B9>;<U3059>;IGNORE;IGNORE
+<U30BA> <U30B9>;<U30BA>;IGNORE;IGNORE
+<U305A> <U30B9>;<U305A>;IGNORE;IGNORE
+<U30BB> <U30BB>;<U30BB>;IGNORE;IGNORE
+<U305B> <U30BB>;<U305B>;IGNORE;IGNORE
+<U30BC> <U30BB>;<U30BC>;IGNORE;IGNORE
+<U305C> <U30BB>;<U305C>;IGNORE;IGNORE
+<U30BD> <U30BD>;<U30BD>;IGNORE;IGNORE
+<U305D> <U30BD>;<U305D>;IGNORE;IGNORE
+<U30BE> <U30BD>;<U30BE>;IGNORE;IGNORE
+<U305E> <U30BD>;<U305E>;IGNORE;IGNORE
+<U30BF> <U30BF>;<U30BF>;IGNORE;IGNORE
+<U305F> <U30BF>;<U305F>;IGNORE;IGNORE
+<U30C0> <U30BF>;<U30C0>;IGNORE;IGNORE
+<U3060> <U30BF>;<U3060>;IGNORE;IGNORE
+<U30C1> <U30C1>;<U30C1>;IGNORE;IGNORE
+<U3061> <U30C1>;<U3061>;IGNORE;IGNORE
+<U30C2> <U30C1>;<U30C2>;IGNORE;IGNORE
+<U3062> <U30C1>;<U3062>;IGNORE;IGNORE
+<U30C3> <U30C3>;<U30C3>;IGNORE;IGNORE
+<U3063> <U30C3>;<U3063>;IGNORE;IGNORE
+<U30C4> <U30C3>;<U30C4>;IGNORE;IGNORE
+<U3064> <U30C3>;<U3064>;IGNORE;IGNORE
+<U30C5> <U30C3>;<U30C5>;IGNORE;IGNORE
+<U3065> <U30C3>;<U3065>;IGNORE;IGNORE
+<U30C6> <U30C6>;<U30C6>;IGNORE;IGNORE
+<U3066> <U30C6>;<U3066>;IGNORE;IGNORE
+<U30C7> <U30C6>;<U30C7>;IGNORE;IGNORE
+<U3067> <U30C6>;<U3067>;IGNORE;IGNORE
+<U30C8> <U30C8>;<U30C8>;IGNORE;IGNORE
+<U3068> <U30C8>;<U3068>;IGNORE;IGNORE
+<U30C9> <U30C8>;<U30C9>;IGNORE;IGNORE
+<U3069> <U30C8>;<U3069>;IGNORE;IGNORE
+<U30CA> <U30CA>;<U30CA>;IGNORE;IGNORE
+<U306A> <U30CA>;<U306A>;IGNORE;IGNORE
+<U30CB> <U30CB>;<U30CB>;IGNORE;IGNORE
+<U306B> <U30CB>;<U306B>;IGNORE;IGNORE
+<U30CC> <U30CC>;<U30CC>;IGNORE;IGNORE
+<U306C> <U30CC>;<U306C>;IGNORE;IGNORE
+<U30CD> <U30CD>;<U30CD>;IGNORE;IGNORE
+<U306D> <U30CD>;<U306D>;IGNORE;IGNORE
+<U30CE> <U30CE>;<U30CE>;IGNORE;IGNORE
+<U306E> <U30CE>;<U306E>;IGNORE;IGNORE
+<U30CF> <U30CF>;<U30CF>;IGNORE;IGNORE
+<U306F> <U30CF>;<U306F>;IGNORE;IGNORE
+<U30D0> <U30CF>;<U30D0>;IGNORE;IGNORE
+<U3070> <U30CF>;<U3070>;IGNORE;IGNORE
+<U30D1> <U30CF>;<U30D1>;IGNORE;IGNORE
+<U3071> <U30CF>;<U3071>;IGNORE;IGNORE
+<U30D2> <U30D2>;<U30D2>;IGNORE;IGNORE
+<U3072> <U30D2>;<U3072>;IGNORE;IGNORE
+<U30D3> <U30D2>;<U30D3>;IGNORE;IGNORE
+<U3073> <U30D2>;<U3073>;IGNORE;IGNORE
+<U30D4> <U30D2>;<U30D4>;IGNORE;IGNORE
+<U3074> <U30D2>;<U3074>;IGNORE;IGNORE
+<U30D5> <U30D5>;<U30D5>;IGNORE;IGNORE
+<U3075> <U30D5>;<U3075>;IGNORE;IGNORE
+<U30D6> <U30D5>;<U30D6>;IGNORE;IGNORE
+<U3076> <U30D5>;<U3076>;IGNORE;IGNORE
+<U30D7> <U30D5>;<U30D7>;IGNORE;IGNORE
+<U3077> <U30D5>;<U3077>;IGNORE;IGNORE
+<U30D8> <U30D8>;<U30D8>;IGNORE;IGNORE
+<U3078> <U30D8>;<U3078>;IGNORE;IGNORE
+<U30D9> <U30D8>;<U30D9>;IGNORE;IGNORE
+<U3079> <U30D8>;<U3079>;IGNORE;IGNORE
+<U30DA> <U30D8>;<U30DA>;IGNORE;IGNORE
+<U307A> <U30D8>;<U307A>;IGNORE;IGNORE
+<U30DB> <U30DB>;<U30DB>;IGNORE;IGNORE
+<U307B> <U30DB>;<U307B>;IGNORE;IGNORE
+<U30DC> <U30DB>;<U30DC>;IGNORE;IGNORE
+<U307C> <U30DB>;<U307C>;IGNORE;IGNORE
+<U30DD> <U30DB>;<U30DD>;IGNORE;IGNORE
+<U307D> <U30DB>;<U307D>;IGNORE;IGNORE
+<U30DE> <U30DE>;<U30DE>;IGNORE;IGNORE
+<U307E> <U30DE>;<U307E>;IGNORE;IGNORE
+<U30DF> <U30DF>;<U30DF>;IGNORE;IGNORE
+<U307F> <U30DF>;<U307F>;IGNORE;IGNORE
+<U30E0> <U30E0>;<U30E0>;IGNORE;IGNORE
+<U3080> <U30E0>;<U3080>;IGNORE;IGNORE
+<U30E1> <U30E1>;<U30E1>;IGNORE;IGNORE
+<U3081> <U30E1>;<U3081>;IGNORE;IGNORE
+<U30E2> <U30E2>;<U30E2>;IGNORE;IGNORE
+<U3082> <U30E2>;<U3082>;IGNORE;IGNORE
+<U30E3> <U30E3>;<U30E3>;IGNORE;IGNORE
+<U3083> <U30E3>;<U3083>;IGNORE;IGNORE
+<U30E4> <U30E3>;<U30E4>;IGNORE;IGNORE
+<U3084> <U30E3>;<U3084>;IGNORE;IGNORE
+<U30E5> <U30E5>;<U30E5>;IGNORE;IGNORE
+<U3085> <U30E5>;<U3085>;IGNORE;IGNORE
+<U30E6> <U30E5>;<U30E6>;IGNORE;IGNORE
+<U3086> <U30E5>;<U3086>;IGNORE;IGNORE
+<U30E7> <U30E7>;<U30E7>;IGNORE;IGNORE
+<U3087> <U30E7>;<U3087>;IGNORE;IGNORE
+<U30E8> <U30E7>;<U30E8>;IGNORE;IGNORE
+<U3088> <U30E7>;<U3088>;IGNORE;IGNORE
+<U30E9> <U30E9>;<U30E9>;IGNORE;IGNORE
+<U3089> <U30E9>;<U3089>;IGNORE;IGNORE
+<U30EA> <U30EA>;<U30EA>;IGNORE;IGNORE
+<U308A> <U30EA>;<U308A>;IGNORE;IGNORE
+<U30EB> <U30EB>;<U30EB>;IGNORE;IGNORE
+<U308B> <U30EB>;<U308B>;IGNORE;IGNORE
+<U30EC> <U30EC>;<U30EC>;IGNORE;IGNORE
+<U308C> <U30EC>;<U308C>;IGNORE;IGNORE
+<U30ED> <U30ED>;<U30ED>;IGNORE;IGNORE
+<U308D> <U30ED>;<U308D>;IGNORE;IGNORE
+<U30EE> <U30EE>;<U30EE>;IGNORE;IGNORE
+<U308E> <U30EE>;<U308E>;IGNORE;IGNORE
+<U30EF> <U30EE>;<U30EF>;IGNORE;IGNORE
+<U308F> <U30EE>;<U308F>;IGNORE;IGNORE
+<U30F0> <U30F0>;<U30F0>;IGNORE;IGNORE
+<U3090> <U30F0>;<U3090>;IGNORE;IGNORE
+<U30F1> <U30F1>;<U30F1>;IGNORE;IGNORE
+<U3091> <U30F1>;<U3091>;IGNORE;IGNORE
+<U30F2> <U30F2>;<U30F2>;IGNORE;IGNORE
+<U3092> <U30F2>;<U3092>;IGNORE;IGNORE
+<U30F3> <U30F3>;<U30F3>;IGNORE;IGNORE
+<U3093> <U30F3>;<U3093>;IGNORE;IGNORE
+
+order_end
+
diff --git a/ap/build/uClibc/extra/locale/collation/mi_NZ b/ap/build/uClibc/extra/locale/collation/mi_NZ
new file mode 100644
index 0000000..c36305d
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/mi_NZ
@@ -0,0 +1,44 @@
+copy "iso14651_t1"
+
+%% a b c d e f g h i j k l m n ng o p q r s t u v w wh x y z
+
+collating-symbol <n-g-mi>
+collating-element <N-G> from "<U004E><U0047>"
+collating-element <n-g> from "<U006E><U0067>"
+collating-element <N-g> from "<U004E><U0067>"
+collating-element <n-G> from "<U006E><U0047>"
+collating-symbol <w-h-mi>
+collating-element <W-H> from "<U0057><U0048>"
+collating-element <w-h> from "<U0077><U0068>"
+collating-element <W-h> from "<U0057><U0068>"
+collating-element <w-H> from "<U0077><U0048>"
+
+collating-symbol <CAP-MIN>
+collating-symbol <MIN-CAP>
+
+reorder-after <MIN>
+<MIN-CAP>
+reorder-after <CAP>
+<CAP-MIN>
+
+reorder-after <n>
+<n-g-mi>
+reorder-after <w>
+<w-h-mi>
+
+reorder-after <U006E>
+<n-g> <n-g-mi>;<PCT>;<MIN>;IGNORE
+<n-G> <n-g-mi>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U004E>
+<N-G> <n-g-mi>;<PCT>;<CAP>;IGNORE
+<N-g> <n-g-mi>;<PCT>;<CAP-MIN>;IGNORE
+
+reorder-after <U0077>
+<w-h> <w-h-mi>;<PCT>;<MIN>;IGNORE
+<w-H> <w-h-mi>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U0057>
+<W-H> <w-h-mi>;<PCT>;<CAP>;IGNORE
+<W-h> <w-h-mi>;<PCT>;<CAP-MIN>;IGNORE
+
+reorder-end
+
diff --git a/ap/build/uClibc/extra/locale/collation/mk_MK b/ap/build/uClibc/extra/locale/collation/mk_MK
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/mk_MK
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/mr_IN b/ap/build/uClibc/extra/locale/collation/mr_IN
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/mr_IN
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/ms_MY b/ap/build/uClibc/extra/locale/collation/ms_MY
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ms_MY
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/mt_MT b/ap/build/uClibc/extra/locale/collation/mt_MT
new file mode 100644
index 0000000..bd028da
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/mt_MT
@@ -0,0 +1,80 @@
+
+% a b c c. d e f g. g gh/ h h/ i ie j k l m n o p q r s t u v w x y z. z
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
+collating-symbol <c.>
+collating-symbol <g.>
+collating-symbol <h->
+collating-symbol <z.>
+
+collating-symbol <g-h--mt>
+collating-element <G-H-> from "<U0047><U0126>"
+collating-element <g-h-> from "<U0067><U0127>"
+collating-element <G-h-> from "<U0047><U0127>"
+collating-element <g-H-> from "<U0067><U0126>"
+
+collating-symbol <i-e-mt>
+collating-element <I-E> from "<U0049><U0045>"
+collating-element <i-e> from "<U0069><U0065>"
+collating-element <I-e> from "<U0049><U0065>"
+collating-element <i-E> from "<U0069><U0045>"
+
+collating-symbol <CAP-MIN>
+collating-symbol <MIN-CAP>
+
+reorder-after <MIN>
+<MIN-CAP>
+reorder-after <CAP>
+<CAP-MIN>
+
+reorder-after <c>
+<c.>
+reorder-after <f>
+<g.>
+reorder-after <g>
+<g-h--mt>
+reorder-after <h>
+<h->
+reorder-after <i>
+<i-e-mt>
+reorder-after <y>
+<z.>
+
+reorder-after <U0063>
+<U010B> <c.>;<PCT>;<MIN>;IGNORE
+reorder-after <U0043>
+<U010A> <c.>;<PCT>;<CAP>;IGNORE
+
+reorder-after <U0066>
+<U0121> <g.>;<PCT>;<MIN>;IGNORE
+reorder-after <U0046>
+<U0120> <g.>;<PCT>;<CAP>;IGNORE
+
+reorder-after <U0067>
+<g-h-> <g-h--mt>;<PCL>;<MIN>;IGNORE
+<g-H-> <g-h--mt>;<PCL>;<MIN-CAP>;IGNORE
+reorder-after <U0047>
+<G-H-> <g-h--mt>;<PCL>;<CAP>;IGNORE
+<G-h-> <g-h--mt>;<PCL>;<CAP-MIN>;IGNORE
+
+reorder-after <U0068>
+<U0127> <h->;<OBL>;<MIN>;IGNORE
+reorder-after <U0048>
+<U0126> <h->;<OBL>;<CAP>;IGNORE
+
+reorder-after <U0069>
+<i-e> <i-e-mt>;<PCL>;<MIN>;IGNORE
+<i-E> <i-e-mt>;<PCL>;<MIN-CAP>;IGNORE
+reorder-after <U0049>
+<I-E> <i-e-mt>;<PCL>;<CAP>;IGNORE
+<I-e> <i-e-mt>;<PCL>;<CAP-MIN>;IGNORE
+
+reorder-after <U0079>
+<U017C> <z.>;<PCT>;<MIN>;IGNORE
+reorder-after <U0059>
+<U017B> <z.>;<PCT>;<CAP>;IGNORE
+
+reorder-end
+
diff --git a/ap/build/uClibc/extra/locale/collation/nl_BE b/ap/build/uClibc/extra/locale/collation/nl_BE
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/nl_BE
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/nl_NL b/ap/build/uClibc/extra/locale/collation/nl_NL
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/nl_NL
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/nn_NO b/ap/build/uClibc/extra/locale/collation/nn_NO
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/nn_NO
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/no_NO b/ap/build/uClibc/extra/locale/collation/no_NO
new file mode 100644
index 0000000..f32dc18
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/no_NO
@@ -0,0 +1,2070 @@
+collating-element <A-A> from "<U0041><U0041>"
+collating-element <a-a> from "<U0061><U0061>"
+collating-element <A-a> from "<U0041><U0061>"
+collating-element <a-A> from "<U0061><U0041>"
+
+% Base collation scheme: 1994-03-22
+
+% Ordering algorithm:
+% 1. Spaces and hyphen (but not soft
+% hyphen) before punctuation
+% characters, punctuation characters
+% before numbers,
+% numbers before letters.
+% 2. Letters with diacritical marks are
+% members of equivalence classes
+% 3. A distinction is made with regards
+% to case as noted below.
+% 4. Special characters are ignored
+% when comparing letters, but then
+% they are considered
+% 5. The alphabets are sorted in order
+% of first appearance in ISO 10646:
+% Latin, Greek, Cyrillic, etc.
+%
+% According to Greek specifications,
+% the steps 2. and 3. above are reversed
+% for the Greek script
+
+% collating symbols
+
+% The collating symbol naming is
+% mostly taken from ISO 10646-1,
+% for example the case and accent
+% names are from this standard.
+
+collating-symbol <CAPITAL>
+collating-symbol <CAPITAL-SMALL>
+collating-symbol <SMALL-CAPITAL>
+collating-symbol <SMALL>
+
+% <CAPITAL-SMALL> and <SMALL-CAPITAL>
+% are for cases like Danish <U0041><U0061>
+% and Spanish <U0043><U0068> being treated
+% as one letter.
+
+% The <a8> ...... <z8> collating
+% symbols have defined weights as
+% the last character in a group of
+% Latin letters. They are used
+% to specify deltas by locales using
+% a locale as the default ordering
+% and by "replace-after" statements
+% specifying the changed placement
+% in an ordering of a character.
+
+collating-symbol <a8>
+collating-symbol <b8>
+collating-symbol <c8>
+collating-symbol <d8>
+collating-symbol <e8>
+collating-symbol <f8>
+collating-symbol <g8>
+collating-symbol <h8>
+collating-symbol <i8>
+collating-symbol <j8>
+collating-symbol <k8>
+collating-symbol <l8>
+collating-symbol <m8>
+collating-symbol <n8>
+collating-symbol <o8>
+collating-symbol <p8>
+collating-symbol <q8>
+collating-symbol <r8>
+collating-symbol <s8>
+collating-symbol <t8>
+collating-symbol <u8>
+collating-symbol <v8>
+collating-symbol <w8>
+collating-symbol <x8>
+collating-symbol <y8>
+collating-symbol <z8>
+
+collating-symbol <NONE>
+collating-symbol <ACUTE>
+collating-symbol <ACUTE+DOT>
+collating-symbol <GRAVE>
+collating-symbol <DOUBLE-GRAVE>
+collating-symbol <BREVE>
+collating-symbol <BREVE+ACUTE>
+collating-symbol <BREVE+GRAVE>
+collating-symbol <BREVE+MACRON>
+collating-symbol <BREVE+HOOK>
+collating-symbol <BREVE+TILDE>
+collating-symbol <BREVE+DOT-BELOW>
+collating-symbol <BREVE-BELOW>
+collating-symbol <INVERTED-BREVE>
+collating-symbol <CIRCUMFLEX>
+collating-symbol <CIRCUMFLEX+ACUTE>
+collating-symbol <CIRCUMFLEX+GRAVE>
+collating-symbol <CIRCUMFLEX+HOOK>
+collating-symbol <CIRCUMFLEX+TILDE>
+collating-symbol <CIRCUMFLEX+DOT-BELOW>
+collating-symbol <CARON>
+collating-symbol <CARON+DIAERESIS>
+collating-symbol <CARON+DOT>
+collating-symbol <RING>
+collating-symbol <RING+ACUTE>
+collating-symbol <RING-BELOW>
+collating-symbol <DIAERESIS>
+collating-symbol <DIAERESIS+MACRON>
+collating-symbol <DIAERESIS+ACUTE>
+collating-symbol <DIAERESIS+GRAVE>
+collating-symbol <DIAERESIS+CARON>
+collating-symbol <DOUBLE-ACUTE>
+collating-symbol <HOOK>
+collating-symbol <TILDE>
+collating-symbol <TILDE+ACUTE>
+collating-symbol <TILDE+DIAERESIS>
+collating-symbol <TILDE-BELOW>
+collating-symbol <DOT>
+collating-symbol <DOT-BELOW>
+collating-symbol <DOT+DOT-BELOW>
+collating-symbol <STROKE>
+collating-symbol <STROKE+ACUTE>
+collating-symbol <CEDILLA>
+collating-symbol <CEDILLA+ACUTE>
+collating-symbol <CEDILLA+GRAVE>
+collating-symbol <CEDILLA+BREVE>
+collating-symbol <OGONEK>
+collating-symbol <OGONEK+MACRON>
+collating-symbol <MACRON>
+collating-symbol <MACRON+ACUTE>
+collating-symbol <MACRON+GRAVE>
+collating-symbol <MACRON+DIAERESIS>
+collating-symbol <MACRON+DIAERESIS-BELOW>
+collating-symbol <MACRON+DOT>
+collating-symbol <MACRON+DOT-BELOW>
+collating-symbol <MACRON+CIRCUMFLEX>
+collating-symbol <LINE-BELOW>
+collating-symbol <HORN>
+collating-symbol <HORN+ACUTE>
+collating-symbol <HORN+GRAVE>
+collating-symbol <HORN+HOOK>
+collating-symbol <HORN+TILDE>
+collating-symbol <HORN+DOT-BELOW>
+collating-symbol <PRECEDED-BY-APOSTROPHE>
+collating-symbol <GREEK>
+collating-symbol <TONOS>
+collating-symbol <DIALYTICA>
+collating-symbol <DIALYTICA+TONOS>
+collating-symbol <CYRILLIC>
+collating-symbol <HIRAGANA>
+collating-symbol <KATAKANA>
+collating-symbol <SPECIAL>
+
+% letter;accent;case;specials
+
+order_start forward;backward;forward;position
+
+% <CAPITAL> or <SMALL> letters first:
+
+% <CAPITAL> before <SMALL> letters
+<CAPITAL>
+<CAPITAL-SMALL>
+<SMALL-CAPITAL>
+<SMALL>
+
+% Accents:
+
+<NONE>
+<ACUTE>
+<ACUTE+DOT>
+<GRAVE>
+<DOUBLE-GRAVE>
+<BREVE>
+<BREVE+ACUTE>
+<BREVE+GRAVE>
+<BREVE+MACRON>
+<BREVE+HOOK>
+<BREVE+TILDE>
+<BREVE+DOT-BELOW>
+<BREVE-BELOW>
+<INVERTED-BREVE>
+<CIRCUMFLEX>
+<CIRCUMFLEX+ACUTE>
+<CIRCUMFLEX+GRAVE>
+<CIRCUMFLEX+HOOK>
+<CIRCUMFLEX+TILDE>
+<CIRCUMFLEX+DOT-BELOW>
+<CARON>
+<CARON+DIAERESIS>
+<CARON+DOT>
+<RING>
+<RING+ACUTE>
+<RING-BELOW>
+<DIAERESIS>
+<DIAERESIS+MACRON>
+<DIAERESIS+ACUTE>
+<DIAERESIS+GRAVE>
+<DIAERESIS+CARON>
+<DOUBLE-ACUTE>
+<HOOK>
+<TILDE>
+<TILDE+ACUTE>
+<TILDE+DIAERESIS>
+<TILDE-BELOW>
+<DOT>
+<DOT-BELOW>
+<DOT+DOT-BELOW>
+<STROKE>
+<STROKE+ACUTE>
+<CEDILLA>
+<CEDILLA+ACUTE>
+<CEDILLA+GRAVE>
+<CEDILLA+BREVE>
+<OGONEK>
+<OGONEK+MACRON>
+<MACRON>
+<MACRON+ACUTE>
+<MACRON+GRAVE>
+<MACRON+DIAERESIS>
+<MACRON+DIAERESIS-BELOW>
+<MACRON+DOT>
+<MACRON+DOT-BELOW>
+<MACRON+CIRCUMFLEX>
+<LINE-BELOW>
+<HORN>
+<HORN+ACUTE>
+<HORN+GRAVE>
+<HORN+HOOK>
+<HORN+TILDE>
+<HORN+DOT-BELOW>
+<PRECEDED-BY-APOSTROPHE>
+<GREEK>
+<TONOS>
+<DIALYTICA>
+<DIALYTICA+TONOS>
+<CYRILLIC>
+<HIRAGANA>
+<KATAKANA>
+<SPECIAL>
+
+<U00A0> <U00A0>;<U00A0>;<U00A0>;IGNORE
+<U0020> IGNORE;IGNORE;IGNORE;<U0020>
+<U0009> IGNORE;IGNORE;IGNORE;<U0009>
+<U000B> IGNORE;IGNORE;IGNORE;<U000B>
+<U000D> IGNORE;IGNORE;IGNORE;<U000D>
+<U000A> IGNORE;IGNORE;IGNORE;<U000A>
+<U000C> IGNORE;IGNORE;IGNORE;<U000C>
+<U005F> IGNORE;IGNORE;IGNORE;<U005F>
+<U00AF> IGNORE;IGNORE;IGNORE;<U00AF>
+<U00AD> IGNORE;IGNORE;IGNORE;<U00AD>
+<U002D> IGNORE;IGNORE;IGNORE;<U002D>
+<U002C> IGNORE;IGNORE;IGNORE;<U002C>
+<U003B> IGNORE;IGNORE;IGNORE;<U003B>
+<U003A> IGNORE;IGNORE;IGNORE;<U003A>
+<U0021> IGNORE;IGNORE;IGNORE;<U0021>
+<U00A1> IGNORE;IGNORE;IGNORE;<U00A1>
+<U003F> IGNORE;IGNORE;IGNORE;<U003F>
+<U00BF> IGNORE;IGNORE;IGNORE;<U00BF>
+<U002F> IGNORE;IGNORE;IGNORE;<U002F>
+<U002E> IGNORE;IGNORE;IGNORE;<U002E>
+<U00B4> IGNORE;IGNORE;IGNORE;<U00B4>
+<U0060> IGNORE;IGNORE;IGNORE;<U0060>
+<U005E> IGNORE;IGNORE;IGNORE;<U005E>
+<U00A8> IGNORE;IGNORE;IGNORE;<U00A8>
+<U007E> IGNORE;IGNORE;IGNORE;<U007E>
+<U00B7> IGNORE;IGNORE;IGNORE;<U00B7>
+<U00B8> IGNORE;IGNORE;IGNORE;<U00B8>
+<U0027> IGNORE;IGNORE;IGNORE;<U0027>
+<U2018> IGNORE;IGNORE;IGNORE;<U2018>
+<U2019> IGNORE;IGNORE;IGNORE;<U2019>
+<U0022> IGNORE;IGNORE;IGNORE;<U0022>
+<U201C> IGNORE;IGNORE;IGNORE;<U201C>
+<U201D> IGNORE;IGNORE;IGNORE;<U201D>
+<U00AB> IGNORE;IGNORE;IGNORE;<U00AB>
+<U00BB> IGNORE;IGNORE;IGNORE;<U00BB>
+<U0028> IGNORE;IGNORE;IGNORE;<U0028>
+<U207D> IGNORE;IGNORE;IGNORE;<U207D>
+<U0029> IGNORE;IGNORE;IGNORE;<U0029>
+<U207E> IGNORE;IGNORE;IGNORE;<U207E>
+<U005B> IGNORE;IGNORE;IGNORE;<U005B>
+<U005D> IGNORE;IGNORE;IGNORE;<U005D>
+<U007B> IGNORE;IGNORE;IGNORE;<U007B>
+<U007D> IGNORE;IGNORE;IGNORE;<U007D>
+<U00A7> IGNORE;IGNORE;IGNORE;<U00A7>
+<U00B6> IGNORE;IGNORE;IGNORE;<U00B6>
+<U00A9> IGNORE;IGNORE;IGNORE;<U00A9>
+<U00AE> IGNORE;IGNORE;IGNORE;<U00AE>
+<U0040> IGNORE;IGNORE;IGNORE;<U0040>
+<U00A4> IGNORE;IGNORE;IGNORE;<U00A4>
+<U00A2> IGNORE;IGNORE;IGNORE;<U00A2>
+<U0024> IGNORE;IGNORE;IGNORE;<U0024>
+<U00A3> IGNORE;IGNORE;IGNORE;<U00A3>
+<U00A5> IGNORE;IGNORE;IGNORE;<U00A5>
+<U002A> IGNORE;IGNORE;IGNORE;<U002A>
+<U005C> IGNORE;IGNORE;IGNORE;<U005C>
+<U0026> IGNORE;IGNORE;IGNORE;<U0026>
+<U0023> IGNORE;IGNORE;IGNORE;<U0023>
+<U0025> IGNORE;IGNORE;IGNORE;<U0025>
+<U207B> IGNORE;IGNORE;IGNORE;<U207B>
+<U002B> IGNORE;IGNORE;IGNORE;<U002B>
+<U207A> IGNORE;IGNORE;IGNORE;<U207A>
+<U00B1> IGNORE;IGNORE;IGNORE;<U00B1>
+<U00F7> IGNORE;IGNORE;IGNORE;<U00F7>
+<U00D7> IGNORE;IGNORE;IGNORE;<U00D7>
+<U2260> IGNORE;IGNORE;IGNORE;<U2260>
+<U003C> IGNORE;IGNORE;IGNORE;<U003C>
+<U2264> IGNORE;IGNORE;IGNORE;<U2264>
+<U003D> IGNORE;IGNORE;IGNORE;<U003D>
+<U2265> IGNORE;IGNORE;IGNORE;<U2265>
+<U003E> IGNORE;IGNORE;IGNORE;<U003E>
+<U00AC> IGNORE;IGNORE;IGNORE;<U00AC>
+<U007C> IGNORE;IGNORE;IGNORE;<U007C>
+<U00A6> IGNORE;IGNORE;IGNORE;<U00A6>
+<U00B0> IGNORE;IGNORE;IGNORE;<U00B0>
+<U00B5> IGNORE;IGNORE;IGNORE;<U00B5>
+<U02C7> IGNORE;IGNORE;IGNORE;<U02C7>
+<U02D8> IGNORE;IGNORE;IGNORE;<U02D8>
+<U02D9> IGNORE;IGNORE;IGNORE;<U02D9>
+<U02DA> IGNORE;IGNORE;IGNORE;<U02DA>
+<U02DB> IGNORE;IGNORE;IGNORE;<U02DB>
+<U02DC> IGNORE;IGNORE;IGNORE;<U02DC>
+<U02DD> IGNORE;IGNORE;IGNORE;<U02DD>
+<U0374> IGNORE;IGNORE;IGNORE;<U0374>
+<U0375> IGNORE;IGNORE;IGNORE;<U0375>
+<U037A> IGNORE;IGNORE;IGNORE;<U037A>
+<U037E> IGNORE;IGNORE;IGNORE;<U037E>
+<U0384> IGNORE;IGNORE;IGNORE;<U0384>
+<U0385> IGNORE;IGNORE;IGNORE;<U0385>
+<U0387> IGNORE;IGNORE;IGNORE;<U0387>
+<U03D0> IGNORE;IGNORE;IGNORE;<U03D0>
+<U1FBF> IGNORE;IGNORE;IGNORE;<U1FBF>
+<U1FC0> IGNORE;IGNORE;IGNORE;<U1FC0>
+<U1FC1> IGNORE;IGNORE;IGNORE;<U1FC1>
+<U1FCD> IGNORE;IGNORE;IGNORE;<U1FCD>
+<U1FCE> IGNORE;IGNORE;IGNORE;<U1FCE>
+<U1FCF> IGNORE;IGNORE;IGNORE;<U1FCF>
+<U1FDD> IGNORE;IGNORE;IGNORE;<U1FDD>
+<U1FDE> IGNORE;IGNORE;IGNORE;<U1FDE>
+<U1FDF> IGNORE;IGNORE;IGNORE;<U1FDF>
+<U1FED> IGNORE;IGNORE;IGNORE;<U1FED>
+<U1FEF> IGNORE;IGNORE;IGNORE;<U1FEF>
+<U1FFE> IGNORE;IGNORE;IGNORE;<U1FFE>
+<U2002> IGNORE;IGNORE;IGNORE;<U2002>
+<U2003> IGNORE;IGNORE;IGNORE;<U2003>
+<U2004> IGNORE;IGNORE;IGNORE;<U2004>
+<U2005> IGNORE;IGNORE;IGNORE;<U2005>
+<U2006> IGNORE;IGNORE;IGNORE;<U2006>
+<U200E> IGNORE;IGNORE;IGNORE;<U200E>
+<U200F> IGNORE;IGNORE;IGNORE;<U200F>
+<U2009> IGNORE;IGNORE;IGNORE;<U2009>
+<U200A> IGNORE;IGNORE;IGNORE;<U200A>
+<U2010> IGNORE;IGNORE;IGNORE;<U2010>
+<U2013> IGNORE;IGNORE;IGNORE;<U2013>
+<U2014> IGNORE;IGNORE;IGNORE;<U2014>
+<U2015> IGNORE;IGNORE;IGNORE;<U2015>
+<U2016> IGNORE;IGNORE;IGNORE;<U2016>
+<U2017> IGNORE;IGNORE;IGNORE;<U2017>
+<U201A> IGNORE;IGNORE;IGNORE;<U201A>
+<U201B> IGNORE;IGNORE;IGNORE;<U201B>
+<U201E> IGNORE;IGNORE;IGNORE;<U201E>
+<U201F> IGNORE;IGNORE;IGNORE;<U201F>
+<U2020> IGNORE;IGNORE;IGNORE;<U2020>
+<U2021> IGNORE;IGNORE;IGNORE;<U2021>
+<U2219> IGNORE;IGNORE;IGNORE;<U2219>
+<U2025> IGNORE;IGNORE;IGNORE;<U2025>
+<U2026> IGNORE;IGNORE;IGNORE;<U2026>
+<U2030> IGNORE;IGNORE;IGNORE;<U2030>
+<U2032> IGNORE;IGNORE;IGNORE;<U2032>
+<U2033> IGNORE;IGNORE;IGNORE;<U2033>
+<U2034> IGNORE;IGNORE;IGNORE;<U2034>
+<U2035> IGNORE;IGNORE;IGNORE;<U2035>
+<U2036> IGNORE;IGNORE;IGNORE;<U2036>
+<U2037> IGNORE;IGNORE;IGNORE;<U2037>
+<U2038> IGNORE;IGNORE;IGNORE;<U2038>
+<U2039> IGNORE;IGNORE;IGNORE;<U2039>
+<U203A> IGNORE;IGNORE;IGNORE;<U203A>
+<U203B> IGNORE;IGNORE;IGNORE;<U203B>
+<U203C> IGNORE;IGNORE;IGNORE;<U203C>
+<U203E> IGNORE;IGNORE;IGNORE;<U203E>
+<U207C> IGNORE;IGNORE;IGNORE;<U207C>
+<U2080> IGNORE;IGNORE;IGNORE;<U2080>
+<U2081> IGNORE;IGNORE;IGNORE;<U2081>
+<U2082> IGNORE;IGNORE;IGNORE;<U2082>
+<U2083> IGNORE;IGNORE;IGNORE;<U2083>
+<U2084> IGNORE;IGNORE;IGNORE;<U2084>
+<U2085> IGNORE;IGNORE;IGNORE;<U2085>
+<U2086> IGNORE;IGNORE;IGNORE;<U2086>
+<U2087> IGNORE;IGNORE;IGNORE;<U2087>
+<U2088> IGNORE;IGNORE;IGNORE;<U2088>
+<U2089> IGNORE;IGNORE;IGNORE;<U2089>
+<U208A> IGNORE;IGNORE;IGNORE;<U208A>
+<U208B> IGNORE;IGNORE;IGNORE;<U208B>
+<U208C> IGNORE;IGNORE;IGNORE;<U208C>
+<U208D> IGNORE;IGNORE;IGNORE;<U208D>
+<U208E> IGNORE;IGNORE;IGNORE;<U208E>
+<U20A3> IGNORE;IGNORE;IGNORE;<U20A3>
+<U20A4> IGNORE;IGNORE;IGNORE;<U20A4>
+<U20A7> IGNORE;IGNORE;IGNORE;<U20A7>
+<U20A9> IGNORE;IGNORE;IGNORE;<U20A9>
+<U2103> IGNORE;IGNORE;IGNORE;<U2103>
+<U2105> IGNORE;IGNORE;IGNORE;<U2105>
+<U2109> IGNORE;IGNORE;IGNORE;<U2109>
+<U2116> IGNORE;IGNORE;IGNORE;<U2116>
+<U2117> IGNORE;IGNORE;IGNORE;<U2117>
+<U211E> IGNORE;IGNORE;IGNORE;<U211E>
+<U2120> IGNORE;IGNORE;IGNORE;<U2120>
+<U2122> IGNORE;IGNORE;IGNORE;<U2122>
+<U2126> IGNORE;IGNORE;IGNORE;<U2126>
+<U212B> IGNORE;IGNORE;IGNORE;<U212B>
+<U2153> IGNORE;IGNORE;IGNORE;<U2153>
+<U2154> IGNORE;IGNORE;IGNORE;<U2154>
+<U2155> IGNORE;IGNORE;IGNORE;<U2155>
+<U2156> IGNORE;IGNORE;IGNORE;<U2156>
+<U2157> IGNORE;IGNORE;IGNORE;<U2157>
+<U2158> IGNORE;IGNORE;IGNORE;<U2158>
+<U2159> IGNORE;IGNORE;IGNORE;<U2159>
+<U215A> IGNORE;IGNORE;IGNORE;<U215A>
+<U2160> IGNORE;IGNORE;IGNORE;<U2160>
+<U2161> IGNORE;IGNORE;IGNORE;<U2161>
+<U2162> IGNORE;IGNORE;IGNORE;<U2162>
+<U2163> IGNORE;IGNORE;IGNORE;<U2163>
+<U2164> IGNORE;IGNORE;IGNORE;<U2164>
+<U2165> IGNORE;IGNORE;IGNORE;<U2165>
+<U2166> IGNORE;IGNORE;IGNORE;<U2166>
+<U2167> IGNORE;IGNORE;IGNORE;<U2167>
+<U2168> IGNORE;IGNORE;IGNORE;<U2168>
+<U2169> IGNORE;IGNORE;IGNORE;<U2169>
+<U216A> IGNORE;IGNORE;IGNORE;<U216A>
+<U216B> IGNORE;IGNORE;IGNORE;<U216B>
+<U216C> IGNORE;IGNORE;IGNORE;<U216C>
+<U216D> IGNORE;IGNORE;IGNORE;<U216D>
+<U216E> IGNORE;IGNORE;IGNORE;<U216E>
+<U216F> IGNORE;IGNORE;IGNORE;<U216F>
+<U2170> IGNORE;IGNORE;IGNORE;<U2170>
+<U2171> IGNORE;IGNORE;IGNORE;<U2171>
+<U2172> IGNORE;IGNORE;IGNORE;<U2172>
+<U2173> IGNORE;IGNORE;IGNORE;<U2173>
+<U2174> IGNORE;IGNORE;IGNORE;<U2174>
+<U2175> IGNORE;IGNORE;IGNORE;<U2175>
+<U2176> IGNORE;IGNORE;IGNORE;<U2176>
+<U2177> IGNORE;IGNORE;IGNORE;<U2177>
+<U2178> IGNORE;IGNORE;IGNORE;<U2178>
+<U2179> IGNORE;IGNORE;IGNORE;<U2179>
+<U217A> IGNORE;IGNORE;IGNORE;<U217A>
+<U217B> IGNORE;IGNORE;IGNORE;<U217B>
+<U217C> IGNORE;IGNORE;IGNORE;<U217C>
+<U217D> IGNORE;IGNORE;IGNORE;<U217D>
+<U217E> IGNORE;IGNORE;IGNORE;<U217E>
+<U217F> IGNORE;IGNORE;IGNORE;<U217F>
+<U2180> IGNORE;IGNORE;IGNORE;<U2180>
+<U2181> IGNORE;IGNORE;IGNORE;<U2181>
+<U2182> IGNORE;IGNORE;IGNORE;<U2182>
+<U2191> IGNORE;IGNORE;IGNORE;<U2191>
+<U2193> IGNORE;IGNORE;IGNORE;<U2193>
+<U2194> IGNORE;IGNORE;IGNORE;<U2194>
+<U2195> IGNORE;IGNORE;IGNORE;<U2195>
+<U2196> IGNORE;IGNORE;IGNORE;<U2196>
+<U2197> IGNORE;IGNORE;IGNORE;<U2197>
+<U2198> IGNORE;IGNORE;IGNORE;<U2198>
+<U2199> IGNORE;IGNORE;IGNORE;<U2199>
+<U21A8> IGNORE;IGNORE;IGNORE;<U21A8>
+<U21C0> IGNORE;IGNORE;IGNORE;<U21C0>
+<U21D0> IGNORE;IGNORE;IGNORE;<U21D0>
+<U21D2> IGNORE;IGNORE;IGNORE;<U21D2>
+<U21D4> IGNORE;IGNORE;IGNORE;<U21D4>
+<U2200> IGNORE;IGNORE;IGNORE;<U2200>
+<U2202> IGNORE;IGNORE;IGNORE;<U2202>
+<U2203> IGNORE;IGNORE;IGNORE;<U2203>
+<U2205> IGNORE;IGNORE;IGNORE;<U2205>
+<U2206> IGNORE;IGNORE;IGNORE;<U2206>
+<U2207> IGNORE;IGNORE;IGNORE;<U2207>
+<U2208> IGNORE;IGNORE;IGNORE;<U2208>
+<U220B> IGNORE;IGNORE;IGNORE;<U220B>
+<U220F> IGNORE;IGNORE;IGNORE;<U220F>
+<U2211> IGNORE;IGNORE;IGNORE;<U2211>
+<U2212> IGNORE;IGNORE;IGNORE;<U2212>
+<U2213> IGNORE;IGNORE;IGNORE;<U2213>
+<U2214> IGNORE;IGNORE;IGNORE;<U2214>
+<U2044> IGNORE;IGNORE;IGNORE;<U2044>
+<U2217> IGNORE;IGNORE;IGNORE;<U2217>
+<U2218> IGNORE;IGNORE;IGNORE;<U2218>
+<U2022> IGNORE;IGNORE;IGNORE;<U2022>
+<U221A> IGNORE;IGNORE;IGNORE;<U221A>
+<U221D> IGNORE;IGNORE;IGNORE;<U221D>
+<U221E> IGNORE;IGNORE;IGNORE;<U221E>
+<U221F> IGNORE;IGNORE;IGNORE;<U221F>
+<U2220> IGNORE;IGNORE;IGNORE;<U2220>
+<U2225> IGNORE;IGNORE;IGNORE;<U2225>
+<U2227> IGNORE;IGNORE;IGNORE;<U2227>
+<U2228> IGNORE;IGNORE;IGNORE;<U2228>
+<U2229> IGNORE;IGNORE;IGNORE;<U2229>
+<U222A> IGNORE;IGNORE;IGNORE;<U222A>
+<U222B> IGNORE;IGNORE;IGNORE;<U222B>
+<U222C> IGNORE;IGNORE;IGNORE;<U222C>
+<U222E> IGNORE;IGNORE;IGNORE;<U222E>
+<U2234> IGNORE;IGNORE;IGNORE;<U2234>
+<U2235> IGNORE;IGNORE;IGNORE;<U2235>
+<U2236> IGNORE;IGNORE;IGNORE;<U2236>
+<U2237> IGNORE;IGNORE;IGNORE;<U2237>
+<U223C> IGNORE;IGNORE;IGNORE;<U223C>
+<U223E> IGNORE;IGNORE;IGNORE;<U223E>
+<U2243> IGNORE;IGNORE;IGNORE;<U2243>
+<U2245> IGNORE;IGNORE;IGNORE;<U2245>
+<U2248> IGNORE;IGNORE;IGNORE;<U2248>
+<U224C> IGNORE;IGNORE;IGNORE;<U224C>
+<U2253> IGNORE;IGNORE;IGNORE;<U2253>
+<U2261> IGNORE;IGNORE;IGNORE;<U2261>
+<U226A> IGNORE;IGNORE;IGNORE;<U226A>
+<U226B> IGNORE;IGNORE;IGNORE;<U226B>
+<U226E> IGNORE;IGNORE;IGNORE;<U226E>
+<U226F> IGNORE;IGNORE;IGNORE;<U226F>
+<U2282> IGNORE;IGNORE;IGNORE;<U2282>
+<U2283> IGNORE;IGNORE;IGNORE;<U2283>
+<U2286> IGNORE;IGNORE;IGNORE;<U2286>
+<U2287> IGNORE;IGNORE;IGNORE;<U2287>
+<U2299> IGNORE;IGNORE;IGNORE;<U2299>
+<U229A> IGNORE;IGNORE;IGNORE;<U229A>
+<U22A5> IGNORE;IGNORE;IGNORE;<U22A5>
+<U22C5> IGNORE;IGNORE;IGNORE;<U22C5>
+<U22EE> IGNORE;IGNORE;IGNORE;<U22EE>
+<U2302> IGNORE;IGNORE;IGNORE;<U2302>
+<U2308> IGNORE;IGNORE;IGNORE;<U2308>
+<U2309> IGNORE;IGNORE;IGNORE;<U2309>
+<U230A> IGNORE;IGNORE;IGNORE;<U230A>
+<U230B> IGNORE;IGNORE;IGNORE;<U230B>
+<U2310> IGNORE;IGNORE;IGNORE;<U2310>
+<U2312> IGNORE;IGNORE;IGNORE;<U2312>
+<U2315> IGNORE;IGNORE;IGNORE;<U2315>
+<U2320> IGNORE;IGNORE;IGNORE;<U2320>
+<U2321> IGNORE;IGNORE;IGNORE;<U2321>
+<U2423> IGNORE;IGNORE;IGNORE;<U2423>
+<U2440> IGNORE;IGNORE;IGNORE;<U2440>
+<U2441> IGNORE;IGNORE;IGNORE;<U2441>
+<U2442> IGNORE;IGNORE;IGNORE;<U2442>
+<U2443> IGNORE;IGNORE;IGNORE;<U2443>
+<U2446> IGNORE;IGNORE;IGNORE;<U2446>
+<U2447> IGNORE;IGNORE;IGNORE;<U2447>
+<U2448> IGNORE;IGNORE;IGNORE;<U2448>
+<U2449> IGNORE;IGNORE;IGNORE;<U2449>
+<U2460> IGNORE;IGNORE;IGNORE;<U2460>
+<U2461> IGNORE;IGNORE;IGNORE;<U2461>
+<U2462> IGNORE;IGNORE;IGNORE;<U2462>
+<U2463> IGNORE;IGNORE;IGNORE;<U2463>
+<U2464> IGNORE;IGNORE;IGNORE;<U2464>
+<U2465> IGNORE;IGNORE;IGNORE;<U2465>
+<U2466> IGNORE;IGNORE;IGNORE;<U2466>
+<U2467> IGNORE;IGNORE;IGNORE;<U2467>
+<U2468> IGNORE;IGNORE;IGNORE;<U2468>
+<U2469> IGNORE;IGNORE;IGNORE;<U2469>
+<U246A> IGNORE;IGNORE;IGNORE;<U246A>
+<U246B> IGNORE;IGNORE;IGNORE;<U246B>
+<U246C> IGNORE;IGNORE;IGNORE;<U246C>
+<U246D> IGNORE;IGNORE;IGNORE;<U246D>
+<U246E> IGNORE;IGNORE;IGNORE;<U246E>
+<U246F> IGNORE;IGNORE;IGNORE;<U246F>
+<U2470> IGNORE;IGNORE;IGNORE;<U2470>
+<U2471> IGNORE;IGNORE;IGNORE;<U2471>
+<U2472> IGNORE;IGNORE;IGNORE;<U2472>
+<U2473> IGNORE;IGNORE;IGNORE;<U2473>
+<U2474> IGNORE;IGNORE;IGNORE;<U2474>
+<U2475> IGNORE;IGNORE;IGNORE;<U2475>
+<U2476> IGNORE;IGNORE;IGNORE;<U2476>
+<U2477> IGNORE;IGNORE;IGNORE;<U2477>
+<U2478> IGNORE;IGNORE;IGNORE;<U2478>
+<U2479> IGNORE;IGNORE;IGNORE;<U2479>
+<U247A> IGNORE;IGNORE;IGNORE;<U247A>
+<U247B> IGNORE;IGNORE;IGNORE;<U247B>
+<U247C> IGNORE;IGNORE;IGNORE;<U247C>
+<U247D> IGNORE;IGNORE;IGNORE;<U247D>
+<U247E> IGNORE;IGNORE;IGNORE;<U247E>
+<U247F> IGNORE;IGNORE;IGNORE;<U247F>
+<U2480> IGNORE;IGNORE;IGNORE;<U2480>
+<U2481> IGNORE;IGNORE;IGNORE;<U2481>
+<U2482> IGNORE;IGNORE;IGNORE;<U2482>
+<U2483> IGNORE;IGNORE;IGNORE;<U2483>
+<U2484> IGNORE;IGNORE;IGNORE;<U2484>
+<U2485> IGNORE;IGNORE;IGNORE;<U2485>
+<U2486> IGNORE;IGNORE;IGNORE;<U2486>
+<U2487> IGNORE;IGNORE;IGNORE;<U2487>
+<U2488> IGNORE;IGNORE;IGNORE;<U2488>
+<U2489> IGNORE;IGNORE;IGNORE;<U2489>
+<U248A> IGNORE;IGNORE;IGNORE;<U248A>
+<U248B> IGNORE;IGNORE;IGNORE;<U248B>
+<U248C> IGNORE;IGNORE;IGNORE;<U248C>
+<U248D> IGNORE;IGNORE;IGNORE;<U248D>
+<U248E> IGNORE;IGNORE;IGNORE;<U248E>
+<U248F> IGNORE;IGNORE;IGNORE;<U248F>
+<U2490> IGNORE;IGNORE;IGNORE;<U2490>
+<U2491> IGNORE;IGNORE;IGNORE;<U2491>
+<U2492> IGNORE;IGNORE;IGNORE;<U2492>
+<U2493> IGNORE;IGNORE;IGNORE;<U2493>
+<U2494> IGNORE;IGNORE;IGNORE;<U2494>
+<U2495> IGNORE;IGNORE;IGNORE;<U2495>
+<U2496> IGNORE;IGNORE;IGNORE;<U2496>
+<U2497> IGNORE;IGNORE;IGNORE;<U2497>
+<U2498> IGNORE;IGNORE;IGNORE;<U2498>
+<U2499> IGNORE;IGNORE;IGNORE;<U2499>
+<U249A> IGNORE;IGNORE;IGNORE;<U249A>
+<U249B> IGNORE;IGNORE;IGNORE;<U249B>
+<U24EA> IGNORE;IGNORE;IGNORE;<U24EA>
+<U2500> IGNORE;IGNORE;IGNORE;<U2500>
+<U2550> IGNORE;IGNORE;IGNORE;<U2550>
+<U2502> IGNORE;IGNORE;IGNORE;<U2502>
+<U2551> IGNORE;IGNORE;IGNORE;<U2551>
+<U2504> IGNORE;IGNORE;IGNORE;<U2504>
+<U2505> IGNORE;IGNORE;IGNORE;<U2505>
+<U2506> IGNORE;IGNORE;IGNORE;<U2506>
+<U2507> IGNORE;IGNORE;IGNORE;<U2507>
+<U2508> IGNORE;IGNORE;IGNORE;<U2508>
+<U2509> IGNORE;IGNORE;IGNORE;<U2509>
+<U250A> IGNORE;IGNORE;IGNORE;<U250A>
+<U250B> IGNORE;IGNORE;IGNORE;<U250B>
+<U250C> IGNORE;IGNORE;IGNORE;<U250C>
+<U2552> IGNORE;IGNORE;IGNORE;<U2552>
+<U2553> IGNORE;IGNORE;IGNORE;<U2553>
+<U2554> IGNORE;IGNORE;IGNORE;<U2554>
+<U2510> IGNORE;IGNORE;IGNORE;<U2510>
+<U2555> IGNORE;IGNORE;IGNORE;<U2555>
+<U2556> IGNORE;IGNORE;IGNORE;<U2556>
+<U2557> IGNORE;IGNORE;IGNORE;<U2557>
+<U2514> IGNORE;IGNORE;IGNORE;<U2514>
+<U2558> IGNORE;IGNORE;IGNORE;<U2558>
+<U2559> IGNORE;IGNORE;IGNORE;<U2559>
+<U255A> IGNORE;IGNORE;IGNORE;<U255A>
+<U2518> IGNORE;IGNORE;IGNORE;<U2518>
+<U255B> IGNORE;IGNORE;IGNORE;<U255B>
+<U255C> IGNORE;IGNORE;IGNORE;<U255C>
+<U255D> IGNORE;IGNORE;IGNORE;<U255D>
+<U251C> IGNORE;IGNORE;IGNORE;<U251C>
+<U255E> IGNORE;IGNORE;IGNORE;<U255E>
+<U251E> IGNORE;IGNORE;IGNORE;<U251E>
+<U251F> IGNORE;IGNORE;IGNORE;<U251F>
+<U255F> IGNORE;IGNORE;IGNORE;<U255F>
+<U2521> IGNORE;IGNORE;IGNORE;<U2521>
+<U2522> IGNORE;IGNORE;IGNORE;<U2522>
+<U2560> IGNORE;IGNORE;IGNORE;<U2560>
+<U2524> IGNORE;IGNORE;IGNORE;<U2524>
+<U2561> IGNORE;IGNORE;IGNORE;<U2561>
+<U2526> IGNORE;IGNORE;IGNORE;<U2526>
+<U2527> IGNORE;IGNORE;IGNORE;<U2527>
+<U2562> IGNORE;IGNORE;IGNORE;<U2562>
+<U2529> IGNORE;IGNORE;IGNORE;<U2529>
+<U252A> IGNORE;IGNORE;IGNORE;<U252A>
+<U2563> IGNORE;IGNORE;IGNORE;<U2563>
+<U252C> IGNORE;IGNORE;IGNORE;<U252C>
+<U252D> IGNORE;IGNORE;IGNORE;<U252D>
+<U252E> IGNORE;IGNORE;IGNORE;<U252E>
+<U2564> IGNORE;IGNORE;IGNORE;<U2564>
+<U2565> IGNORE;IGNORE;IGNORE;<U2565>
+<U2531> IGNORE;IGNORE;IGNORE;<U2531>
+<U2532> IGNORE;IGNORE;IGNORE;<U2532>
+<U2566> IGNORE;IGNORE;IGNORE;<U2566>
+<U2534> IGNORE;IGNORE;IGNORE;<U2534>
+<U2535> IGNORE;IGNORE;IGNORE;<U2535>
+<U2536> IGNORE;IGNORE;IGNORE;<U2536>
+<U2567> IGNORE;IGNORE;IGNORE;<U2567>
+<U2568> IGNORE;IGNORE;IGNORE;<U2568>
+<U2539> IGNORE;IGNORE;IGNORE;<U2539>
+<U253A> IGNORE;IGNORE;IGNORE;<U253A>
+<U2569> IGNORE;IGNORE;IGNORE;<U2569>
+<U253C> IGNORE;IGNORE;IGNORE;<U253C>
+<U253D> IGNORE;IGNORE;IGNORE;<U253D>
+<U253E> IGNORE;IGNORE;IGNORE;<U253E>
+<U256A> IGNORE;IGNORE;IGNORE;<U256A>
+<U2540> IGNORE;IGNORE;IGNORE;<U2540>
+<U2541> IGNORE;IGNORE;IGNORE;<U2541>
+<U256B> IGNORE;IGNORE;IGNORE;<U256B>
+<U2543> IGNORE;IGNORE;IGNORE;<U2543>
+<U2544> IGNORE;IGNORE;IGNORE;<U2544>
+<U2545> IGNORE;IGNORE;IGNORE;<U2545>
+<U2546> IGNORE;IGNORE;IGNORE;<U2546>
+<U2547> IGNORE;IGNORE;IGNORE;<U2547>
+<U2548> IGNORE;IGNORE;IGNORE;<U2548>
+<U2549> IGNORE;IGNORE;IGNORE;<U2549>
+<U254A> IGNORE;IGNORE;IGNORE;<U254A>
+<U256C> IGNORE;IGNORE;IGNORE;<U256C>
+<U2571> IGNORE;IGNORE;IGNORE;<U2571>
+<U2572> IGNORE;IGNORE;IGNORE;<U2572>
+<U2580> IGNORE;IGNORE;IGNORE;<U2580>
+<U2584> IGNORE;IGNORE;IGNORE;<U2584>
+<U2588> IGNORE;IGNORE;IGNORE;<U2588>
+<U258C> IGNORE;IGNORE;IGNORE;<U258C>
+<U2590> IGNORE;IGNORE;IGNORE;<U2590>
+<U2591> IGNORE;IGNORE;IGNORE;<U2591>
+<U2592> IGNORE;IGNORE;IGNORE;<U2592>
+<U2593> IGNORE;IGNORE;IGNORE;<U2593>
+<U25A0> IGNORE;IGNORE;IGNORE;<U25A0>
+<U25A1> IGNORE;IGNORE;IGNORE;<U25A1>
+<U25A2> IGNORE;IGNORE;IGNORE;<U25A2>
+<U25A3> IGNORE;IGNORE;IGNORE;<U25A3>
+<U25A4> IGNORE;IGNORE;IGNORE;<U25A4>
+<U25A5> IGNORE;IGNORE;IGNORE;<U25A5>
+<U25A6> IGNORE;IGNORE;IGNORE;<U25A6>
+<U25A7> IGNORE;IGNORE;IGNORE;<U25A7>
+<U25A8> IGNORE;IGNORE;IGNORE;<U25A8>
+<U25A9> IGNORE;IGNORE;IGNORE;<U25A9>
+<U25AA> IGNORE;IGNORE;IGNORE;<U25AA>
+<U25AC> IGNORE;IGNORE;IGNORE;<U25AC>
+<U25AD> IGNORE;IGNORE;IGNORE;<U25AD>
+<U25B2> IGNORE;IGNORE;IGNORE;<U25B2>
+<U25B3> IGNORE;IGNORE;IGNORE;<U25B3>
+<U25B7> IGNORE;IGNORE;IGNORE;<U25B7>
+<U25BA> IGNORE;IGNORE;IGNORE;<U25BA>
+<U25BC> IGNORE;IGNORE;IGNORE;<U25BC>
+<U25BD> IGNORE;IGNORE;IGNORE;<U25BD>
+<U25C1> IGNORE;IGNORE;IGNORE;<U25C1>
+<U25C4> IGNORE;IGNORE;IGNORE;<U25C4>
+<U25C6> IGNORE;IGNORE;IGNORE;<U25C6>
+<U25C7> IGNORE;IGNORE;IGNORE;<U25C7>
+<U25CA> IGNORE;IGNORE;IGNORE;<U25CA>
+<U25CB> IGNORE;IGNORE;IGNORE;<U25CB>
+<U25CE> IGNORE;IGNORE;IGNORE;<U25CE>
+<U25CF> IGNORE;IGNORE;IGNORE;<U25CF>
+<U25D0> IGNORE;IGNORE;IGNORE;<U25D0>
+<U25D1> IGNORE;IGNORE;IGNORE;<U25D1>
+<U25D8> IGNORE;IGNORE;IGNORE;<U25D8>
+<U25D9> IGNORE;IGNORE;IGNORE;<U25D9>
+<U25E2> IGNORE;IGNORE;IGNORE;<U25E2>
+<U25E3> IGNORE;IGNORE;IGNORE;<U25E3>
+<U25EF> IGNORE;IGNORE;IGNORE;<U25EF>
+<U2605> IGNORE;IGNORE;IGNORE;<U2605>
+<U2606> IGNORE;IGNORE;IGNORE;<U2606>
+<U260E> IGNORE;IGNORE;IGNORE;<U260E>
+<U260F> IGNORE;IGNORE;IGNORE;<U260F>
+<U261C> IGNORE;IGNORE;IGNORE;<U261C>
+<U261E> IGNORE;IGNORE;IGNORE;<U261E>
+<U263A> IGNORE;IGNORE;IGNORE;<U263A>
+<U263B> IGNORE;IGNORE;IGNORE;<U263B>
+<U263C> IGNORE;IGNORE;IGNORE;<U263C>
+<U2640> IGNORE;IGNORE;IGNORE;<U2640>
+<U2642> IGNORE;IGNORE;IGNORE;<U2642>
+<U2660> IGNORE;IGNORE;IGNORE;<U2660>
+<U2661> IGNORE;IGNORE;IGNORE;<U2661>
+<U2662> IGNORE;IGNORE;IGNORE;<U2662>
+<U2663> IGNORE;IGNORE;IGNORE;<U2663>
+<U2664> IGNORE;IGNORE;IGNORE;<U2664>
+<U2665> IGNORE;IGNORE;IGNORE;<U2665>
+<U2666> IGNORE;IGNORE;IGNORE;<U2666>
+<U2667> IGNORE;IGNORE;IGNORE;<U2667>
+<U2669> IGNORE;IGNORE;IGNORE;<U2669>
+<U266A> IGNORE;IGNORE;IGNORE;<U266A>
+<U266B> IGNORE;IGNORE;IGNORE;<U266B>
+<U266C> IGNORE;IGNORE;IGNORE;<U266C>
+<U266D> IGNORE;IGNORE;IGNORE;<U266D>
+<U266E> IGNORE;IGNORE;IGNORE;<U266E>
+<U266F> IGNORE;IGNORE;IGNORE;<U266F>
+<U2713> IGNORE;IGNORE;IGNORE;<U2713>
+<U2717> IGNORE;IGNORE;IGNORE;<U2717>
+<U2720> IGNORE;IGNORE;IGNORE;<U2720>
+<U3000> IGNORE;IGNORE;IGNORE;<U3000>
+<U3001> IGNORE;IGNORE;IGNORE;<U3001>
+<U3002> IGNORE;IGNORE;IGNORE;<U3002>
+<U3003> IGNORE;IGNORE;IGNORE;<U3003>
+<U3004> IGNORE;IGNORE;IGNORE;<U3004>
+<U3005> IGNORE;IGNORE;IGNORE;<U3005>
+<U3006> IGNORE;IGNORE;IGNORE;<U3006>
+<U3007> IGNORE;IGNORE;IGNORE;<U3007>
+<U300A> IGNORE;IGNORE;IGNORE;<U300A>
+<U300B> IGNORE;IGNORE;IGNORE;<U300B>
+<U300C> IGNORE;IGNORE;IGNORE;<U300C>
+<U300D> IGNORE;IGNORE;IGNORE;<U300D>
+<U300E> IGNORE;IGNORE;IGNORE;<U300E>
+<U300F> IGNORE;IGNORE;IGNORE;<U300F>
+<U3010> IGNORE;IGNORE;IGNORE;<U3010>
+<U3011> IGNORE;IGNORE;IGNORE;<U3011>
+<U3012> IGNORE;IGNORE;IGNORE;<U3012>
+<U3013> IGNORE;IGNORE;IGNORE;<U3013>
+<U3014> IGNORE;IGNORE;IGNORE;<U3014>
+<U3015> IGNORE;IGNORE;IGNORE;<U3015>
+<U3016> IGNORE;IGNORE;IGNORE;<U3016>
+<U3017> IGNORE;IGNORE;IGNORE;<U3017>
+<U301C> IGNORE;IGNORE;IGNORE;<U301C>
+<U3020> IGNORE;IGNORE;IGNORE;<U3020>
+<U309B> IGNORE;IGNORE;IGNORE;<U309B>
+<U309C> IGNORE;IGNORE;IGNORE;<U309C>
+<U309D> IGNORE;IGNORE;IGNORE;<U309D>
+<U309E> IGNORE;IGNORE;IGNORE;<U309E>
+<U30FB> IGNORE;IGNORE;IGNORE;<U30FB>
+<U30FC> IGNORE;IGNORE;IGNORE;<U30FC>
+<U30FD> IGNORE;IGNORE;IGNORE;<U30FD>
+<U30FE> IGNORE;IGNORE;IGNORE;<U30FE>
+<U321C> IGNORE;IGNORE;IGNORE;<U321C>
+<U3220> IGNORE;IGNORE;IGNORE;<U3220>
+<U3221> IGNORE;IGNORE;IGNORE;<U3221>
+<U3222> IGNORE;IGNORE;IGNORE;<U3222>
+<U3223> IGNORE;IGNORE;IGNORE;<U3223>
+<U3224> IGNORE;IGNORE;IGNORE;<U3224>
+<U3225> IGNORE;IGNORE;IGNORE;<U3225>
+<U3226> IGNORE;IGNORE;IGNORE;<U3226>
+<U3227> IGNORE;IGNORE;IGNORE;<U3227>
+<U3228> IGNORE;IGNORE;IGNORE;<U3228>
+<U3229> IGNORE;IGNORE;IGNORE;<U3229>
+<U327F> IGNORE;IGNORE;IGNORE;<U327F>
+<U33C2> IGNORE;IGNORE;IGNORE;<U33C2>
+<U33D8> IGNORE;IGNORE;IGNORE;<U33D8>
+<U0000> IGNORE;IGNORE;IGNORE;<U0000>
+<U0001> IGNORE;IGNORE;IGNORE;<U0001>
+<U0002> IGNORE;IGNORE;IGNORE;<U0002>
+<U0003> IGNORE;IGNORE;IGNORE;<U0003>
+<U0004> IGNORE;IGNORE;IGNORE;<U0004>
+<U0005> IGNORE;IGNORE;IGNORE;<U0005>
+<U0006> IGNORE;IGNORE;IGNORE;<U0006>
+<U0007> IGNORE;IGNORE;IGNORE;<U0007>
+<U0008> IGNORE;IGNORE;IGNORE;<U0008>
+<U000E> IGNORE;IGNORE;IGNORE;<U000E>
+<U000F> IGNORE;IGNORE;IGNORE;<U000F>
+<U0010> IGNORE;IGNORE;IGNORE;<U0010>
+<U0011> IGNORE;IGNORE;IGNORE;<U0011>
+<U0012> IGNORE;IGNORE;IGNORE;<U0012>
+<U0013> IGNORE;IGNORE;IGNORE;<U0013>
+<U0014> IGNORE;IGNORE;IGNORE;<U0014>
+<U0015> IGNORE;IGNORE;IGNORE;<U0015>
+<U0016> IGNORE;IGNORE;IGNORE;<U0016>
+<U0017> IGNORE;IGNORE;IGNORE;<U0017>
+<U0018> IGNORE;IGNORE;IGNORE;<U0018>
+<U0019> IGNORE;IGNORE;IGNORE;<U0019>
+<U001A> IGNORE;IGNORE;IGNORE;<U001A>
+<U001B> IGNORE;IGNORE;IGNORE;<U001B>
+<U001C> IGNORE;IGNORE;IGNORE;<U001C>
+<U001D> IGNORE;IGNORE;IGNORE;<U001D>
+<U001E> IGNORE;IGNORE;IGNORE;<U001E>
+<U001F> IGNORE;IGNORE;IGNORE;<U001F>
+<U007F> IGNORE;IGNORE;IGNORE;<U007F>
+<U0080> IGNORE;IGNORE;IGNORE;<U0080>
+<U0081> IGNORE;IGNORE;IGNORE;<U0081>
+<U0082> IGNORE;IGNORE;IGNORE;<U0082>
+<U0083> IGNORE;IGNORE;IGNORE;<U0083>
+<U0084> IGNORE;IGNORE;IGNORE;<U0084>
+<U0085> IGNORE;IGNORE;IGNORE;<U0085>
+<U0086> IGNORE;IGNORE;IGNORE;<U0086>
+<U0087> IGNORE;IGNORE;IGNORE;<U0087>
+<U0088> IGNORE;IGNORE;IGNORE;<U0088>
+<U0089> IGNORE;IGNORE;IGNORE;<U0089>
+<U008A> IGNORE;IGNORE;IGNORE;<U008A>
+<U008B> IGNORE;IGNORE;IGNORE;<U008B>
+<U008C> IGNORE;IGNORE;IGNORE;<U008C>
+<U008D> IGNORE;IGNORE;IGNORE;<U008D>
+<U008E> IGNORE;IGNORE;IGNORE;<U008E>
+<U008F> IGNORE;IGNORE;IGNORE;<U008F>
+<U0090> IGNORE;IGNORE;IGNORE;<U0090>
+<U0091> IGNORE;IGNORE;IGNORE;<U0091>
+<U0092> IGNORE;IGNORE;IGNORE;<U0092>
+<U0093> IGNORE;IGNORE;IGNORE;<U0093>
+<U0094> IGNORE;IGNORE;IGNORE;<U0094>
+<U0095> IGNORE;IGNORE;IGNORE;<U0095>
+<U0096> IGNORE;IGNORE;IGNORE;<U0096>
+<U0097> IGNORE;IGNORE;IGNORE;<U0097>
+<U0098> IGNORE;IGNORE;IGNORE;<U0098>
+<U0099> IGNORE;IGNORE;IGNORE;<U0099>
+<U009A> IGNORE;IGNORE;IGNORE;<U009A>
+<U009B> IGNORE;IGNORE;IGNORE;<U009B>
+<U009C> IGNORE;IGNORE;IGNORE;<U009C>
+<U009D> IGNORE;IGNORE;IGNORE;<U009D>
+<U009E> IGNORE;IGNORE;IGNORE;<U009E>
+<U009F> IGNORE;IGNORE;IGNORE;<U009F>
+<UE000> IGNORE;IGNORE;IGNORE;<UE000>
+<UE001> IGNORE;IGNORE;IGNORE;<UE001>
+<UE002> IGNORE;IGNORE;IGNORE;<UE002>
+<U0301> IGNORE;IGNORE;IGNORE;<U0301>
+<UE004> IGNORE;IGNORE;IGNORE;<UE004>
+<UE005> IGNORE;IGNORE;IGNORE;<UE005>
+<UE006> IGNORE;IGNORE;IGNORE;<UE006>
+<UE007> IGNORE;IGNORE;IGNORE;<UE007>
+<UE008> IGNORE;IGNORE;IGNORE;<UE008>
+<UE009> IGNORE;IGNORE;IGNORE;<UE009>
+<UE00A> IGNORE;IGNORE;IGNORE;<UE00A>
+<UE00B> IGNORE;IGNORE;IGNORE;<UE00B>
+<UE00C> IGNORE;IGNORE;IGNORE;<UE00C>
+<UE00D> IGNORE;IGNORE;IGNORE;<UE00D>
+<UE00E> IGNORE;IGNORE;IGNORE;<UE00E>
+<UE00F> IGNORE;IGNORE;IGNORE;<UE00F>
+<"=> IGNORE;IGNORE;IGNORE;<"=>
+<UE011> IGNORE;IGNORE;IGNORE;<UE011>
+<UE012> IGNORE;IGNORE;IGNORE;<UE012>
+<UE013> IGNORE;IGNORE;IGNORE;<UE013>
+<UE014> IGNORE;IGNORE;IGNORE;<UE014>
+<UE015> IGNORE;IGNORE;IGNORE;<UE015>
+<UE017> IGNORE;IGNORE;IGNORE;<UE017>
+<UE018> IGNORE;IGNORE;IGNORE;<UE018>
+<UE019> IGNORE;IGNORE;IGNORE;<UE019>
+UNDEFINED IGNORE;IGNORE;IGNORE
+
+<U0030> <U0030>;<U0030>;IGNORE;IGNORE
+<U2070> <U0030>;<U2070>;IGNORE;IGNORE
+<U215B> <U0030>;<U215B>;IGNORE;IGNORE
+<U00BC> <U0030>;<U00BC>;IGNORE;IGNORE
+<U215C> <U0030>;<U215C>;IGNORE;IGNORE
+<U00BD> <U0030>;<U00BD>;IGNORE;IGNORE
+<U215D> <U0030>;<U215D>;IGNORE;IGNORE
+<U00BE> <U0030>;<U00BE>;IGNORE;IGNORE
+<U215E> <U0030>;<U215E>;IGNORE;IGNORE
+<U0031> <U0031>;<U0031>;IGNORE;IGNORE
+<U0032> <U0032>;<U0032>;IGNORE;IGNORE
+<U0033> <U0033>;<U0033>;IGNORE;IGNORE
+<U0034> <U0034>;<U0034>;IGNORE;IGNORE
+<U0035> <U0035>;<U0035>;IGNORE;IGNORE
+<U0036> <U0036>;<U0036>;IGNORE;IGNORE
+<U0037> <U0037>;<U0037>;IGNORE;IGNORE
+<U0038> <U0038>;<U0038>;IGNORE;IGNORE
+<U0039> <U0039>;<U0039>;IGNORE;IGNORE
+<U00B9> <U0031>;<U00B9>;IGNORE;IGNORE
+<U00B2> <U0032>;<U00B2>;IGNORE;IGNORE
+<U00B3> <U0033>;<U00B3>;IGNORE;IGNORE
+<U2074> <U0034>;<U2074>;IGNORE;IGNORE
+<U2075> <U0035>;<U2075>;IGNORE;IGNORE
+<U2076> <U0036>;<U2076>;IGNORE;IGNORE
+<U2077> <U0037>;<U2077>;IGNORE;IGNORE
+<U2078> <U0038>;<U2078>;IGNORE;IGNORE
+<U2079> <U0039>;<U2079>;IGNORE;IGNORE
+<U0041> <U0041>;<NONE>;<CAPITAL>;IGNORE
+<U0061> <U0041>;<NONE>;<SMALL>;IGNORE
+<U00AA> <U0041>;<NONE>;<U00AA>;IGNORE
+<U00C1> <U0041>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E1> <U0041>;<ACUTE>;<SMALL>;IGNORE
+<U00C0> <U0041>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E0> <U0041>;<GRAVE>;<SMALL>;IGNORE
+<U0200> <U0041>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0201> <U0041>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0102> <U0041>;<BREVE>;<CAPITAL>;IGNORE
+<U0103> <U0041>;<BREVE>;<SMALL>;IGNORE
+<U1EAE> <U0041>;<BREVE+ACUTE>;<CAPITAL>;IGNORE
+<U1EAF> <U0041>;<BREVE+ACUTE>;<SMALL>;IGNORE
+<U1EB0> <U0041>;<BREVE+GRAVE>;<CAPITAL>;IGNORE
+<U1EB1> <U0041>;<BREVE+GRAVE>;<SMALL>;IGNORE
+<U1EB2> <U0041>;<BREVE+HOOK>;<CAPITAL>;IGNORE
+<U1EB3> <U0041>;<BREVE+HOOK>;<SMALL>;IGNORE
+<U1EB4> <U0041>;<BREVE+TILDE>;<CAPITAL>;IGNORE
+<U1EB5> <U0041>;<BREVE+TILDE>;<SMALL>;IGNORE
+<U1EB6> <U0041>;<BREVE+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB7> <U0041>;<BREVE+DOT-BELOW>;<SMALL>;IGNORE
+<U0202> <U0041>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0203> <U0041>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00C2> <U0041>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00E2> <U0041>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EA4> <U0041>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EA5> <U0041>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EA6> <U0041>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EA7> <U0041>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EA8> <U0041>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EA9> <U0041>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EAA> <U0041>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EAB> <U0041>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EAC> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EAD> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01CD> <U0041>;<CARON>;<CAPITAL>;IGNORE
+<U01CE> <U0041>;<CARON>;<SMALL>;IGNORE
+<U1E00> <U0041>;<RING-BELOW>;<CAPITAL>;IGNORE
+<U1E01> <U0041>;<RING-BELOW>;<SMALL>;IGNORE
+<U01DE> <U0041>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01DF> <U0041>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U1EA2> <U0041>;<HOOK>;<CAPITAL>;IGNORE
+<U1EA3> <U0041>;<HOOK>;<SMALL>;IGNORE
+<U00C3> <U0041>;<TILDE>;<CAPITAL>;IGNORE
+<U00E3> <U0041>;<TILDE>;<SMALL>;IGNORE
+<U1EA0> <U0041>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EA1> <U0041>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0104> <U0041>;<OGONEK>;<CAPITAL>;IGNORE
+<U0105> <U0041>;<OGONEK>;<SMALL>;IGNORE
+<U0100> <U0041>;<MACRON>;<CAPITAL>;IGNORE
+<U0101> <U0041>;<MACRON>;<SMALL>;IGNORE
+<U01E0> <U0041>;<MACRON+DOT>;<CAPITAL>;IGNORE
+<U01E1> <U0041>;<MACRON+DOT>;<SMALL>;IGNORE
+<a8>
+<U0042> <U0042>;<NONE>;<CAPITAL>;IGNORE
+<U0062> <U0042>;<NONE>;<SMALL>;IGNORE
+<U1E02> <U0042>;<DOT>;<CAPITAL>;IGNORE
+<U1E03> <U0042>;<DOT>;<SMALL>;IGNORE
+<U1E04> <U0042>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E05> <U0042>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E06> <U0042>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E07> <U0042>;<LINE-BELOW>;<SMALL>;IGNORE
+<b8>
+<U0043> <U0043>;<NONE>;<CAPITAL>;IGNORE
+<U0063> <U0043>;<NONE>;<SMALL>;IGNORE
+<U0106> <U0043>;<ACUTE>;<CAPITAL>;IGNORE
+<U0107> <U0043>;<ACUTE>;<SMALL>;IGNORE
+<U0108> <U0043>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0109> <U0043>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U010C> <U0043>;<CARON>;<CAPITAL>;IGNORE
+<U010D> <U0043>;<CARON>;<SMALL>;IGNORE
+<U0187> <U0043>;<HOOK>;<CAPITAL>;IGNORE
+<U0188> <U0043>;<HOOK>;<SMALL>;IGNORE
+<U010A> <U0043>;<DOT>;<CAPITAL>;IGNORE
+<U010B> <U0043>;<DOT>;<SMALL>;IGNORE
+<U00C7> <U0043>;<CEDILLA>;<CAPITAL>;IGNORE
+<U00E7> <U0043>;<CEDILLA>;<SMALL>;IGNORE
+<U1E08> <U0043>;<CEDILLA+ACUTE>;<CAPITAL>;IGNORE
+<U1E09> <U0043>;<CEDILLA+ACUTE>;<SMALL>;IGNORE
+<c8>
+<U0044> <U0044>;<NONE>;<CAPITAL>;IGNORE
+<U0064> <U0044>;<NONE>;<SMALL>;IGNORE
+<U010E> <U0044>;<CARON>;<CAPITAL>;IGNORE
+<U010F> <U0044>;<CARON>;<SMALL>;IGNORE
+<U1E0A> <U0044>;<DOT>;<CAPITAL>;IGNORE
+<U1E0B> <U0044>;<DOT>;<SMALL>;IGNORE
+<U1E0C> <U0044>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E0D> <U0044>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0110> <U0044>;<STROKE>;<CAPITAL>;IGNORE
+<U0111> <U0044>;<STROKE>;<SMALL>;IGNORE
+<U1E10> <U0044>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E11> <U0044>;<CEDILLA>;<SMALL>;IGNORE
+<U1E12> <U0044>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E13> <U0044>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E0E> <U0044>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E0F> <U0044>;<LINE-BELOW>;<SMALL>;IGNORE
+<d8>
+<U0045> <U0045>;<NONE>;<CAPITAL>;IGNORE
+<U0065> <U0045>;<NONE>;<SMALL>;IGNORE
+<U00C9> <U0045>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E9> <U0045>;<ACUTE>;<SMALL>;IGNORE
+<U00C8> <U0045>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E8> <U0045>;<GRAVE>;<SMALL>;IGNORE
+<U0204> <U0045>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0205> <U0045>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0114> <U0045>;<BREVE>;<CAPITAL>;IGNORE
+<U0115> <U0045>;<BREVE>;<SMALL>;IGNORE
+<U0206> <U0045>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0207> <U0045>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CA> <U0045>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EA> <U0045>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EBE> <U0045>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EBF> <U0045>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EC0> <U0045>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EC1> <U0045>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EC2> <U0045>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EC3> <U0045>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EC4> <U0045>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EC5> <U0045>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EC6> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EC7> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U011A> <U0045>;<CARON>;<CAPITAL>;IGNORE
+<U011B> <U0045>;<CARON>;<SMALL>;IGNORE
+<U00CB> <U0045>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EB> <U0045>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EBA> <U0045>;<HOOK>;<CAPITAL>;IGNORE
+<U1EBB> <U0045>;<HOOK>;<SMALL>;IGNORE
+<U1EBC> <U0045>;<TILDE>;<CAPITAL>;IGNORE
+<U1EBD> <U0045>;<TILDE>;<SMALL>;IGNORE
+<U1E1A> <U0045>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E1B> <U0045>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0116> <U0045>;<DOT>;<CAPITAL>;IGNORE
+<U0117> <U0045>;<DOT>;<SMALL>;IGNORE
+<U1EB8> <U0045>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB9> <U0045>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E1C> <U0045>;<CEDILLA+BREVE>;<CAPITAL>;IGNORE
+<U1E1D> <U0045>;<CEDILLA+BREVE>;<SMALL>;IGNORE
+<U0118> <U0045>;<OGONEK>;<CAPITAL>;IGNORE
+<U0119> <U0045>;<OGONEK>;<SMALL>;IGNORE
+<U0112> <U0045>;<MACRON>;<CAPITAL>;IGNORE
+<U0113> <U0045>;<MACRON>;<SMALL>;IGNORE
+<U1E16> <U0045>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E17> <U0045>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E14> <U0045>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E15> <U0045>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U1E18> <U0045>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E19> <U0045>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<e8>
+<U0046> <U0046>;<NONE>;<CAPITAL>;IGNORE
+<U0066> <U0046>;<NONE>;<SMALL>;IGNORE
+<U0191> <U0046>;<HOOK>;<CAPITAL>;IGNORE
+<U0192> <U0046>;<HOOK>;<SMALL>;IGNORE
+<U1E1E> <U0046>;<DOT>;<CAPITAL>;IGNORE
+<U1E1F> <U0046>;<DOT>;<SMALL>;IGNORE
+<f8>
+<UFB00> "<U0046><U0046>";"<NONE><NONE>";"<UFB00><UFB00>";IGNORE
+<UFB01> "<U0046><U0049>";"<NONE><NONE>";"<UFB01><UFB01>";IGNORE
+<UFB02> "<U0046><U004C>";"<NONE><NONE>";"<UFB02><UFB02>";IGNORE
+<UFB03> "<U0046><U0046><U0049>";"<NONE><NONE><NONE>";"<UFB03><UFB03><UFB03>";IGNORE
+<UFB04> "<U0046><U0046><U004C>";"<NONE><NONE><NONE>";"<UFB04><UFB04><UFB04>";IGNORE
+<U0047> <U0047>;<NONE>;<CAPITAL>;IGNORE
+<U0067> <U0047>;<NONE>;<SMALL>;IGNORE
+<U01F4> <U0047>;<ACUTE>;<CAPITAL>;IGNORE
+<U01F5> <U0047>;<ACUTE>;<SMALL>;IGNORE
+<U011E> <U0047>;<BREVE>;<CAPITAL>;IGNORE
+<U011F> <U0047>;<BREVE>;<SMALL>;IGNORE
+<U011C> <U0047>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U011D> <U0047>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01E6> <U0047>;<CARON>;<CAPITAL>;IGNORE
+<U01E7> <U0047>;<CARON>;<SMALL>;IGNORE
+<U0120> <U0047>;<DOT>;<CAPITAL>;IGNORE
+<U0121> <U0047>;<DOT>;<SMALL>;IGNORE
+<U01E4> <U0047>;<STROKE>;<CAPITAL>;IGNORE
+<U01E5> <U0047>;<STROKE>;<SMALL>;IGNORE
+<U0122> <U0047>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0123> <U0047>;<CEDILLA>;<SMALL>;IGNORE
+<U1E20> <U0047>;<MACRON>;<CAPITAL>;IGNORE
+<U1E21> <U0047>;<MACRON>;<SMALL>;IGNORE
+<g8>
+<U0048> <U0048>;<NONE>;<CAPITAL>;IGNORE
+<U0068> <U0048>;<NONE>;<SMALL>;IGNORE
+<U1E2A> <U0048>;<BREVE-BELOW>;<CAPITAL>;IGNORE
+<U1E2B> <U0048>;<BREVE-BELOW>;<SMALL>;IGNORE
+<U0124> <U0048>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0125> <U0048>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E26> <U0048>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E27> <U0048>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E22> <U0048>;<DOT>;<CAPITAL>;IGNORE
+<U1E23> <U0048>;<DOT>;<SMALL>;IGNORE
+<U1E24> <U0048>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E25> <U0048>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0126> <U0048>;<STROKE>;<CAPITAL>;IGNORE
+<U0127> <U0048>;<STROKE>;<SMALL>;IGNORE
+<U1E28> <U0048>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E29> <U0048>;<CEDILLA>;<SMALL>;IGNORE
+<h8>
+<U0049> <U0049>;<NONE>;<CAPITAL>;IGNORE
+<U0069> <U0049>;<NONE>;<SMALL>;IGNORE
+<U00CD> <U0049>;<ACUTE>;<CAPITAL>;IGNORE
+<U00ED> <U0049>;<ACUTE>;<SMALL>;IGNORE
+<U00CC> <U0049>;<GRAVE>;<CAPITAL>;IGNORE
+<U00EC> <U0049>;<GRAVE>;<SMALL>;IGNORE
+<U0208> <U0049>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0209> <U0049>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U012C> <U0049>;<BREVE>;<CAPITAL>;IGNORE
+<U012D> <U0049>;<BREVE>;<SMALL>;IGNORE
+<U020A> <U0049>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020B> <U0049>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CE> <U0049>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EE> <U0049>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01CF> <U0049>;<CARON>;<CAPITAL>;IGNORE
+<U01D0> <U0049>;<CARON>;<SMALL>;IGNORE
+<U00CF> <U0049>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EF> <U0049>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E2E> <U0049>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U1E2F> <U0049>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U1EC8> <U0049>;<HOOK>;<CAPITAL>;IGNORE
+<U1EC9> <U0049>;<HOOK>;<SMALL>;IGNORE
+<U0128> <U0049>;<TILDE>;<CAPITAL>;IGNORE
+<U0129> <U0049>;<TILDE>;<SMALL>;IGNORE
+<U1E2C> <U0049>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E2D> <U0049>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0130> <U0049>;<DOT>;<CAPITAL>;IGNORE
+<U0131> <U0049>;<DOT>;<SMALL>;IGNORE
+<U1ECA> <U0049>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECB> <U0049>;<DOT-BELOW>;<SMALL>;IGNORE
+<U012E> <U0049>;<OGONEK>;<CAPITAL>;IGNORE
+<U012F> <U0049>;<OGONEK>;<SMALL>;IGNORE
+<U012A> <U0049>;<MACRON>;<CAPITAL>;IGNORE
+<U012B> <U0049>;<MACRON>;<SMALL>;IGNORE
+<i8>
+<U0132> "<U0049><U004A>";"<U0132><U0132>";"<CAPITAL><CAPITAL>";IGNORE
+<U0133> "<U0049><U004A>";"<U0132><U0132>";"<SMALL><SMALL>";IGNORE
+<U004A> <U004A>;<NONE>;<CAPITAL>;IGNORE
+<U006A> <U004A>;<NONE>;<SMALL>;IGNORE
+<U0134> <U004A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0135> <U004A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<j8>
+<U004B> <U004B>;<NONE>;<CAPITAL>;IGNORE
+<U006B> <U004B>;<NONE>;<SMALL>;IGNORE
+<U1E30> <U004B>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E31> <U004B>;<ACUTE>;<SMALL>;IGNORE
+<U01E8> <U004B>;<CARON>;<CAPITAL>;IGNORE
+<U01E9> <U004B>;<CARON>;<SMALL>;IGNORE
+<U0198> <U004B>;<HOOK>;<CAPITAL>;IGNORE
+<U0199> <U004B>;<HOOK>;<SMALL>;IGNORE
+<U1E32> <U004B>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E33> <U004B>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0136> <U004B>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0137> <U004B>;<CEDILLA>;<SMALL>;IGNORE
+<U1E34> <U004B>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E35> <U004B>;<LINE-BELOW>;<SMALL>;IGNORE
+<k8>
+<U0138> <U004B>;<U0138>;<SMALL>;IGNORE
+<U004C> <U004C>;<NONE>;<CAPITAL>;IGNORE
+<U006C> <U004C>;<NONE>;<SMALL>;IGNORE
+<U0139> <U004C>;<ACUTE>;<CAPITAL>;IGNORE
+<U013A> <U004C>;<ACUTE>;<SMALL>;IGNORE
+<U013D> <U004C>;<CARON>;<CAPITAL>;IGNORE
+<U013E> <U004C>;<CARON>;<SMALL>;IGNORE
+<U013F> <U004C>;<DOT>;<CAPITAL>;IGNORE
+<U0140> <U004C>;<DOT>;<SMALL>;IGNORE
+<U1E36> <U004C>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E37> <U004C>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0141> <U004C>;<STROKE>;<CAPITAL>;IGNORE
+<U0142> <U004C>;<STROKE>;<SMALL>;IGNORE
+<U013B> <U004C>;<CEDILLA>;<CAPITAL>;IGNORE
+<U013C> <U004C>;<CEDILLA>;<SMALL>;IGNORE
+<U1E38> <U004C>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E39> <U004C>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E3C> <U004C>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E3D> <U004C>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E3A> <U004C>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E3B> <U004C>;<LINE-BELOW>;<SMALL>;IGNORE
+<l8>
+<U004D> <U004D>;<NONE>;<CAPITAL>;IGNORE
+<U006D> <U004D>;<NONE>;<SMALL>;IGNORE
+<U1E3E> <U004D>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E3F> <U004D>;<ACUTE>;<SMALL>;IGNORE
+<U1E40> <U004D>;<DOT>;<CAPITAL>;IGNORE
+<U1E41> <U004D>;<DOT>;<SMALL>;IGNORE
+<U1E42> <U004D>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E43> <U004D>;<DOT-BELOW>;<SMALL>;IGNORE
+<m8>
+<U004E> <U004E>;<NONE>;<CAPITAL>;IGNORE
+<U006E> <U004E>;<NONE>;<SMALL>;IGNORE
+<U0143> <U004E>;<ACUTE>;<CAPITAL>;IGNORE
+<U0144> <U004E>;<ACUTE>;<SMALL>;IGNORE
+<U0147> <U004E>;<CARON>;<CAPITAL>;IGNORE
+<U0148> <U004E>;<CARON>;<SMALL>;IGNORE
+<U00D1> <U004E>;<TILDE>;<CAPITAL>;IGNORE
+<U00F1> <U004E>;<TILDE>;<SMALL>;IGNORE
+<U1E44> <U004E>;<DOT>;<CAPITAL>;IGNORE
+<U1E45> <U004E>;<DOT>;<SMALL>;IGNORE
+<U1E46> <U004E>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E47> <U004E>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0145> <U004E>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0146> <U004E>;<CEDILLA>;<SMALL>;IGNORE
+<U1E4A> <U004E>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E4B> <U004E>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E48> <U004E>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E49> <U004E>;<LINE-BELOW>;<SMALL>;IGNORE
+<U0149> <U004E>;<PRECEDED-BY-APOSTROPHE>;<SMALL>;IGNORE
+<n8>
+<U014A> "<U004E><U0047>";"<U014A><U014A>";"<CAPITAL><CAPITAL>";IGNORE
+<U014B> "<U004E><U0047>";"<U014A><U014A>";"<SMALL><SMALL>";IGNORE
+<U004F> <U004F>;<NONE>;<CAPITAL>;IGNORE
+<U006F> <U004F>;<NONE>;<SMALL>;IGNORE
+<U00BA> <U004F>;<NONE>;<U00BA>;IGNORE
+<U00D3> <U004F>;<ACUTE>;<CAPITAL>;IGNORE
+<U00F3> <U004F>;<ACUTE>;<SMALL>;IGNORE
+<U00D2> <U004F>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F2> <U004F>;<GRAVE>;<SMALL>;IGNORE
+<U020C> <U004F>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U020D> <U004F>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U014E> <U004F>;<BREVE>;<CAPITAL>;IGNORE
+<U014F> <U004F>;<BREVE>;<SMALL>;IGNORE
+<U020E> <U004F>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020F> <U004F>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00D4> <U004F>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00F4> <U004F>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1ED0> <U004F>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1ED1> <U004F>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1ED2> <U004F>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1ED3> <U004F>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1ED4> <U004F>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1ED5> <U004F>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1ED6> <U004F>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1ED7> <U004F>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1ED8> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ED9> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01D1> <U004F>;<CARON>;<CAPITAL>;IGNORE
+<U01D2> <U004F>;<CARON>;<SMALL>;IGNORE
+<U1ECE> <U004F>;<HOOK>;<CAPITAL>;IGNORE
+<U1ECF> <U004F>;<HOOK>;<SMALL>;IGNORE
+<U00D5> <U004F>;<TILDE>;<CAPITAL>;IGNORE
+<U00F5> <U004F>;<TILDE>;<SMALL>;IGNORE
+<U1E4C> <U004F>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E4D> <U004F>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E4E> <U004F>;<TILDE+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E4F> <U004F>;<TILDE+DIAERESIS>;<SMALL>;IGNORE
+<U1ECC> <U004F>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECD> <U004F>;<DOT-BELOW>;<SMALL>;IGNORE
+<U01EA> <U004F>;<OGONEK>;<CAPITAL>;IGNORE
+<U01EB> <U004F>;<OGONEK>;<SMALL>;IGNORE
+<U01EC> <U004F>;<OGONEK+MACRON>;<CAPITAL>;IGNORE
+<U01ED> <U004F>;<OGONEK+MACRON>;<SMALL>;IGNORE
+<U014C> <U004F>;<MACRON>;<CAPITAL>;IGNORE
+<U014D> <U004F>;<MACRON>;<SMALL>;IGNORE
+<U1E52> <U004F>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E53> <U004F>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E50> <U004F>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E51> <U004F>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U01A0> <U004F>;<HORN>;<CAPITAL>;IGNORE
+<U01A1> <U004F>;<HORN>;<SMALL>;IGNORE
+<U1EDA> <U004F>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EDB> <U004F>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EDC> <U004F>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EDD> <U004F>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EDE> <U004F>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EDF> <U004F>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EE0> <U004F>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EE1> <U004F>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EE2> <U004F>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE3> <U004F>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<o8>
+<U0152> "<U004F><U0045>";"<U0152><U0152>";"<CAPITAL><CAPITAL>";IGNORE
+<U0153> "<U004F><U0045>";"<U0152><U0152>";"<SMALL><SMALL>";IGNORE
+<U0050> <U0050>;<NONE>;<CAPITAL>;IGNORE
+<U0070> <U0050>;<NONE>;<SMALL>;IGNORE
+<U1E54> <U0050>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E55> <U0050>;<ACUTE>;<SMALL>;IGNORE
+<U1E56> <U0050>;<DOT>;<CAPITAL>;IGNORE
+<U1E57> <U0050>;<DOT>;<SMALL>;IGNORE
+<p8>
+<U0051> <U0051>;<NONE>;<CAPITAL>;IGNORE
+<U0071> <U0051>;<NONE>;<SMALL>;IGNORE
+<q8>
+<U0052> <U0052>;<NONE>;<CAPITAL>;IGNORE
+<U0072> <U0052>;<NONE>;<SMALL>;IGNORE
+<U0154> <U0052>;<ACUTE>;<CAPITAL>;IGNORE
+<U0155> <U0052>;<ACUTE>;<SMALL>;IGNORE
+<U0210> <U0052>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0211> <U0052>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0212> <U0052>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0213> <U0052>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U0158> <U0052>;<CARON>;<CAPITAL>;IGNORE
+<U0159> <U0052>;<CARON>;<SMALL>;IGNORE
+<U1E58> <U0052>;<DOT>;<CAPITAL>;IGNORE
+<U1E59> <U0052>;<DOT>;<SMALL>;IGNORE
+<U1E5A> <U0052>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5B> <U0052>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0156> <U0052>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0157> <U0052>;<CEDILLA>;<SMALL>;IGNORE
+<U1E5C> <U0052>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5D> <U0052>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E5E> <U0052>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E5F> <U0052>;<LINE-BELOW>;<SMALL>;IGNORE
+<r8>
+<U0053> <U0053>;<NONE>;<CAPITAL>;IGNORE
+<U0073> <U0053>;<NONE>;<SMALL>;IGNORE
+<UFB06> "<U0053><U0054>";"<NONE><NONE>";"<UFB06><UFB06>";IGNORE
+<U015A> <U0053>;<ACUTE>;<CAPITAL>;IGNORE
+<U015B> <U0053>;<ACUTE>;<SMALL>;IGNORE
+<U1E64> <U0053>;<ACUTE+DOT>;<CAPITAL>;IGNORE
+<U1E65> <U0053>;<ACUTE+DOT>;<SMALL>;IGNORE
+<U015C> <U0053>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U015D> <U0053>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0160> <U0053>;<CARON>;<CAPITAL>;IGNORE
+<U0161> <U0053>;<CARON>;<SMALL>;IGNORE
+<U1E66> <U0053>;<CARON+DOT>;<CAPITAL>;IGNORE
+<U1E67> <U0053>;<CARON+DOT>;<SMALL>;IGNORE
+<U1E60> <U0053>;<DOT>;<CAPITAL>;IGNORE
+<U1E61> <U0053>;<DOT>;<SMALL>;IGNORE
+<U1E62> <U0053>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E63> <U0053>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E68> <U0053>;<DOT+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E69> <U0053>;<DOT+DOT-BELOW>;<SMALL>;IGNORE
+<U015E> <U0053>;<CEDILLA>;<CAPITAL>;IGNORE
+<U015F> <U0053>;<CEDILLA>;<SMALL>;IGNORE
+<s8>
+<U017F> <U0053>;<U017F>;<SMALL>;IGNORE
+<U00DF> "<U0053><U0053>";"<NONE><NONE>";"<SMALL><U00DF>";IGNORE
+<UFB05> "<U0053><U0054>";"<NONE><NONE>";"<UFB05><UFB05>";IGNORE
+<U0054> <U0054>;<NONE>;<CAPITAL>;IGNORE
+<U0074> <U0054>;<NONE>;<SMALL>;IGNORE
+<U0164> <U0054>;<CARON>;<CAPITAL>;IGNORE
+<U0165> <U0054>;<CARON>;<SMALL>;IGNORE
+<U1E6A> <U0054>;<DOT>;<CAPITAL>;IGNORE
+<U1E6B> <U0054>;<DOT>;<SMALL>;IGNORE
+<U1E6C> <U0054>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E6D> <U0054>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0166> <U0054>;<STROKE>;<CAPITAL>;IGNORE
+<U0167> <U0054>;<STROKE>;<SMALL>;IGNORE
+<U0162> <U0054>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0163> <U0054>;<CEDILLA>;<SMALL>;IGNORE
+<U1E70> <U0054>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E71> <U0054>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E6E> <U0054>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E6F> <U0054>;<LINE-BELOW>;<SMALL>;IGNORE
+<t8>
+<U00DE> "<U0054><U0048>";"<U00DE><U00DE>";"<CAPITAL><CAPITAL>";IGNORE
+<U00FE> "<U0054><U0048>";"<U00DE><U00DE>";"<SMALL><SMALL>";IGNORE
+<U0055> <U0055>;<NONE>;<CAPITAL>;IGNORE
+<U0075> <U0055>;<NONE>;<SMALL>;IGNORE
+<U00DA> <U0055>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FA> <U0055>;<ACUTE>;<SMALL>;IGNORE
+<U00D9> <U0055>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F9> <U0055>;<GRAVE>;<SMALL>;IGNORE
+<U0214> <U0055>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0215> <U0055>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U016C> <U0055>;<BREVE>;<CAPITAL>;IGNORE
+<U016D> <U0055>;<BREVE>;<SMALL>;IGNORE
+<U0216> <U0055>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0217> <U0055>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00DB> <U0055>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00FB> <U0055>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01D3> <U0055>;<CARON>;<CAPITAL>;IGNORE
+<U01D4> <U0055>;<CARON>;<SMALL>;IGNORE
+<U016E> <U0055>;<RING>;<CAPITAL>;IGNORE
+<U016F> <U0055>;<RING>;<SMALL>;IGNORE
+<U01D5> <U0055>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01D6> <U0055>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U01D7> <U0055>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U01D8> <U0055>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U01DB> <U0055>;<DIAERESIS+GRAVE>;<CAPITAL>;IGNORE
+<U01DC> <U0055>;<DIAERESIS+GRAVE>;<SMALL>;IGNORE
+<U01D9> <U0055>;<DIAERESIS+CARON>;<CAPITAL>;IGNORE
+<U01DA> <U0055>;<DIAERESIS+CARON>;<SMALL>;IGNORE
+<U1EE6> <U0055>;<HOOK>;<CAPITAL>;IGNORE
+<U1EE7> <U0055>;<HOOK>;<SMALL>;IGNORE
+<U0168> <U0055>;<TILDE>;<CAPITAL>;IGNORE
+<U0169> <U0055>;<TILDE>;<SMALL>;IGNORE
+<U1E78> <U0055>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E79> <U0055>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E74> <U0055>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E75> <U0055>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U1EE4> <U0055>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE5> <U0055>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0172> <U0055>;<OGONEK>;<CAPITAL>;IGNORE
+<U0173> <U0055>;<OGONEK>;<SMALL>;IGNORE
+<U016A> <U0055>;<MACRON>;<CAPITAL>;IGNORE
+<U016B> <U0055>;<MACRON>;<SMALL>;IGNORE
+<U1E7A> <U0055>;<MACRON+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E7B> <U0055>;<MACRON+DIAERESIS>;<SMALL>;IGNORE
+<U1E72> <U0055>;<MACRON+DIAERESIS-BELOW>;<CAPITAL>;IGNORE
+<U1E73> <U0055>;<MACRON+DIAERESIS-BELOW>;<SMALL>;IGNORE
+<U1E76> <U0055>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E77> <U0055>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U01AF> <U0055>;<HORN>;<CAPITAL>;IGNORE
+<U01B0> <U0055>;<HORN>;<SMALL>;IGNORE
+<U1EE8> <U0055>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EE9> <U0055>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EEA> <U0055>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EEB> <U0055>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EEC> <U0055>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EED> <U0055>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EEE> <U0055>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EEF> <U0055>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EF0> <U0055>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF1> <U0055>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<u8>
+<U0056> <U0056>;<NONE>;<CAPITAL>;IGNORE
+<U0076> <U0056>;<NONE>;<SMALL>;IGNORE
+<U1E7C> <U0056>;<TILDE>;<CAPITAL>;IGNORE
+<U1E7D> <U0056>;<TILDE>;<SMALL>;IGNORE
+<U1E7E> <U0056>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E7F> <U0056>;<DOT-BELOW>;<SMALL>;IGNORE
+<v8>
+<U0057> <U0057>;<NONE>;<CAPITAL>;IGNORE
+<U0077> <U0057>;<NONE>;<SMALL>;IGNORE
+<U1E82> <U0057>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E83> <U0057>;<ACUTE>;<SMALL>;IGNORE
+<U1E80> <U0057>;<GRAVE>;<CAPITAL>;IGNORE
+<U1E81> <U0057>;<GRAVE>;<SMALL>;IGNORE
+<U0174> <U0057>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0175> <U0057>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E84> <U0057>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E85> <U0057>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E86> <U0057>;<DOT>;<CAPITAL>;IGNORE
+<U1E87> <U0057>;<DOT>;<SMALL>;IGNORE
+<U1E88> <U0057>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E89> <U0057>;<DOT-BELOW>;<SMALL>;IGNORE
+<w8>
+<U0058> <U0058>;<NONE>;<CAPITAL>;IGNORE
+<U0078> <U0058>;<NONE>;<SMALL>;IGNORE
+<U1E8C> <U0058>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E8D> <U0058>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E8A> <U0058>;<DOT>;<CAPITAL>;IGNORE
+<U1E8B> <U0058>;<DOT>;<SMALL>;IGNORE
+<x8>
+<U0059> <U0059>;<NONE>;<CAPITAL>;IGNORE
+<U0079> <U0059>;<NONE>;<SMALL>;IGNORE
+<U00DD> <U0059>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FD> <U0059>;<ACUTE>;<SMALL>;IGNORE
+<U1EF2> <U0059>;<GRAVE>;<CAPITAL>;IGNORE
+<U1EF3> <U0059>;<GRAVE>;<SMALL>;IGNORE
+<U0176> <U0059>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0177> <U0059>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0178> <U0059>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FF> <U0059>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EF6> <U0059>;<HOOK>;<CAPITAL>;IGNORE
+<U1EF7> <U0059>;<HOOK>;<SMALL>;IGNORE
+<U1EF8> <U0059>;<TILDE>;<CAPITAL>;IGNORE
+<U1EF9> <U0059>;<TILDE>;<SMALL>;IGNORE
+<U1E8E> <U0059>;<DOT>;<CAPITAL>;IGNORE
+<U1E8F> <U0059>;<DOT>;<SMALL>;IGNORE
+<U1EF4> <U0059>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF5> <U0059>;<DOT-BELOW>;<SMALL>;IGNORE
+<y8>
+<U00DC> <U0059>;<U00DC>;<CAPITAL>;IGNORE
+<U00FC> <U0059>;<U00DC>;<SMALL>;IGNORE
+<U0170> <U0059>;<U0170>;<CAPITAL>;IGNORE
+<U0171> <U0059>;<U0170>;<SMALL>;IGNORE
+<U005A> <U005A>;<NONE>;<CAPITAL>;IGNORE
+<U007A> <U005A>;<NONE>;<SMALL>;IGNORE
+<U0179> <U005A>;<ACUTE>;<CAPITAL>;IGNORE
+<U017A> <U005A>;<ACUTE>;<SMALL>;IGNORE
+<U1E90> <U005A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E91> <U005A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U017D> <U005A>;<CARON>;<CAPITAL>;IGNORE
+<U017E> <U005A>;<CARON>;<SMALL>;IGNORE
+<U017B> <U005A>;<DOT>;<CAPITAL>;IGNORE
+<U017C> <U005A>;<DOT>;<SMALL>;IGNORE
+<U1E92> <U005A>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E93> <U005A>;<DOT-BELOW>;<SMALL>;IGNORE
+<U01B5> <U005A>;<STROKE>;<CAPITAL>;IGNORE
+<U01B6> <U005A>;<STROKE>;<SMALL>;IGNORE
+<U1E94> <U005A>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E95> <U005A>;<LINE-BELOW>;<SMALL>;IGNORE
+<z8>
+<U00C6> <U00C6>;<NONE>;<CAPITAL>;IGNORE
+<U00E6> <U00C6>;<NONE>;<SMALL>;IGNORE
+<U01FC> <U00C6>;<ACUTE>;<CAPITAL>;IGNORE
+<U01FD> <U00C6>;<ACUTE>;<SMALL>;IGNORE
+<U01E2> <U00C6>;<MACRON>;<CAPITAL>;IGNORE
+<U01E3> <U00C6>;<MACRON>;<SMALL>;IGNORE
+<U00C4> <U00C6>;<SPECIAL>;<CAPITAL>;IGNORE
+<U00E4> <U00C6>;<SPECIAL>;<SMALL>;IGNORE
+<U00D8> <U00D8>;<NONE>;<CAPITAL>;IGNORE
+<U00F8> <U00D8>;<NONE>;<SMALL>;IGNORE
+<U01FE> <U00D8>;<ACUTE>;<CAPITAL>;IGNORE
+<U01FF> <U00D8>;<ACUTE>;<SMALL>;IGNORE
+<U00D6> <U00D8>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00F6> <U00D8>;<DIAERESIS>;<SMALL>;IGNORE
+<U0150> <U00D8>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0151> <U00D8>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U00C5> <U00C5>;<NONE>;<CAPITAL>;IGNORE
+<U00E5> <U00C5>;<NONE>;<SMALL>;IGNORE
+<A-A> <U00C5>;<A-A>;<CAPITAL>;IGNORE
+<A-a> <U00C5>;<A-A>;<CAPITAL-SMALL>;IGNORE
+<a-A> <U00C5>;<A-A>;<SMALL-CAPITAL>;IGNORE
+<a-a> <U00C5>;<A-A>;<SMALL>;IGNORE
+<U01FA> <U00C5>;<U01FA>;<CAPITAL>;IGNORE
+<U01FB> <U00C5>;<U01FA>;<SMALL>;IGNORE
+<U0391> <U0391>;<CAPITAL>;<GREEK>;IGNORE
+<U0386> <U0391>;<CAPITAL>;<TONOS>;IGNORE
+<U03B1> <U0391>;<SMALL>;<GREEK>;IGNORE
+<U03AC> <U0391>;<SMALL>;<TONOS>;IGNORE
+<U0392> <U0392>;<CAPITAL>;<GREEK>;IGNORE
+<U03B2> <U0392>;<SMALL>;<GREEK>;IGNORE
+<U0393> <U0393>;<CAPITAL>;<GREEK>;IGNORE
+<U03B3> <U0393>;<SMALL>;<GREEK>;IGNORE
+<U0394> <U0394>;<CAPITAL>;<GREEK>;IGNORE
+<U03B4> <U0394>;<SMALL>;<GREEK>;IGNORE
+<U0395> <U0395>;<CAPITAL>;<GREEK>;IGNORE
+<U0388> <U0395>;<CAPITAL>;<TONOS>;IGNORE
+<U03B5> <U0395>;<SMALL>;<GREEK>;IGNORE
+<U03AD> <U0395>;<SMALL>;<TONOS>;IGNORE
+<U0396> <U0396>;<CAPITAL>;<GREEK>;IGNORE
+<U03B6> <U0396>;<SMALL>;<GREEK>;IGNORE
+<U0397> <U0397>;<CAPITAL>;<GREEK>;IGNORE
+<U0389> <U0397>;<CAPITAL>;<TONOS>;IGNORE
+<U03B7> <U0397>;<SMALL>;<GREEK>;IGNORE
+<U03AE> <U0397>;<SMALL>;<TONOS>;IGNORE
+<U0398> <U0398>;<CAPITAL>;<GREEK>;IGNORE
+<U03B8> <U0398>;<SMALL>;<GREEK>;IGNORE
+<U0399> <U0399>;<CAPITAL>;<GREEK>;IGNORE
+<U038A> <U0399>;<CAPITAL>;<TONOS>;IGNORE
+<U03AA> <U0399>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03B9> <U0399>;<SMALL>;<GREEK>;IGNORE
+<U03AF> <U0399>;<SMALL>;<TONOS>;IGNORE
+<U03CA> <U0399>;<SMALL>;<DIALYTICA>;IGNORE
+<U0390> <U0399>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U039A> <U039A>;<CAPITAL>;<GREEK>;IGNORE
+<U03BA> <U039A>;<SMALL>;<GREEK>;IGNORE
+<U039B> <U039B>;<CAPITAL>;<GREEK>;IGNORE
+<U03BB> <U039B>;<SMALL>;<GREEK>;IGNORE
+<U039C> <U039C>;<CAPITAL>;<GREEK>;IGNORE
+<U03BC> <U039C>;<SMALL>;<GREEK>;IGNORE
+<U039D> <U039D>;<CAPITAL>;<GREEK>;IGNORE
+<U03BD> <U039D>;<SMALL>;<GREEK>;IGNORE
+<U039E> <U039E>;<CAPITAL>;<GREEK>;IGNORE
+<U03BE> <U039E>;<SMALL>;<GREEK>;IGNORE
+<U039F> <U039F>;<CAPITAL>;<GREEK>;IGNORE
+<U038C> <U039F>;<CAPITAL>;<TONOS>;IGNORE
+<U03BF> <U039F>;<SMALL>;<GREEK>;IGNORE
+<U03CC> <U039F>;<SMALL>;<TONOS>;IGNORE
+<U03A0> <U03A0>;<CAPITAL>;<GREEK>;IGNORE
+<U03C0> <U03A0>;<SMALL>;<GREEK>;IGNORE
+<U03A1> <U03A1>;<CAPITAL>;<GREEK>;IGNORE
+<U03C1> <U03A1>;<SMALL>;<GREEK>;IGNORE
+<U03A3> <U03A3>;<CAPITAL>;<GREEK>;IGNORE
+<U03C3> <U03A3>;<SMALL>;<GREEK>;IGNORE
+<U03C2> <U03A3>;<SMALL>;<U03C2>;IGNORE
+<U03A4> <U03A4>;<CAPITAL>;<GREEK>;IGNORE
+<U03C4> <U03A4>;<SMALL>;<GREEK>;IGNORE
+<U03A5> <U03A5>;<CAPITAL>;<GREEK>;IGNORE
+<U038E> <U03A5>;<CAPITAL>;<TONOS>;IGNORE
+<U03AB> <U03A5>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03C5> <U03A5>;<SMALL>;<GREEK>;IGNORE
+<U03CD> <U03A5>;<SMALL>;<TONOS>;IGNORE
+<U03CB> <U03A5>;<SMALL>;<DIALYTICA>;IGNORE
+<U03B0> <U03A5>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U03A6> <U03A6>;<CAPITAL>;<GREEK>;IGNORE
+<U03C6> <U03A6>;<SMALL>;<GREEK>;IGNORE
+<U03A7> <U03A7>;<CAPITAL>;<GREEK>;IGNORE
+<U03C7> <U03A7>;<SMALL>;<GREEK>;IGNORE
+<U03A8> <U03A8>;<CAPITAL>;<GREEK>;IGNORE
+<U03C8> <U03A8>;<SMALL>;<GREEK>;IGNORE
+<U03A9> <U03A9>;<CAPITAL>;<GREEK>;IGNORE
+<U038F> <U03A9>;<CAPITAL>;<TONOS>;IGNORE
+<U03C9> <U03A9>;<SMALL>;<GREEK>;IGNORE
+<U03CE> <U03A9>;<SMALL>;<TONOS>;IGNORE
+<U0410> <U0410>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0430> <U0410>;<CYRILLIC>;<SMALL>;IGNORE
+<U0411> <U0411>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0431> <U0411>;<CYRILLIC>;<SMALL>;IGNORE
+<U0412> <U0412>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0432> <U0412>;<CYRILLIC>;<SMALL>;IGNORE
+<U0413> <U0413>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0433> <U0413>;<CYRILLIC>;<SMALL>;IGNORE
+<U0403> <U0403>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0453> <U0403>;<CYRILLIC>;<SMALL>;IGNORE
+<U0490> <U0490>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0491> <U0490>;<CYRILLIC>;<SMALL>;IGNORE
+<U0414> <U0414>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0434> <U0414>;<CYRILLIC>;<SMALL>;IGNORE
+<U0402> <U0402>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0452> <U0402>;<CYRILLIC>;<SMALL>;IGNORE
+<U0415> <U0415>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0435> <U0415>;<CYRILLIC>;<SMALL>;IGNORE
+<U0401> <U0401>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0451> <U0401>;<CYRILLIC>;<SMALL>;IGNORE
+<U0404> <U0404>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0454> <U0404>;<CYRILLIC>;<SMALL>;IGNORE
+<U0416> <U0416>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0436> <U0416>;<CYRILLIC>;<SMALL>;IGNORE
+<U0417> <U0417>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0437> <U0417>;<CYRILLIC>;<SMALL>;IGNORE
+<U0418> <U0418>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0438> <U0418>;<CYRILLIC>;<SMALL>;IGNORE
+<U0406> <U0406>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0456> <U0406>;<CYRILLIC>;<SMALL>;IGNORE
+<U0407> <U0407>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0457> <U0407>;<CYRILLIC>;<SMALL>;IGNORE
+<U0408> <U0408>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0458> <U0408>;<CYRILLIC>;<SMALL>;IGNORE
+<U0419> <U0419>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0439> <U0419>;<CYRILLIC>;<SMALL>;IGNORE
+<U041A> <U041A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043A> <U041A>;<CYRILLIC>;<SMALL>;IGNORE
+<U040C> <U040C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045C> <U040C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041B> <U041B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043B> <U041B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0409> <U0409>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0459> <U0409>;<CYRILLIC>;<SMALL>;IGNORE
+<U041C> <U041C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043C> <U041C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041D> <U041D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043D> <U041D>;<CYRILLIC>;<SMALL>;IGNORE
+<U040A> <U040A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045A> <U040A>;<CYRILLIC>;<SMALL>;IGNORE
+<U041E> <U041E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043E> <U041E>;<CYRILLIC>;<SMALL>;IGNORE
+<U041F> <U041F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043F> <U041F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0420> <U0420>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0440> <U0420>;<CYRILLIC>;<SMALL>;IGNORE
+<U0421> <U0421>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0441> <U0421>;<CYRILLIC>;<SMALL>;IGNORE
+<U0422> <U0422>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0442> <U0422>;<CYRILLIC>;<SMALL>;IGNORE
+<U040B> <U040B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045B> <U040B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0423> <U0423>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0443> <U0423>;<CYRILLIC>;<SMALL>;IGNORE
+<U040E> <U040E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045E> <U040E>;<CYRILLIC>;<SMALL>;IGNORE
+<U0424> <U0424>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0444> <U0424>;<CYRILLIC>;<SMALL>;IGNORE
+<U0425> <U0425>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0445> <U0425>;<CYRILLIC>;<SMALL>;IGNORE
+<U0426> <U0426>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0446> <U0426>;<CYRILLIC>;<SMALL>;IGNORE
+<U0405> <U0405>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0455> <U0405>;<CYRILLIC>;<SMALL>;IGNORE
+<U0427> <U0427>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0447> <U0427>;<CYRILLIC>;<SMALL>;IGNORE
+<U040F> <U040F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045F> <U040F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0428> <U0428>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0448> <U0428>;<CYRILLIC>;<SMALL>;IGNORE
+<U0429> <U0429>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0449> <U0429>;<CYRILLIC>;<SMALL>;IGNORE
+<U044A> <U044A>;<CYRILLIC>;<SMALL>;IGNORE
+<U042A> <U044A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042B> <U042B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044B> <U042B>;<CYRILLIC>;<SMALL>;IGNORE
+<U044C> <U044C>;<CYRILLIC>;<SMALL>;IGNORE
+<U042C> <U044C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042D> <U042D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044D> <U042D>;<CYRILLIC>;<SMALL>;IGNORE
+<U042E> <U042E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044E> <U042E>;<CYRILLIC>;<SMALL>;IGNORE
+<U042F> <U042F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044F> <U042F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0462> <U0462>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0463> <U0462>;<CYRILLIC>;<SMALL>;IGNORE
+<U046A> <U046A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U046B> <U046A>;<CYRILLIC>;<SMALL>;IGNORE
+<U0472> <U0472>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0473> <U0472>;<CYRILLIC>;<SMALL>;IGNORE
+<U0474> <U0474>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0475> <U0474>;<CYRILLIC>;<SMALL>;IGNORE
+<U0480> <U0480>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0481> <U0480>;<CYRILLIC>;<SMALL>;IGNORE
+<U05D0> <U05D0>;IGNORE;IGNORE;IGNORE
+<U05D1> <U05D1>;IGNORE;IGNORE;IGNORE
+<U05D2> <U05D2>;IGNORE;IGNORE;IGNORE
+<U05D3> <U05D3>;IGNORE;IGNORE;IGNORE
+<U05D4> <U05D4>;IGNORE;IGNORE;IGNORE
+<U05D5> <U05D5>;IGNORE;IGNORE;IGNORE
+<U05D6> <U05D6>;IGNORE;IGNORE;IGNORE
+<U05D7> <U05D7>;IGNORE;IGNORE;IGNORE
+<U05D8> <U05D8>;IGNORE;IGNORE;IGNORE
+<U05D9> <U05D9>;IGNORE;IGNORE;IGNORE
+<U05DA> <U05DA>;IGNORE;IGNORE;IGNORE
+<U05DB> <U05DB>;IGNORE;IGNORE;IGNORE
+<U05DC> <U05DC>;IGNORE;IGNORE;IGNORE
+<U05DD> <U05DD>;IGNORE;IGNORE;IGNORE
+<U05DE> <U05DE>;IGNORE;IGNORE;IGNORE
+<U05DF> <U05DF>;IGNORE;IGNORE;IGNORE
+<U05E0> <U05E0>;IGNORE;IGNORE;IGNORE
+<U05E1> <U05E1>;IGNORE;IGNORE;IGNORE
+<U05E2> <U05E2>;IGNORE;IGNORE;IGNORE
+<U05E3> <U05E3>;IGNORE;IGNORE;IGNORE
+<U05E4> <U05E4>;IGNORE;IGNORE;IGNORE
+<U05E5> <U05E5>;IGNORE;IGNORE;IGNORE
+<U05E6> <U05E6>;IGNORE;IGNORE;IGNORE
+<U05E7> <U05E7>;IGNORE;IGNORE;IGNORE
+<U05E8> <U05E8>;IGNORE;IGNORE;IGNORE
+<U05E9> <U05E9>;IGNORE;IGNORE;IGNORE
+<U05EA> <U05EA>;IGNORE;IGNORE;IGNORE
+
+% Arabic collating
+
+<U060C> IGNORE;IGNORE;IGNORE;<U060C>
+<U061B> IGNORE;IGNORE;IGNORE;<U061B>
+<U061F> IGNORE;IGNORE;IGNORE;<U061F>
+<U0640> IGNORE;IGNORE;IGNORE;<U0640>
+
+<U0621> <U0621>;<U0621>;IGNORE;IGNORE
+<U0622> <U0622>;<U0622>;IGNORE;IGNORE
+<UFE82> <U0622>;<UFE82>;IGNORE;IGNORE
+<U0623> <U0621>;<U0623>;IGNORE;IGNORE
+<UFE84> <U0621>;<UFE84>;IGNORE;IGNORE
+<U0624> <U0621>;<U0624>;IGNORE;IGNORE
+<U0625> <U0621>;<U0625>;IGNORE;IGNORE
+<UFE88> <U0621>;<UFE88>;IGNORE;IGNORE
+<U0626> <U0621>;<U0626>;IGNORE;IGNORE
+<U0670> <U0670>;<U0670>;IGNORE;IGNORE
+<U0627> <U0627>;<U0627>;IGNORE;IGNORE
+<UFE8D> <U0627>;<UFE8D>;IGNORE;IGNORE
+<UFE8E> <U0627>;<UFE8E>;IGNORE;IGNORE
+<UE016> <U0627>;<UE016>;IGNORE;IGNORE
+<U0628> <U0628>;<U0628>;IGNORE;IGNORE
+<UFE8F> <U0628>;<UFE8F>;IGNORE;IGNORE
+<UFE90> <U0628>;<UFE90>;IGNORE;IGNORE
+<UFE91> <U0628>;<UFE91>;IGNORE;IGNORE
+<UFE92> <U0628>;<UFE92>;IGNORE;IGNORE
+<U067E> <U067E>;<U067E>;IGNORE;IGNORE
+<U06A4> <U06A4>;<U06A4>;IGNORE;IGNORE
+<U0629> <U0629>;<U0629>;IGNORE;IGNORE
+<UFE93> <U0629>;<UFE93>;IGNORE;IGNORE
+<UFE94> <U0629>;<UFE94>;IGNORE;IGNORE
+<U062A> <U0629>;<U062A>;IGNORE;IGNORE
+<UFE95> <U0629>;<UFE95>;IGNORE;IGNORE
+<UFE96> <U0629>;<UFE96>;IGNORE;IGNORE
+<UFE97> <U0629>;<UFE97>;IGNORE;IGNORE
+<UFE98> <U0629>;<UFE98>;IGNORE;IGNORE
+<U062B> <U062B>;<U062B>;IGNORE;IGNORE
+<UFE99> <U062B>;<UFE99>;IGNORE;IGNORE
+<UFE9A> <U062B>;<UFE9A>;IGNORE;IGNORE
+<UFE9B> <U062B>;<UFE9B>;IGNORE;IGNORE
+<UFE9C> <U062B>;<UFE9C>;IGNORE;IGNORE
+<U062C> <U062C>;<U062C>;IGNORE;IGNORE
+<UFE9D> <U062C>;<UFE9D>;IGNORE;IGNORE
+<UFE9E> <U062C>;<UFE9E>;IGNORE;IGNORE
+<UFE9F> <U062C>;<UFE9F>;IGNORE;IGNORE
+<UFEA0> <U062C>;<UFEA0>;IGNORE;IGNORE
+<U062D> <U062D>;<U062D>;IGNORE;IGNORE
+<UFEA1> <U062D>;<UFEA1>;IGNORE;IGNORE
+<UFEA2> <U062D>;<UFEA2>;IGNORE;IGNORE
+<UFEA3> <U062D>;<UFEA3>;IGNORE;IGNORE
+<UFEA4> <U062D>;<UFEA4>;IGNORE;IGNORE
+<U062E> <U062E>;<U062E>;IGNORE;IGNORE
+<UFEA5> <U062E>;<UFEA5>;IGNORE;IGNORE
+<UFEA6> <U062E>;<UFEA6>;IGNORE;IGNORE
+<UFEA7> <U062E>;<UFEA7>;IGNORE;IGNORE
+<UFEA8> <U062E>;<UFEA8>;IGNORE;IGNORE
+<U062F> <U062F>;<U062F>;IGNORE;IGNORE
+<UFEA9> <U062F>;<UFEA9>;IGNORE;IGNORE
+<UFEAA> <U062F>;<UFEAA>;IGNORE;IGNORE
+<U0630> <U0630>;<U0630>;IGNORE;IGNORE
+<UFEAB> <U0630>;<UFEAB>;IGNORE;IGNORE
+<UFEAC> <U0630>;<UFEAC>;IGNORE;IGNORE
+<U0631> <U0631>;<U0631>;IGNORE;IGNORE
+<UFEAD> <U0631>;<UFEAD>;IGNORE;IGNORE
+<UFEAE> <U0631>;<UFEAE>;IGNORE;IGNORE
+<U0632> <U0632>;<U0632>;IGNORE;IGNORE
+<UFEAF> <U0632>;<UFEAF>;IGNORE;IGNORE
+<UFEB0> <U0632>;<UFEB0>;IGNORE;IGNORE
+<U0633> <U0633>;<U0633>;IGNORE;IGNORE
+<UFEB1> <U0633>;<UFEB1>;IGNORE;IGNORE
+<UFEB2> <U0633>;<UFEB2>;IGNORE;IGNORE
+<UFEB3> <U0633>;<UFEB3>;IGNORE;IGNORE
+<UFEB4> <U0633>;<UFEB4>;IGNORE;IGNORE
+<U0634> <U0634>;<U0634>;IGNORE;IGNORE
+<UFEB5> <U0634>;<UFEB5>;IGNORE;IGNORE
+<UFEB6> <U0634>;<UFEB6>;IGNORE;IGNORE
+<UFEB7> <U0634>;<UFEB7>;IGNORE;IGNORE
+<UFEB8> <U0634>;<UFEB8>;IGNORE;IGNORE
+<U0635> <U0635>;<U0635>;IGNORE;IGNORE
+<UFEB9> <U0635>;<UFEB9>;IGNORE;IGNORE
+<UFEBA> <U0635>;<UFEBA>;IGNORE;IGNORE
+<UFEBB> <U0635>;<UFEBB>;IGNORE;IGNORE
+<UFEBC> <U0635>;<UFEBC>;IGNORE;IGNORE
+<U0636> <U0636>;<U0636>;IGNORE;IGNORE
+<UFEBD> <U0636>;<UFEBD>;IGNORE;IGNORE
+<UFEBE> <U0636>;<UFEBE>;IGNORE;IGNORE
+<UFEBF> <U0636>;<UFEBF>;IGNORE;IGNORE
+<UFEC0> <U0636>;<UFEC0>;IGNORE;IGNORE
+<U0637> <U0637>;<U0637>;IGNORE;IGNORE
+<UFEC1> <U0637>;<UFEC1>;IGNORE;IGNORE
+<UFEC2> <U0637>;<UFEC2>;IGNORE;IGNORE
+<UFEC3> <U0637>;<UFEC3>;IGNORE;IGNORE
+<UFEC4> <U0637>;<UFEC4>;IGNORE;IGNORE
+<U0638> <U0638>;<U0638>;IGNORE;IGNORE
+<UFEC5> <U0638>;<UFEC5>;IGNORE;IGNORE
+<UFEC6> <U0638>;<UFEC6>;IGNORE;IGNORE
+<UFEC7> <U0638>;<UFEC7>;IGNORE;IGNORE
+<UFEC8> <U0638>;<UFEC8>;IGNORE;IGNORE
+<U0639> <U0639>;<U0639>;IGNORE;IGNORE
+<UFEC9> <U0639>;<UFEC9>;IGNORE;IGNORE
+<UFECA> <U0639>;<UFECA>;IGNORE;IGNORE
+<UFECB> <U0639>;<UFECB>;IGNORE;IGNORE
+<UFECC> <U0639>;<UFECC>;IGNORE;IGNORE
+<U063A> <U063A>;<U063A>;IGNORE;IGNORE
+<UFECD> <U063A>;<UFECD>;IGNORE;IGNORE
+<UFECE> <U063A>;<UFECE>;IGNORE;IGNORE
+<UFECF> <U063A>;<UFECF>;IGNORE;IGNORE
+<UFED0> <U063A>;<UFED0>;IGNORE;IGNORE
+<U0641> <U0641>;<U0641>;IGNORE;IGNORE
+<UFED1> <U0641>;<UFED1>;IGNORE;IGNORE
+<UFED2> <U0641>;<UFED2>;IGNORE;IGNORE
+<UFED3> <U0641>;<UFED3>;IGNORE;IGNORE
+<UFED4> <U0641>;<UFED4>;IGNORE;IGNORE
+<U0642> <U0642>;<U0642>;IGNORE;IGNORE
+<UFED5> <U0642>;<UFED5>;IGNORE;IGNORE
+<UFED6> <U0642>;<UFED6>;IGNORE;IGNORE
+<UFED7> <U0642>;<UFED7>;IGNORE;IGNORE
+<UFED8> <U0642>;<UFED8>;IGNORE;IGNORE
+<U0643> <U0643>;<U0643>;IGNORE;IGNORE
+<UFED9> <U0643>;<UFED9>;IGNORE;IGNORE
+<UFEDA> <U0643>;<UFEDA>;IGNORE;IGNORE
+<UFEDB> <U0643>;<UFEDB>;IGNORE;IGNORE
+<UFEDC> <U0643>;<UFEDC>;IGNORE;IGNORE
+<U0644> <U0644>;<U0644>;IGNORE;IGNORE
+<UFEDD> <U0644>;<UFEDD>;IGNORE;IGNORE
+<UFEDE> <U0644>;<UFEDE>;IGNORE;IGNORE
+<UFEDF> <U0644>;<UFEDF>;IGNORE;IGNORE
+<UFEE0> <U0644>;<UFEE0>;IGNORE;IGNORE
+<U0645> <U0645>;<U0645>;IGNORE;IGNORE
+<UFEE1> <U0645>;<UFEE1>;IGNORE;IGNORE
+<UFEE2> <U0645>;<UFEE2>;IGNORE;IGNORE
+<UFEE3> <U0645>;<UFEE3>;IGNORE;IGNORE
+<UFEE4> <U0645>;<UFEE4>;IGNORE;IGNORE
+<U0646> <U0646>;<U0646>;IGNORE;IGNORE
+<UFEE5> <U0646>;<UFEE5>;IGNORE;IGNORE
+<UFEE6> <U0646>;<UFEE6>;IGNORE;IGNORE
+<UFEE7> <U0646>;<UFEE7>;IGNORE;IGNORE
+<UFEE8> <U0646>;<UFEE8>;IGNORE;IGNORE
+<U0647> <U0647>;<U0647>;IGNORE;IGNORE
+<UFEE9> <U0647>;<UFEE9>;IGNORE;IGNORE
+<UFEEA> <U0647>;<UFEEA>;IGNORE;IGNORE
+<UFEEB> <U0647>;<UFEEB>;IGNORE;IGNORE
+<UFEEC> <U0647>;<UFEEC>;IGNORE;IGNORE
+<U0648> <U0648>;<U0648>;IGNORE;IGNORE
+<UFEED> <U0648>;<UFEED>;IGNORE;IGNORE
+<UFEEE> <U0648>;<UFEEE>;IGNORE;IGNORE
+<U0649> <U0649>;<U0649>;IGNORE;IGNORE
+<UFEEF> <U0649>;<UFEEF>;IGNORE;IGNORE
+<UFEF0> <U0649>;<UFEF0>;IGNORE;IGNORE
+<U064A> <U064A>;<U064A>;IGNORE;IGNORE
+<UFEF1> <U064A>;<UFEF1>;IGNORE;IGNORE
+<UFEF2> <U064A>;<UFEF2>;IGNORE;IGNORE
+<UFEF3> <U064A>;<UFEF3>;IGNORE;IGNORE
+<UFEF4> <U064A>;<UFEF4>;IGNORE;IGNORE
+
+<U064B> IGNORE;IGNORE;<U064B>;IGNORE
+<U064C> IGNORE;IGNORE;<U064C>;IGNORE
+<U064D> IGNORE;IGNORE;<U064D>;IGNORE
+<U064E> IGNORE;IGNORE;<U064E>;IGNORE
+<U064F> IGNORE;IGNORE;<U064F>;IGNORE
+<U0650> IGNORE;IGNORE;<U0650>;IGNORE
+<U0651> IGNORE;IGNORE;<U0651>;IGNORE
+<UFE7D> IGNORE;IGNORE;<UFE7D>;IGNORE
+<U0652> IGNORE;IGNORE;<U0652>;IGNORE
+
+<U0660> <U0030>;<U0660>;IGNORE;IGNORE
+<U0661> <U0031>;<U0661>;IGNORE;IGNORE
+<U0662> <U0032>;<U0662>;IGNORE;IGNORE
+<U0663> <U0033>;<U0663>;IGNORE;IGNORE
+<U0664> <U0034>;<U0664>;IGNORE;IGNORE
+<U0665> <U0035>;<U0665>;IGNORE;IGNORE
+<U0666> <U0036>;<U0666>;IGNORE;IGNORE
+<U0667> <U0037>;<U0667>;IGNORE;IGNORE
+<U0668> <U0038>;<U0668>;IGNORE;IGNORE
+<U0669> <U0039>;<U0669>;IGNORE;IGNORE
+
+<UFEF5> "<U0644><U0622>";"<U0644><U0622>";"<UFEF5><UFEF5>";IGNORE
+<UFEF6> "<U0644><U0622>";"<U0644><UFE82>";"<UFEF6><UFEF6>";IGNORE
+<UFEF7> "<U0644><U0623>";"<U0644><U0623>";"<UFEF7><UFEF7>";IGNORE
+<UFEF8> "<U0644><U0623>";"<U0644><UFE84>";"<UFEF8><UFEF8>";IGNORE
+<UFEF9> "<U0644><U0625>";"<U0644><U0625>";"<UFEF9><UFEF9>";IGNORE
+<UFEFA> "<U0644><U0625>";"<U0644><UFE88>";"<UFEFA><UFEFA>";IGNORE
+<UFEFB> "<U0644><U0627>";"<U0644><UFE8D>";"<UFEFB><UFEFB>";IGNORE
+<UFEFC> "<U0644><U0627>";"<U0644><UFE8E>";"<UFEFC><UFEFC>";IGNORE
+
+% katakana/hiragana sorting
+% base is katakana, as this is present in most charsets
+% normal before voiced before semi-voiced
+% small vocals before normal vocals
+% katakana before hiragana
+
+<U30A1> <U30A1>;<U30A1>;IGNORE;IGNORE
+<U3041> <U30A1>;<U3041>;IGNORE;IGNORE
+<U30A2> <U30A1>;<U30A2>;IGNORE;IGNORE
+<U3042> <U30A1>;<U3042>;IGNORE;IGNORE
+<U30A3> <U30A3>;<U30A3>;IGNORE;IGNORE
+<U3043> <U30A3>;<U3043>;IGNORE;IGNORE
+<U30A4> <U30A3>;<U30A4>;IGNORE;IGNORE
+<U3044> <U30A3>;<U3044>;IGNORE;IGNORE
+<U30A5> <U30A5>;<U30A5>;IGNORE;IGNORE
+<U3045> <U30A5>;<U3045>;IGNORE;IGNORE
+<U30A6> <U30A5>;<U30A6>;IGNORE;IGNORE
+<U3046> <U30A5>;<U3046>;IGNORE;IGNORE
+<U30F4> <U30A5>;<U30F4>;IGNORE;IGNORE
+<U30A7> <U30A7>;<U30A7>;IGNORE;IGNORE
+<U3047> <U30A7>;<U3047>;IGNORE;IGNORE
+<U30A8> <U30A7>;<U30A8>;IGNORE;IGNORE
+<U3048> <U30A7>;<U3048>;IGNORE;IGNORE
+<U30A9> <U30A9>;<U30A9>;IGNORE;IGNORE
+<U3049> <U30A9>;<U3049>;IGNORE;IGNORE
+<U30AA> <U30A9>;<U30AA>;IGNORE;IGNORE
+<U304A> <U30A9>;<U304A>;IGNORE;IGNORE
+<U30F5> <U30F5>;<U30F5>;IGNORE;IGNORE
+<U30AB> <U30F5>;<U30AB>;IGNORE;IGNORE
+<U304B> <U30F5>;<U304B>;IGNORE;IGNORE
+<U30AC> <U30F5>;<U30AC>;IGNORE;IGNORE
+<U304C> <U30F5>;<U304C>;IGNORE;IGNORE
+<U30AD> <U30AD>;<U30AD>;IGNORE;IGNORE
+<U304D> <U30AD>;<U304D>;IGNORE;IGNORE
+<U30AE> <U30AD>;<U30AE>;IGNORE;IGNORE
+<U304E> <U30AD>;<U304E>;IGNORE;IGNORE
+<U30AF> <U30AF>;<U30AF>;IGNORE;IGNORE
+<U304F> <U30AF>;<U304F>;IGNORE;IGNORE
+<U30B0> <U30AF>;<U30B0>;IGNORE;IGNORE
+<U3050> <U30AF>;<U3050>;IGNORE;IGNORE
+<U30F6> <U30F6>;<U30F6>;IGNORE;IGNORE
+<U30B1> <U30F6>;<U30B1>;IGNORE;IGNORE
+<U3051> <U30F6>;<U3051>;IGNORE;IGNORE
+<U30B2> <U30F6>;<U30B2>;IGNORE;IGNORE
+<U3052> <U30F6>;<U3052>;IGNORE;IGNORE
+<U30B3> <U30B3>;<U30B3>;IGNORE;IGNORE
+<U3053> <U30B3>;<U3053>;IGNORE;IGNORE
+<U30B4> <U30B3>;<U30B4>;IGNORE;IGNORE
+<U3054> <U30B3>;<U3054>;IGNORE;IGNORE
+<U30B5> <U30B5>;<U30B5>;IGNORE;IGNORE
+<U3055> <U30B5>;<U3055>;IGNORE;IGNORE
+<U30B6> <U30B5>;<U30B6>;IGNORE;IGNORE
+<U3056> <U30B5>;<U3056>;IGNORE;IGNORE
+<U30B7> <U30B7>;<U30B7>;IGNORE;IGNORE
+<U3057> <U30B7>;<U3057>;IGNORE;IGNORE
+<U30B8> <U30B7>;<U30B8>;IGNORE;IGNORE
+<U3058> <U30B7>;<U3058>;IGNORE;IGNORE
+<U30B9> <U30B9>;<U30B9>;IGNORE;IGNORE
+<U3059> <U30B9>;<U3059>;IGNORE;IGNORE
+<U30BA> <U30B9>;<U30BA>;IGNORE;IGNORE
+<U305A> <U30B9>;<U305A>;IGNORE;IGNORE
+<U30BB> <U30BB>;<U30BB>;IGNORE;IGNORE
+<U305B> <U30BB>;<U305B>;IGNORE;IGNORE
+<U30BC> <U30BB>;<U30BC>;IGNORE;IGNORE
+<U305C> <U30BB>;<U305C>;IGNORE;IGNORE
+<U30BD> <U30BD>;<U30BD>;IGNORE;IGNORE
+<U305D> <U30BD>;<U305D>;IGNORE;IGNORE
+<U30BE> <U30BD>;<U30BE>;IGNORE;IGNORE
+<U305E> <U30BD>;<U305E>;IGNORE;IGNORE
+<U30BF> <U30BF>;<U30BF>;IGNORE;IGNORE
+<U305F> <U30BF>;<U305F>;IGNORE;IGNORE
+<U30C0> <U30BF>;<U30C0>;IGNORE;IGNORE
+<U3060> <U30BF>;<U3060>;IGNORE;IGNORE
+<U30C1> <U30C1>;<U30C1>;IGNORE;IGNORE
+<U3061> <U30C1>;<U3061>;IGNORE;IGNORE
+<U30C2> <U30C1>;<U30C2>;IGNORE;IGNORE
+<U3062> <U30C1>;<U3062>;IGNORE;IGNORE
+<U30C3> <U30C3>;<U30C3>;IGNORE;IGNORE
+<U3063> <U30C3>;<U3063>;IGNORE;IGNORE
+<U30C4> <U30C3>;<U30C4>;IGNORE;IGNORE
+<U3064> <U30C3>;<U3064>;IGNORE;IGNORE
+<U30C5> <U30C3>;<U30C5>;IGNORE;IGNORE
+<U3065> <U30C3>;<U3065>;IGNORE;IGNORE
+<U30C6> <U30C6>;<U30C6>;IGNORE;IGNORE
+<U3066> <U30C6>;<U3066>;IGNORE;IGNORE
+<U30C7> <U30C6>;<U30C7>;IGNORE;IGNORE
+<U3067> <U30C6>;<U3067>;IGNORE;IGNORE
+<U30C8> <U30C8>;<U30C8>;IGNORE;IGNORE
+<U3068> <U30C8>;<U3068>;IGNORE;IGNORE
+<U30C9> <U30C8>;<U30C9>;IGNORE;IGNORE
+<U3069> <U30C8>;<U3069>;IGNORE;IGNORE
+<U30CA> <U30CA>;<U30CA>;IGNORE;IGNORE
+<U306A> <U30CA>;<U306A>;IGNORE;IGNORE
+<U30CB> <U30CB>;<U30CB>;IGNORE;IGNORE
+<U306B> <U30CB>;<U306B>;IGNORE;IGNORE
+<U30CC> <U30CC>;<U30CC>;IGNORE;IGNORE
+<U306C> <U30CC>;<U306C>;IGNORE;IGNORE
+<U30CD> <U30CD>;<U30CD>;IGNORE;IGNORE
+<U306D> <U30CD>;<U306D>;IGNORE;IGNORE
+<U30CE> <U30CE>;<U30CE>;IGNORE;IGNORE
+<U306E> <U30CE>;<U306E>;IGNORE;IGNORE
+<U30CF> <U30CF>;<U30CF>;IGNORE;IGNORE
+<U306F> <U30CF>;<U306F>;IGNORE;IGNORE
+<U30D0> <U30CF>;<U30D0>;IGNORE;IGNORE
+<U3070> <U30CF>;<U3070>;IGNORE;IGNORE
+<U30D1> <U30CF>;<U30D1>;IGNORE;IGNORE
+<U3071> <U30CF>;<U3071>;IGNORE;IGNORE
+<U30D2> <U30D2>;<U30D2>;IGNORE;IGNORE
+<U3072> <U30D2>;<U3072>;IGNORE;IGNORE
+<U30D3> <U30D2>;<U30D3>;IGNORE;IGNORE
+<U3073> <U30D2>;<U3073>;IGNORE;IGNORE
+<U30D4> <U30D2>;<U30D4>;IGNORE;IGNORE
+<U3074> <U30D2>;<U3074>;IGNORE;IGNORE
+<U30D5> <U30D5>;<U30D5>;IGNORE;IGNORE
+<U3075> <U30D5>;<U3075>;IGNORE;IGNORE
+<U30D6> <U30D5>;<U30D6>;IGNORE;IGNORE
+<U3076> <U30D5>;<U3076>;IGNORE;IGNORE
+<U30D7> <U30D5>;<U30D7>;IGNORE;IGNORE
+<U3077> <U30D5>;<U3077>;IGNORE;IGNORE
+<U30D8> <U30D8>;<U30D8>;IGNORE;IGNORE
+<U3078> <U30D8>;<U3078>;IGNORE;IGNORE
+<U30D9> <U30D8>;<U30D9>;IGNORE;IGNORE
+<U3079> <U30D8>;<U3079>;IGNORE;IGNORE
+<U30DA> <U30D8>;<U30DA>;IGNORE;IGNORE
+<U307A> <U30D8>;<U307A>;IGNORE;IGNORE
+<U30DB> <U30DB>;<U30DB>;IGNORE;IGNORE
+<U307B> <U30DB>;<U307B>;IGNORE;IGNORE
+<U30DC> <U30DB>;<U30DC>;IGNORE;IGNORE
+<U307C> <U30DB>;<U307C>;IGNORE;IGNORE
+<U30DD> <U30DB>;<U30DD>;IGNORE;IGNORE
+<U307D> <U30DB>;<U307D>;IGNORE;IGNORE
+<U30DE> <U30DE>;<U30DE>;IGNORE;IGNORE
+<U307E> <U30DE>;<U307E>;IGNORE;IGNORE
+<U30DF> <U30DF>;<U30DF>;IGNORE;IGNORE
+<U307F> <U30DF>;<U307F>;IGNORE;IGNORE
+<U30E0> <U30E0>;<U30E0>;IGNORE;IGNORE
+<U3080> <U30E0>;<U3080>;IGNORE;IGNORE
+<U30E1> <U30E1>;<U30E1>;IGNORE;IGNORE
+<U3081> <U30E1>;<U3081>;IGNORE;IGNORE
+<U30E2> <U30E2>;<U30E2>;IGNORE;IGNORE
+<U3082> <U30E2>;<U3082>;IGNORE;IGNORE
+<U30E3> <U30E3>;<U30E3>;IGNORE;IGNORE
+<U3083> <U30E3>;<U3083>;IGNORE;IGNORE
+<U30E4> <U30E3>;<U30E4>;IGNORE;IGNORE
+<U3084> <U30E3>;<U3084>;IGNORE;IGNORE
+<U30E5> <U30E5>;<U30E5>;IGNORE;IGNORE
+<U3085> <U30E5>;<U3085>;IGNORE;IGNORE
+<U30E6> <U30E5>;<U30E6>;IGNORE;IGNORE
+<U3086> <U30E5>;<U3086>;IGNORE;IGNORE
+<U30E7> <U30E7>;<U30E7>;IGNORE;IGNORE
+<U3087> <U30E7>;<U3087>;IGNORE;IGNORE
+<U30E8> <U30E7>;<U30E8>;IGNORE;IGNORE
+<U3088> <U30E7>;<U3088>;IGNORE;IGNORE
+<U30E9> <U30E9>;<U30E9>;IGNORE;IGNORE
+<U3089> <U30E9>;<U3089>;IGNORE;IGNORE
+<U30EA> <U30EA>;<U30EA>;IGNORE;IGNORE
+<U308A> <U30EA>;<U308A>;IGNORE;IGNORE
+<U30EB> <U30EB>;<U30EB>;IGNORE;IGNORE
+<U308B> <U30EB>;<U308B>;IGNORE;IGNORE
+<U30EC> <U30EC>;<U30EC>;IGNORE;IGNORE
+<U308C> <U30EC>;<U308C>;IGNORE;IGNORE
+<U30ED> <U30ED>;<U30ED>;IGNORE;IGNORE
+<U308D> <U30ED>;<U308D>;IGNORE;IGNORE
+<U30EE> <U30EE>;<U30EE>;IGNORE;IGNORE
+<U308E> <U30EE>;<U308E>;IGNORE;IGNORE
+<U30EF> <U30EE>;<U30EF>;IGNORE;IGNORE
+<U308F> <U30EE>;<U308F>;IGNORE;IGNORE
+<U30F0> <U30F0>;<U30F0>;IGNORE;IGNORE
+<U3090> <U30F0>;<U3090>;IGNORE;IGNORE
+<U30F1> <U30F1>;<U30F1>;IGNORE;IGNORE
+<U3091> <U30F1>;<U3091>;IGNORE;IGNORE
+<U30F2> <U30F2>;<U30F2>;IGNORE;IGNORE
+<U3092> <U30F2>;<U3092>;IGNORE;IGNORE
+<U30F3> <U30F3>;<U30F3>;IGNORE;IGNORE
+<U3093> <U30F3>;<U3093>;IGNORE;IGNORE
+
+order_end
+
diff --git a/ap/build/uClibc/extra/locale/collation/oc_FR b/ap/build/uClibc/extra/locale/collation/oc_FR
new file mode 100644
index 0000000..d66184e
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/oc_FR
@@ -0,0 +1 @@
+copy "en_DK"
diff --git a/ap/build/uClibc/extra/locale/collation/pl_PL b/ap/build/uClibc/extra/locale/collation/pl_PL
new file mode 100644
index 0000000..b4c9a3b
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/pl_PL
@@ -0,0 +1,2061 @@
+
+% Base collation scheme: 1994-03-22
+
+% Ordering algorithm:
+% 1. Spaces and hyphen (but not soft
+% hyphen) before punctuation
+% characters, punctuation characters
+% before numbers,
+% numbers before letters.
+% 2. Letters with diacritical marks are
+% members of equivalence classes
+% 3. A distinction is made with regards
+% to case as noted below.
+% 4. Special characters are ignored
+% when comparing letters, but then
+% they are considered
+% 5. The alphabets are sorted in order
+% of first appearance in ISO 10646:
+% Latin, Greek, Cyrillic, etc.
+%
+% According to Greek specifications,
+% the steps 2. and 3. above are reversed
+% for the Greek script
+
+% collating symbols
+
+% The collating symbol naming is
+% mostly taken from ISO 10646-1,
+% for example the case and accent
+% names are from this standard.
+
+collating-symbol <CAPITAL>
+collating-symbol <CAPITAL-SMALL>
+collating-symbol <SMALL-CAPITAL>
+collating-symbol <SMALL>
+
+% <CAPITAL-SMALL> and <SMALL-CAPITAL>
+% are for cases like Danish <U0041><U0061>
+% and Spanish <U0043><U0068> being treated
+% as one letter.
+
+% The <a8> ...... <z8> collating
+% symbols have defined weights as
+% the last character in a group of
+% Latin letters. They are used
+% to specify deltas by locales using
+% a locale as the default ordering
+% and by "replace-after" statements
+% specifying the changed placement
+% in an ordering of a character.
+
+collating-symbol <a8>
+collating-symbol <b8>
+collating-symbol <c8>
+collating-symbol <d8>
+collating-symbol <e8>
+collating-symbol <f8>
+collating-symbol <g8>
+collating-symbol <h8>
+collating-symbol <i8>
+collating-symbol <j8>
+collating-symbol <k8>
+collating-symbol <l8>
+collating-symbol <m8>
+collating-symbol <n8>
+collating-symbol <o8>
+collating-symbol <p8>
+collating-symbol <q8>
+collating-symbol <r8>
+collating-symbol <s8>
+collating-symbol <t8>
+collating-symbol <u8>
+collating-symbol <v8>
+collating-symbol <w8>
+collating-symbol <x8>
+collating-symbol <y8>
+collating-symbol <z8>
+
+collating-symbol <NONE>
+collating-symbol <ACUTE>
+collating-symbol <ACUTE+DOT>
+collating-symbol <GRAVE>
+collating-symbol <DOUBLE-GRAVE>
+collating-symbol <BREVE>
+collating-symbol <BREVE+ACUTE>
+collating-symbol <BREVE+GRAVE>
+collating-symbol <BREVE+MACRON>
+collating-symbol <BREVE+HOOK>
+collating-symbol <BREVE+TILDE>
+collating-symbol <BREVE+DOT-BELOW>
+collating-symbol <BREVE-BELOW>
+collating-symbol <INVERTED-BREVE>
+collating-symbol <CIRCUMFLEX>
+collating-symbol <CIRCUMFLEX+ACUTE>
+collating-symbol <CIRCUMFLEX+GRAVE>
+collating-symbol <CIRCUMFLEX+HOOK>
+collating-symbol <CIRCUMFLEX+TILDE>
+collating-symbol <CIRCUMFLEX+DOT-BELOW>
+collating-symbol <CARON>
+collating-symbol <CARON+DIAERESIS>
+collating-symbol <CARON+DOT>
+collating-symbol <RING>
+collating-symbol <RING+ACUTE>
+collating-symbol <RING-BELOW>
+collating-symbol <DIAERESIS>
+collating-symbol <DIAERESIS+MACRON>
+collating-symbol <DIAERESIS+ACUTE>
+collating-symbol <DIAERESIS+GRAVE>
+collating-symbol <DIAERESIS+CARON>
+collating-symbol <DOUBLE-ACUTE>
+collating-symbol <HOOK>
+collating-symbol <TILDE>
+collating-symbol <TILDE+ACUTE>
+collating-symbol <TILDE+DIAERESIS>
+collating-symbol <TILDE-BELOW>
+collating-symbol <DOT>
+collating-symbol <DOT-BELOW>
+collating-symbol <DOT+DOT-BELOW>
+collating-symbol <STROKE>
+collating-symbol <STROKE+ACUTE>
+collating-symbol <CEDILLA>
+collating-symbol <CEDILLA+ACUTE>
+collating-symbol <CEDILLA+GRAVE>
+collating-symbol <CEDILLA+BREVE>
+collating-symbol <OGONEK>
+collating-symbol <OGONEK+MACRON>
+collating-symbol <MACRON>
+collating-symbol <MACRON+ACUTE>
+collating-symbol <MACRON+GRAVE>
+collating-symbol <MACRON+DIAERESIS>
+collating-symbol <MACRON+DIAERESIS-BELOW>
+collating-symbol <MACRON+DOT>
+collating-symbol <MACRON+DOT-BELOW>
+collating-symbol <MACRON+CIRCUMFLEX>
+collating-symbol <LINE-BELOW>
+collating-symbol <HORN>
+collating-symbol <HORN+ACUTE>
+collating-symbol <HORN+GRAVE>
+collating-symbol <HORN+HOOK>
+collating-symbol <HORN+TILDE>
+collating-symbol <HORN+DOT-BELOW>
+collating-symbol <PRECEDED-BY-APOSTROPHE>
+collating-symbol <GREEK>
+collating-symbol <TONOS>
+collating-symbol <DIALYTICA>
+collating-symbol <DIALYTICA+TONOS>
+collating-symbol <CYRILLIC>
+collating-symbol <HIRAGANA>
+collating-symbol <KATAKANA>
+collating-symbol <SPECIAL>
+
+% letter;accent;case;specials
+
+order_start forward;backward;forward;position
+
+% <CAPITAL> or <SMALL> letters first:
+
+<SMALL>
+<SMALL-CAPITAL>
+<CAPITAL-SMALL>
+<CAPITAL>
+
+% Accents:
+
+<NONE>
+<ACUTE>
+<ACUTE+DOT>
+<GRAVE>
+<DOUBLE-GRAVE>
+<BREVE>
+<BREVE+ACUTE>
+<BREVE+GRAVE>
+<BREVE+MACRON>
+<BREVE+HOOK>
+<BREVE+TILDE>
+<BREVE+DOT-BELOW>
+<BREVE-BELOW>
+<INVERTED-BREVE>
+<CIRCUMFLEX>
+<CIRCUMFLEX+ACUTE>
+<CIRCUMFLEX+GRAVE>
+<CIRCUMFLEX+HOOK>
+<CIRCUMFLEX+TILDE>
+<CIRCUMFLEX+DOT-BELOW>
+<CARON>
+<CARON+DIAERESIS>
+<CARON+DOT>
+<RING>
+<RING+ACUTE>
+<RING-BELOW>
+<DIAERESIS>
+<DIAERESIS+MACRON>
+<DIAERESIS+ACUTE>
+<DIAERESIS+GRAVE>
+<DIAERESIS+CARON>
+<DOUBLE-ACUTE>
+<HOOK>
+<TILDE>
+<TILDE+ACUTE>
+<TILDE+DIAERESIS>
+<TILDE-BELOW>
+<DOT>
+<DOT-BELOW>
+<DOT+DOT-BELOW>
+<STROKE>
+<STROKE+ACUTE>
+<CEDILLA>
+<CEDILLA+ACUTE>
+<CEDILLA+GRAVE>
+<CEDILLA+BREVE>
+<OGONEK>
+<OGONEK+MACRON>
+<MACRON>
+<MACRON+ACUTE>
+<MACRON+GRAVE>
+<MACRON+DIAERESIS>
+<MACRON+DIAERESIS-BELOW>
+<MACRON+DOT>
+<MACRON+DOT-BELOW>
+<MACRON+CIRCUMFLEX>
+<LINE-BELOW>
+<HORN>
+<HORN+ACUTE>
+<HORN+GRAVE>
+<HORN+HOOK>
+<HORN+TILDE>
+<HORN+DOT-BELOW>
+<PRECEDED-BY-APOSTROPHE>
+<GREEK>
+<TONOS>
+<DIALYTICA>
+<DIALYTICA+TONOS>
+<CYRILLIC>
+<HIRAGANA>
+<KATAKANA>
+<SPECIAL>
+
+<U00A0> <U00A0>;<U00A0>;<U00A0>;IGNORE
+<U0020> IGNORE;IGNORE;IGNORE;<U0020>
+<U0009> IGNORE;IGNORE;IGNORE;<U0009>
+<U000B> IGNORE;IGNORE;IGNORE;<U000B>
+<U000D> IGNORE;IGNORE;IGNORE;<U000D>
+<U000A> IGNORE;IGNORE;IGNORE;<U000A>
+<U000C> IGNORE;IGNORE;IGNORE;<U000C>
+<U005F> IGNORE;IGNORE;IGNORE;<U005F>
+<U00AF> IGNORE;IGNORE;IGNORE;<U00AF>
+<U00AD> IGNORE;IGNORE;IGNORE;<U00AD>
+<U002D> IGNORE;IGNORE;IGNORE;<U002D>
+<U002C> IGNORE;IGNORE;IGNORE;<U002C>
+<U003B> IGNORE;IGNORE;IGNORE;<U003B>
+<U003A> IGNORE;IGNORE;IGNORE;<U003A>
+<U0021> IGNORE;IGNORE;IGNORE;<U0021>
+<U00A1> IGNORE;IGNORE;IGNORE;<U00A1>
+<U003F> IGNORE;IGNORE;IGNORE;<U003F>
+<U00BF> IGNORE;IGNORE;IGNORE;<U00BF>
+<U002F> IGNORE;IGNORE;IGNORE;<U002F>
+<U002E> IGNORE;IGNORE;IGNORE;<U002E>
+<U00B4> IGNORE;IGNORE;IGNORE;<U00B4>
+<U0060> IGNORE;IGNORE;IGNORE;<U0060>
+<U005E> IGNORE;IGNORE;IGNORE;<U005E>
+<U00A8> IGNORE;IGNORE;IGNORE;<U00A8>
+<U007E> IGNORE;IGNORE;IGNORE;<U007E>
+<U00B7> IGNORE;IGNORE;IGNORE;<U00B7>
+<U00B8> IGNORE;IGNORE;IGNORE;<U00B8>
+<U0027> IGNORE;IGNORE;IGNORE;<U0027>
+<U2018> IGNORE;IGNORE;IGNORE;<U2018>
+<U2019> IGNORE;IGNORE;IGNORE;<U2019>
+<U0022> IGNORE;IGNORE;IGNORE;<U0022>
+<U201C> IGNORE;IGNORE;IGNORE;<U201C>
+<U201D> IGNORE;IGNORE;IGNORE;<U201D>
+<U00AB> IGNORE;IGNORE;IGNORE;<U00AB>
+<U00BB> IGNORE;IGNORE;IGNORE;<U00BB>
+<U0028> IGNORE;IGNORE;IGNORE;<U0028>
+<U207D> IGNORE;IGNORE;IGNORE;<U207D>
+<U0029> IGNORE;IGNORE;IGNORE;<U0029>
+<U207E> IGNORE;IGNORE;IGNORE;<U207E>
+<U005B> IGNORE;IGNORE;IGNORE;<U005B>
+<U005D> IGNORE;IGNORE;IGNORE;<U005D>
+<U007B> IGNORE;IGNORE;IGNORE;<U007B>
+<U007D> IGNORE;IGNORE;IGNORE;<U007D>
+<U00A7> IGNORE;IGNORE;IGNORE;<U00A7>
+<U00B6> IGNORE;IGNORE;IGNORE;<U00B6>
+<U00A9> IGNORE;IGNORE;IGNORE;<U00A9>
+<U00AE> IGNORE;IGNORE;IGNORE;<U00AE>
+<U0040> IGNORE;IGNORE;IGNORE;<U0040>
+<U00A4> IGNORE;IGNORE;IGNORE;<U00A4>
+<U00A2> IGNORE;IGNORE;IGNORE;<U00A2>
+<U0024> IGNORE;IGNORE;IGNORE;<U0024>
+<U00A3> IGNORE;IGNORE;IGNORE;<U00A3>
+<U00A5> IGNORE;IGNORE;IGNORE;<U00A5>
+<U002A> IGNORE;IGNORE;IGNORE;<U002A>
+<U005C> IGNORE;IGNORE;IGNORE;<U005C>
+<U0026> IGNORE;IGNORE;IGNORE;<U0026>
+<U0023> IGNORE;IGNORE;IGNORE;<U0023>
+<U0025> IGNORE;IGNORE;IGNORE;<U0025>
+<U207B> IGNORE;IGNORE;IGNORE;<U207B>
+<U002B> IGNORE;IGNORE;IGNORE;<U002B>
+<U207A> IGNORE;IGNORE;IGNORE;<U207A>
+<U00B1> IGNORE;IGNORE;IGNORE;<U00B1>
+<U00F7> IGNORE;IGNORE;IGNORE;<U00F7>
+<U00D7> IGNORE;IGNORE;IGNORE;<U00D7>
+<U2260> IGNORE;IGNORE;IGNORE;<U2260>
+<U003C> IGNORE;IGNORE;IGNORE;<U003C>
+<U2264> IGNORE;IGNORE;IGNORE;<U2264>
+<U003D> IGNORE;IGNORE;IGNORE;<U003D>
+<U2265> IGNORE;IGNORE;IGNORE;<U2265>
+<U003E> IGNORE;IGNORE;IGNORE;<U003E>
+<U00AC> IGNORE;IGNORE;IGNORE;<U00AC>
+<U007C> IGNORE;IGNORE;IGNORE;<U007C>
+<U00A6> IGNORE;IGNORE;IGNORE;<U00A6>
+<U00B0> IGNORE;IGNORE;IGNORE;<U00B0>
+<U00B5> IGNORE;IGNORE;IGNORE;<U00B5>
+<U02C7> IGNORE;IGNORE;IGNORE;<U02C7>
+<U02D8> IGNORE;IGNORE;IGNORE;<U02D8>
+<U02D9> IGNORE;IGNORE;IGNORE;<U02D9>
+<U02DA> IGNORE;IGNORE;IGNORE;<U02DA>
+<U02DB> IGNORE;IGNORE;IGNORE;<U02DB>
+<U02DC> IGNORE;IGNORE;IGNORE;<U02DC>
+<U02DD> IGNORE;IGNORE;IGNORE;<U02DD>
+<U0374> IGNORE;IGNORE;IGNORE;<U0374>
+<U0375> IGNORE;IGNORE;IGNORE;<U0375>
+<U037A> IGNORE;IGNORE;IGNORE;<U037A>
+<U037E> IGNORE;IGNORE;IGNORE;<U037E>
+<U0384> IGNORE;IGNORE;IGNORE;<U0384>
+<U0385> IGNORE;IGNORE;IGNORE;<U0385>
+<U0387> IGNORE;IGNORE;IGNORE;<U0387>
+<U03D0> IGNORE;IGNORE;IGNORE;<U03D0>
+<U1FBF> IGNORE;IGNORE;IGNORE;<U1FBF>
+<U1FC0> IGNORE;IGNORE;IGNORE;<U1FC0>
+<U1FC1> IGNORE;IGNORE;IGNORE;<U1FC1>
+<U1FCD> IGNORE;IGNORE;IGNORE;<U1FCD>
+<U1FCE> IGNORE;IGNORE;IGNORE;<U1FCE>
+<U1FCF> IGNORE;IGNORE;IGNORE;<U1FCF>
+<U1FDD> IGNORE;IGNORE;IGNORE;<U1FDD>
+<U1FDE> IGNORE;IGNORE;IGNORE;<U1FDE>
+<U1FDF> IGNORE;IGNORE;IGNORE;<U1FDF>
+<U1FED> IGNORE;IGNORE;IGNORE;<U1FED>
+<U1FEF> IGNORE;IGNORE;IGNORE;<U1FEF>
+<U1FFE> IGNORE;IGNORE;IGNORE;<U1FFE>
+<U2002> IGNORE;IGNORE;IGNORE;<U2002>
+<U2003> IGNORE;IGNORE;IGNORE;<U2003>
+<U2004> IGNORE;IGNORE;IGNORE;<U2004>
+<U2005> IGNORE;IGNORE;IGNORE;<U2005>
+<U2006> IGNORE;IGNORE;IGNORE;<U2006>
+<U200E> IGNORE;IGNORE;IGNORE;<U200E>
+<U200F> IGNORE;IGNORE;IGNORE;<U200F>
+<U2009> IGNORE;IGNORE;IGNORE;<U2009>
+<U200A> IGNORE;IGNORE;IGNORE;<U200A>
+<U2010> IGNORE;IGNORE;IGNORE;<U2010>
+<U2013> IGNORE;IGNORE;IGNORE;<U2013>
+<U2014> IGNORE;IGNORE;IGNORE;<U2014>
+<U2015> IGNORE;IGNORE;IGNORE;<U2015>
+<U2016> IGNORE;IGNORE;IGNORE;<U2016>
+<U2017> IGNORE;IGNORE;IGNORE;<U2017>
+<U201A> IGNORE;IGNORE;IGNORE;<U201A>
+<U201B> IGNORE;IGNORE;IGNORE;<U201B>
+<U201E> IGNORE;IGNORE;IGNORE;<U201E>
+<U201F> IGNORE;IGNORE;IGNORE;<U201F>
+<U2020> IGNORE;IGNORE;IGNORE;<U2020>
+<U2021> IGNORE;IGNORE;IGNORE;<U2021>
+<U2219> IGNORE;IGNORE;IGNORE;<U2219>
+<U2025> IGNORE;IGNORE;IGNORE;<U2025>
+<U2026> IGNORE;IGNORE;IGNORE;<U2026>
+<U2030> IGNORE;IGNORE;IGNORE;<U2030>
+<U2032> IGNORE;IGNORE;IGNORE;<U2032>
+<U2033> IGNORE;IGNORE;IGNORE;<U2033>
+<U2034> IGNORE;IGNORE;IGNORE;<U2034>
+<U2035> IGNORE;IGNORE;IGNORE;<U2035>
+<U2036> IGNORE;IGNORE;IGNORE;<U2036>
+<U2037> IGNORE;IGNORE;IGNORE;<U2037>
+<U2038> IGNORE;IGNORE;IGNORE;<U2038>
+<U2039> IGNORE;IGNORE;IGNORE;<U2039>
+<U203A> IGNORE;IGNORE;IGNORE;<U203A>
+<U203B> IGNORE;IGNORE;IGNORE;<U203B>
+<U203C> IGNORE;IGNORE;IGNORE;<U203C>
+<U203E> IGNORE;IGNORE;IGNORE;<U203E>
+<U207C> IGNORE;IGNORE;IGNORE;<U207C>
+<U2080> IGNORE;IGNORE;IGNORE;<U2080>
+<U2081> IGNORE;IGNORE;IGNORE;<U2081>
+<U2082> IGNORE;IGNORE;IGNORE;<U2082>
+<U2083> IGNORE;IGNORE;IGNORE;<U2083>
+<U2084> IGNORE;IGNORE;IGNORE;<U2084>
+<U2085> IGNORE;IGNORE;IGNORE;<U2085>
+<U2086> IGNORE;IGNORE;IGNORE;<U2086>
+<U2087> IGNORE;IGNORE;IGNORE;<U2087>
+<U2088> IGNORE;IGNORE;IGNORE;<U2088>
+<U2089> IGNORE;IGNORE;IGNORE;<U2089>
+<U208A> IGNORE;IGNORE;IGNORE;<U208A>
+<U208B> IGNORE;IGNORE;IGNORE;<U208B>
+<U208C> IGNORE;IGNORE;IGNORE;<U208C>
+<U208D> IGNORE;IGNORE;IGNORE;<U208D>
+<U208E> IGNORE;IGNORE;IGNORE;<U208E>
+<U20A3> IGNORE;IGNORE;IGNORE;<U20A3>
+<U20A4> IGNORE;IGNORE;IGNORE;<U20A4>
+<U20A7> IGNORE;IGNORE;IGNORE;<U20A7>
+<U20A9> IGNORE;IGNORE;IGNORE;<U20A9>
+<U2103> IGNORE;IGNORE;IGNORE;<U2103>
+<U2105> IGNORE;IGNORE;IGNORE;<U2105>
+<U2109> IGNORE;IGNORE;IGNORE;<U2109>
+<U2116> IGNORE;IGNORE;IGNORE;<U2116>
+<U2117> IGNORE;IGNORE;IGNORE;<U2117>
+<U211E> IGNORE;IGNORE;IGNORE;<U211E>
+<U2120> IGNORE;IGNORE;IGNORE;<U2120>
+<U2122> IGNORE;IGNORE;IGNORE;<U2122>
+<U2126> IGNORE;IGNORE;IGNORE;<U2126>
+<U212B> IGNORE;IGNORE;IGNORE;<U212B>
+<U2153> IGNORE;IGNORE;IGNORE;<U2153>
+<U2154> IGNORE;IGNORE;IGNORE;<U2154>
+<U2155> IGNORE;IGNORE;IGNORE;<U2155>
+<U2156> IGNORE;IGNORE;IGNORE;<U2156>
+<U2157> IGNORE;IGNORE;IGNORE;<U2157>
+<U2158> IGNORE;IGNORE;IGNORE;<U2158>
+<U2159> IGNORE;IGNORE;IGNORE;<U2159>
+<U215A> IGNORE;IGNORE;IGNORE;<U215A>
+<U2160> IGNORE;IGNORE;IGNORE;<U2160>
+<U2161> IGNORE;IGNORE;IGNORE;<U2161>
+<U2162> IGNORE;IGNORE;IGNORE;<U2162>
+<U2163> IGNORE;IGNORE;IGNORE;<U2163>
+<U2164> IGNORE;IGNORE;IGNORE;<U2164>
+<U2165> IGNORE;IGNORE;IGNORE;<U2165>
+<U2166> IGNORE;IGNORE;IGNORE;<U2166>
+<U2167> IGNORE;IGNORE;IGNORE;<U2167>
+<U2168> IGNORE;IGNORE;IGNORE;<U2168>
+<U2169> IGNORE;IGNORE;IGNORE;<U2169>
+<U216A> IGNORE;IGNORE;IGNORE;<U216A>
+<U216B> IGNORE;IGNORE;IGNORE;<U216B>
+<U216C> IGNORE;IGNORE;IGNORE;<U216C>
+<U216D> IGNORE;IGNORE;IGNORE;<U216D>
+<U216E> IGNORE;IGNORE;IGNORE;<U216E>
+<U216F> IGNORE;IGNORE;IGNORE;<U216F>
+<U2170> IGNORE;IGNORE;IGNORE;<U2170>
+<U2171> IGNORE;IGNORE;IGNORE;<U2171>
+<U2172> IGNORE;IGNORE;IGNORE;<U2172>
+<U2173> IGNORE;IGNORE;IGNORE;<U2173>
+<U2174> IGNORE;IGNORE;IGNORE;<U2174>
+<U2175> IGNORE;IGNORE;IGNORE;<U2175>
+<U2176> IGNORE;IGNORE;IGNORE;<U2176>
+<U2177> IGNORE;IGNORE;IGNORE;<U2177>
+<U2178> IGNORE;IGNORE;IGNORE;<U2178>
+<U2179> IGNORE;IGNORE;IGNORE;<U2179>
+<U217A> IGNORE;IGNORE;IGNORE;<U217A>
+<U217B> IGNORE;IGNORE;IGNORE;<U217B>
+<U217C> IGNORE;IGNORE;IGNORE;<U217C>
+<U217D> IGNORE;IGNORE;IGNORE;<U217D>
+<U217E> IGNORE;IGNORE;IGNORE;<U217E>
+<U217F> IGNORE;IGNORE;IGNORE;<U217F>
+<U2180> IGNORE;IGNORE;IGNORE;<U2180>
+<U2181> IGNORE;IGNORE;IGNORE;<U2181>
+<U2182> IGNORE;IGNORE;IGNORE;<U2182>
+<U2191> IGNORE;IGNORE;IGNORE;<U2191>
+<U2193> IGNORE;IGNORE;IGNORE;<U2193>
+<U2194> IGNORE;IGNORE;IGNORE;<U2194>
+<U2195> IGNORE;IGNORE;IGNORE;<U2195>
+<U2196> IGNORE;IGNORE;IGNORE;<U2196>
+<U2197> IGNORE;IGNORE;IGNORE;<U2197>
+<U2198> IGNORE;IGNORE;IGNORE;<U2198>
+<U2199> IGNORE;IGNORE;IGNORE;<U2199>
+<U21A8> IGNORE;IGNORE;IGNORE;<U21A8>
+<U21C0> IGNORE;IGNORE;IGNORE;<U21C0>
+<U21D0> IGNORE;IGNORE;IGNORE;<U21D0>
+<U21D2> IGNORE;IGNORE;IGNORE;<U21D2>
+<U21D4> IGNORE;IGNORE;IGNORE;<U21D4>
+<U2200> IGNORE;IGNORE;IGNORE;<U2200>
+<U2202> IGNORE;IGNORE;IGNORE;<U2202>
+<U2203> IGNORE;IGNORE;IGNORE;<U2203>
+<U2205> IGNORE;IGNORE;IGNORE;<U2205>
+<U2206> IGNORE;IGNORE;IGNORE;<U2206>
+<U2207> IGNORE;IGNORE;IGNORE;<U2207>
+<U2208> IGNORE;IGNORE;IGNORE;<U2208>
+<U220B> IGNORE;IGNORE;IGNORE;<U220B>
+<U220F> IGNORE;IGNORE;IGNORE;<U220F>
+<U2211> IGNORE;IGNORE;IGNORE;<U2211>
+<U2212> IGNORE;IGNORE;IGNORE;<U2212>
+<U2213> IGNORE;IGNORE;IGNORE;<U2213>
+<U2214> IGNORE;IGNORE;IGNORE;<U2214>
+<U2044> IGNORE;IGNORE;IGNORE;<U2044>
+<U2217> IGNORE;IGNORE;IGNORE;<U2217>
+<U2218> IGNORE;IGNORE;IGNORE;<U2218>
+<U2022> IGNORE;IGNORE;IGNORE;<U2022>
+<U221A> IGNORE;IGNORE;IGNORE;<U221A>
+<U221D> IGNORE;IGNORE;IGNORE;<U221D>
+<U221E> IGNORE;IGNORE;IGNORE;<U221E>
+<U221F> IGNORE;IGNORE;IGNORE;<U221F>
+<U2220> IGNORE;IGNORE;IGNORE;<U2220>
+<U2225> IGNORE;IGNORE;IGNORE;<U2225>
+<U2227> IGNORE;IGNORE;IGNORE;<U2227>
+<U2228> IGNORE;IGNORE;IGNORE;<U2228>
+<U2229> IGNORE;IGNORE;IGNORE;<U2229>
+<U222A> IGNORE;IGNORE;IGNORE;<U222A>
+<U222B> IGNORE;IGNORE;IGNORE;<U222B>
+<U222C> IGNORE;IGNORE;IGNORE;<U222C>
+<U222E> IGNORE;IGNORE;IGNORE;<U222E>
+<U2234> IGNORE;IGNORE;IGNORE;<U2234>
+<U2235> IGNORE;IGNORE;IGNORE;<U2235>
+<U2236> IGNORE;IGNORE;IGNORE;<U2236>
+<U2237> IGNORE;IGNORE;IGNORE;<U2237>
+<U223C> IGNORE;IGNORE;IGNORE;<U223C>
+<U223E> IGNORE;IGNORE;IGNORE;<U223E>
+<U2243> IGNORE;IGNORE;IGNORE;<U2243>
+<U2245> IGNORE;IGNORE;IGNORE;<U2245>
+<U2248> IGNORE;IGNORE;IGNORE;<U2248>
+<U224C> IGNORE;IGNORE;IGNORE;<U224C>
+<U2253> IGNORE;IGNORE;IGNORE;<U2253>
+<U2261> IGNORE;IGNORE;IGNORE;<U2261>
+<U226A> IGNORE;IGNORE;IGNORE;<U226A>
+<U226B> IGNORE;IGNORE;IGNORE;<U226B>
+<U226E> IGNORE;IGNORE;IGNORE;<U226E>
+<U226F> IGNORE;IGNORE;IGNORE;<U226F>
+<U2282> IGNORE;IGNORE;IGNORE;<U2282>
+<U2283> IGNORE;IGNORE;IGNORE;<U2283>
+<U2286> IGNORE;IGNORE;IGNORE;<U2286>
+<U2287> IGNORE;IGNORE;IGNORE;<U2287>
+<U2299> IGNORE;IGNORE;IGNORE;<U2299>
+<U229A> IGNORE;IGNORE;IGNORE;<U229A>
+<U22A5> IGNORE;IGNORE;IGNORE;<U22A5>
+<U22C5> IGNORE;IGNORE;IGNORE;<U22C5>
+<U22EE> IGNORE;IGNORE;IGNORE;<U22EE>
+<U2302> IGNORE;IGNORE;IGNORE;<U2302>
+<U2308> IGNORE;IGNORE;IGNORE;<U2308>
+<U2309> IGNORE;IGNORE;IGNORE;<U2309>
+<U230A> IGNORE;IGNORE;IGNORE;<U230A>
+<U230B> IGNORE;IGNORE;IGNORE;<U230B>
+<U2310> IGNORE;IGNORE;IGNORE;<U2310>
+<U2312> IGNORE;IGNORE;IGNORE;<U2312>
+<U2315> IGNORE;IGNORE;IGNORE;<U2315>
+<U2320> IGNORE;IGNORE;IGNORE;<U2320>
+<U2321> IGNORE;IGNORE;IGNORE;<U2321>
+<U2423> IGNORE;IGNORE;IGNORE;<U2423>
+<U2440> IGNORE;IGNORE;IGNORE;<U2440>
+<U2441> IGNORE;IGNORE;IGNORE;<U2441>
+<U2442> IGNORE;IGNORE;IGNORE;<U2442>
+<U2443> IGNORE;IGNORE;IGNORE;<U2443>
+<U2446> IGNORE;IGNORE;IGNORE;<U2446>
+<U2447> IGNORE;IGNORE;IGNORE;<U2447>
+<U2448> IGNORE;IGNORE;IGNORE;<U2448>
+<U2449> IGNORE;IGNORE;IGNORE;<U2449>
+<U2460> IGNORE;IGNORE;IGNORE;<U2460>
+<U2461> IGNORE;IGNORE;IGNORE;<U2461>
+<U2462> IGNORE;IGNORE;IGNORE;<U2462>
+<U2463> IGNORE;IGNORE;IGNORE;<U2463>
+<U2464> IGNORE;IGNORE;IGNORE;<U2464>
+<U2465> IGNORE;IGNORE;IGNORE;<U2465>
+<U2466> IGNORE;IGNORE;IGNORE;<U2466>
+<U2467> IGNORE;IGNORE;IGNORE;<U2467>
+<U2468> IGNORE;IGNORE;IGNORE;<U2468>
+<U2469> IGNORE;IGNORE;IGNORE;<U2469>
+<U246A> IGNORE;IGNORE;IGNORE;<U246A>
+<U246B> IGNORE;IGNORE;IGNORE;<U246B>
+<U246C> IGNORE;IGNORE;IGNORE;<U246C>
+<U246D> IGNORE;IGNORE;IGNORE;<U246D>
+<U246E> IGNORE;IGNORE;IGNORE;<U246E>
+<U246F> IGNORE;IGNORE;IGNORE;<U246F>
+<U2470> IGNORE;IGNORE;IGNORE;<U2470>
+<U2471> IGNORE;IGNORE;IGNORE;<U2471>
+<U2472> IGNORE;IGNORE;IGNORE;<U2472>
+<U2473> IGNORE;IGNORE;IGNORE;<U2473>
+<U2474> IGNORE;IGNORE;IGNORE;<U2474>
+<U2475> IGNORE;IGNORE;IGNORE;<U2475>
+<U2476> IGNORE;IGNORE;IGNORE;<U2476>
+<U2477> IGNORE;IGNORE;IGNORE;<U2477>
+<U2478> IGNORE;IGNORE;IGNORE;<U2478>
+<U2479> IGNORE;IGNORE;IGNORE;<U2479>
+<U247A> IGNORE;IGNORE;IGNORE;<U247A>
+<U247B> IGNORE;IGNORE;IGNORE;<U247B>
+<U247C> IGNORE;IGNORE;IGNORE;<U247C>
+<U247D> IGNORE;IGNORE;IGNORE;<U247D>
+<U247E> IGNORE;IGNORE;IGNORE;<U247E>
+<U247F> IGNORE;IGNORE;IGNORE;<U247F>
+<U2480> IGNORE;IGNORE;IGNORE;<U2480>
+<U2481> IGNORE;IGNORE;IGNORE;<U2481>
+<U2482> IGNORE;IGNORE;IGNORE;<U2482>
+<U2483> IGNORE;IGNORE;IGNORE;<U2483>
+<U2484> IGNORE;IGNORE;IGNORE;<U2484>
+<U2485> IGNORE;IGNORE;IGNORE;<U2485>
+<U2486> IGNORE;IGNORE;IGNORE;<U2486>
+<U2487> IGNORE;IGNORE;IGNORE;<U2487>
+<U2488> IGNORE;IGNORE;IGNORE;<U2488>
+<U2489> IGNORE;IGNORE;IGNORE;<U2489>
+<U248A> IGNORE;IGNORE;IGNORE;<U248A>
+<U248B> IGNORE;IGNORE;IGNORE;<U248B>
+<U248C> IGNORE;IGNORE;IGNORE;<U248C>
+<U248D> IGNORE;IGNORE;IGNORE;<U248D>
+<U248E> IGNORE;IGNORE;IGNORE;<U248E>
+<U248F> IGNORE;IGNORE;IGNORE;<U248F>
+<U2490> IGNORE;IGNORE;IGNORE;<U2490>
+<U2491> IGNORE;IGNORE;IGNORE;<U2491>
+<U2492> IGNORE;IGNORE;IGNORE;<U2492>
+<U2493> IGNORE;IGNORE;IGNORE;<U2493>
+<U2494> IGNORE;IGNORE;IGNORE;<U2494>
+<U2495> IGNORE;IGNORE;IGNORE;<U2495>
+<U2496> IGNORE;IGNORE;IGNORE;<U2496>
+<U2497> IGNORE;IGNORE;IGNORE;<U2497>
+<U2498> IGNORE;IGNORE;IGNORE;<U2498>
+<U2499> IGNORE;IGNORE;IGNORE;<U2499>
+<U249A> IGNORE;IGNORE;IGNORE;<U249A>
+<U249B> IGNORE;IGNORE;IGNORE;<U249B>
+<U24EA> IGNORE;IGNORE;IGNORE;<U24EA>
+<U2500> IGNORE;IGNORE;IGNORE;<U2500>
+<U2550> IGNORE;IGNORE;IGNORE;<U2550>
+<U2502> IGNORE;IGNORE;IGNORE;<U2502>
+<U2551> IGNORE;IGNORE;IGNORE;<U2551>
+<U2504> IGNORE;IGNORE;IGNORE;<U2504>
+<U2505> IGNORE;IGNORE;IGNORE;<U2505>
+<U2506> IGNORE;IGNORE;IGNORE;<U2506>
+<U2507> IGNORE;IGNORE;IGNORE;<U2507>
+<U2508> IGNORE;IGNORE;IGNORE;<U2508>
+<U2509> IGNORE;IGNORE;IGNORE;<U2509>
+<U250A> IGNORE;IGNORE;IGNORE;<U250A>
+<U250B> IGNORE;IGNORE;IGNORE;<U250B>
+<U250C> IGNORE;IGNORE;IGNORE;<U250C>
+<U2552> IGNORE;IGNORE;IGNORE;<U2552>
+<U2553> IGNORE;IGNORE;IGNORE;<U2553>
+<U2554> IGNORE;IGNORE;IGNORE;<U2554>
+<U2510> IGNORE;IGNORE;IGNORE;<U2510>
+<U2555> IGNORE;IGNORE;IGNORE;<U2555>
+<U2556> IGNORE;IGNORE;IGNORE;<U2556>
+<U2557> IGNORE;IGNORE;IGNORE;<U2557>
+<U2514> IGNORE;IGNORE;IGNORE;<U2514>
+<U2558> IGNORE;IGNORE;IGNORE;<U2558>
+<U2559> IGNORE;IGNORE;IGNORE;<U2559>
+<U255A> IGNORE;IGNORE;IGNORE;<U255A>
+<U2518> IGNORE;IGNORE;IGNORE;<U2518>
+<U255B> IGNORE;IGNORE;IGNORE;<U255B>
+<U255C> IGNORE;IGNORE;IGNORE;<U255C>
+<U255D> IGNORE;IGNORE;IGNORE;<U255D>
+<U251C> IGNORE;IGNORE;IGNORE;<U251C>
+<U255E> IGNORE;IGNORE;IGNORE;<U255E>
+<U251E> IGNORE;IGNORE;IGNORE;<U251E>
+<U251F> IGNORE;IGNORE;IGNORE;<U251F>
+<U255F> IGNORE;IGNORE;IGNORE;<U255F>
+<U2521> IGNORE;IGNORE;IGNORE;<U2521>
+<U2522> IGNORE;IGNORE;IGNORE;<U2522>
+<U2560> IGNORE;IGNORE;IGNORE;<U2560>
+<U2524> IGNORE;IGNORE;IGNORE;<U2524>
+<U2561> IGNORE;IGNORE;IGNORE;<U2561>
+<U2526> IGNORE;IGNORE;IGNORE;<U2526>
+<U2527> IGNORE;IGNORE;IGNORE;<U2527>
+<U2562> IGNORE;IGNORE;IGNORE;<U2562>
+<U2529> IGNORE;IGNORE;IGNORE;<U2529>
+<U252A> IGNORE;IGNORE;IGNORE;<U252A>
+<U2563> IGNORE;IGNORE;IGNORE;<U2563>
+<U252C> IGNORE;IGNORE;IGNORE;<U252C>
+<U252D> IGNORE;IGNORE;IGNORE;<U252D>
+<U252E> IGNORE;IGNORE;IGNORE;<U252E>
+<U2564> IGNORE;IGNORE;IGNORE;<U2564>
+<U2565> IGNORE;IGNORE;IGNORE;<U2565>
+<U2531> IGNORE;IGNORE;IGNORE;<U2531>
+<U2532> IGNORE;IGNORE;IGNORE;<U2532>
+<U2566> IGNORE;IGNORE;IGNORE;<U2566>
+<U2534> IGNORE;IGNORE;IGNORE;<U2534>
+<U2535> IGNORE;IGNORE;IGNORE;<U2535>
+<U2536> IGNORE;IGNORE;IGNORE;<U2536>
+<U2567> IGNORE;IGNORE;IGNORE;<U2567>
+<U2568> IGNORE;IGNORE;IGNORE;<U2568>
+<U2539> IGNORE;IGNORE;IGNORE;<U2539>
+<U253A> IGNORE;IGNORE;IGNORE;<U253A>
+<U2569> IGNORE;IGNORE;IGNORE;<U2569>
+<U253C> IGNORE;IGNORE;IGNORE;<U253C>
+<U253D> IGNORE;IGNORE;IGNORE;<U253D>
+<U253E> IGNORE;IGNORE;IGNORE;<U253E>
+<U256A> IGNORE;IGNORE;IGNORE;<U256A>
+<U2540> IGNORE;IGNORE;IGNORE;<U2540>
+<U2541> IGNORE;IGNORE;IGNORE;<U2541>
+<U256B> IGNORE;IGNORE;IGNORE;<U256B>
+<U2543> IGNORE;IGNORE;IGNORE;<U2543>
+<U2544> IGNORE;IGNORE;IGNORE;<U2544>
+<U2545> IGNORE;IGNORE;IGNORE;<U2545>
+<U2546> IGNORE;IGNORE;IGNORE;<U2546>
+<U2547> IGNORE;IGNORE;IGNORE;<U2547>
+<U2548> IGNORE;IGNORE;IGNORE;<U2548>
+<U2549> IGNORE;IGNORE;IGNORE;<U2549>
+<U254A> IGNORE;IGNORE;IGNORE;<U254A>
+<U256C> IGNORE;IGNORE;IGNORE;<U256C>
+<U2571> IGNORE;IGNORE;IGNORE;<U2571>
+<U2572> IGNORE;IGNORE;IGNORE;<U2572>
+<U2580> IGNORE;IGNORE;IGNORE;<U2580>
+<U2584> IGNORE;IGNORE;IGNORE;<U2584>
+<U2588> IGNORE;IGNORE;IGNORE;<U2588>
+<U258C> IGNORE;IGNORE;IGNORE;<U258C>
+<U2590> IGNORE;IGNORE;IGNORE;<U2590>
+<U2591> IGNORE;IGNORE;IGNORE;<U2591>
+<U2592> IGNORE;IGNORE;IGNORE;<U2592>
+<U2593> IGNORE;IGNORE;IGNORE;<U2593>
+<U25A0> IGNORE;IGNORE;IGNORE;<U25A0>
+<U25A1> IGNORE;IGNORE;IGNORE;<U25A1>
+<U25A2> IGNORE;IGNORE;IGNORE;<U25A2>
+<U25A3> IGNORE;IGNORE;IGNORE;<U25A3>
+<U25A4> IGNORE;IGNORE;IGNORE;<U25A4>
+<U25A5> IGNORE;IGNORE;IGNORE;<U25A5>
+<U25A6> IGNORE;IGNORE;IGNORE;<U25A6>
+<U25A7> IGNORE;IGNORE;IGNORE;<U25A7>
+<U25A8> IGNORE;IGNORE;IGNORE;<U25A8>
+<U25A9> IGNORE;IGNORE;IGNORE;<U25A9>
+<U25AA> IGNORE;IGNORE;IGNORE;<U25AA>
+<U25AC> IGNORE;IGNORE;IGNORE;<U25AC>
+<U25AD> IGNORE;IGNORE;IGNORE;<U25AD>
+<U25B2> IGNORE;IGNORE;IGNORE;<U25B2>
+<U25B3> IGNORE;IGNORE;IGNORE;<U25B3>
+<U25B7> IGNORE;IGNORE;IGNORE;<U25B7>
+<U25BA> IGNORE;IGNORE;IGNORE;<U25BA>
+<U25BC> IGNORE;IGNORE;IGNORE;<U25BC>
+<U25BD> IGNORE;IGNORE;IGNORE;<U25BD>
+<U25C1> IGNORE;IGNORE;IGNORE;<U25C1>
+<U25C4> IGNORE;IGNORE;IGNORE;<U25C4>
+<U25C6> IGNORE;IGNORE;IGNORE;<U25C6>
+<U25C7> IGNORE;IGNORE;IGNORE;<U25C7>
+<U25CA> IGNORE;IGNORE;IGNORE;<U25CA>
+<U25CB> IGNORE;IGNORE;IGNORE;<U25CB>
+<U25CE> IGNORE;IGNORE;IGNORE;<U25CE>
+<U25CF> IGNORE;IGNORE;IGNORE;<U25CF>
+<U25D0> IGNORE;IGNORE;IGNORE;<U25D0>
+<U25D1> IGNORE;IGNORE;IGNORE;<U25D1>
+<U25D8> IGNORE;IGNORE;IGNORE;<U25D8>
+<U25D9> IGNORE;IGNORE;IGNORE;<U25D9>
+<U25E2> IGNORE;IGNORE;IGNORE;<U25E2>
+<U25E3> IGNORE;IGNORE;IGNORE;<U25E3>
+<U25EF> IGNORE;IGNORE;IGNORE;<U25EF>
+<U2605> IGNORE;IGNORE;IGNORE;<U2605>
+<U2606> IGNORE;IGNORE;IGNORE;<U2606>
+<U260E> IGNORE;IGNORE;IGNORE;<U260E>
+<U260F> IGNORE;IGNORE;IGNORE;<U260F>
+<U261C> IGNORE;IGNORE;IGNORE;<U261C>
+<U261E> IGNORE;IGNORE;IGNORE;<U261E>
+<U263A> IGNORE;IGNORE;IGNORE;<U263A>
+<U263B> IGNORE;IGNORE;IGNORE;<U263B>
+<U263C> IGNORE;IGNORE;IGNORE;<U263C>
+<U2640> IGNORE;IGNORE;IGNORE;<U2640>
+<U2642> IGNORE;IGNORE;IGNORE;<U2642>
+<U2660> IGNORE;IGNORE;IGNORE;<U2660>
+<U2661> IGNORE;IGNORE;IGNORE;<U2661>
+<U2662> IGNORE;IGNORE;IGNORE;<U2662>
+<U2663> IGNORE;IGNORE;IGNORE;<U2663>
+<U2664> IGNORE;IGNORE;IGNORE;<U2664>
+<U2665> IGNORE;IGNORE;IGNORE;<U2665>
+<U2666> IGNORE;IGNORE;IGNORE;<U2666>
+<U2667> IGNORE;IGNORE;IGNORE;<U2667>
+<U2669> IGNORE;IGNORE;IGNORE;<U2669>
+<U266A> IGNORE;IGNORE;IGNORE;<U266A>
+<U266B> IGNORE;IGNORE;IGNORE;<U266B>
+<U266C> IGNORE;IGNORE;IGNORE;<U266C>
+<U266D> IGNORE;IGNORE;IGNORE;<U266D>
+<U266E> IGNORE;IGNORE;IGNORE;<U266E>
+<U266F> IGNORE;IGNORE;IGNORE;<U266F>
+<U2713> IGNORE;IGNORE;IGNORE;<U2713>
+<U2717> IGNORE;IGNORE;IGNORE;<U2717>
+<U2720> IGNORE;IGNORE;IGNORE;<U2720>
+<U3000> IGNORE;IGNORE;IGNORE;<U3000>
+<U3001> IGNORE;IGNORE;IGNORE;<U3001>
+<U3002> IGNORE;IGNORE;IGNORE;<U3002>
+<U3003> IGNORE;IGNORE;IGNORE;<U3003>
+<U3004> IGNORE;IGNORE;IGNORE;<U3004>
+<U3005> IGNORE;IGNORE;IGNORE;<U3005>
+<U3006> IGNORE;IGNORE;IGNORE;<U3006>
+<U3007> IGNORE;IGNORE;IGNORE;<U3007>
+<U300A> IGNORE;IGNORE;IGNORE;<U300A>
+<U300B> IGNORE;IGNORE;IGNORE;<U300B>
+<U300C> IGNORE;IGNORE;IGNORE;<U300C>
+<U300D> IGNORE;IGNORE;IGNORE;<U300D>
+<U300E> IGNORE;IGNORE;IGNORE;<U300E>
+<U300F> IGNORE;IGNORE;IGNORE;<U300F>
+<U3010> IGNORE;IGNORE;IGNORE;<U3010>
+<U3011> IGNORE;IGNORE;IGNORE;<U3011>
+<U3012> IGNORE;IGNORE;IGNORE;<U3012>
+<U3013> IGNORE;IGNORE;IGNORE;<U3013>
+<U3014> IGNORE;IGNORE;IGNORE;<U3014>
+<U3015> IGNORE;IGNORE;IGNORE;<U3015>
+<U3016> IGNORE;IGNORE;IGNORE;<U3016>
+<U3017> IGNORE;IGNORE;IGNORE;<U3017>
+<U301C> IGNORE;IGNORE;IGNORE;<U301C>
+<U3020> IGNORE;IGNORE;IGNORE;<U3020>
+<U309B> IGNORE;IGNORE;IGNORE;<U309B>
+<U309C> IGNORE;IGNORE;IGNORE;<U309C>
+<U309D> IGNORE;IGNORE;IGNORE;<U309D>
+<U309E> IGNORE;IGNORE;IGNORE;<U309E>
+<U30FB> IGNORE;IGNORE;IGNORE;<U30FB>
+<U30FC> IGNORE;IGNORE;IGNORE;<U30FC>
+<U30FD> IGNORE;IGNORE;IGNORE;<U30FD>
+<U30FE> IGNORE;IGNORE;IGNORE;<U30FE>
+<U321C> IGNORE;IGNORE;IGNORE;<U321C>
+<U3220> IGNORE;IGNORE;IGNORE;<U3220>
+<U3221> IGNORE;IGNORE;IGNORE;<U3221>
+<U3222> IGNORE;IGNORE;IGNORE;<U3222>
+<U3223> IGNORE;IGNORE;IGNORE;<U3223>
+<U3224> IGNORE;IGNORE;IGNORE;<U3224>
+<U3225> IGNORE;IGNORE;IGNORE;<U3225>
+<U3226> IGNORE;IGNORE;IGNORE;<U3226>
+<U3227> IGNORE;IGNORE;IGNORE;<U3227>
+<U3228> IGNORE;IGNORE;IGNORE;<U3228>
+<U3229> IGNORE;IGNORE;IGNORE;<U3229>
+<U327F> IGNORE;IGNORE;IGNORE;<U327F>
+<U33C2> IGNORE;IGNORE;IGNORE;<U33C2>
+<U33D8> IGNORE;IGNORE;IGNORE;<U33D8>
+<U0000> IGNORE;IGNORE;IGNORE;<U0000>
+<U0001> IGNORE;IGNORE;IGNORE;<U0001>
+<U0002> IGNORE;IGNORE;IGNORE;<U0002>
+<U0003> IGNORE;IGNORE;IGNORE;<U0003>
+<U0004> IGNORE;IGNORE;IGNORE;<U0004>
+<U0005> IGNORE;IGNORE;IGNORE;<U0005>
+<U0006> IGNORE;IGNORE;IGNORE;<U0006>
+<U0007> IGNORE;IGNORE;IGNORE;<U0007>
+<U0008> IGNORE;IGNORE;IGNORE;<U0008>
+<U000E> IGNORE;IGNORE;IGNORE;<U000E>
+<U000F> IGNORE;IGNORE;IGNORE;<U000F>
+<U0010> IGNORE;IGNORE;IGNORE;<U0010>
+<U0011> IGNORE;IGNORE;IGNORE;<U0011>
+<U0012> IGNORE;IGNORE;IGNORE;<U0012>
+<U0013> IGNORE;IGNORE;IGNORE;<U0013>
+<U0014> IGNORE;IGNORE;IGNORE;<U0014>
+<U0015> IGNORE;IGNORE;IGNORE;<U0015>
+<U0016> IGNORE;IGNORE;IGNORE;<U0016>
+<U0017> IGNORE;IGNORE;IGNORE;<U0017>
+<U0018> IGNORE;IGNORE;IGNORE;<U0018>
+<U0019> IGNORE;IGNORE;IGNORE;<U0019>
+<U001A> IGNORE;IGNORE;IGNORE;<U001A>
+<U001B> IGNORE;IGNORE;IGNORE;<U001B>
+<U001C> IGNORE;IGNORE;IGNORE;<U001C>
+<U001D> IGNORE;IGNORE;IGNORE;<U001D>
+<U001E> IGNORE;IGNORE;IGNORE;<U001E>
+<U001F> IGNORE;IGNORE;IGNORE;<U001F>
+<U007F> IGNORE;IGNORE;IGNORE;<U007F>
+<U0080> IGNORE;IGNORE;IGNORE;<U0080>
+<U0081> IGNORE;IGNORE;IGNORE;<U0081>
+<U0082> IGNORE;IGNORE;IGNORE;<U0082>
+<U0083> IGNORE;IGNORE;IGNORE;<U0083>
+<U0084> IGNORE;IGNORE;IGNORE;<U0084>
+<U0085> IGNORE;IGNORE;IGNORE;<U0085>
+<U0086> IGNORE;IGNORE;IGNORE;<U0086>
+<U0087> IGNORE;IGNORE;IGNORE;<U0087>
+<U0088> IGNORE;IGNORE;IGNORE;<U0088>
+<U0089> IGNORE;IGNORE;IGNORE;<U0089>
+<U008A> IGNORE;IGNORE;IGNORE;<U008A>
+<U008B> IGNORE;IGNORE;IGNORE;<U008B>
+<U008C> IGNORE;IGNORE;IGNORE;<U008C>
+<U008D> IGNORE;IGNORE;IGNORE;<U008D>
+<U008E> IGNORE;IGNORE;IGNORE;<U008E>
+<U008F> IGNORE;IGNORE;IGNORE;<U008F>
+<U0090> IGNORE;IGNORE;IGNORE;<U0090>
+<U0091> IGNORE;IGNORE;IGNORE;<U0091>
+<U0092> IGNORE;IGNORE;IGNORE;<U0092>
+<U0093> IGNORE;IGNORE;IGNORE;<U0093>
+<U0094> IGNORE;IGNORE;IGNORE;<U0094>
+<U0095> IGNORE;IGNORE;IGNORE;<U0095>
+<U0096> IGNORE;IGNORE;IGNORE;<U0096>
+<U0097> IGNORE;IGNORE;IGNORE;<U0097>
+<U0098> IGNORE;IGNORE;IGNORE;<U0098>
+<U0099> IGNORE;IGNORE;IGNORE;<U0099>
+<U009A> IGNORE;IGNORE;IGNORE;<U009A>
+<U009B> IGNORE;IGNORE;IGNORE;<U009B>
+<U009C> IGNORE;IGNORE;IGNORE;<U009C>
+<U009D> IGNORE;IGNORE;IGNORE;<U009D>
+<U009E> IGNORE;IGNORE;IGNORE;<U009E>
+<U009F> IGNORE;IGNORE;IGNORE;<U009F>
+<UE000> IGNORE;IGNORE;IGNORE;<UE000>
+<UE001> IGNORE;IGNORE;IGNORE;<UE001>
+<UE002> IGNORE;IGNORE;IGNORE;<UE002>
+<U0301> IGNORE;IGNORE;IGNORE;<U0301>
+<UE004> IGNORE;IGNORE;IGNORE;<UE004>
+<UE005> IGNORE;IGNORE;IGNORE;<UE005>
+<UE006> IGNORE;IGNORE;IGNORE;<UE006>
+<UE007> IGNORE;IGNORE;IGNORE;<UE007>
+<UE008> IGNORE;IGNORE;IGNORE;<UE008>
+<UE009> IGNORE;IGNORE;IGNORE;<UE009>
+<UE00A> IGNORE;IGNORE;IGNORE;<UE00A>
+<UE00B> IGNORE;IGNORE;IGNORE;<UE00B>
+<UE00C> IGNORE;IGNORE;IGNORE;<UE00C>
+<UE00D> IGNORE;IGNORE;IGNORE;<UE00D>
+<UE00E> IGNORE;IGNORE;IGNORE;<UE00E>
+<UE00F> IGNORE;IGNORE;IGNORE;<UE00F>
+<"=> IGNORE;IGNORE;IGNORE;<"=>
+<UE011> IGNORE;IGNORE;IGNORE;<UE011>
+<UE012> IGNORE;IGNORE;IGNORE;<UE012>
+<UE013> IGNORE;IGNORE;IGNORE;<UE013>
+<UE014> IGNORE;IGNORE;IGNORE;<UE014>
+<UE015> IGNORE;IGNORE;IGNORE;<UE015>
+<UE017> IGNORE;IGNORE;IGNORE;<UE017>
+<UE018> IGNORE;IGNORE;IGNORE;<UE018>
+<UE019> IGNORE;IGNORE;IGNORE;<UE019>
+UNDEFINED IGNORE;IGNORE;IGNORE
+
+<U0030> <U0030>;<U0030>;IGNORE;IGNORE
+<U2070> <U0030>;<U2070>;IGNORE;IGNORE
+<U215B> <U0030>;<U215B>;IGNORE;IGNORE
+<U00BC> <U0030>;<U00BC>;IGNORE;IGNORE
+<U215C> <U0030>;<U215C>;IGNORE;IGNORE
+<U00BD> <U0030>;<U00BD>;IGNORE;IGNORE
+<U215D> <U0030>;<U215D>;IGNORE;IGNORE
+<U00BE> <U0030>;<U00BE>;IGNORE;IGNORE
+<U215E> <U0030>;<U215E>;IGNORE;IGNORE
+<U0031> <U0031>;<U0031>;IGNORE;IGNORE
+<U0032> <U0032>;<U0032>;IGNORE;IGNORE
+<U0033> <U0033>;<U0033>;IGNORE;IGNORE
+<U0034> <U0034>;<U0034>;IGNORE;IGNORE
+<U0035> <U0035>;<U0035>;IGNORE;IGNORE
+<U0036> <U0036>;<U0036>;IGNORE;IGNORE
+<U0037> <U0037>;<U0037>;IGNORE;IGNORE
+<U0038> <U0038>;<U0038>;IGNORE;IGNORE
+<U0039> <U0039>;<U0039>;IGNORE;IGNORE
+<U00B9> <U0031>;<U00B9>;IGNORE;IGNORE
+<U00B2> <U0032>;<U00B2>;IGNORE;IGNORE
+<U00B3> <U0033>;<U00B3>;IGNORE;IGNORE
+<U2074> <U0034>;<U2074>;IGNORE;IGNORE
+<U2075> <U0035>;<U2075>;IGNORE;IGNORE
+<U2076> <U0036>;<U2076>;IGNORE;IGNORE
+<U2077> <U0037>;<U2077>;IGNORE;IGNORE
+<U2078> <U0038>;<U2078>;IGNORE;IGNORE
+<U2079> <U0039>;<U2079>;IGNORE;IGNORE
+<U0041> <U0041>;<NONE>;<CAPITAL>;IGNORE
+<U0061> <U0041>;<NONE>;<SMALL>;IGNORE
+<U00AA> <U0041>;<NONE>;<U00AA>;IGNORE
+<U00C1> <U0041>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E1> <U0041>;<ACUTE>;<SMALL>;IGNORE
+<U00C0> <U0041>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E0> <U0041>;<GRAVE>;<SMALL>;IGNORE
+<U0200> <U0041>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0201> <U0041>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0102> <U0041>;<BREVE>;<CAPITAL>;IGNORE
+<U0103> <U0041>;<BREVE>;<SMALL>;IGNORE
+<U1EAE> <U0041>;<BREVE+ACUTE>;<CAPITAL>;IGNORE
+<U1EAF> <U0041>;<BREVE+ACUTE>;<SMALL>;IGNORE
+<U1EB0> <U0041>;<BREVE+GRAVE>;<CAPITAL>;IGNORE
+<U1EB1> <U0041>;<BREVE+GRAVE>;<SMALL>;IGNORE
+<U1EB2> <U0041>;<BREVE+HOOK>;<CAPITAL>;IGNORE
+<U1EB3> <U0041>;<BREVE+HOOK>;<SMALL>;IGNORE
+<U1EB4> <U0041>;<BREVE+TILDE>;<CAPITAL>;IGNORE
+<U1EB5> <U0041>;<BREVE+TILDE>;<SMALL>;IGNORE
+<U1EB6> <U0041>;<BREVE+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB7> <U0041>;<BREVE+DOT-BELOW>;<SMALL>;IGNORE
+<U0202> <U0041>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0203> <U0041>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00C2> <U0041>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00E2> <U0041>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EA4> <U0041>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EA5> <U0041>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EA6> <U0041>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EA7> <U0041>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EA8> <U0041>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EA9> <U0041>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EAA> <U0041>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EAB> <U0041>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EAC> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EAD> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01CD> <U0041>;<CARON>;<CAPITAL>;IGNORE
+<U01CE> <U0041>;<CARON>;<SMALL>;IGNORE
+<U00C5> <U0041>;<RING>;<CAPITAL>;IGNORE
+<U00E5> <U0041>;<RING>;<SMALL>;IGNORE
+<U01FA> <U0041>;<RING+ACUTE>;<CAPITAL>;IGNORE
+<U01FB> <U0041>;<RING+ACUTE>;<SMALL>;IGNORE
+<U1E00> <U0041>;<RING-BELOW>;<CAPITAL>;IGNORE
+<U1E01> <U0041>;<RING-BELOW>;<SMALL>;IGNORE
+<U00C4> <U0041>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00E4> <U0041>;<DIAERESIS>;<SMALL>;IGNORE
+<U01DE> <U0041>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01DF> <U0041>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U1EA2> <U0041>;<HOOK>;<CAPITAL>;IGNORE
+<U1EA3> <U0041>;<HOOK>;<SMALL>;IGNORE
+<U00C3> <U0041>;<TILDE>;<CAPITAL>;IGNORE
+<U00E3> <U0041>;<TILDE>;<SMALL>;IGNORE
+<U1EA0> <U0041>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EA1> <U0041>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0100> <U0041>;<MACRON>;<CAPITAL>;IGNORE
+<U0101> <U0041>;<MACRON>;<SMALL>;IGNORE
+<U01E0> <U0041>;<MACRON+DOT>;<CAPITAL>;IGNORE
+<U01E1> <U0041>;<MACRON+DOT>;<SMALL>;IGNORE
+<a8>
+<U0104> <U0104>;<NONE>;<CAPITAL>;IGNORE
+<U0105> <U0104>;<NONE>;<SMALL>;IGNORE
+<U00C6> "<U0041><U0045>";"<U00C6><U00C6>";"<CAPITAL><CAPITAL>";IGNORE
+<U00E6> "<U0041><U0045>";"<U00C6><U00C6>";"<SMALL><SMALL>";IGNORE
+<U01FC> "<U0041><U0045>";"<U01FC><U01FC>";"<CAPITAL><CAPITAL>";IGNORE
+<U01FD> "<U0041><U0045>";"<U01FC><U01FC>";"<SMALL><SMALL>";IGNORE
+<U01E2> "<U0041><U0045>";"<U01E2><U01E2>";"<CAPITAL><CAPITAL>";IGNORE
+<U01E3> "<U0041><U0045>";"<U01E2><U01E2>";"<SMALL><SMALL>";IGNORE
+<U0042> <U0042>;<NONE>;<CAPITAL>;IGNORE
+<U0062> <U0042>;<NONE>;<SMALL>;IGNORE
+<U1E02> <U0042>;<DOT>;<CAPITAL>;IGNORE
+<U1E03> <U0042>;<DOT>;<SMALL>;IGNORE
+<U1E04> <U0042>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E05> <U0042>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E06> <U0042>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E07> <U0042>;<LINE-BELOW>;<SMALL>;IGNORE
+<b8>
+<U0043> <U0043>;<NONE>;<CAPITAL>;IGNORE
+<U0063> <U0043>;<NONE>;<SMALL>;IGNORE
+<U0108> <U0043>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0109> <U0043>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U010C> <U0043>;<CARON>;<CAPITAL>;IGNORE
+<U010D> <U0043>;<CARON>;<SMALL>;IGNORE
+<U0187> <U0043>;<HOOK>;<CAPITAL>;IGNORE
+<U0188> <U0043>;<HOOK>;<SMALL>;IGNORE
+<U010A> <U0043>;<DOT>;<CAPITAL>;IGNORE
+<U010B> <U0043>;<DOT>;<SMALL>;IGNORE
+<U00C7> <U0043>;<CEDILLA>;<CAPITAL>;IGNORE
+<U00E7> <U0043>;<CEDILLA>;<SMALL>;IGNORE
+<U1E08> <U0043>;<CEDILLA+ACUTE>;<CAPITAL>;IGNORE
+<U1E09> <U0043>;<CEDILLA+ACUTE>;<SMALL>;IGNORE
+<c8>
+<U0106> <U0106>;<NONE>;<CAPITAL>;IGNORE
+<U0107> <U0106>;<NONE>;<SMALL>;IGNORE
+<U0044> <U0044>;<NONE>;<CAPITAL>;IGNORE
+<U0064> <U0044>;<NONE>;<SMALL>;IGNORE
+<U010E> <U0044>;<CARON>;<CAPITAL>;IGNORE
+<U010F> <U0044>;<CARON>;<SMALL>;IGNORE
+<U1E0A> <U0044>;<DOT>;<CAPITAL>;IGNORE
+<U1E0B> <U0044>;<DOT>;<SMALL>;IGNORE
+<U1E0C> <U0044>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E0D> <U0044>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0110> <U0044>;<STROKE>;<CAPITAL>;IGNORE
+<U0111> <U0044>;<STROKE>;<SMALL>;IGNORE
+<U1E10> <U0044>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E11> <U0044>;<CEDILLA>;<SMALL>;IGNORE
+<U1E12> <U0044>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E13> <U0044>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E0E> <U0044>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E0F> <U0044>;<LINE-BELOW>;<SMALL>;IGNORE
+<d8>
+<U0045> <U0045>;<NONE>;<CAPITAL>;IGNORE
+<U0065> <U0045>;<NONE>;<SMALL>;IGNORE
+<U00C9> <U0045>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E9> <U0045>;<ACUTE>;<SMALL>;IGNORE
+<U00C8> <U0045>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E8> <U0045>;<GRAVE>;<SMALL>;IGNORE
+<U0204> <U0045>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0205> <U0045>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0114> <U0045>;<BREVE>;<CAPITAL>;IGNORE
+<U0115> <U0045>;<BREVE>;<SMALL>;IGNORE
+<U0206> <U0045>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0207> <U0045>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CA> <U0045>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EA> <U0045>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EBE> <U0045>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EBF> <U0045>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EC0> <U0045>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EC1> <U0045>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EC2> <U0045>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EC3> <U0045>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EC4> <U0045>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EC5> <U0045>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EC6> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EC7> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U011A> <U0045>;<CARON>;<CAPITAL>;IGNORE
+<U011B> <U0045>;<CARON>;<SMALL>;IGNORE
+<U00CB> <U0045>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EB> <U0045>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EBA> <U0045>;<HOOK>;<CAPITAL>;IGNORE
+<U1EBB> <U0045>;<HOOK>;<SMALL>;IGNORE
+<U1EBC> <U0045>;<TILDE>;<CAPITAL>;IGNORE
+<U1EBD> <U0045>;<TILDE>;<SMALL>;IGNORE
+<U1E1A> <U0045>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E1B> <U0045>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0116> <U0045>;<DOT>;<CAPITAL>;IGNORE
+<U0117> <U0045>;<DOT>;<SMALL>;IGNORE
+<U1EB8> <U0045>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB9> <U0045>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E1C> <U0045>;<CEDILLA+BREVE>;<CAPITAL>;IGNORE
+<U1E1D> <U0045>;<CEDILLA+BREVE>;<SMALL>;IGNORE
+<U0112> <U0045>;<MACRON>;<CAPITAL>;IGNORE
+<U0113> <U0045>;<MACRON>;<SMALL>;IGNORE
+<U1E16> <U0045>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E17> <U0045>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E14> <U0045>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E15> <U0045>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U1E18> <U0045>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E19> <U0045>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<e8>
+<U0118> <U0118>;<NONE>;<CAPITAL>;IGNORE
+<U0119> <U0118>;<NONE>;<SMALL>;IGNORE
+<U0046> <U0046>;<NONE>;<CAPITAL>;IGNORE
+<U0066> <U0046>;<NONE>;<SMALL>;IGNORE
+<U0191> <U0046>;<HOOK>;<CAPITAL>;IGNORE
+<U0192> <U0046>;<HOOK>;<SMALL>;IGNORE
+<U1E1E> <U0046>;<DOT>;<CAPITAL>;IGNORE
+<U1E1F> <U0046>;<DOT>;<SMALL>;IGNORE
+<f8>
+<UFB00> "<U0046><U0046>";"<NONE><NONE>";"<UFB00><UFB00>";IGNORE
+<UFB01> "<U0046><U0049>";"<NONE><NONE>";"<UFB01><UFB01>";IGNORE
+<UFB02> "<U0046><U004C>";"<NONE><NONE>";"<UFB02><UFB02>";IGNORE
+<UFB03> "<U0046><U0046><U0049>";"<NONE><NONE><NONE>";"<UFB03><UFB03><UFB03>";IGNORE
+<UFB04> "<U0046><U0046><U004C>";"<NONE><NONE><NONE>";"<UFB04><UFB04><UFB04>";IGNORE
+<U0047> <U0047>;<NONE>;<CAPITAL>;IGNORE
+<U0067> <U0047>;<NONE>;<SMALL>;IGNORE
+<U01F4> <U0047>;<ACUTE>;<CAPITAL>;IGNORE
+<U01F5> <U0047>;<ACUTE>;<SMALL>;IGNORE
+<U011E> <U0047>;<BREVE>;<CAPITAL>;IGNORE
+<U011F> <U0047>;<BREVE>;<SMALL>;IGNORE
+<U011C> <U0047>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U011D> <U0047>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01E6> <U0047>;<CARON>;<CAPITAL>;IGNORE
+<U01E7> <U0047>;<CARON>;<SMALL>;IGNORE
+<U0120> <U0047>;<DOT>;<CAPITAL>;IGNORE
+<U0121> <U0047>;<DOT>;<SMALL>;IGNORE
+<U01E4> <U0047>;<STROKE>;<CAPITAL>;IGNORE
+<U01E5> <U0047>;<STROKE>;<SMALL>;IGNORE
+<U0122> <U0047>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0123> <U0047>;<CEDILLA>;<SMALL>;IGNORE
+<U1E20> <U0047>;<MACRON>;<CAPITAL>;IGNORE
+<U1E21> <U0047>;<MACRON>;<SMALL>;IGNORE
+<g8>
+<U0048> <U0048>;<NONE>;<CAPITAL>;IGNORE
+<U0068> <U0048>;<NONE>;<SMALL>;IGNORE
+<U1E2A> <U0048>;<BREVE-BELOW>;<CAPITAL>;IGNORE
+<U1E2B> <U0048>;<BREVE-BELOW>;<SMALL>;IGNORE
+<U0124> <U0048>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0125> <U0048>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E26> <U0048>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E27> <U0048>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E22> <U0048>;<DOT>;<CAPITAL>;IGNORE
+<U1E23> <U0048>;<DOT>;<SMALL>;IGNORE
+<U1E24> <U0048>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E25> <U0048>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0126> <U0048>;<STROKE>;<CAPITAL>;IGNORE
+<U0127> <U0048>;<STROKE>;<SMALL>;IGNORE
+<U1E28> <U0048>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E29> <U0048>;<CEDILLA>;<SMALL>;IGNORE
+<h8>
+<U0049> <U0049>;<NONE>;<CAPITAL>;IGNORE
+<U0069> <U0049>;<NONE>;<SMALL>;IGNORE
+<U00CD> <U0049>;<ACUTE>;<CAPITAL>;IGNORE
+<U00ED> <U0049>;<ACUTE>;<SMALL>;IGNORE
+<U00CC> <U0049>;<GRAVE>;<CAPITAL>;IGNORE
+<U00EC> <U0049>;<GRAVE>;<SMALL>;IGNORE
+<U0208> <U0049>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0209> <U0049>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U012C> <U0049>;<BREVE>;<CAPITAL>;IGNORE
+<U012D> <U0049>;<BREVE>;<SMALL>;IGNORE
+<U020A> <U0049>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020B> <U0049>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CE> <U0049>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EE> <U0049>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01CF> <U0049>;<CARON>;<CAPITAL>;IGNORE
+<U01D0> <U0049>;<CARON>;<SMALL>;IGNORE
+<U00CF> <U0049>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EF> <U0049>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E2E> <U0049>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U1E2F> <U0049>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U1EC8> <U0049>;<HOOK>;<CAPITAL>;IGNORE
+<U1EC9> <U0049>;<HOOK>;<SMALL>;IGNORE
+<U0128> <U0049>;<TILDE>;<CAPITAL>;IGNORE
+<U0129> <U0049>;<TILDE>;<SMALL>;IGNORE
+<U1E2C> <U0049>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E2D> <U0049>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0130> <U0049>;<DOT>;<CAPITAL>;IGNORE
+<U0131> <U0049>;<DOT>;<SMALL>;IGNORE
+<U1ECA> <U0049>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECB> <U0049>;<DOT-BELOW>;<SMALL>;IGNORE
+<U012E> <U0049>;<OGONEK>;<CAPITAL>;IGNORE
+<U012F> <U0049>;<OGONEK>;<SMALL>;IGNORE
+<U012A> <U0049>;<MACRON>;<CAPITAL>;IGNORE
+<U012B> <U0049>;<MACRON>;<SMALL>;IGNORE
+<i8>
+<U0132> "<U0049><U004A>";"<U0132><U0132>";"<CAPITAL><CAPITAL>";IGNORE
+<U0133> "<U0049><U004A>";"<U0132><U0132>";"<SMALL><SMALL>";IGNORE
+<U004A> <U004A>;<NONE>;<CAPITAL>;IGNORE
+<U006A> <U004A>;<NONE>;<SMALL>;IGNORE
+<U0134> <U004A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0135> <U004A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<j8>
+<U004B> <U004B>;<NONE>;<CAPITAL>;IGNORE
+<U006B> <U004B>;<NONE>;<SMALL>;IGNORE
+<U1E30> <U004B>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E31> <U004B>;<ACUTE>;<SMALL>;IGNORE
+<U01E8> <U004B>;<CARON>;<CAPITAL>;IGNORE
+<U01E9> <U004B>;<CARON>;<SMALL>;IGNORE
+<U0198> <U004B>;<HOOK>;<CAPITAL>;IGNORE
+<U0199> <U004B>;<HOOK>;<SMALL>;IGNORE
+<U1E32> <U004B>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E33> <U004B>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0136> <U004B>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0137> <U004B>;<CEDILLA>;<SMALL>;IGNORE
+<U1E34> <U004B>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E35> <U004B>;<LINE-BELOW>;<SMALL>;IGNORE
+<k8>
+<U0138> <U004B>;<U0138>;<SMALL>;IGNORE
+<U004C> <U004C>;<NONE>;<CAPITAL>;IGNORE
+<U006C> <U004C>;<NONE>;<SMALL>;IGNORE
+<U0139> <U004C>;<ACUTE>;<CAPITAL>;IGNORE
+<U013A> <U004C>;<ACUTE>;<SMALL>;IGNORE
+<U013D> <U004C>;<CARON>;<CAPITAL>;IGNORE
+<U013E> <U004C>;<CARON>;<SMALL>;IGNORE
+<U013F> <U004C>;<DOT>;<CAPITAL>;IGNORE
+<U0140> <U004C>;<DOT>;<SMALL>;IGNORE
+<U1E36> <U004C>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E37> <U004C>;<DOT-BELOW>;<SMALL>;IGNORE
+<U013B> <U004C>;<CEDILLA>;<CAPITAL>;IGNORE
+<U013C> <U004C>;<CEDILLA>;<SMALL>;IGNORE
+<U1E38> <U004C>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E39> <U004C>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E3C> <U004C>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E3D> <U004C>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E3A> <U004C>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E3B> <U004C>;<LINE-BELOW>;<SMALL>;IGNORE
+<l8>
+<U0141> <U0141>;<NONE>;<CAPITAL>;IGNORE
+<U0142> <U0141>;<NONE>;<SMALL>;IGNORE
+<U004D> <U004D>;<NONE>;<CAPITAL>;IGNORE
+<U006D> <U004D>;<NONE>;<SMALL>;IGNORE
+<U1E3E> <U004D>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E3F> <U004D>;<ACUTE>;<SMALL>;IGNORE
+<U1E40> <U004D>;<DOT>;<CAPITAL>;IGNORE
+<U1E41> <U004D>;<DOT>;<SMALL>;IGNORE
+<U1E42> <U004D>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E43> <U004D>;<DOT-BELOW>;<SMALL>;IGNORE
+<m8>
+<U004E> <U004E>;<NONE>;<CAPITAL>;IGNORE
+<U006E> <U004E>;<NONE>;<SMALL>;IGNORE
+<U0147> <U004E>;<CARON>;<CAPITAL>;IGNORE
+<U0148> <U004E>;<CARON>;<SMALL>;IGNORE
+<U00D1> <U004E>;<TILDE>;<CAPITAL>;IGNORE
+<U00F1> <U004E>;<TILDE>;<SMALL>;IGNORE
+<U1E44> <U004E>;<DOT>;<CAPITAL>;IGNORE
+<U1E45> <U004E>;<DOT>;<SMALL>;IGNORE
+<U1E46> <U004E>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E47> <U004E>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0145> <U004E>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0146> <U004E>;<CEDILLA>;<SMALL>;IGNORE
+<U1E4A> <U004E>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E4B> <U004E>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E48> <U004E>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E49> <U004E>;<LINE-BELOW>;<SMALL>;IGNORE
+<U0149> <U004E>;<PRECEDED-BY-APOSTROPHE>;<SMALL>;IGNORE
+<n8>
+<U0143> <U0143>;<NONE>;<CAPITAL>;IGNORE
+<U0144> <U0143>;<NONE>;<SMALL>;IGNORE
+<U014A> "<U004E><U0047>";"<U014A><U014A>";"<CAPITAL><CAPITAL>";IGNORE
+<U014B> "<U004E><U0047>";"<U014A><U014A>";"<SMALL><SMALL>";IGNORE
+<U004F> <U004F>;<NONE>;<CAPITAL>;IGNORE
+<U006F> <U004F>;<NONE>;<SMALL>;IGNORE
+<U00BA> <U004F>;<NONE>;<U00BA>;IGNORE
+<U00D2> <U004F>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F2> <U004F>;<GRAVE>;<SMALL>;IGNORE
+<U020C> <U004F>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U020D> <U004F>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U014E> <U004F>;<BREVE>;<CAPITAL>;IGNORE
+<U014F> <U004F>;<BREVE>;<SMALL>;IGNORE
+<U020E> <U004F>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020F> <U004F>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00D4> <U004F>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00F4> <U004F>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1ED0> <U004F>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1ED1> <U004F>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1ED2> <U004F>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1ED3> <U004F>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1ED4> <U004F>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1ED5> <U004F>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1ED6> <U004F>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1ED7> <U004F>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1ED8> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ED9> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01D1> <U004F>;<CARON>;<CAPITAL>;IGNORE
+<U01D2> <U004F>;<CARON>;<SMALL>;IGNORE
+<U00D6> <U004F>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00F6> <U004F>;<DIAERESIS>;<SMALL>;IGNORE
+<U0150> <U004F>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0151> <U004F>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1ECE> <U004F>;<HOOK>;<CAPITAL>;IGNORE
+<U1ECF> <U004F>;<HOOK>;<SMALL>;IGNORE
+<U00D5> <U004F>;<TILDE>;<CAPITAL>;IGNORE
+<U00F5> <U004F>;<TILDE>;<SMALL>;IGNORE
+<U1E4C> <U004F>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E4D> <U004F>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E4E> <U004F>;<TILDE+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E4F> <U004F>;<TILDE+DIAERESIS>;<SMALL>;IGNORE
+<U1ECC> <U004F>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECD> <U004F>;<DOT-BELOW>;<SMALL>;IGNORE
+<U00D8> <U004F>;<STROKE>;<CAPITAL>;IGNORE
+<U00F8> <U004F>;<STROKE>;<SMALL>;IGNORE
+<U01FE> <U004F>;<STROKE+ACUTE>;<CAPITAL>;IGNORE
+<U01FF> <U004F>;<STROKE+ACUTE>;<SMALL>;IGNORE
+<U01EA> <U004F>;<OGONEK>;<CAPITAL>;IGNORE
+<U01EB> <U004F>;<OGONEK>;<SMALL>;IGNORE
+<U01EC> <U004F>;<OGONEK+MACRON>;<CAPITAL>;IGNORE
+<U01ED> <U004F>;<OGONEK+MACRON>;<SMALL>;IGNORE
+<U014C> <U004F>;<MACRON>;<CAPITAL>;IGNORE
+<U014D> <U004F>;<MACRON>;<SMALL>;IGNORE
+<U1E52> <U004F>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E53> <U004F>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E50> <U004F>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E51> <U004F>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U01A0> <U004F>;<HORN>;<CAPITAL>;IGNORE
+<U01A1> <U004F>;<HORN>;<SMALL>;IGNORE
+<U1EDA> <U004F>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EDB> <U004F>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EDC> <U004F>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EDD> <U004F>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EDE> <U004F>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EDF> <U004F>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EE0> <U004F>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EE1> <U004F>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EE2> <U004F>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE3> <U004F>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<o8>
+<U00D3> <U00D3>;<NONE>;<CAPITAL>;IGNORE
+<U00F3> <U00D3>;<NONE>;<SMALL>;IGNORE
+<U0152> "<U004F><U0045>";"<U0152><U0152>";"<CAPITAL><CAPITAL>";IGNORE
+<U0153> "<U004F><U0045>";"<U0152><U0152>";"<SMALL><SMALL>";IGNORE
+<U0050> <U0050>;<NONE>;<CAPITAL>;IGNORE
+<U0070> <U0050>;<NONE>;<SMALL>;IGNORE
+<U1E54> <U0050>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E55> <U0050>;<ACUTE>;<SMALL>;IGNORE
+<U1E56> <U0050>;<DOT>;<CAPITAL>;IGNORE
+<U1E57> <U0050>;<DOT>;<SMALL>;IGNORE
+<p8>
+<U0051> <U0051>;<NONE>;<CAPITAL>;IGNORE
+<U0071> <U0051>;<NONE>;<SMALL>;IGNORE
+<q8>
+<U0052> <U0052>;<NONE>;<CAPITAL>;IGNORE
+<U0072> <U0052>;<NONE>;<SMALL>;IGNORE
+<U0154> <U0052>;<ACUTE>;<CAPITAL>;IGNORE
+<U0155> <U0052>;<ACUTE>;<SMALL>;IGNORE
+<U0210> <U0052>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0211> <U0052>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0212> <U0052>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0213> <U0052>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U0158> <U0052>;<CARON>;<CAPITAL>;IGNORE
+<U0159> <U0052>;<CARON>;<SMALL>;IGNORE
+<U1E58> <U0052>;<DOT>;<CAPITAL>;IGNORE
+<U1E59> <U0052>;<DOT>;<SMALL>;IGNORE
+<U1E5A> <U0052>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5B> <U0052>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0156> <U0052>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0157> <U0052>;<CEDILLA>;<SMALL>;IGNORE
+<U1E5C> <U0052>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5D> <U0052>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E5E> <U0052>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E5F> <U0052>;<LINE-BELOW>;<SMALL>;IGNORE
+<r8>
+<U0053> <U0053>;<NONE>;<CAPITAL>;IGNORE
+<U0073> <U0053>;<NONE>;<SMALL>;IGNORE
+<UFB06> "<U0053><U0054>";"<NONE><NONE>";"<UFB06><UFB06>";IGNORE
+<U1E64> <U0053>;<ACUTE+DOT>;<CAPITAL>;IGNORE
+<U1E65> <U0053>;<ACUTE+DOT>;<SMALL>;IGNORE
+<U015C> <U0053>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U015D> <U0053>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0160> <U0053>;<CARON>;<CAPITAL>;IGNORE
+<U0161> <U0053>;<CARON>;<SMALL>;IGNORE
+<U1E66> <U0053>;<CARON+DOT>;<CAPITAL>;IGNORE
+<U1E67> <U0053>;<CARON+DOT>;<SMALL>;IGNORE
+<U1E60> <U0053>;<DOT>;<CAPITAL>;IGNORE
+<U1E61> <U0053>;<DOT>;<SMALL>;IGNORE
+<U1E62> <U0053>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E63> <U0053>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E68> <U0053>;<DOT+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E69> <U0053>;<DOT+DOT-BELOW>;<SMALL>;IGNORE
+<U015E> <U0053>;<CEDILLA>;<CAPITAL>;IGNORE
+<U015F> <U0053>;<CEDILLA>;<SMALL>;IGNORE
+<s8>
+<U015A> <U015A>;<NONE>;<CAPITAL>;IGNORE
+<U015B> <U015A>;<NONE>;<SMALL>;IGNORE
+<U017F> <U0053>;<U017F>;<SMALL>;IGNORE
+<U00DF> "<U0053><U0053>";"<NONE><NONE>";"<SMALL><U00DF>";IGNORE
+<UFB05> "<U0053><U0054>";"<NONE><NONE>";"<UFB05><UFB05>";IGNORE
+<U0054> <U0054>;<NONE>;<CAPITAL>;IGNORE
+<U0074> <U0054>;<NONE>;<SMALL>;IGNORE
+<U0164> <U0054>;<CARON>;<CAPITAL>;IGNORE
+<U0165> <U0054>;<CARON>;<SMALL>;IGNORE
+<U1E6A> <U0054>;<DOT>;<CAPITAL>;IGNORE
+<U1E6B> <U0054>;<DOT>;<SMALL>;IGNORE
+<U1E6C> <U0054>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E6D> <U0054>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0166> <U0054>;<STROKE>;<CAPITAL>;IGNORE
+<U0167> <U0054>;<STROKE>;<SMALL>;IGNORE
+<U0162> <U0054>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0163> <U0054>;<CEDILLA>;<SMALL>;IGNORE
+<U1E70> <U0054>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E71> <U0054>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E6E> <U0054>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E6F> <U0054>;<LINE-BELOW>;<SMALL>;IGNORE
+<t8>
+<U00DE> "<U0054><U0048>";"<U00DE><U00DE>";"<CAPITAL><CAPITAL>";IGNORE
+<U00FE> "<U0054><U0048>";"<U00DE><U00DE>";"<SMALL><SMALL>";IGNORE
+<U0055> <U0055>;<NONE>;<CAPITAL>;IGNORE
+<U0075> <U0055>;<NONE>;<SMALL>;IGNORE
+<U00DA> <U0055>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FA> <U0055>;<ACUTE>;<SMALL>;IGNORE
+<U00D9> <U0055>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F9> <U0055>;<GRAVE>;<SMALL>;IGNORE
+<U0214> <U0055>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0215> <U0055>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U016C> <U0055>;<BREVE>;<CAPITAL>;IGNORE
+<U016D> <U0055>;<BREVE>;<SMALL>;IGNORE
+<U0216> <U0055>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0217> <U0055>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00DB> <U0055>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00FB> <U0055>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01D3> <U0055>;<CARON>;<CAPITAL>;IGNORE
+<U01D4> <U0055>;<CARON>;<SMALL>;IGNORE
+<U016E> <U0055>;<RING>;<CAPITAL>;IGNORE
+<U016F> <U0055>;<RING>;<SMALL>;IGNORE
+<U00DC> <U0055>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FC> <U0055>;<DIAERESIS>;<SMALL>;IGNORE
+<U01D5> <U0055>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01D6> <U0055>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U01D7> <U0055>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U01D8> <U0055>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U01DB> <U0055>;<DIAERESIS+GRAVE>;<CAPITAL>;IGNORE
+<U01DC> <U0055>;<DIAERESIS+GRAVE>;<SMALL>;IGNORE
+<U01D9> <U0055>;<DIAERESIS+CARON>;<CAPITAL>;IGNORE
+<U01DA> <U0055>;<DIAERESIS+CARON>;<SMALL>;IGNORE
+<U0170> <U0055>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0171> <U0055>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1EE6> <U0055>;<HOOK>;<CAPITAL>;IGNORE
+<U1EE7> <U0055>;<HOOK>;<SMALL>;IGNORE
+<U0168> <U0055>;<TILDE>;<CAPITAL>;IGNORE
+<U0169> <U0055>;<TILDE>;<SMALL>;IGNORE
+<U1E78> <U0055>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E79> <U0055>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E74> <U0055>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E75> <U0055>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U1EE4> <U0055>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE5> <U0055>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0172> <U0055>;<OGONEK>;<CAPITAL>;IGNORE
+<U0173> <U0055>;<OGONEK>;<SMALL>;IGNORE
+<U016A> <U0055>;<MACRON>;<CAPITAL>;IGNORE
+<U016B> <U0055>;<MACRON>;<SMALL>;IGNORE
+<U1E7A> <U0055>;<MACRON+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E7B> <U0055>;<MACRON+DIAERESIS>;<SMALL>;IGNORE
+<U1E72> <U0055>;<MACRON+DIAERESIS-BELOW>;<CAPITAL>;IGNORE
+<U1E73> <U0055>;<MACRON+DIAERESIS-BELOW>;<SMALL>;IGNORE
+<U1E76> <U0055>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E77> <U0055>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U01AF> <U0055>;<HORN>;<CAPITAL>;IGNORE
+<U01B0> <U0055>;<HORN>;<SMALL>;IGNORE
+<U1EE8> <U0055>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EE9> <U0055>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EEA> <U0055>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EEB> <U0055>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EEC> <U0055>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EED> <U0055>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EEE> <U0055>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EEF> <U0055>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EF0> <U0055>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF1> <U0055>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<u8>
+<U0056> <U0056>;<NONE>;<CAPITAL>;IGNORE
+<U0076> <U0056>;<NONE>;<SMALL>;IGNORE
+<U1E7C> <U0056>;<TILDE>;<CAPITAL>;IGNORE
+<U1E7D> <U0056>;<TILDE>;<SMALL>;IGNORE
+<U1E7E> <U0056>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E7F> <U0056>;<DOT-BELOW>;<SMALL>;IGNORE
+<v8>
+<U0057> <U0057>;<NONE>;<CAPITAL>;IGNORE
+<U0077> <U0057>;<NONE>;<SMALL>;IGNORE
+<U1E82> <U0057>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E83> <U0057>;<ACUTE>;<SMALL>;IGNORE
+<U1E80> <U0057>;<GRAVE>;<CAPITAL>;IGNORE
+<U1E81> <U0057>;<GRAVE>;<SMALL>;IGNORE
+<U0174> <U0057>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0175> <U0057>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E84> <U0057>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E85> <U0057>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E86> <U0057>;<DOT>;<CAPITAL>;IGNORE
+<U1E87> <U0057>;<DOT>;<SMALL>;IGNORE
+<U1E88> <U0057>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E89> <U0057>;<DOT-BELOW>;<SMALL>;IGNORE
+<w8>
+<U0058> <U0058>;<NONE>;<CAPITAL>;IGNORE
+<U0078> <U0058>;<NONE>;<SMALL>;IGNORE
+<U1E8C> <U0058>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E8D> <U0058>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E8A> <U0058>;<DOT>;<CAPITAL>;IGNORE
+<U1E8B> <U0058>;<DOT>;<SMALL>;IGNORE
+<x8>
+<U0059> <U0059>;<NONE>;<CAPITAL>;IGNORE
+<U0079> <U0059>;<NONE>;<SMALL>;IGNORE
+<U00DD> <U0059>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FD> <U0059>;<ACUTE>;<SMALL>;IGNORE
+<U1EF2> <U0059>;<GRAVE>;<CAPITAL>;IGNORE
+<U1EF3> <U0059>;<GRAVE>;<SMALL>;IGNORE
+<U0176> <U0059>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0177> <U0059>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0178> <U0059>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FF> <U0059>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EF6> <U0059>;<HOOK>;<CAPITAL>;IGNORE
+<U1EF7> <U0059>;<HOOK>;<SMALL>;IGNORE
+<U1EF8> <U0059>;<TILDE>;<CAPITAL>;IGNORE
+<U1EF9> <U0059>;<TILDE>;<SMALL>;IGNORE
+<U1E8E> <U0059>;<DOT>;<CAPITAL>;IGNORE
+<U1E8F> <U0059>;<DOT>;<SMALL>;IGNORE
+<U1EF4> <U0059>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF5> <U0059>;<DOT-BELOW>;<SMALL>;IGNORE
+<y8>
+<U005A> <U005A>;<NONE>;<CAPITAL>;IGNORE
+<U007A> <U005A>;<NONE>;<SMALL>;IGNORE
+<U1E90> <U005A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E91> <U005A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U017D> <U005A>;<CARON>;<CAPITAL>;IGNORE
+<U017E> <U005A>;<CARON>;<SMALL>;IGNORE
+<U1E92> <U005A>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E93> <U005A>;<DOT-BELOW>;<SMALL>;IGNORE
+<U01B5> <U005A>;<STROKE>;<CAPITAL>;IGNORE
+<U01B6> <U005A>;<STROKE>;<SMALL>;IGNORE
+<U1E94> <U005A>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E95> <U005A>;<LINE-BELOW>;<SMALL>;IGNORE
+<z8>
+<U0179> <U0179>;<NONE>;<CAPITAL>;IGNORE
+<U017A> <U0179>;<NONE>;<SMALL>;IGNORE
+<U017B> <U017B>;<NONE>;<CAPITAL>;IGNORE
+<U017C> <U017B>;<NONE>;<SMALL>;IGNORE
+<U0391> <U0391>;<CAPITAL>;<GREEK>;IGNORE
+<U0386> <U0391>;<CAPITAL>;<TONOS>;IGNORE
+<U03B1> <U0391>;<SMALL>;<GREEK>;IGNORE
+<U03AC> <U0391>;<SMALL>;<TONOS>;IGNORE
+<U0392> <U0392>;<CAPITAL>;<GREEK>;IGNORE
+<U03B2> <U0392>;<SMALL>;<GREEK>;IGNORE
+<U0393> <U0393>;<CAPITAL>;<GREEK>;IGNORE
+<U03B3> <U0393>;<SMALL>;<GREEK>;IGNORE
+<U0394> <U0394>;<CAPITAL>;<GREEK>;IGNORE
+<U03B4> <U0394>;<SMALL>;<GREEK>;IGNORE
+<U0395> <U0395>;<CAPITAL>;<GREEK>;IGNORE
+<U0388> <U0395>;<CAPITAL>;<TONOS>;IGNORE
+<U03B5> <U0395>;<SMALL>;<GREEK>;IGNORE
+<U03AD> <U0395>;<SMALL>;<TONOS>;IGNORE
+<U0396> <U0396>;<CAPITAL>;<GREEK>;IGNORE
+<U03B6> <U0396>;<SMALL>;<GREEK>;IGNORE
+<U0397> <U0397>;<CAPITAL>;<GREEK>;IGNORE
+<U0389> <U0397>;<CAPITAL>;<TONOS>;IGNORE
+<U03B7> <U0397>;<SMALL>;<GREEK>;IGNORE
+<U03AE> <U0397>;<SMALL>;<TONOS>;IGNORE
+<U0398> <U0398>;<CAPITAL>;<GREEK>;IGNORE
+<U03B8> <U0398>;<SMALL>;<GREEK>;IGNORE
+<U0399> <U0399>;<CAPITAL>;<GREEK>;IGNORE
+<U038A> <U0399>;<CAPITAL>;<TONOS>;IGNORE
+<U03AA> <U0399>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03B9> <U0399>;<SMALL>;<GREEK>;IGNORE
+<U03AF> <U0399>;<SMALL>;<TONOS>;IGNORE
+<U03CA> <U0399>;<SMALL>;<DIALYTICA>;IGNORE
+<U0390> <U0399>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U039A> <U039A>;<CAPITAL>;<GREEK>;IGNORE
+<U03BA> <U039A>;<SMALL>;<GREEK>;IGNORE
+<U039B> <U039B>;<CAPITAL>;<GREEK>;IGNORE
+<U03BB> <U039B>;<SMALL>;<GREEK>;IGNORE
+<U039C> <U039C>;<CAPITAL>;<GREEK>;IGNORE
+<U03BC> <U039C>;<SMALL>;<GREEK>;IGNORE
+<U039D> <U039D>;<CAPITAL>;<GREEK>;IGNORE
+<U03BD> <U039D>;<SMALL>;<GREEK>;IGNORE
+<U039E> <U039E>;<CAPITAL>;<GREEK>;IGNORE
+<U03BE> <U039E>;<SMALL>;<GREEK>;IGNORE
+<U039F> <U039F>;<CAPITAL>;<GREEK>;IGNORE
+<U038C> <U039F>;<CAPITAL>;<TONOS>;IGNORE
+<U03BF> <U039F>;<SMALL>;<GREEK>;IGNORE
+<U03CC> <U039F>;<SMALL>;<TONOS>;IGNORE
+<U03A0> <U03A0>;<CAPITAL>;<GREEK>;IGNORE
+<U03C0> <U03A0>;<SMALL>;<GREEK>;IGNORE
+<U03A1> <U03A1>;<CAPITAL>;<GREEK>;IGNORE
+<U03C1> <U03A1>;<SMALL>;<GREEK>;IGNORE
+<U03A3> <U03A3>;<CAPITAL>;<GREEK>;IGNORE
+<U03C3> <U03A3>;<SMALL>;<GREEK>;IGNORE
+<U03C2> <U03A3>;<SMALL>;<U03C2>;IGNORE
+<U03A4> <U03A4>;<CAPITAL>;<GREEK>;IGNORE
+<U03C4> <U03A4>;<SMALL>;<GREEK>;IGNORE
+<U03A5> <U03A5>;<CAPITAL>;<GREEK>;IGNORE
+<U038E> <U03A5>;<CAPITAL>;<TONOS>;IGNORE
+<U03AB> <U03A5>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03C5> <U03A5>;<SMALL>;<GREEK>;IGNORE
+<U03CD> <U03A5>;<SMALL>;<TONOS>;IGNORE
+<U03CB> <U03A5>;<SMALL>;<DIALYTICA>;IGNORE
+<U03B0> <U03A5>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U03A6> <U03A6>;<CAPITAL>;<GREEK>;IGNORE
+<U03C6> <U03A6>;<SMALL>;<GREEK>;IGNORE
+<U03A7> <U03A7>;<CAPITAL>;<GREEK>;IGNORE
+<U03C7> <U03A7>;<SMALL>;<GREEK>;IGNORE
+<U03A8> <U03A8>;<CAPITAL>;<GREEK>;IGNORE
+<U03C8> <U03A8>;<SMALL>;<GREEK>;IGNORE
+<U03A9> <U03A9>;<CAPITAL>;<GREEK>;IGNORE
+<U038F> <U03A9>;<CAPITAL>;<TONOS>;IGNORE
+<U03C9> <U03A9>;<SMALL>;<GREEK>;IGNORE
+<U03CE> <U03A9>;<SMALL>;<TONOS>;IGNORE
+<U0410> <U0410>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0430> <U0410>;<CYRILLIC>;<SMALL>;IGNORE
+<U0411> <U0411>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0431> <U0411>;<CYRILLIC>;<SMALL>;IGNORE
+<U0412> <U0412>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0432> <U0412>;<CYRILLIC>;<SMALL>;IGNORE
+<U0413> <U0413>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0433> <U0413>;<CYRILLIC>;<SMALL>;IGNORE
+<U0403> <U0403>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0453> <U0403>;<CYRILLIC>;<SMALL>;IGNORE
+<U0490> <U0490>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0491> <U0490>;<CYRILLIC>;<SMALL>;IGNORE
+<U0414> <U0414>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0434> <U0414>;<CYRILLIC>;<SMALL>;IGNORE
+<U0402> <U0402>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0452> <U0402>;<CYRILLIC>;<SMALL>;IGNORE
+<U0415> <U0415>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0435> <U0415>;<CYRILLIC>;<SMALL>;IGNORE
+<U0401> <U0401>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0451> <U0401>;<CYRILLIC>;<SMALL>;IGNORE
+<U0404> <U0404>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0454> <U0404>;<CYRILLIC>;<SMALL>;IGNORE
+<U0416> <U0416>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0436> <U0416>;<CYRILLIC>;<SMALL>;IGNORE
+<U0417> <U0417>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0437> <U0417>;<CYRILLIC>;<SMALL>;IGNORE
+<U0418> <U0418>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0438> <U0418>;<CYRILLIC>;<SMALL>;IGNORE
+<U0406> <U0406>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0456> <U0406>;<CYRILLIC>;<SMALL>;IGNORE
+<U0407> <U0407>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0457> <U0407>;<CYRILLIC>;<SMALL>;IGNORE
+<U0408> <U0408>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0458> <U0408>;<CYRILLIC>;<SMALL>;IGNORE
+<U0419> <U0419>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0439> <U0419>;<CYRILLIC>;<SMALL>;IGNORE
+<U041A> <U041A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043A> <U041A>;<CYRILLIC>;<SMALL>;IGNORE
+<U040C> <U040C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045C> <U040C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041B> <U041B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043B> <U041B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0409> <U0409>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0459> <U0409>;<CYRILLIC>;<SMALL>;IGNORE
+<U041C> <U041C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043C> <U041C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041D> <U041D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043D> <U041D>;<CYRILLIC>;<SMALL>;IGNORE
+<U040A> <U040A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045A> <U040A>;<CYRILLIC>;<SMALL>;IGNORE
+<U041E> <U041E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043E> <U041E>;<CYRILLIC>;<SMALL>;IGNORE
+<U041F> <U041F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043F> <U041F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0420> <U0420>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0440> <U0420>;<CYRILLIC>;<SMALL>;IGNORE
+<U0421> <U0421>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0441> <U0421>;<CYRILLIC>;<SMALL>;IGNORE
+<U0422> <U0422>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0442> <U0422>;<CYRILLIC>;<SMALL>;IGNORE
+<U040B> <U040B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045B> <U040B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0423> <U0423>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0443> <U0423>;<CYRILLIC>;<SMALL>;IGNORE
+<U040E> <U040E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045E> <U040E>;<CYRILLIC>;<SMALL>;IGNORE
+<U0424> <U0424>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0444> <U0424>;<CYRILLIC>;<SMALL>;IGNORE
+<U0425> <U0425>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0445> <U0425>;<CYRILLIC>;<SMALL>;IGNORE
+<U0426> <U0426>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0446> <U0426>;<CYRILLIC>;<SMALL>;IGNORE
+<U0405> <U0405>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0455> <U0405>;<CYRILLIC>;<SMALL>;IGNORE
+<U0427> <U0427>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0447> <U0427>;<CYRILLIC>;<SMALL>;IGNORE
+<U040F> <U040F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045F> <U040F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0428> <U0428>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0448> <U0428>;<CYRILLIC>;<SMALL>;IGNORE
+<U0429> <U0429>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0449> <U0429>;<CYRILLIC>;<SMALL>;IGNORE
+<U044A> <U044A>;<CYRILLIC>;<SMALL>;IGNORE
+<U042A> <U044A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042B> <U042B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044B> <U042B>;<CYRILLIC>;<SMALL>;IGNORE
+<U044C> <U044C>;<CYRILLIC>;<SMALL>;IGNORE
+<U042C> <U044C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042D> <U042D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044D> <U042D>;<CYRILLIC>;<SMALL>;IGNORE
+<U042E> <U042E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044E> <U042E>;<CYRILLIC>;<SMALL>;IGNORE
+<U042F> <U042F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044F> <U042F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0462> <U0462>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0463> <U0462>;<CYRILLIC>;<SMALL>;IGNORE
+<U046A> <U046A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U046B> <U046A>;<CYRILLIC>;<SMALL>;IGNORE
+<U0472> <U0472>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0473> <U0472>;<CYRILLIC>;<SMALL>;IGNORE
+<U0474> <U0474>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0475> <U0474>;<CYRILLIC>;<SMALL>;IGNORE
+<U0480> <U0480>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0481> <U0480>;<CYRILLIC>;<SMALL>;IGNORE
+<U05D0> <U05D0>;IGNORE;IGNORE;IGNORE
+<U05D1> <U05D1>;IGNORE;IGNORE;IGNORE
+<U05D2> <U05D2>;IGNORE;IGNORE;IGNORE
+<U05D3> <U05D3>;IGNORE;IGNORE;IGNORE
+<U05D4> <U05D4>;IGNORE;IGNORE;IGNORE
+<U05D5> <U05D5>;IGNORE;IGNORE;IGNORE
+<U05D6> <U05D6>;IGNORE;IGNORE;IGNORE
+<U05D7> <U05D7>;IGNORE;IGNORE;IGNORE
+<U05D8> <U05D8>;IGNORE;IGNORE;IGNORE
+<U05D9> <U05D9>;IGNORE;IGNORE;IGNORE
+<U05DA> <U05DA>;IGNORE;IGNORE;IGNORE
+<U05DB> <U05DB>;IGNORE;IGNORE;IGNORE
+<U05DC> <U05DC>;IGNORE;IGNORE;IGNORE
+<U05DD> <U05DD>;IGNORE;IGNORE;IGNORE
+<U05DE> <U05DE>;IGNORE;IGNORE;IGNORE
+<U05DF> <U05DF>;IGNORE;IGNORE;IGNORE
+<U05E0> <U05E0>;IGNORE;IGNORE;IGNORE
+<U05E1> <U05E1>;IGNORE;IGNORE;IGNORE
+<U05E2> <U05E2>;IGNORE;IGNORE;IGNORE
+<U05E3> <U05E3>;IGNORE;IGNORE;IGNORE
+<U05E4> <U05E4>;IGNORE;IGNORE;IGNORE
+<U05E5> <U05E5>;IGNORE;IGNORE;IGNORE
+<U05E6> <U05E6>;IGNORE;IGNORE;IGNORE
+<U05E7> <U05E7>;IGNORE;IGNORE;IGNORE
+<U05E8> <U05E8>;IGNORE;IGNORE;IGNORE
+<U05E9> <U05E9>;IGNORE;IGNORE;IGNORE
+<U05EA> <U05EA>;IGNORE;IGNORE;IGNORE
+
+% Arabic collating
+
+<U060C> IGNORE;IGNORE;IGNORE;<U060C>
+<U061B> IGNORE;IGNORE;IGNORE;<U061B>
+<U061F> IGNORE;IGNORE;IGNORE;<U061F>
+<U0640> IGNORE;IGNORE;IGNORE;<U0640>
+
+<U0621> <U0621>;<U0621>;IGNORE;IGNORE
+<U0622> <U0622>;<U0622>;IGNORE;IGNORE
+<UFE82> <U0622>;<UFE82>;IGNORE;IGNORE
+<U0623> <U0621>;<U0623>;IGNORE;IGNORE
+<UFE84> <U0621>;<UFE84>;IGNORE;IGNORE
+<U0624> <U0621>;<U0624>;IGNORE;IGNORE
+<U0625> <U0621>;<U0625>;IGNORE;IGNORE
+<UFE88> <U0621>;<UFE88>;IGNORE;IGNORE
+<U0626> <U0621>;<U0626>;IGNORE;IGNORE
+<U0670> <U0670>;<U0670>;IGNORE;IGNORE
+<U0627> <U0627>;<U0627>;IGNORE;IGNORE
+<UFE8D> <U0627>;<UFE8D>;IGNORE;IGNORE
+<UFE8E> <U0627>;<UFE8E>;IGNORE;IGNORE
+<UE016> <U0627>;<UE016>;IGNORE;IGNORE
+<U0628> <U0628>;<U0628>;IGNORE;IGNORE
+<UFE8F> <U0628>;<UFE8F>;IGNORE;IGNORE
+<UFE90> <U0628>;<UFE90>;IGNORE;IGNORE
+<UFE91> <U0628>;<UFE91>;IGNORE;IGNORE
+<UFE92> <U0628>;<UFE92>;IGNORE;IGNORE
+<U067E> <U067E>;<U067E>;IGNORE;IGNORE
+<U06A4> <U06A4>;<U06A4>;IGNORE;IGNORE
+<U0629> <U0629>;<U0629>;IGNORE;IGNORE
+<UFE93> <U0629>;<UFE93>;IGNORE;IGNORE
+<UFE94> <U0629>;<UFE94>;IGNORE;IGNORE
+<U062A> <U0629>;<U062A>;IGNORE;IGNORE
+<UFE95> <U0629>;<UFE95>;IGNORE;IGNORE
+<UFE96> <U0629>;<UFE96>;IGNORE;IGNORE
+<UFE97> <U0629>;<UFE97>;IGNORE;IGNORE
+<UFE98> <U0629>;<UFE98>;IGNORE;IGNORE
+<U062B> <U062B>;<U062B>;IGNORE;IGNORE
+<UFE99> <U062B>;<UFE99>;IGNORE;IGNORE
+<UFE9A> <U062B>;<UFE9A>;IGNORE;IGNORE
+<UFE9B> <U062B>;<UFE9B>;IGNORE;IGNORE
+<UFE9C> <U062B>;<UFE9C>;IGNORE;IGNORE
+<U062C> <U062C>;<U062C>;IGNORE;IGNORE
+<UFE9D> <U062C>;<UFE9D>;IGNORE;IGNORE
+<UFE9E> <U062C>;<UFE9E>;IGNORE;IGNORE
+<UFE9F> <U062C>;<UFE9F>;IGNORE;IGNORE
+<UFEA0> <U062C>;<UFEA0>;IGNORE;IGNORE
+<U062D> <U062D>;<U062D>;IGNORE;IGNORE
+<UFEA1> <U062D>;<UFEA1>;IGNORE;IGNORE
+<UFEA2> <U062D>;<UFEA2>;IGNORE;IGNORE
+<UFEA3> <U062D>;<UFEA3>;IGNORE;IGNORE
+<UFEA4> <U062D>;<UFEA4>;IGNORE;IGNORE
+<U062E> <U062E>;<U062E>;IGNORE;IGNORE
+<UFEA5> <U062E>;<UFEA5>;IGNORE;IGNORE
+<UFEA6> <U062E>;<UFEA6>;IGNORE;IGNORE
+<UFEA7> <U062E>;<UFEA7>;IGNORE;IGNORE
+<UFEA8> <U062E>;<UFEA8>;IGNORE;IGNORE
+<U062F> <U062F>;<U062F>;IGNORE;IGNORE
+<UFEA9> <U062F>;<UFEA9>;IGNORE;IGNORE
+<UFEAA> <U062F>;<UFEAA>;IGNORE;IGNORE
+<U0630> <U0630>;<U0630>;IGNORE;IGNORE
+<UFEAB> <U0630>;<UFEAB>;IGNORE;IGNORE
+<UFEAC> <U0630>;<UFEAC>;IGNORE;IGNORE
+<U0631> <U0631>;<U0631>;IGNORE;IGNORE
+<UFEAD> <U0631>;<UFEAD>;IGNORE;IGNORE
+<UFEAE> <U0631>;<UFEAE>;IGNORE;IGNORE
+<U0632> <U0632>;<U0632>;IGNORE;IGNORE
+<UFEAF> <U0632>;<UFEAF>;IGNORE;IGNORE
+<UFEB0> <U0632>;<UFEB0>;IGNORE;IGNORE
+<U0633> <U0633>;<U0633>;IGNORE;IGNORE
+<UFEB1> <U0633>;<UFEB1>;IGNORE;IGNORE
+<UFEB2> <U0633>;<UFEB2>;IGNORE;IGNORE
+<UFEB3> <U0633>;<UFEB3>;IGNORE;IGNORE
+<UFEB4> <U0633>;<UFEB4>;IGNORE;IGNORE
+<U0634> <U0634>;<U0634>;IGNORE;IGNORE
+<UFEB5> <U0634>;<UFEB5>;IGNORE;IGNORE
+<UFEB6> <U0634>;<UFEB6>;IGNORE;IGNORE
+<UFEB7> <U0634>;<UFEB7>;IGNORE;IGNORE
+<UFEB8> <U0634>;<UFEB8>;IGNORE;IGNORE
+<U0635> <U0635>;<U0635>;IGNORE;IGNORE
+<UFEB9> <U0635>;<UFEB9>;IGNORE;IGNORE
+<UFEBA> <U0635>;<UFEBA>;IGNORE;IGNORE
+<UFEBB> <U0635>;<UFEBB>;IGNORE;IGNORE
+<UFEBC> <U0635>;<UFEBC>;IGNORE;IGNORE
+<U0636> <U0636>;<U0636>;IGNORE;IGNORE
+<UFEBD> <U0636>;<UFEBD>;IGNORE;IGNORE
+<UFEBE> <U0636>;<UFEBE>;IGNORE;IGNORE
+<UFEBF> <U0636>;<UFEBF>;IGNORE;IGNORE
+<UFEC0> <U0636>;<UFEC0>;IGNORE;IGNORE
+<U0637> <U0637>;<U0637>;IGNORE;IGNORE
+<UFEC1> <U0637>;<UFEC1>;IGNORE;IGNORE
+<UFEC2> <U0637>;<UFEC2>;IGNORE;IGNORE
+<UFEC3> <U0637>;<UFEC3>;IGNORE;IGNORE
+<UFEC4> <U0637>;<UFEC4>;IGNORE;IGNORE
+<U0638> <U0638>;<U0638>;IGNORE;IGNORE
+<UFEC5> <U0638>;<UFEC5>;IGNORE;IGNORE
+<UFEC6> <U0638>;<UFEC6>;IGNORE;IGNORE
+<UFEC7> <U0638>;<UFEC7>;IGNORE;IGNORE
+<UFEC8> <U0638>;<UFEC8>;IGNORE;IGNORE
+<U0639> <U0639>;<U0639>;IGNORE;IGNORE
+<UFEC9> <U0639>;<UFEC9>;IGNORE;IGNORE
+<UFECA> <U0639>;<UFECA>;IGNORE;IGNORE
+<UFECB> <U0639>;<UFECB>;IGNORE;IGNORE
+<UFECC> <U0639>;<UFECC>;IGNORE;IGNORE
+<U063A> <U063A>;<U063A>;IGNORE;IGNORE
+<UFECD> <U063A>;<UFECD>;IGNORE;IGNORE
+<UFECE> <U063A>;<UFECE>;IGNORE;IGNORE
+<UFECF> <U063A>;<UFECF>;IGNORE;IGNORE
+<UFED0> <U063A>;<UFED0>;IGNORE;IGNORE
+<U0641> <U0641>;<U0641>;IGNORE;IGNORE
+<UFED1> <U0641>;<UFED1>;IGNORE;IGNORE
+<UFED2> <U0641>;<UFED2>;IGNORE;IGNORE
+<UFED3> <U0641>;<UFED3>;IGNORE;IGNORE
+<UFED4> <U0641>;<UFED4>;IGNORE;IGNORE
+<U0642> <U0642>;<U0642>;IGNORE;IGNORE
+<UFED5> <U0642>;<UFED5>;IGNORE;IGNORE
+<UFED6> <U0642>;<UFED6>;IGNORE;IGNORE
+<UFED7> <U0642>;<UFED7>;IGNORE;IGNORE
+<UFED8> <U0642>;<UFED8>;IGNORE;IGNORE
+<U0643> <U0643>;<U0643>;IGNORE;IGNORE
+<UFED9> <U0643>;<UFED9>;IGNORE;IGNORE
+<UFEDA> <U0643>;<UFEDA>;IGNORE;IGNORE
+<UFEDB> <U0643>;<UFEDB>;IGNORE;IGNORE
+<UFEDC> <U0643>;<UFEDC>;IGNORE;IGNORE
+<U0644> <U0644>;<U0644>;IGNORE;IGNORE
+<UFEDD> <U0644>;<UFEDD>;IGNORE;IGNORE
+<UFEDE> <U0644>;<UFEDE>;IGNORE;IGNORE
+<UFEDF> <U0644>;<UFEDF>;IGNORE;IGNORE
+<UFEE0> <U0644>;<UFEE0>;IGNORE;IGNORE
+<U0645> <U0645>;<U0645>;IGNORE;IGNORE
+<UFEE1> <U0645>;<UFEE1>;IGNORE;IGNORE
+<UFEE2> <U0645>;<UFEE2>;IGNORE;IGNORE
+<UFEE3> <U0645>;<UFEE3>;IGNORE;IGNORE
+<UFEE4> <U0645>;<UFEE4>;IGNORE;IGNORE
+<U0646> <U0646>;<U0646>;IGNORE;IGNORE
+<UFEE5> <U0646>;<UFEE5>;IGNORE;IGNORE
+<UFEE6> <U0646>;<UFEE6>;IGNORE;IGNORE
+<UFEE7> <U0646>;<UFEE7>;IGNORE;IGNORE
+<UFEE8> <U0646>;<UFEE8>;IGNORE;IGNORE
+<U0647> <U0647>;<U0647>;IGNORE;IGNORE
+<UFEE9> <U0647>;<UFEE9>;IGNORE;IGNORE
+<UFEEA> <U0647>;<UFEEA>;IGNORE;IGNORE
+<UFEEB> <U0647>;<UFEEB>;IGNORE;IGNORE
+<UFEEC> <U0647>;<UFEEC>;IGNORE;IGNORE
+<U0648> <U0648>;<U0648>;IGNORE;IGNORE
+<UFEED> <U0648>;<UFEED>;IGNORE;IGNORE
+<UFEEE> <U0648>;<UFEEE>;IGNORE;IGNORE
+<U0649> <U0649>;<U0649>;IGNORE;IGNORE
+<UFEEF> <U0649>;<UFEEF>;IGNORE;IGNORE
+<UFEF0> <U0649>;<UFEF0>;IGNORE;IGNORE
+<U064A> <U064A>;<U064A>;IGNORE;IGNORE
+<UFEF1> <U064A>;<UFEF1>;IGNORE;IGNORE
+<UFEF2> <U064A>;<UFEF2>;IGNORE;IGNORE
+<UFEF3> <U064A>;<UFEF3>;IGNORE;IGNORE
+<UFEF4> <U064A>;<UFEF4>;IGNORE;IGNORE
+
+<U064B> IGNORE;IGNORE;<U064B>;IGNORE
+<U064C> IGNORE;IGNORE;<U064C>;IGNORE
+<U064D> IGNORE;IGNORE;<U064D>;IGNORE
+<U064E> IGNORE;IGNORE;<U064E>;IGNORE
+<U064F> IGNORE;IGNORE;<U064F>;IGNORE
+<U0650> IGNORE;IGNORE;<U0650>;IGNORE
+<U0651> IGNORE;IGNORE;<U0651>;IGNORE
+<UFE7D> IGNORE;IGNORE;<UFE7D>;IGNORE
+<U0652> IGNORE;IGNORE;<U0652>;IGNORE
+
+<U0660> <U0030>;<U0660>;IGNORE;IGNORE
+<U0661> <U0031>;<U0661>;IGNORE;IGNORE
+<U0662> <U0032>;<U0662>;IGNORE;IGNORE
+<U0663> <U0033>;<U0663>;IGNORE;IGNORE
+<U0664> <U0034>;<U0664>;IGNORE;IGNORE
+<U0665> <U0035>;<U0665>;IGNORE;IGNORE
+<U0666> <U0036>;<U0666>;IGNORE;IGNORE
+<U0667> <U0037>;<U0667>;IGNORE;IGNORE
+<U0668> <U0038>;<U0668>;IGNORE;IGNORE
+<U0669> <U0039>;<U0669>;IGNORE;IGNORE
+
+<UFEF5> "<U0644><U0622>";"<U0644><U0622>";"<UFEF5><UFEF5>";IGNORE
+<UFEF6> "<U0644><U0622>";"<U0644><UFE82>";"<UFEF6><UFEF6>";IGNORE
+<UFEF7> "<U0644><U0623>";"<U0644><U0623>";"<UFEF7><UFEF7>";IGNORE
+<UFEF8> "<U0644><U0623>";"<U0644><UFE84>";"<UFEF8><UFEF8>";IGNORE
+<UFEF9> "<U0644><U0625>";"<U0644><U0625>";"<UFEF9><UFEF9>";IGNORE
+<UFEFA> "<U0644><U0625>";"<U0644><UFE88>";"<UFEFA><UFEFA>";IGNORE
+<UFEFB> "<U0644><U0627>";"<U0644><UFE8D>";"<UFEFB><UFEFB>";IGNORE
+<UFEFC> "<U0644><U0627>";"<U0644><UFE8E>";"<UFEFC><UFEFC>";IGNORE
+
+% katakana/hiragana sorting
+% base is katakana, as this is present in most charsets
+% normal before voiced before semi-voiced
+% small vocals before normal vocals
+% katakana before hiragana
+
+<U30A1> <U30A1>;<U30A1>;IGNORE;IGNORE
+<U3041> <U30A1>;<U3041>;IGNORE;IGNORE
+<U30A2> <U30A1>;<U30A2>;IGNORE;IGNORE
+<U3042> <U30A1>;<U3042>;IGNORE;IGNORE
+<U30A3> <U30A3>;<U30A3>;IGNORE;IGNORE
+<U3043> <U30A3>;<U3043>;IGNORE;IGNORE
+<U30A4> <U30A3>;<U30A4>;IGNORE;IGNORE
+<U3044> <U30A3>;<U3044>;IGNORE;IGNORE
+<U30A5> <U30A5>;<U30A5>;IGNORE;IGNORE
+<U3045> <U30A5>;<U3045>;IGNORE;IGNORE
+<U30A6> <U30A5>;<U30A6>;IGNORE;IGNORE
+<U3046> <U30A5>;<U3046>;IGNORE;IGNORE
+<U30F4> <U30A5>;<U30F4>;IGNORE;IGNORE
+<U30A7> <U30A7>;<U30A7>;IGNORE;IGNORE
+<U3047> <U30A7>;<U3047>;IGNORE;IGNORE
+<U30A8> <U30A7>;<U30A8>;IGNORE;IGNORE
+<U3048> <U30A7>;<U3048>;IGNORE;IGNORE
+<U30A9> <U30A9>;<U30A9>;IGNORE;IGNORE
+<U3049> <U30A9>;<U3049>;IGNORE;IGNORE
+<U30AA> <U30A9>;<U30AA>;IGNORE;IGNORE
+<U304A> <U30A9>;<U304A>;IGNORE;IGNORE
+<U30F5> <U30F5>;<U30F5>;IGNORE;IGNORE
+<U30AB> <U30F5>;<U30AB>;IGNORE;IGNORE
+<U304B> <U30F5>;<U304B>;IGNORE;IGNORE
+<U30AC> <U30F5>;<U30AC>;IGNORE;IGNORE
+<U304C> <U30F5>;<U304C>;IGNORE;IGNORE
+<U30AD> <U30AD>;<U30AD>;IGNORE;IGNORE
+<U304D> <U30AD>;<U304D>;IGNORE;IGNORE
+<U30AE> <U30AD>;<U30AE>;IGNORE;IGNORE
+<U304E> <U30AD>;<U304E>;IGNORE;IGNORE
+<U30AF> <U30AF>;<U30AF>;IGNORE;IGNORE
+<U304F> <U30AF>;<U304F>;IGNORE;IGNORE
+<U30B0> <U30AF>;<U30B0>;IGNORE;IGNORE
+<U3050> <U30AF>;<U3050>;IGNORE;IGNORE
+<U30F6> <U30F6>;<U30F6>;IGNORE;IGNORE
+<U30B1> <U30F6>;<U30B1>;IGNORE;IGNORE
+<U3051> <U30F6>;<U3051>;IGNORE;IGNORE
+<U30B2> <U30F6>;<U30B2>;IGNORE;IGNORE
+<U3052> <U30F6>;<U3052>;IGNORE;IGNORE
+<U30B3> <U30B3>;<U30B3>;IGNORE;IGNORE
+<U3053> <U30B3>;<U3053>;IGNORE;IGNORE
+<U30B4> <U30B3>;<U30B4>;IGNORE;IGNORE
+<U3054> <U30B3>;<U3054>;IGNORE;IGNORE
+<U30B5> <U30B5>;<U30B5>;IGNORE;IGNORE
+<U3055> <U30B5>;<U3055>;IGNORE;IGNORE
+<U30B6> <U30B5>;<U30B6>;IGNORE;IGNORE
+<U3056> <U30B5>;<U3056>;IGNORE;IGNORE
+<U30B7> <U30B7>;<U30B7>;IGNORE;IGNORE
+<U3057> <U30B7>;<U3057>;IGNORE;IGNORE
+<U30B8> <U30B7>;<U30B8>;IGNORE;IGNORE
+<U3058> <U30B7>;<U3058>;IGNORE;IGNORE
+<U30B9> <U30B9>;<U30B9>;IGNORE;IGNORE
+<U3059> <U30B9>;<U3059>;IGNORE;IGNORE
+<U30BA> <U30B9>;<U30BA>;IGNORE;IGNORE
+<U305A> <U30B9>;<U305A>;IGNORE;IGNORE
+<U30BB> <U30BB>;<U30BB>;IGNORE;IGNORE
+<U305B> <U30BB>;<U305B>;IGNORE;IGNORE
+<U30BC> <U30BB>;<U30BC>;IGNORE;IGNORE
+<U305C> <U30BB>;<U305C>;IGNORE;IGNORE
+<U30BD> <U30BD>;<U30BD>;IGNORE;IGNORE
+<U305D> <U30BD>;<U305D>;IGNORE;IGNORE
+<U30BE> <U30BD>;<U30BE>;IGNORE;IGNORE
+<U305E> <U30BD>;<U305E>;IGNORE;IGNORE
+<U30BF> <U30BF>;<U30BF>;IGNORE;IGNORE
+<U305F> <U30BF>;<U305F>;IGNORE;IGNORE
+<U30C0> <U30BF>;<U30C0>;IGNORE;IGNORE
+<U3060> <U30BF>;<U3060>;IGNORE;IGNORE
+<U30C1> <U30C1>;<U30C1>;IGNORE;IGNORE
+<U3061> <U30C1>;<U3061>;IGNORE;IGNORE
+<U30C2> <U30C1>;<U30C2>;IGNORE;IGNORE
+<U3062> <U30C1>;<U3062>;IGNORE;IGNORE
+<U30C3> <U30C3>;<U30C3>;IGNORE;IGNORE
+<U3063> <U30C3>;<U3063>;IGNORE;IGNORE
+<U30C4> <U30C3>;<U30C4>;IGNORE;IGNORE
+<U3064> <U30C3>;<U3064>;IGNORE;IGNORE
+<U30C5> <U30C3>;<U30C5>;IGNORE;IGNORE
+<U3065> <U30C3>;<U3065>;IGNORE;IGNORE
+<U30C6> <U30C6>;<U30C6>;IGNORE;IGNORE
+<U3066> <U30C6>;<U3066>;IGNORE;IGNORE
+<U30C7> <U30C6>;<U30C7>;IGNORE;IGNORE
+<U3067> <U30C6>;<U3067>;IGNORE;IGNORE
+<U30C8> <U30C8>;<U30C8>;IGNORE;IGNORE
+<U3068> <U30C8>;<U3068>;IGNORE;IGNORE
+<U30C9> <U30C8>;<U30C9>;IGNORE;IGNORE
+<U3069> <U30C8>;<U3069>;IGNORE;IGNORE
+<U30CA> <U30CA>;<U30CA>;IGNORE;IGNORE
+<U306A> <U30CA>;<U306A>;IGNORE;IGNORE
+<U30CB> <U30CB>;<U30CB>;IGNORE;IGNORE
+<U306B> <U30CB>;<U306B>;IGNORE;IGNORE
+<U30CC> <U30CC>;<U30CC>;IGNORE;IGNORE
+<U306C> <U30CC>;<U306C>;IGNORE;IGNORE
+<U30CD> <U30CD>;<U30CD>;IGNORE;IGNORE
+<U306D> <U30CD>;<U306D>;IGNORE;IGNORE
+<U30CE> <U30CE>;<U30CE>;IGNORE;IGNORE
+<U306E> <U30CE>;<U306E>;IGNORE;IGNORE
+<U30CF> <U30CF>;<U30CF>;IGNORE;IGNORE
+<U306F> <U30CF>;<U306F>;IGNORE;IGNORE
+<U30D0> <U30CF>;<U30D0>;IGNORE;IGNORE
+<U3070> <U30CF>;<U3070>;IGNORE;IGNORE
+<U30D1> <U30CF>;<U30D1>;IGNORE;IGNORE
+<U3071> <U30CF>;<U3071>;IGNORE;IGNORE
+<U30D2> <U30D2>;<U30D2>;IGNORE;IGNORE
+<U3072> <U30D2>;<U3072>;IGNORE;IGNORE
+<U30D3> <U30D2>;<U30D3>;IGNORE;IGNORE
+<U3073> <U30D2>;<U3073>;IGNORE;IGNORE
+<U30D4> <U30D2>;<U30D4>;IGNORE;IGNORE
+<U3074> <U30D2>;<U3074>;IGNORE;IGNORE
+<U30D5> <U30D5>;<U30D5>;IGNORE;IGNORE
+<U3075> <U30D5>;<U3075>;IGNORE;IGNORE
+<U30D6> <U30D5>;<U30D6>;IGNORE;IGNORE
+<U3076> <U30D5>;<U3076>;IGNORE;IGNORE
+<U30D7> <U30D5>;<U30D7>;IGNORE;IGNORE
+<U3077> <U30D5>;<U3077>;IGNORE;IGNORE
+<U30D8> <U30D8>;<U30D8>;IGNORE;IGNORE
+<U3078> <U30D8>;<U3078>;IGNORE;IGNORE
+<U30D9> <U30D8>;<U30D9>;IGNORE;IGNORE
+<U3079> <U30D8>;<U3079>;IGNORE;IGNORE
+<U30DA> <U30D8>;<U30DA>;IGNORE;IGNORE
+<U307A> <U30D8>;<U307A>;IGNORE;IGNORE
+<U30DB> <U30DB>;<U30DB>;IGNORE;IGNORE
+<U307B> <U30DB>;<U307B>;IGNORE;IGNORE
+<U30DC> <U30DB>;<U30DC>;IGNORE;IGNORE
+<U307C> <U30DB>;<U307C>;IGNORE;IGNORE
+<U30DD> <U30DB>;<U30DD>;IGNORE;IGNORE
+<U307D> <U30DB>;<U307D>;IGNORE;IGNORE
+<U30DE> <U30DE>;<U30DE>;IGNORE;IGNORE
+<U307E> <U30DE>;<U307E>;IGNORE;IGNORE
+<U30DF> <U30DF>;<U30DF>;IGNORE;IGNORE
+<U307F> <U30DF>;<U307F>;IGNORE;IGNORE
+<U30E0> <U30E0>;<U30E0>;IGNORE;IGNORE
+<U3080> <U30E0>;<U3080>;IGNORE;IGNORE
+<U30E1> <U30E1>;<U30E1>;IGNORE;IGNORE
+<U3081> <U30E1>;<U3081>;IGNORE;IGNORE
+<U30E2> <U30E2>;<U30E2>;IGNORE;IGNORE
+<U3082> <U30E2>;<U3082>;IGNORE;IGNORE
+<U30E3> <U30E3>;<U30E3>;IGNORE;IGNORE
+<U3083> <U30E3>;<U3083>;IGNORE;IGNORE
+<U30E4> <U30E3>;<U30E4>;IGNORE;IGNORE
+<U3084> <U30E3>;<U3084>;IGNORE;IGNORE
+<U30E5> <U30E5>;<U30E5>;IGNORE;IGNORE
+<U3085> <U30E5>;<U3085>;IGNORE;IGNORE
+<U30E6> <U30E5>;<U30E6>;IGNORE;IGNORE
+<U3086> <U30E5>;<U3086>;IGNORE;IGNORE
+<U30E7> <U30E7>;<U30E7>;IGNORE;IGNORE
+<U3087> <U30E7>;<U3087>;IGNORE;IGNORE
+<U30E8> <U30E7>;<U30E8>;IGNORE;IGNORE
+<U3088> <U30E7>;<U3088>;IGNORE;IGNORE
+<U30E9> <U30E9>;<U30E9>;IGNORE;IGNORE
+<U3089> <U30E9>;<U3089>;IGNORE;IGNORE
+<U30EA> <U30EA>;<U30EA>;IGNORE;IGNORE
+<U308A> <U30EA>;<U308A>;IGNORE;IGNORE
+<U30EB> <U30EB>;<U30EB>;IGNORE;IGNORE
+<U308B> <U30EB>;<U308B>;IGNORE;IGNORE
+<U30EC> <U30EC>;<U30EC>;IGNORE;IGNORE
+<U308C> <U30EC>;<U308C>;IGNORE;IGNORE
+<U30ED> <U30ED>;<U30ED>;IGNORE;IGNORE
+<U308D> <U30ED>;<U308D>;IGNORE;IGNORE
+<U30EE> <U30EE>;<U30EE>;IGNORE;IGNORE
+<U308E> <U30EE>;<U308E>;IGNORE;IGNORE
+<U30EF> <U30EE>;<U30EF>;IGNORE;IGNORE
+<U308F> <U30EE>;<U308F>;IGNORE;IGNORE
+<U30F0> <U30F0>;<U30F0>;IGNORE;IGNORE
+<U3090> <U30F0>;<U3090>;IGNORE;IGNORE
+<U30F1> <U30F1>;<U30F1>;IGNORE;IGNORE
+<U3091> <U30F1>;<U3091>;IGNORE;IGNORE
+<U30F2> <U30F2>;<U30F2>;IGNORE;IGNORE
+<U3092> <U30F2>;<U3092>;IGNORE;IGNORE
+<U30F3> <U30F3>;<U30F3>;IGNORE;IGNORE
+<U3093> <U30F3>;<U3093>;IGNORE;IGNORE
+
+order_end
+
diff --git a/ap/build/uClibc/extra/locale/collation/pt_BR b/ap/build/uClibc/extra/locale/collation/pt_BR
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/pt_BR
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/pt_PT b/ap/build/uClibc/extra/locale/collation/pt_PT
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/pt_PT
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/ro_RO b/ap/build/uClibc/extra/locale/collation/ro_RO
new file mode 100644
index 0000000..862db75
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ro_RO
@@ -0,0 +1,54 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
+% a a> a( b c d e f g h i i> j k l m n o p q r s s, t t, u v w x y z
+
+collating-symbol <a/>>
+collating-symbol <a(>
+collating-symbol <i/>>
+collating-symbol <s,>
+collating-symbol <t,>
+
+reorder-after <GRA>
+<CIR>
+<BRE>
+
+reorder-after <a>
+<a/>>
+<a(>
+reorder-after <i>
+<i/>>
+reorder-after <s>
+<s,>
+reorder-after <t>
+<t,>
+
+reorder-after <U0061>
+<U00E2> <a/>>;<CIR>;<MIN>;IGNORE
+<U0103> <a(>;<BRE>;<MIN>;IGNORE
+reorder-after <U0041>
+<U00C2> <a/>>;<CIR>;<CAP>;IGNORE
+<U0102> <a(>;<BRE>;<CAP>;IGNORE
+
+reorder-after <U0069>
+<U00EE> <i/>>;<CIR>;<MIN>;IGNORE
+reorder-after <U0049>
+<U00CE> <i/>>;<CIR>;<CAP>;IGNORE
+
+reorder-after <U0073>
+<U0219> <s,>;<CDI>;<MIN>;IGNORE
+<U015F> <s,>;<CDI>;<MIN>;IGNORE
+reorder-after <U0053>
+<U0218> <s,>;<CDI>;<MIN>;IGNORE
+<U015E> <s,>;<CDI>;<CAP>;IGNORE
+
+reorder-after <U0074>
+<U021B> <t,>;<CDI>;<MIN>;IGNORE
+<U0163> <t,>;<CDI>;<MIN>;IGNORE
+reorder-after <U0054>
+<U021A> <t,>;<CDI>;<MIN>;IGNORE
+<U0162> <t,>;<CDI>;<CAP>;IGNORE
+
+reorder-end
+
diff --git a/ap/build/uClibc/extra/locale/collation/ru_RU b/ap/build/uClibc/extra/locale/collation/ru_RU
new file mode 100644
index 0000000..342a761
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ru_RU
@@ -0,0 +1,15 @@
+copy "iso14651_t1"
+
+% iso14651_t1 is missing Ukrainian ghe
+collating-symbol <UKR-GHE>
+
+reorder-after <CYR-GZHE>
+<UKR-GHE>
+
+reorder-after <U0453>
+<U0491> <UKR-GHE>;<BAS>;<MIN>;IGNORE
+
+reorder-after <U0403>
+<U0490> <UKR-GHE>;<BAS>;<CAP>;IGNORE
+
+reorder-end
diff --git a/ap/build/uClibc/extra/locale/collation/ru_UA b/ap/build/uClibc/extra/locale/collation/ru_UA
new file mode 100644
index 0000000..342a761
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ru_UA
@@ -0,0 +1,15 @@
+copy "iso14651_t1"
+
+% iso14651_t1 is missing Ukrainian ghe
+collating-symbol <UKR-GHE>
+
+reorder-after <CYR-GZHE>
+<UKR-GHE>
+
+reorder-after <U0453>
+<U0491> <UKR-GHE>;<BAS>;<MIN>;IGNORE
+
+reorder-after <U0403>
+<U0490> <UKR-GHE>;<BAS>;<CAP>;IGNORE
+
+reorder-end
diff --git a/ap/build/uClibc/extra/locale/collation/se_NO b/ap/build/uClibc/extra/locale/collation/se_NO
new file mode 100644
index 0000000..9718edc
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/se_NO
@@ -0,0 +1,149 @@
+copy "iso14651_t1"
+
+collating-symbol <aring>
+collating-symbol <atilde>
+collating-symbol <acircumflex>
+collating-symbol <agrave>
+collating-symbol <aacute>
+collating-symbol <noae>
+collating-symbol <svae>
+collating-symbol <ccedilla>
+collating-symbol <ccaron>
+collating-symbol <ezh>
+collating-symbol <ezhcaron>
+collating-symbol <dstroke>
+collating-symbol <eth>
+collating-symbol <fhook>
+collating-symbol <gcaron>
+collating-symbol <gstroke>
+collating-symbol <kcaron>
+collating-symbol <otilde>
+collating-symbol <oe>
+collating-symbol <ssharp>
+collating-symbol <scaron>
+collating-symbol <oumlaut>
+collating-symbol <oslash>
+
+%
+reorder-after <CAP>
+<MIN>
+
+reorder-after <a>
+<agrave>
+<atilde>
+<aacute>
+<acircumflex>
+
+
+reorder-after <c>
+<ccaron>
+<ccedilla>
+<ezh>
+<ezhcaron>
+
+reorder-after <d>
+<dstroke>
+<eth>
+
+reorder-after <f>
+<fhook>
+
+reorder-after <g>
+<gcaron>
+<gstroke>
+
+reorder-after <k>
+<kcaron>
+
+reorder-after <s>
+<ssharp>
+<scaron>
+
+reorder-after <th>
+<noae>
+<oslash>
+<aring>
+<svae>
+<oumlaut>
+
+reorder-after <U0061>
+<U00E0> <agrave>;<GRA>;<MIN>;IGNORE % 201 à
+<U00E1> <aacute>;<ACA>;<MIN>;IGNORE % 200 á
+<U00E2> <acircumflex>;<CIR>;<MIN>;IGNORE % 202 â
+<U00E3> <atilde>;<TIL>;<MIN>;IGNORE % 203 ã
+
+reorder-after <U0041>
+<U00C0> <agrave>;<GRA>;<CAP>;IGNORE % 321 À
+<U00C1> <aacute>;<ACA>;<CAP>;IGNORE % 320 Á
+<U00C2> <acircumflex>;<CIR>;<CAP>;IGNORE % 322 Â
+<U00C3> <atilde>;<TIL>;<CAP>;IGNORE % 323 Ã
+
+reorder-after <U0063>
+<U00E7> <ccedilla>;<CDI>;<MIN>;IGNORE % 212 ç
+<U010D> <ccaron>;<CAR>;<MIN>;IGNORE % 215 <c<>
+
+reorder-after <U0043>
+<U00C7> <ccedilla>;<CDI>;<CAP>;IGNORE % 332 Ç
+<U010C> <ccaron>;<CAR>;<CAP>;IGNORE % 335 <C<>
+
+reorder-after <U010B>
+<U0292> <ezh>;<BAS>;<MIN>;IGNORE % ezh
+<U01EF> <ezhcaron>;<CAR>;<MIN>;IGNORE % ezh caron
+
+reorder-after <U010A>
+<U01B7> <ezh>;<BAS>;<MIN>;IGNORE % EZH
+<U01EE> <ezhcaron>;<CAR>;<CAP>;IGNORE % EZH caron
+
+reorder-after <U0064>
+<U00F0> <eth>;<PCL>;<MIN>;IGNORE % 218 ð
+<U0111> <dstroke>;<OBL>;<MIN>;IGNORE % 220 <d//>
+
+reorder-after <U0044>
+<U00D0> <eth>;<PCL>;<CAP>;IGNORE % 338 Ð
+<U0110> <dstroke>;<OBL>;<CAP>;IGNORE % 340 <D//>
+
+reorder-after <U0066>
+<U0192> <fhook>;<BAS>;<MIN>;IGNORE % f WITH HOOK
+
+reorder-after <U0123>
+<U01E7> <gcaron>;<CAR>;<MIN>;IGNORE % gcaron
+<U01E5> <gstroke>;<OBL>;<MIN>;IGNORE % gstroke
+
+reorder-after <U0122>
+<U01E6> <gcaron>;<CAR>;<MIN>;IGNORE % Gcaron
+<U01E4> <gstroke>;<OBL>;<MIN>;IGNORE % Gstroke
+
+reorder-after <U0137>
+<U01E9> <kcaron>;<CAR>;<MIN>;IGNORE % kcaron
+reorder-after <U0136>
+<U01E8> <kcaron>;<CAR>;<CAP>;IGNORE % Kcaron
+
+reorder-after <U0053>
+<U00DF> <ssharp>;"<LIG><LIG>";"<MIN><MIN>";IGNORE % ß
+<U0161> <scaron>;<CAR>;<MIN>;IGNORE % 288 <s<>
+<U0160> <scaron>;<CAR>;<CAP>;IGNORE % 405 <S<>
+
+
+reorder-after <U00E3>
+<U00E4> <svae>;<REU>;<MIN>;IGNORE % ä
+<U00E5> <aring>;<RNE>;<MIN>;IGNORE % å
+<U00E6> <noae>;<LIG>;<MIN>;IGNORE % æ
+reorder-after <U00F5>
+<U00F6> <oumlaut>;<REU>;<MIN>;IGNORE % ö
+<U00F8> <oslash>;<OBL>;<MIN>;IGNORE % ø
+
+reorder-after <U00C3>
+<U00C4> <svae>;<REU>;<CAP>;IGNORE % Ä
+<U00C5> <aring>;<RNE>;<CAP>;IGNORE % Å
+<U00C6> <noae>;<LIG>;<CAP>;IGNORE % Æ
+reorder-after <U00D5>
+<U00D6> <oumlaut>;<REU>;<CAP>;IGNORE % Ö
+<U00D8> <oslash>;<OBL>;<CAP>;IGNORE % Ø
+
+% ü/Ü is treated like y/Y but is sorted after the latter
+reorder-after <U00FB>
+<U00FC> <y>;<REU>;<MIN>;IGNORE % ü
+reorder-after <U00DB>
+<U00DC> <y>;<REU>;<CAP>;IGNORE % Ü
+reorder-end
+
diff --git a/ap/build/uClibc/extra/locale/collation/sk_SK b/ap/build/uClibc/extra/locale/collation/sk_SK
new file mode 100644
index 0000000..245653c
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/sk_SK
@@ -0,0 +1 @@
+copy "cs_CZ"
diff --git a/ap/build/uClibc/extra/locale/collation/sl_SI b/ap/build/uClibc/extra/locale/collation/sl_SI
new file mode 100644
index 0000000..7f7ad23
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/sl_SI
@@ -0,0 +1,2061 @@
+
+% Base collation scheme: 1994-03-22
+
+% Ordering algorithm:
+% 1. Spaces and hyphen (but not soft
+% hyphen) before punctuation
+% characters, punctuation characters
+% before numbers,
+% numbers before letters.
+% 2. Letters with diacritical marks are
+% members of equivalence classes
+% 3. A distinction is made with regards
+% to case as noted below.
+% 4. Special characters are ignored
+% when comparing letters, but then
+% they are considered
+% 5. The alphabets are sorted in order
+% of first appearance in ISO 10646:
+% Latin, Greek, Cyrillic, etc.
+%
+% According to Greek specifications,
+% the steps 2. and 3. above are reversed
+% for the Greek script
+
+% collating symbols
+
+% The collating symbol naming is
+% mostly taken from ISO 10646-1,
+% for example the case and accent
+% names are from this standard.
+
+collating-symbol <CAPITAL>
+collating-symbol <CAPITAL-SMALL>
+collating-symbol <SMALL-CAPITAL>
+collating-symbol <SMALL>
+
+% <CAPITAL-SMALL> and <SMALL-CAPITAL>
+% are for cases like Danish <U0041><U0061>
+% and Spanish <U0043><U0068> being treated
+% as one letter.
+
+% The <a8> ...... <z8> collating
+% symbols have defined weights as
+% the last character in a group of
+% Latin letters. They are used
+% to specify deltas by locales using
+% a locale as the default ordering
+% and by "replace-after" statements
+% specifying the changed placement
+% in an ordering of a character.
+
+collating-symbol <a8>
+collating-symbol <b8>
+collating-symbol <c8>
+collating-symbol <d8>
+collating-symbol <e8>
+collating-symbol <f8>
+collating-symbol <g8>
+collating-symbol <h8>
+collating-symbol <i8>
+collating-symbol <j8>
+collating-symbol <k8>
+collating-symbol <l8>
+collating-symbol <m8>
+collating-symbol <n8>
+collating-symbol <o8>
+collating-symbol <p8>
+collating-symbol <q8>
+collating-symbol <r8>
+collating-symbol <s8>
+collating-symbol <t8>
+collating-symbol <u8>
+collating-symbol <v8>
+collating-symbol <w8>
+collating-symbol <x8>
+collating-symbol <y8>
+collating-symbol <z8>
+
+collating-symbol <NONE>
+collating-symbol <ACUTE>
+collating-symbol <ACUTE+DOT>
+collating-symbol <GRAVE>
+collating-symbol <DOUBLE-GRAVE>
+collating-symbol <BREVE>
+collating-symbol <BREVE+ACUTE>
+collating-symbol <BREVE+GRAVE>
+collating-symbol <BREVE+MACRON>
+collating-symbol <BREVE+HOOK>
+collating-symbol <BREVE+TILDE>
+collating-symbol <BREVE+DOT-BELOW>
+collating-symbol <BREVE-BELOW>
+collating-symbol <INVERTED-BREVE>
+collating-symbol <CIRCUMFLEX>
+collating-symbol <CIRCUMFLEX+ACUTE>
+collating-symbol <CIRCUMFLEX+GRAVE>
+collating-symbol <CIRCUMFLEX+HOOK>
+collating-symbol <CIRCUMFLEX+TILDE>
+collating-symbol <CIRCUMFLEX+DOT-BELOW>
+collating-symbol <CARON>
+collating-symbol <CARON+DIAERESIS>
+collating-symbol <CARON+DOT>
+collating-symbol <RING>
+collating-symbol <RING+ACUTE>
+collating-symbol <RING-BELOW>
+collating-symbol <DIAERESIS>
+collating-symbol <DIAERESIS+MACRON>
+collating-symbol <DIAERESIS+ACUTE>
+collating-symbol <DIAERESIS+GRAVE>
+collating-symbol <DIAERESIS+CARON>
+collating-symbol <DOUBLE-ACUTE>
+collating-symbol <HOOK>
+collating-symbol <TILDE>
+collating-symbol <TILDE+ACUTE>
+collating-symbol <TILDE+DIAERESIS>
+collating-symbol <TILDE-BELOW>
+collating-symbol <DOT>
+collating-symbol <DOT-BELOW>
+collating-symbol <DOT+DOT-BELOW>
+collating-symbol <STROKE>
+collating-symbol <STROKE+ACUTE>
+collating-symbol <CEDILLA>
+collating-symbol <CEDILLA+ACUTE>
+collating-symbol <CEDILLA+GRAVE>
+collating-symbol <CEDILLA+BREVE>
+collating-symbol <OGONEK>
+collating-symbol <OGONEK+MACRON>
+collating-symbol <MACRON>
+collating-symbol <MACRON+ACUTE>
+collating-symbol <MACRON+GRAVE>
+collating-symbol <MACRON+DIAERESIS>
+collating-symbol <MACRON+DIAERESIS-BELOW>
+collating-symbol <MACRON+DOT>
+collating-symbol <MACRON+DOT-BELOW>
+collating-symbol <MACRON+CIRCUMFLEX>
+collating-symbol <LINE-BELOW>
+collating-symbol <HORN>
+collating-symbol <HORN+ACUTE>
+collating-symbol <HORN+GRAVE>
+collating-symbol <HORN+HOOK>
+collating-symbol <HORN+TILDE>
+collating-symbol <HORN+DOT-BELOW>
+collating-symbol <PRECEDED-BY-APOSTROPHE>
+collating-symbol <GREEK>
+collating-symbol <TONOS>
+collating-symbol <DIALYTICA>
+collating-symbol <DIALYTICA+TONOS>
+collating-symbol <CYRILLIC>
+collating-symbol <HIRAGANA>
+collating-symbol <KATAKANA>
+collating-symbol <SPECIAL>
+
+% letter;accent;case;specials
+
+order_start forward;backward;forward;position
+
+% <CAPITAL> or <SMALL> letters first:
+
+<SMALL>
+<SMALL-CAPITAL>
+<CAPITAL-SMALL>
+<CAPITAL>
+
+% Accents:
+
+<NONE>
+<ACUTE>
+<ACUTE+DOT>
+<GRAVE>
+<DOUBLE-GRAVE>
+<BREVE>
+<BREVE+ACUTE>
+<BREVE+GRAVE>
+<BREVE+MACRON>
+<BREVE+HOOK>
+<BREVE+TILDE>
+<BREVE+DOT-BELOW>
+<BREVE-BELOW>
+<INVERTED-BREVE>
+<CIRCUMFLEX>
+<CIRCUMFLEX+ACUTE>
+<CIRCUMFLEX+GRAVE>
+<CIRCUMFLEX+HOOK>
+<CIRCUMFLEX+TILDE>
+<CIRCUMFLEX+DOT-BELOW>
+<CARON>
+<CARON+DIAERESIS>
+<CARON+DOT>
+<RING>
+<RING+ACUTE>
+<RING-BELOW>
+<DIAERESIS>
+<DIAERESIS+MACRON>
+<DIAERESIS+ACUTE>
+<DIAERESIS+GRAVE>
+<DIAERESIS+CARON>
+<DOUBLE-ACUTE>
+<HOOK>
+<TILDE>
+<TILDE+ACUTE>
+<TILDE+DIAERESIS>
+<TILDE-BELOW>
+<DOT>
+<DOT-BELOW>
+<DOT+DOT-BELOW>
+<STROKE>
+<STROKE+ACUTE>
+<CEDILLA>
+<CEDILLA+ACUTE>
+<CEDILLA+GRAVE>
+<CEDILLA+BREVE>
+<OGONEK>
+<OGONEK+MACRON>
+<MACRON>
+<MACRON+ACUTE>
+<MACRON+GRAVE>
+<MACRON+DIAERESIS>
+<MACRON+DIAERESIS-BELOW>
+<MACRON+DOT>
+<MACRON+DOT-BELOW>
+<MACRON+CIRCUMFLEX>
+<LINE-BELOW>
+<HORN>
+<HORN+ACUTE>
+<HORN+GRAVE>
+<HORN+HOOK>
+<HORN+TILDE>
+<HORN+DOT-BELOW>
+<PRECEDED-BY-APOSTROPHE>
+<GREEK>
+<TONOS>
+<DIALYTICA>
+<DIALYTICA+TONOS>
+<CYRILLIC>
+<HIRAGANA>
+<KATAKANA>
+<SPECIAL>
+
+<U00A0> <U00A0>;<U00A0>;<U00A0>;IGNORE
+<U0020> IGNORE;IGNORE;IGNORE;<U0020>
+<U0009> IGNORE;IGNORE;IGNORE;<U0009>
+<U000B> IGNORE;IGNORE;IGNORE;<U000B>
+<U000D> IGNORE;IGNORE;IGNORE;<U000D>
+<U000A> IGNORE;IGNORE;IGNORE;<U000A>
+<U000C> IGNORE;IGNORE;IGNORE;<U000C>
+<U005F> IGNORE;IGNORE;IGNORE;<U005F>
+<U00AF> IGNORE;IGNORE;IGNORE;<U00AF>
+<U00AD> IGNORE;IGNORE;IGNORE;<U00AD>
+<U002D> IGNORE;IGNORE;IGNORE;<U002D>
+<U002C> IGNORE;IGNORE;IGNORE;<U002C>
+<U003B> IGNORE;IGNORE;IGNORE;<U003B>
+<U003A> IGNORE;IGNORE;IGNORE;<U003A>
+<U0021> IGNORE;IGNORE;IGNORE;<U0021>
+<U00A1> IGNORE;IGNORE;IGNORE;<U00A1>
+<U003F> IGNORE;IGNORE;IGNORE;<U003F>
+<U00BF> IGNORE;IGNORE;IGNORE;<U00BF>
+<U002F> IGNORE;IGNORE;IGNORE;<U002F>
+<U002E> IGNORE;IGNORE;IGNORE;<U002E>
+<U00B4> IGNORE;IGNORE;IGNORE;<U00B4>
+<U0060> IGNORE;IGNORE;IGNORE;<U0060>
+<U005E> IGNORE;IGNORE;IGNORE;<U005E>
+<U00A8> IGNORE;IGNORE;IGNORE;<U00A8>
+<U007E> IGNORE;IGNORE;IGNORE;<U007E>
+<U00B7> IGNORE;IGNORE;IGNORE;<U00B7>
+<U00B8> IGNORE;IGNORE;IGNORE;<U00B8>
+<U0027> IGNORE;IGNORE;IGNORE;<U0027>
+<U2018> IGNORE;IGNORE;IGNORE;<U2018>
+<U2019> IGNORE;IGNORE;IGNORE;<U2019>
+<U0022> IGNORE;IGNORE;IGNORE;<U0022>
+<U201C> IGNORE;IGNORE;IGNORE;<U201C>
+<U201D> IGNORE;IGNORE;IGNORE;<U201D>
+<U00AB> IGNORE;IGNORE;IGNORE;<U00AB>
+<U00BB> IGNORE;IGNORE;IGNORE;<U00BB>
+<U0028> IGNORE;IGNORE;IGNORE;<U0028>
+<U207D> IGNORE;IGNORE;IGNORE;<U207D>
+<U0029> IGNORE;IGNORE;IGNORE;<U0029>
+<U207E> IGNORE;IGNORE;IGNORE;<U207E>
+<U005B> IGNORE;IGNORE;IGNORE;<U005B>
+<U005D> IGNORE;IGNORE;IGNORE;<U005D>
+<U007B> IGNORE;IGNORE;IGNORE;<U007B>
+<U007D> IGNORE;IGNORE;IGNORE;<U007D>
+<U00A7> IGNORE;IGNORE;IGNORE;<U00A7>
+<U00B6> IGNORE;IGNORE;IGNORE;<U00B6>
+<U00A9> IGNORE;IGNORE;IGNORE;<U00A9>
+<U00AE> IGNORE;IGNORE;IGNORE;<U00AE>
+<U0040> IGNORE;IGNORE;IGNORE;<U0040>
+<U00A4> IGNORE;IGNORE;IGNORE;<U00A4>
+<U00A2> IGNORE;IGNORE;IGNORE;<U00A2>
+<U0024> IGNORE;IGNORE;IGNORE;<U0024>
+<U00A3> IGNORE;IGNORE;IGNORE;<U00A3>
+<U00A5> IGNORE;IGNORE;IGNORE;<U00A5>
+<U002A> IGNORE;IGNORE;IGNORE;<U002A>
+<U005C> IGNORE;IGNORE;IGNORE;<U005C>
+<U0026> IGNORE;IGNORE;IGNORE;<U0026>
+<U0023> IGNORE;IGNORE;IGNORE;<U0023>
+<U0025> IGNORE;IGNORE;IGNORE;<U0025>
+<U207B> IGNORE;IGNORE;IGNORE;<U207B>
+<U002B> IGNORE;IGNORE;IGNORE;<U002B>
+<U207A> IGNORE;IGNORE;IGNORE;<U207A>
+<U00B1> IGNORE;IGNORE;IGNORE;<U00B1>
+<U00F7> IGNORE;IGNORE;IGNORE;<U00F7>
+<U00D7> IGNORE;IGNORE;IGNORE;<U00D7>
+<U2260> IGNORE;IGNORE;IGNORE;<U2260>
+<U003C> IGNORE;IGNORE;IGNORE;<U003C>
+<U2264> IGNORE;IGNORE;IGNORE;<U2264>
+<U003D> IGNORE;IGNORE;IGNORE;<U003D>
+<U2265> IGNORE;IGNORE;IGNORE;<U2265>
+<U003E> IGNORE;IGNORE;IGNORE;<U003E>
+<U00AC> IGNORE;IGNORE;IGNORE;<U00AC>
+<U007C> IGNORE;IGNORE;IGNORE;<U007C>
+<U00A6> IGNORE;IGNORE;IGNORE;<U00A6>
+<U00B0> IGNORE;IGNORE;IGNORE;<U00B0>
+<U00B5> IGNORE;IGNORE;IGNORE;<U00B5>
+<U02C7> IGNORE;IGNORE;IGNORE;<U02C7>
+<U02D8> IGNORE;IGNORE;IGNORE;<U02D8>
+<U02D9> IGNORE;IGNORE;IGNORE;<U02D9>
+<U02DA> IGNORE;IGNORE;IGNORE;<U02DA>
+<U02DB> IGNORE;IGNORE;IGNORE;<U02DB>
+<U02DC> IGNORE;IGNORE;IGNORE;<U02DC>
+<U02DD> IGNORE;IGNORE;IGNORE;<U02DD>
+<U0374> IGNORE;IGNORE;IGNORE;<U0374>
+<U0375> IGNORE;IGNORE;IGNORE;<U0375>
+<U037A> IGNORE;IGNORE;IGNORE;<U037A>
+<U037E> IGNORE;IGNORE;IGNORE;<U037E>
+<U0384> IGNORE;IGNORE;IGNORE;<U0384>
+<U0385> IGNORE;IGNORE;IGNORE;<U0385>
+<U0387> IGNORE;IGNORE;IGNORE;<U0387>
+<U03D0> IGNORE;IGNORE;IGNORE;<U03D0>
+<U1FBF> IGNORE;IGNORE;IGNORE;<U1FBF>
+<U1FC0> IGNORE;IGNORE;IGNORE;<U1FC0>
+<U1FC1> IGNORE;IGNORE;IGNORE;<U1FC1>
+<U1FCD> IGNORE;IGNORE;IGNORE;<U1FCD>
+<U1FCE> IGNORE;IGNORE;IGNORE;<U1FCE>
+<U1FCF> IGNORE;IGNORE;IGNORE;<U1FCF>
+<U1FDD> IGNORE;IGNORE;IGNORE;<U1FDD>
+<U1FDE> IGNORE;IGNORE;IGNORE;<U1FDE>
+<U1FDF> IGNORE;IGNORE;IGNORE;<U1FDF>
+<U1FED> IGNORE;IGNORE;IGNORE;<U1FED>
+<U1FEF> IGNORE;IGNORE;IGNORE;<U1FEF>
+<U1FFE> IGNORE;IGNORE;IGNORE;<U1FFE>
+<U2002> IGNORE;IGNORE;IGNORE;<U2002>
+<U2003> IGNORE;IGNORE;IGNORE;<U2003>
+<U2004> IGNORE;IGNORE;IGNORE;<U2004>
+<U2005> IGNORE;IGNORE;IGNORE;<U2005>
+<U2006> IGNORE;IGNORE;IGNORE;<U2006>
+<U200E> IGNORE;IGNORE;IGNORE;<U200E>
+<U200F> IGNORE;IGNORE;IGNORE;<U200F>
+<U2009> IGNORE;IGNORE;IGNORE;<U2009>
+<U200A> IGNORE;IGNORE;IGNORE;<U200A>
+<U2010> IGNORE;IGNORE;IGNORE;<U2010>
+<U2013> IGNORE;IGNORE;IGNORE;<U2013>
+<U2014> IGNORE;IGNORE;IGNORE;<U2014>
+<U2015> IGNORE;IGNORE;IGNORE;<U2015>
+<U2016> IGNORE;IGNORE;IGNORE;<U2016>
+<U2017> IGNORE;IGNORE;IGNORE;<U2017>
+<U201A> IGNORE;IGNORE;IGNORE;<U201A>
+<U201B> IGNORE;IGNORE;IGNORE;<U201B>
+<U201E> IGNORE;IGNORE;IGNORE;<U201E>
+<U201F> IGNORE;IGNORE;IGNORE;<U201F>
+<U2020> IGNORE;IGNORE;IGNORE;<U2020>
+<U2021> IGNORE;IGNORE;IGNORE;<U2021>
+<U2219> IGNORE;IGNORE;IGNORE;<U2219>
+<U2025> IGNORE;IGNORE;IGNORE;<U2025>
+<U2026> IGNORE;IGNORE;IGNORE;<U2026>
+<U2030> IGNORE;IGNORE;IGNORE;<U2030>
+<U2032> IGNORE;IGNORE;IGNORE;<U2032>
+<U2033> IGNORE;IGNORE;IGNORE;<U2033>
+<U2034> IGNORE;IGNORE;IGNORE;<U2034>
+<U2035> IGNORE;IGNORE;IGNORE;<U2035>
+<U2036> IGNORE;IGNORE;IGNORE;<U2036>
+<U2037> IGNORE;IGNORE;IGNORE;<U2037>
+<U2038> IGNORE;IGNORE;IGNORE;<U2038>
+<U2039> IGNORE;IGNORE;IGNORE;<U2039>
+<U203A> IGNORE;IGNORE;IGNORE;<U203A>
+<U203B> IGNORE;IGNORE;IGNORE;<U203B>
+<U203C> IGNORE;IGNORE;IGNORE;<U203C>
+<U203E> IGNORE;IGNORE;IGNORE;<U203E>
+<U207C> IGNORE;IGNORE;IGNORE;<U207C>
+<U2080> IGNORE;IGNORE;IGNORE;<U2080>
+<U2081> IGNORE;IGNORE;IGNORE;<U2081>
+<U2082> IGNORE;IGNORE;IGNORE;<U2082>
+<U2083> IGNORE;IGNORE;IGNORE;<U2083>
+<U2084> IGNORE;IGNORE;IGNORE;<U2084>
+<U2085> IGNORE;IGNORE;IGNORE;<U2085>
+<U2086> IGNORE;IGNORE;IGNORE;<U2086>
+<U2087> IGNORE;IGNORE;IGNORE;<U2087>
+<U2088> IGNORE;IGNORE;IGNORE;<U2088>
+<U2089> IGNORE;IGNORE;IGNORE;<U2089>
+<U208A> IGNORE;IGNORE;IGNORE;<U208A>
+<U208B> IGNORE;IGNORE;IGNORE;<U208B>
+<U208C> IGNORE;IGNORE;IGNORE;<U208C>
+<U208D> IGNORE;IGNORE;IGNORE;<U208D>
+<U208E> IGNORE;IGNORE;IGNORE;<U208E>
+<U20A3> IGNORE;IGNORE;IGNORE;<U20A3>
+<U20A4> IGNORE;IGNORE;IGNORE;<U20A4>
+<U20A7> IGNORE;IGNORE;IGNORE;<U20A7>
+<U20A9> IGNORE;IGNORE;IGNORE;<U20A9>
+<U2103> IGNORE;IGNORE;IGNORE;<U2103>
+<U2105> IGNORE;IGNORE;IGNORE;<U2105>
+<U2109> IGNORE;IGNORE;IGNORE;<U2109>
+<U2116> IGNORE;IGNORE;IGNORE;<U2116>
+<U2117> IGNORE;IGNORE;IGNORE;<U2117>
+<U211E> IGNORE;IGNORE;IGNORE;<U211E>
+<U2120> IGNORE;IGNORE;IGNORE;<U2120>
+<U2122> IGNORE;IGNORE;IGNORE;<U2122>
+<U2126> IGNORE;IGNORE;IGNORE;<U2126>
+<U212B> IGNORE;IGNORE;IGNORE;<U212B>
+<U2153> IGNORE;IGNORE;IGNORE;<U2153>
+<U2154> IGNORE;IGNORE;IGNORE;<U2154>
+<U2155> IGNORE;IGNORE;IGNORE;<U2155>
+<U2156> IGNORE;IGNORE;IGNORE;<U2156>
+<U2157> IGNORE;IGNORE;IGNORE;<U2157>
+<U2158> IGNORE;IGNORE;IGNORE;<U2158>
+<U2159> IGNORE;IGNORE;IGNORE;<U2159>
+<U215A> IGNORE;IGNORE;IGNORE;<U215A>
+<U2160> IGNORE;IGNORE;IGNORE;<U2160>
+<U2161> IGNORE;IGNORE;IGNORE;<U2161>
+<U2162> IGNORE;IGNORE;IGNORE;<U2162>
+<U2163> IGNORE;IGNORE;IGNORE;<U2163>
+<U2164> IGNORE;IGNORE;IGNORE;<U2164>
+<U2165> IGNORE;IGNORE;IGNORE;<U2165>
+<U2166> IGNORE;IGNORE;IGNORE;<U2166>
+<U2167> IGNORE;IGNORE;IGNORE;<U2167>
+<U2168> IGNORE;IGNORE;IGNORE;<U2168>
+<U2169> IGNORE;IGNORE;IGNORE;<U2169>
+<U216A> IGNORE;IGNORE;IGNORE;<U216A>
+<U216B> IGNORE;IGNORE;IGNORE;<U216B>
+<U216C> IGNORE;IGNORE;IGNORE;<U216C>
+<U216D> IGNORE;IGNORE;IGNORE;<U216D>
+<U216E> IGNORE;IGNORE;IGNORE;<U216E>
+<U216F> IGNORE;IGNORE;IGNORE;<U216F>
+<U2170> IGNORE;IGNORE;IGNORE;<U2170>
+<U2171> IGNORE;IGNORE;IGNORE;<U2171>
+<U2172> IGNORE;IGNORE;IGNORE;<U2172>
+<U2173> IGNORE;IGNORE;IGNORE;<U2173>
+<U2174> IGNORE;IGNORE;IGNORE;<U2174>
+<U2175> IGNORE;IGNORE;IGNORE;<U2175>
+<U2176> IGNORE;IGNORE;IGNORE;<U2176>
+<U2177> IGNORE;IGNORE;IGNORE;<U2177>
+<U2178> IGNORE;IGNORE;IGNORE;<U2178>
+<U2179> IGNORE;IGNORE;IGNORE;<U2179>
+<U217A> IGNORE;IGNORE;IGNORE;<U217A>
+<U217B> IGNORE;IGNORE;IGNORE;<U217B>
+<U217C> IGNORE;IGNORE;IGNORE;<U217C>
+<U217D> IGNORE;IGNORE;IGNORE;<U217D>
+<U217E> IGNORE;IGNORE;IGNORE;<U217E>
+<U217F> IGNORE;IGNORE;IGNORE;<U217F>
+<U2180> IGNORE;IGNORE;IGNORE;<U2180>
+<U2181> IGNORE;IGNORE;IGNORE;<U2181>
+<U2182> IGNORE;IGNORE;IGNORE;<U2182>
+<U2191> IGNORE;IGNORE;IGNORE;<U2191>
+<U2193> IGNORE;IGNORE;IGNORE;<U2193>
+<U2194> IGNORE;IGNORE;IGNORE;<U2194>
+<U2195> IGNORE;IGNORE;IGNORE;<U2195>
+<U2196> IGNORE;IGNORE;IGNORE;<U2196>
+<U2197> IGNORE;IGNORE;IGNORE;<U2197>
+<U2198> IGNORE;IGNORE;IGNORE;<U2198>
+<U2199> IGNORE;IGNORE;IGNORE;<U2199>
+<U21A8> IGNORE;IGNORE;IGNORE;<U21A8>
+<U21C0> IGNORE;IGNORE;IGNORE;<U21C0>
+<U21D0> IGNORE;IGNORE;IGNORE;<U21D0>
+<U21D2> IGNORE;IGNORE;IGNORE;<U21D2>
+<U21D4> IGNORE;IGNORE;IGNORE;<U21D4>
+<U2200> IGNORE;IGNORE;IGNORE;<U2200>
+<U2202> IGNORE;IGNORE;IGNORE;<U2202>
+<U2203> IGNORE;IGNORE;IGNORE;<U2203>
+<U2205> IGNORE;IGNORE;IGNORE;<U2205>
+<U2206> IGNORE;IGNORE;IGNORE;<U2206>
+<U2207> IGNORE;IGNORE;IGNORE;<U2207>
+<U2208> IGNORE;IGNORE;IGNORE;<U2208>
+<U220B> IGNORE;IGNORE;IGNORE;<U220B>
+<U220F> IGNORE;IGNORE;IGNORE;<U220F>
+<U2211> IGNORE;IGNORE;IGNORE;<U2211>
+<U2212> IGNORE;IGNORE;IGNORE;<U2212>
+<U2213> IGNORE;IGNORE;IGNORE;<U2213>
+<U2214> IGNORE;IGNORE;IGNORE;<U2214>
+<U2044> IGNORE;IGNORE;IGNORE;<U2044>
+<U2217> IGNORE;IGNORE;IGNORE;<U2217>
+<U2218> IGNORE;IGNORE;IGNORE;<U2218>
+<U2022> IGNORE;IGNORE;IGNORE;<U2022>
+<U221A> IGNORE;IGNORE;IGNORE;<U221A>
+<U221D> IGNORE;IGNORE;IGNORE;<U221D>
+<U221E> IGNORE;IGNORE;IGNORE;<U221E>
+<U221F> IGNORE;IGNORE;IGNORE;<U221F>
+<U2220> IGNORE;IGNORE;IGNORE;<U2220>
+<U2225> IGNORE;IGNORE;IGNORE;<U2225>
+<U2227> IGNORE;IGNORE;IGNORE;<U2227>
+<U2228> IGNORE;IGNORE;IGNORE;<U2228>
+<U2229> IGNORE;IGNORE;IGNORE;<U2229>
+<U222A> IGNORE;IGNORE;IGNORE;<U222A>
+<U222B> IGNORE;IGNORE;IGNORE;<U222B>
+<U222C> IGNORE;IGNORE;IGNORE;<U222C>
+<U222E> IGNORE;IGNORE;IGNORE;<U222E>
+<U2234> IGNORE;IGNORE;IGNORE;<U2234>
+<U2235> IGNORE;IGNORE;IGNORE;<U2235>
+<U2236> IGNORE;IGNORE;IGNORE;<U2236>
+<U2237> IGNORE;IGNORE;IGNORE;<U2237>
+<U223C> IGNORE;IGNORE;IGNORE;<U223C>
+<U223E> IGNORE;IGNORE;IGNORE;<U223E>
+<U2243> IGNORE;IGNORE;IGNORE;<U2243>
+<U2245> IGNORE;IGNORE;IGNORE;<U2245>
+<U2248> IGNORE;IGNORE;IGNORE;<U2248>
+<U224C> IGNORE;IGNORE;IGNORE;<U224C>
+<U2253> IGNORE;IGNORE;IGNORE;<U2253>
+<U2261> IGNORE;IGNORE;IGNORE;<U2261>
+<U226A> IGNORE;IGNORE;IGNORE;<U226A>
+<U226B> IGNORE;IGNORE;IGNORE;<U226B>
+<U226E> IGNORE;IGNORE;IGNORE;<U226E>
+<U226F> IGNORE;IGNORE;IGNORE;<U226F>
+<U2282> IGNORE;IGNORE;IGNORE;<U2282>
+<U2283> IGNORE;IGNORE;IGNORE;<U2283>
+<U2286> IGNORE;IGNORE;IGNORE;<U2286>
+<U2287> IGNORE;IGNORE;IGNORE;<U2287>
+<U2299> IGNORE;IGNORE;IGNORE;<U2299>
+<U229A> IGNORE;IGNORE;IGNORE;<U229A>
+<U22A5> IGNORE;IGNORE;IGNORE;<U22A5>
+<U22C5> IGNORE;IGNORE;IGNORE;<U22C5>
+<U22EE> IGNORE;IGNORE;IGNORE;<U22EE>
+<U2302> IGNORE;IGNORE;IGNORE;<U2302>
+<U2308> IGNORE;IGNORE;IGNORE;<U2308>
+<U2309> IGNORE;IGNORE;IGNORE;<U2309>
+<U230A> IGNORE;IGNORE;IGNORE;<U230A>
+<U230B> IGNORE;IGNORE;IGNORE;<U230B>
+<U2310> IGNORE;IGNORE;IGNORE;<U2310>
+<U2312> IGNORE;IGNORE;IGNORE;<U2312>
+<U2315> IGNORE;IGNORE;IGNORE;<U2315>
+<U2320> IGNORE;IGNORE;IGNORE;<U2320>
+<U2321> IGNORE;IGNORE;IGNORE;<U2321>
+<U2423> IGNORE;IGNORE;IGNORE;<U2423>
+<U2440> IGNORE;IGNORE;IGNORE;<U2440>
+<U2441> IGNORE;IGNORE;IGNORE;<U2441>
+<U2442> IGNORE;IGNORE;IGNORE;<U2442>
+<U2443> IGNORE;IGNORE;IGNORE;<U2443>
+<U2446> IGNORE;IGNORE;IGNORE;<U2446>
+<U2447> IGNORE;IGNORE;IGNORE;<U2447>
+<U2448> IGNORE;IGNORE;IGNORE;<U2448>
+<U2449> IGNORE;IGNORE;IGNORE;<U2449>
+<U2460> IGNORE;IGNORE;IGNORE;<U2460>
+<U2461> IGNORE;IGNORE;IGNORE;<U2461>
+<U2462> IGNORE;IGNORE;IGNORE;<U2462>
+<U2463> IGNORE;IGNORE;IGNORE;<U2463>
+<U2464> IGNORE;IGNORE;IGNORE;<U2464>
+<U2465> IGNORE;IGNORE;IGNORE;<U2465>
+<U2466> IGNORE;IGNORE;IGNORE;<U2466>
+<U2467> IGNORE;IGNORE;IGNORE;<U2467>
+<U2468> IGNORE;IGNORE;IGNORE;<U2468>
+<U2469> IGNORE;IGNORE;IGNORE;<U2469>
+<U246A> IGNORE;IGNORE;IGNORE;<U246A>
+<U246B> IGNORE;IGNORE;IGNORE;<U246B>
+<U246C> IGNORE;IGNORE;IGNORE;<U246C>
+<U246D> IGNORE;IGNORE;IGNORE;<U246D>
+<U246E> IGNORE;IGNORE;IGNORE;<U246E>
+<U246F> IGNORE;IGNORE;IGNORE;<U246F>
+<U2470> IGNORE;IGNORE;IGNORE;<U2470>
+<U2471> IGNORE;IGNORE;IGNORE;<U2471>
+<U2472> IGNORE;IGNORE;IGNORE;<U2472>
+<U2473> IGNORE;IGNORE;IGNORE;<U2473>
+<U2474> IGNORE;IGNORE;IGNORE;<U2474>
+<U2475> IGNORE;IGNORE;IGNORE;<U2475>
+<U2476> IGNORE;IGNORE;IGNORE;<U2476>
+<U2477> IGNORE;IGNORE;IGNORE;<U2477>
+<U2478> IGNORE;IGNORE;IGNORE;<U2478>
+<U2479> IGNORE;IGNORE;IGNORE;<U2479>
+<U247A> IGNORE;IGNORE;IGNORE;<U247A>
+<U247B> IGNORE;IGNORE;IGNORE;<U247B>
+<U247C> IGNORE;IGNORE;IGNORE;<U247C>
+<U247D> IGNORE;IGNORE;IGNORE;<U247D>
+<U247E> IGNORE;IGNORE;IGNORE;<U247E>
+<U247F> IGNORE;IGNORE;IGNORE;<U247F>
+<U2480> IGNORE;IGNORE;IGNORE;<U2480>
+<U2481> IGNORE;IGNORE;IGNORE;<U2481>
+<U2482> IGNORE;IGNORE;IGNORE;<U2482>
+<U2483> IGNORE;IGNORE;IGNORE;<U2483>
+<U2484> IGNORE;IGNORE;IGNORE;<U2484>
+<U2485> IGNORE;IGNORE;IGNORE;<U2485>
+<U2486> IGNORE;IGNORE;IGNORE;<U2486>
+<U2487> IGNORE;IGNORE;IGNORE;<U2487>
+<U2488> IGNORE;IGNORE;IGNORE;<U2488>
+<U2489> IGNORE;IGNORE;IGNORE;<U2489>
+<U248A> IGNORE;IGNORE;IGNORE;<U248A>
+<U248B> IGNORE;IGNORE;IGNORE;<U248B>
+<U248C> IGNORE;IGNORE;IGNORE;<U248C>
+<U248D> IGNORE;IGNORE;IGNORE;<U248D>
+<U248E> IGNORE;IGNORE;IGNORE;<U248E>
+<U248F> IGNORE;IGNORE;IGNORE;<U248F>
+<U2490> IGNORE;IGNORE;IGNORE;<U2490>
+<U2491> IGNORE;IGNORE;IGNORE;<U2491>
+<U2492> IGNORE;IGNORE;IGNORE;<U2492>
+<U2493> IGNORE;IGNORE;IGNORE;<U2493>
+<U2494> IGNORE;IGNORE;IGNORE;<U2494>
+<U2495> IGNORE;IGNORE;IGNORE;<U2495>
+<U2496> IGNORE;IGNORE;IGNORE;<U2496>
+<U2497> IGNORE;IGNORE;IGNORE;<U2497>
+<U2498> IGNORE;IGNORE;IGNORE;<U2498>
+<U2499> IGNORE;IGNORE;IGNORE;<U2499>
+<U249A> IGNORE;IGNORE;IGNORE;<U249A>
+<U249B> IGNORE;IGNORE;IGNORE;<U249B>
+<U24EA> IGNORE;IGNORE;IGNORE;<U24EA>
+<U2500> IGNORE;IGNORE;IGNORE;<U2500>
+<U2550> IGNORE;IGNORE;IGNORE;<U2550>
+<U2502> IGNORE;IGNORE;IGNORE;<U2502>
+<U2551> IGNORE;IGNORE;IGNORE;<U2551>
+<U2504> IGNORE;IGNORE;IGNORE;<U2504>
+<U2505> IGNORE;IGNORE;IGNORE;<U2505>
+<U2506> IGNORE;IGNORE;IGNORE;<U2506>
+<U2507> IGNORE;IGNORE;IGNORE;<U2507>
+<U2508> IGNORE;IGNORE;IGNORE;<U2508>
+<U2509> IGNORE;IGNORE;IGNORE;<U2509>
+<U250A> IGNORE;IGNORE;IGNORE;<U250A>
+<U250B> IGNORE;IGNORE;IGNORE;<U250B>
+<U250C> IGNORE;IGNORE;IGNORE;<U250C>
+<U2552> IGNORE;IGNORE;IGNORE;<U2552>
+<U2553> IGNORE;IGNORE;IGNORE;<U2553>
+<U2554> IGNORE;IGNORE;IGNORE;<U2554>
+<U2510> IGNORE;IGNORE;IGNORE;<U2510>
+<U2555> IGNORE;IGNORE;IGNORE;<U2555>
+<U2556> IGNORE;IGNORE;IGNORE;<U2556>
+<U2557> IGNORE;IGNORE;IGNORE;<U2557>
+<U2514> IGNORE;IGNORE;IGNORE;<U2514>
+<U2558> IGNORE;IGNORE;IGNORE;<U2558>
+<U2559> IGNORE;IGNORE;IGNORE;<U2559>
+<U255A> IGNORE;IGNORE;IGNORE;<U255A>
+<U2518> IGNORE;IGNORE;IGNORE;<U2518>
+<U255B> IGNORE;IGNORE;IGNORE;<U255B>
+<U255C> IGNORE;IGNORE;IGNORE;<U255C>
+<U255D> IGNORE;IGNORE;IGNORE;<U255D>
+<U251C> IGNORE;IGNORE;IGNORE;<U251C>
+<U255E> IGNORE;IGNORE;IGNORE;<U255E>
+<U251E> IGNORE;IGNORE;IGNORE;<U251E>
+<U251F> IGNORE;IGNORE;IGNORE;<U251F>
+<U255F> IGNORE;IGNORE;IGNORE;<U255F>
+<U2521> IGNORE;IGNORE;IGNORE;<U2521>
+<U2522> IGNORE;IGNORE;IGNORE;<U2522>
+<U2560> IGNORE;IGNORE;IGNORE;<U2560>
+<U2524> IGNORE;IGNORE;IGNORE;<U2524>
+<U2561> IGNORE;IGNORE;IGNORE;<U2561>
+<U2526> IGNORE;IGNORE;IGNORE;<U2526>
+<U2527> IGNORE;IGNORE;IGNORE;<U2527>
+<U2562> IGNORE;IGNORE;IGNORE;<U2562>
+<U2529> IGNORE;IGNORE;IGNORE;<U2529>
+<U252A> IGNORE;IGNORE;IGNORE;<U252A>
+<U2563> IGNORE;IGNORE;IGNORE;<U2563>
+<U252C> IGNORE;IGNORE;IGNORE;<U252C>
+<U252D> IGNORE;IGNORE;IGNORE;<U252D>
+<U252E> IGNORE;IGNORE;IGNORE;<U252E>
+<U2564> IGNORE;IGNORE;IGNORE;<U2564>
+<U2565> IGNORE;IGNORE;IGNORE;<U2565>
+<U2531> IGNORE;IGNORE;IGNORE;<U2531>
+<U2532> IGNORE;IGNORE;IGNORE;<U2532>
+<U2566> IGNORE;IGNORE;IGNORE;<U2566>
+<U2534> IGNORE;IGNORE;IGNORE;<U2534>
+<U2535> IGNORE;IGNORE;IGNORE;<U2535>
+<U2536> IGNORE;IGNORE;IGNORE;<U2536>
+<U2567> IGNORE;IGNORE;IGNORE;<U2567>
+<U2568> IGNORE;IGNORE;IGNORE;<U2568>
+<U2539> IGNORE;IGNORE;IGNORE;<U2539>
+<U253A> IGNORE;IGNORE;IGNORE;<U253A>
+<U2569> IGNORE;IGNORE;IGNORE;<U2569>
+<U253C> IGNORE;IGNORE;IGNORE;<U253C>
+<U253D> IGNORE;IGNORE;IGNORE;<U253D>
+<U253E> IGNORE;IGNORE;IGNORE;<U253E>
+<U256A> IGNORE;IGNORE;IGNORE;<U256A>
+<U2540> IGNORE;IGNORE;IGNORE;<U2540>
+<U2541> IGNORE;IGNORE;IGNORE;<U2541>
+<U256B> IGNORE;IGNORE;IGNORE;<U256B>
+<U2543> IGNORE;IGNORE;IGNORE;<U2543>
+<U2544> IGNORE;IGNORE;IGNORE;<U2544>
+<U2545> IGNORE;IGNORE;IGNORE;<U2545>
+<U2546> IGNORE;IGNORE;IGNORE;<U2546>
+<U2547> IGNORE;IGNORE;IGNORE;<U2547>
+<U2548> IGNORE;IGNORE;IGNORE;<U2548>
+<U2549> IGNORE;IGNORE;IGNORE;<U2549>
+<U254A> IGNORE;IGNORE;IGNORE;<U254A>
+<U256C> IGNORE;IGNORE;IGNORE;<U256C>
+<U2571> IGNORE;IGNORE;IGNORE;<U2571>
+<U2572> IGNORE;IGNORE;IGNORE;<U2572>
+<U2580> IGNORE;IGNORE;IGNORE;<U2580>
+<U2584> IGNORE;IGNORE;IGNORE;<U2584>
+<U2588> IGNORE;IGNORE;IGNORE;<U2588>
+<U258C> IGNORE;IGNORE;IGNORE;<U258C>
+<U2590> IGNORE;IGNORE;IGNORE;<U2590>
+<U2591> IGNORE;IGNORE;IGNORE;<U2591>
+<U2592> IGNORE;IGNORE;IGNORE;<U2592>
+<U2593> IGNORE;IGNORE;IGNORE;<U2593>
+<U25A0> IGNORE;IGNORE;IGNORE;<U25A0>
+<U25A1> IGNORE;IGNORE;IGNORE;<U25A1>
+<U25A2> IGNORE;IGNORE;IGNORE;<U25A2>
+<U25A3> IGNORE;IGNORE;IGNORE;<U25A3>
+<U25A4> IGNORE;IGNORE;IGNORE;<U25A4>
+<U25A5> IGNORE;IGNORE;IGNORE;<U25A5>
+<U25A6> IGNORE;IGNORE;IGNORE;<U25A6>
+<U25A7> IGNORE;IGNORE;IGNORE;<U25A7>
+<U25A8> IGNORE;IGNORE;IGNORE;<U25A8>
+<U25A9> IGNORE;IGNORE;IGNORE;<U25A9>
+<U25AA> IGNORE;IGNORE;IGNORE;<U25AA>
+<U25AC> IGNORE;IGNORE;IGNORE;<U25AC>
+<U25AD> IGNORE;IGNORE;IGNORE;<U25AD>
+<U25B2> IGNORE;IGNORE;IGNORE;<U25B2>
+<U25B3> IGNORE;IGNORE;IGNORE;<U25B3>
+<U25B7> IGNORE;IGNORE;IGNORE;<U25B7>
+<U25BA> IGNORE;IGNORE;IGNORE;<U25BA>
+<U25BC> IGNORE;IGNORE;IGNORE;<U25BC>
+<U25BD> IGNORE;IGNORE;IGNORE;<U25BD>
+<U25C1> IGNORE;IGNORE;IGNORE;<U25C1>
+<U25C4> IGNORE;IGNORE;IGNORE;<U25C4>
+<U25C6> IGNORE;IGNORE;IGNORE;<U25C6>
+<U25C7> IGNORE;IGNORE;IGNORE;<U25C7>
+<U25CA> IGNORE;IGNORE;IGNORE;<U25CA>
+<U25CB> IGNORE;IGNORE;IGNORE;<U25CB>
+<U25CE> IGNORE;IGNORE;IGNORE;<U25CE>
+<U25CF> IGNORE;IGNORE;IGNORE;<U25CF>
+<U25D0> IGNORE;IGNORE;IGNORE;<U25D0>
+<U25D1> IGNORE;IGNORE;IGNORE;<U25D1>
+<U25D8> IGNORE;IGNORE;IGNORE;<U25D8>
+<U25D9> IGNORE;IGNORE;IGNORE;<U25D9>
+<U25E2> IGNORE;IGNORE;IGNORE;<U25E2>
+<U25E3> IGNORE;IGNORE;IGNORE;<U25E3>
+<U25EF> IGNORE;IGNORE;IGNORE;<U25EF>
+<U2605> IGNORE;IGNORE;IGNORE;<U2605>
+<U2606> IGNORE;IGNORE;IGNORE;<U2606>
+<U260E> IGNORE;IGNORE;IGNORE;<U260E>
+<U260F> IGNORE;IGNORE;IGNORE;<U260F>
+<U261C> IGNORE;IGNORE;IGNORE;<U261C>
+<U261E> IGNORE;IGNORE;IGNORE;<U261E>
+<U263A> IGNORE;IGNORE;IGNORE;<U263A>
+<U263B> IGNORE;IGNORE;IGNORE;<U263B>
+<U263C> IGNORE;IGNORE;IGNORE;<U263C>
+<U2640> IGNORE;IGNORE;IGNORE;<U2640>
+<U2642> IGNORE;IGNORE;IGNORE;<U2642>
+<U2660> IGNORE;IGNORE;IGNORE;<U2660>
+<U2661> IGNORE;IGNORE;IGNORE;<U2661>
+<U2662> IGNORE;IGNORE;IGNORE;<U2662>
+<U2663> IGNORE;IGNORE;IGNORE;<U2663>
+<U2664> IGNORE;IGNORE;IGNORE;<U2664>
+<U2665> IGNORE;IGNORE;IGNORE;<U2665>
+<U2666> IGNORE;IGNORE;IGNORE;<U2666>
+<U2667> IGNORE;IGNORE;IGNORE;<U2667>
+<U2669> IGNORE;IGNORE;IGNORE;<U2669>
+<U266A> IGNORE;IGNORE;IGNORE;<U266A>
+<U266B> IGNORE;IGNORE;IGNORE;<U266B>
+<U266C> IGNORE;IGNORE;IGNORE;<U266C>
+<U266D> IGNORE;IGNORE;IGNORE;<U266D>
+<U266E> IGNORE;IGNORE;IGNORE;<U266E>
+<U266F> IGNORE;IGNORE;IGNORE;<U266F>
+<U2713> IGNORE;IGNORE;IGNORE;<U2713>
+<U2717> IGNORE;IGNORE;IGNORE;<U2717>
+<U2720> IGNORE;IGNORE;IGNORE;<U2720>
+<U3000> IGNORE;IGNORE;IGNORE;<U3000>
+<U3001> IGNORE;IGNORE;IGNORE;<U3001>
+<U3002> IGNORE;IGNORE;IGNORE;<U3002>
+<U3003> IGNORE;IGNORE;IGNORE;<U3003>
+<U3004> IGNORE;IGNORE;IGNORE;<U3004>
+<U3005> IGNORE;IGNORE;IGNORE;<U3005>
+<U3006> IGNORE;IGNORE;IGNORE;<U3006>
+<U3007> IGNORE;IGNORE;IGNORE;<U3007>
+<U300A> IGNORE;IGNORE;IGNORE;<U300A>
+<U300B> IGNORE;IGNORE;IGNORE;<U300B>
+<U300C> IGNORE;IGNORE;IGNORE;<U300C>
+<U300D> IGNORE;IGNORE;IGNORE;<U300D>
+<U300E> IGNORE;IGNORE;IGNORE;<U300E>
+<U300F> IGNORE;IGNORE;IGNORE;<U300F>
+<U3010> IGNORE;IGNORE;IGNORE;<U3010>
+<U3011> IGNORE;IGNORE;IGNORE;<U3011>
+<U3012> IGNORE;IGNORE;IGNORE;<U3012>
+<U3013> IGNORE;IGNORE;IGNORE;<U3013>
+<U3014> IGNORE;IGNORE;IGNORE;<U3014>
+<U3015> IGNORE;IGNORE;IGNORE;<U3015>
+<U3016> IGNORE;IGNORE;IGNORE;<U3016>
+<U3017> IGNORE;IGNORE;IGNORE;<U3017>
+<U301C> IGNORE;IGNORE;IGNORE;<U301C>
+<U3020> IGNORE;IGNORE;IGNORE;<U3020>
+<U309B> IGNORE;IGNORE;IGNORE;<U309B>
+<U309C> IGNORE;IGNORE;IGNORE;<U309C>
+<U309D> IGNORE;IGNORE;IGNORE;<U309D>
+<U309E> IGNORE;IGNORE;IGNORE;<U309E>
+<U30FB> IGNORE;IGNORE;IGNORE;<U30FB>
+<U30FC> IGNORE;IGNORE;IGNORE;<U30FC>
+<U30FD> IGNORE;IGNORE;IGNORE;<U30FD>
+<U30FE> IGNORE;IGNORE;IGNORE;<U30FE>
+<U321C> IGNORE;IGNORE;IGNORE;<U321C>
+<U3220> IGNORE;IGNORE;IGNORE;<U3220>
+<U3221> IGNORE;IGNORE;IGNORE;<U3221>
+<U3222> IGNORE;IGNORE;IGNORE;<U3222>
+<U3223> IGNORE;IGNORE;IGNORE;<U3223>
+<U3224> IGNORE;IGNORE;IGNORE;<U3224>
+<U3225> IGNORE;IGNORE;IGNORE;<U3225>
+<U3226> IGNORE;IGNORE;IGNORE;<U3226>
+<U3227> IGNORE;IGNORE;IGNORE;<U3227>
+<U3228> IGNORE;IGNORE;IGNORE;<U3228>
+<U3229> IGNORE;IGNORE;IGNORE;<U3229>
+<U327F> IGNORE;IGNORE;IGNORE;<U327F>
+<U33C2> IGNORE;IGNORE;IGNORE;<U33C2>
+<U33D8> IGNORE;IGNORE;IGNORE;<U33D8>
+<U0000> IGNORE;IGNORE;IGNORE;<U0000>
+<U0001> IGNORE;IGNORE;IGNORE;<U0001>
+<U0002> IGNORE;IGNORE;IGNORE;<U0002>
+<U0003> IGNORE;IGNORE;IGNORE;<U0003>
+<U0004> IGNORE;IGNORE;IGNORE;<U0004>
+<U0005> IGNORE;IGNORE;IGNORE;<U0005>
+<U0006> IGNORE;IGNORE;IGNORE;<U0006>
+<U0007> IGNORE;IGNORE;IGNORE;<U0007>
+<U0008> IGNORE;IGNORE;IGNORE;<U0008>
+<U000E> IGNORE;IGNORE;IGNORE;<U000E>
+<U000F> IGNORE;IGNORE;IGNORE;<U000F>
+<U0010> IGNORE;IGNORE;IGNORE;<U0010>
+<U0011> IGNORE;IGNORE;IGNORE;<U0011>
+<U0012> IGNORE;IGNORE;IGNORE;<U0012>
+<U0013> IGNORE;IGNORE;IGNORE;<U0013>
+<U0014> IGNORE;IGNORE;IGNORE;<U0014>
+<U0015> IGNORE;IGNORE;IGNORE;<U0015>
+<U0016> IGNORE;IGNORE;IGNORE;<U0016>
+<U0017> IGNORE;IGNORE;IGNORE;<U0017>
+<U0018> IGNORE;IGNORE;IGNORE;<U0018>
+<U0019> IGNORE;IGNORE;IGNORE;<U0019>
+<U001A> IGNORE;IGNORE;IGNORE;<U001A>
+<U001B> IGNORE;IGNORE;IGNORE;<U001B>
+<U001C> IGNORE;IGNORE;IGNORE;<U001C>
+<U001D> IGNORE;IGNORE;IGNORE;<U001D>
+<U001E> IGNORE;IGNORE;IGNORE;<U001E>
+<U001F> IGNORE;IGNORE;IGNORE;<U001F>
+<U007F> IGNORE;IGNORE;IGNORE;<U007F>
+<U0080> IGNORE;IGNORE;IGNORE;<U0080>
+<U0081> IGNORE;IGNORE;IGNORE;<U0081>
+<U0082> IGNORE;IGNORE;IGNORE;<U0082>
+<U0083> IGNORE;IGNORE;IGNORE;<U0083>
+<U0084> IGNORE;IGNORE;IGNORE;<U0084>
+<U0085> IGNORE;IGNORE;IGNORE;<U0085>
+<U0086> IGNORE;IGNORE;IGNORE;<U0086>
+<U0087> IGNORE;IGNORE;IGNORE;<U0087>
+<U0088> IGNORE;IGNORE;IGNORE;<U0088>
+<U0089> IGNORE;IGNORE;IGNORE;<U0089>
+<U008A> IGNORE;IGNORE;IGNORE;<U008A>
+<U008B> IGNORE;IGNORE;IGNORE;<U008B>
+<U008C> IGNORE;IGNORE;IGNORE;<U008C>
+<U008D> IGNORE;IGNORE;IGNORE;<U008D>
+<U008E> IGNORE;IGNORE;IGNORE;<U008E>
+<U008F> IGNORE;IGNORE;IGNORE;<U008F>
+<U0090> IGNORE;IGNORE;IGNORE;<U0090>
+<U0091> IGNORE;IGNORE;IGNORE;<U0091>
+<U0092> IGNORE;IGNORE;IGNORE;<U0092>
+<U0093> IGNORE;IGNORE;IGNORE;<U0093>
+<U0094> IGNORE;IGNORE;IGNORE;<U0094>
+<U0095> IGNORE;IGNORE;IGNORE;<U0095>
+<U0096> IGNORE;IGNORE;IGNORE;<U0096>
+<U0097> IGNORE;IGNORE;IGNORE;<U0097>
+<U0098> IGNORE;IGNORE;IGNORE;<U0098>
+<U0099> IGNORE;IGNORE;IGNORE;<U0099>
+<U009A> IGNORE;IGNORE;IGNORE;<U009A>
+<U009B> IGNORE;IGNORE;IGNORE;<U009B>
+<U009C> IGNORE;IGNORE;IGNORE;<U009C>
+<U009D> IGNORE;IGNORE;IGNORE;<U009D>
+<U009E> IGNORE;IGNORE;IGNORE;<U009E>
+<U009F> IGNORE;IGNORE;IGNORE;<U009F>
+<UE000> IGNORE;IGNORE;IGNORE;<UE000>
+<UE001> IGNORE;IGNORE;IGNORE;<UE001>
+<UE002> IGNORE;IGNORE;IGNORE;<UE002>
+<U0301> IGNORE;IGNORE;IGNORE;<U0301>
+<UE004> IGNORE;IGNORE;IGNORE;<UE004>
+<UE005> IGNORE;IGNORE;IGNORE;<UE005>
+<UE006> IGNORE;IGNORE;IGNORE;<UE006>
+<UE007> IGNORE;IGNORE;IGNORE;<UE007>
+<UE008> IGNORE;IGNORE;IGNORE;<UE008>
+<UE009> IGNORE;IGNORE;IGNORE;<UE009>
+<UE00A> IGNORE;IGNORE;IGNORE;<UE00A>
+<UE00B> IGNORE;IGNORE;IGNORE;<UE00B>
+<UE00C> IGNORE;IGNORE;IGNORE;<UE00C>
+<UE00D> IGNORE;IGNORE;IGNORE;<UE00D>
+<UE00E> IGNORE;IGNORE;IGNORE;<UE00E>
+<UE00F> IGNORE;IGNORE;IGNORE;<UE00F>
+<"=> IGNORE;IGNORE;IGNORE;<"=>
+<UE011> IGNORE;IGNORE;IGNORE;<UE011>
+<UE012> IGNORE;IGNORE;IGNORE;<UE012>
+<UE013> IGNORE;IGNORE;IGNORE;<UE013>
+<UE014> IGNORE;IGNORE;IGNORE;<UE014>
+<UE015> IGNORE;IGNORE;IGNORE;<UE015>
+<UE017> IGNORE;IGNORE;IGNORE;<UE017>
+<UE018> IGNORE;IGNORE;IGNORE;<UE018>
+<UE019> IGNORE;IGNORE;IGNORE;<UE019>
+UNDEFINED IGNORE;IGNORE;IGNORE
+
+<U0030> <U0030>;<U0030>;IGNORE;IGNORE
+<U2070> <U0030>;<U2070>;IGNORE;IGNORE
+<U215B> <U0030>;<U215B>;IGNORE;IGNORE
+<U00BC> <U0030>;<U00BC>;IGNORE;IGNORE
+<U215C> <U0030>;<U215C>;IGNORE;IGNORE
+<U00BD> <U0030>;<U00BD>;IGNORE;IGNORE
+<U215D> <U0030>;<U215D>;IGNORE;IGNORE
+<U00BE> <U0030>;<U00BE>;IGNORE;IGNORE
+<U215E> <U0030>;<U215E>;IGNORE;IGNORE
+<U0031> <U0031>;<U0031>;IGNORE;IGNORE
+<U0032> <U0032>;<U0032>;IGNORE;IGNORE
+<U0033> <U0033>;<U0033>;IGNORE;IGNORE
+<U0034> <U0034>;<U0034>;IGNORE;IGNORE
+<U0035> <U0035>;<U0035>;IGNORE;IGNORE
+<U0036> <U0036>;<U0036>;IGNORE;IGNORE
+<U0037> <U0037>;<U0037>;IGNORE;IGNORE
+<U0038> <U0038>;<U0038>;IGNORE;IGNORE
+<U0039> <U0039>;<U0039>;IGNORE;IGNORE
+<U00B9> <U0031>;<U00B9>;IGNORE;IGNORE
+<U00B2> <U0032>;<U00B2>;IGNORE;IGNORE
+<U00B3> <U0033>;<U00B3>;IGNORE;IGNORE
+<U2074> <U0034>;<U2074>;IGNORE;IGNORE
+<U2075> <U0035>;<U2075>;IGNORE;IGNORE
+<U2076> <U0036>;<U2076>;IGNORE;IGNORE
+<U2077> <U0037>;<U2077>;IGNORE;IGNORE
+<U2078> <U0038>;<U2078>;IGNORE;IGNORE
+<U2079> <U0039>;<U2079>;IGNORE;IGNORE
+<U0041> <U0041>;<NONE>;<CAPITAL>;IGNORE
+<U0061> <U0041>;<NONE>;<SMALL>;IGNORE
+<U00AA> <U0041>;<NONE>;<U00AA>;IGNORE
+<U00C1> <U0041>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E1> <U0041>;<ACUTE>;<SMALL>;IGNORE
+<U00C0> <U0041>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E0> <U0041>;<GRAVE>;<SMALL>;IGNORE
+<U0200> <U0041>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0201> <U0041>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0102> <U0041>;<BREVE>;<CAPITAL>;IGNORE
+<U0103> <U0041>;<BREVE>;<SMALL>;IGNORE
+<U1EAE> <U0041>;<BREVE+ACUTE>;<CAPITAL>;IGNORE
+<U1EAF> <U0041>;<BREVE+ACUTE>;<SMALL>;IGNORE
+<U1EB0> <U0041>;<BREVE+GRAVE>;<CAPITAL>;IGNORE
+<U1EB1> <U0041>;<BREVE+GRAVE>;<SMALL>;IGNORE
+<U1EB2> <U0041>;<BREVE+HOOK>;<CAPITAL>;IGNORE
+<U1EB3> <U0041>;<BREVE+HOOK>;<SMALL>;IGNORE
+<U1EB4> <U0041>;<BREVE+TILDE>;<CAPITAL>;IGNORE
+<U1EB5> <U0041>;<BREVE+TILDE>;<SMALL>;IGNORE
+<U1EB6> <U0041>;<BREVE+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB7> <U0041>;<BREVE+DOT-BELOW>;<SMALL>;IGNORE
+<U0202> <U0041>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0203> <U0041>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00C2> <U0041>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00E2> <U0041>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EA4> <U0041>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EA5> <U0041>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EA6> <U0041>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EA7> <U0041>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EA8> <U0041>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EA9> <U0041>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EAA> <U0041>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EAB> <U0041>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EAC> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EAD> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01CD> <U0041>;<CARON>;<CAPITAL>;IGNORE
+<U01CE> <U0041>;<CARON>;<SMALL>;IGNORE
+<U00C5> <U0041>;<RING>;<CAPITAL>;IGNORE
+<U00E5> <U0041>;<RING>;<SMALL>;IGNORE
+<U01FA> <U0041>;<RING+ACUTE>;<CAPITAL>;IGNORE
+<U01FB> <U0041>;<RING+ACUTE>;<SMALL>;IGNORE
+<U1E00> <U0041>;<RING-BELOW>;<CAPITAL>;IGNORE
+<U1E01> <U0041>;<RING-BELOW>;<SMALL>;IGNORE
+<U00C4> <U0041>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00E4> <U0041>;<DIAERESIS>;<SMALL>;IGNORE
+<U01DE> <U0041>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01DF> <U0041>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U1EA2> <U0041>;<HOOK>;<CAPITAL>;IGNORE
+<U1EA3> <U0041>;<HOOK>;<SMALL>;IGNORE
+<U00C3> <U0041>;<TILDE>;<CAPITAL>;IGNORE
+<U00E3> <U0041>;<TILDE>;<SMALL>;IGNORE
+<U1EA0> <U0041>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EA1> <U0041>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0104> <U0041>;<OGONEK>;<CAPITAL>;IGNORE
+<U0105> <U0041>;<OGONEK>;<SMALL>;IGNORE
+<U0100> <U0041>;<MACRON>;<CAPITAL>;IGNORE
+<U0101> <U0041>;<MACRON>;<SMALL>;IGNORE
+<U01E0> <U0041>;<MACRON+DOT>;<CAPITAL>;IGNORE
+<U01E1> <U0041>;<MACRON+DOT>;<SMALL>;IGNORE
+<a8>
+<U00C6> "<U0041><U0045>";"<U00C6><U00C6>";"<CAPITAL><CAPITAL>";IGNORE
+<U00E6> "<U0041><U0045>";"<U00C6><U00C6>";"<SMALL><SMALL>";IGNORE
+<U01FC> "<U0041><U0045>";"<U01FC><U01FC>";"<CAPITAL><CAPITAL>";IGNORE
+<U01FD> "<U0041><U0045>";"<U01FC><U01FC>";"<SMALL><SMALL>";IGNORE
+<U01E2> "<U0041><U0045>";"<U01E2><U01E2>";"<CAPITAL><CAPITAL>";IGNORE
+<U01E3> "<U0041><U0045>";"<U01E2><U01E2>";"<SMALL><SMALL>";IGNORE
+<U0042> <U0042>;<NONE>;<CAPITAL>;IGNORE
+<U0062> <U0042>;<NONE>;<SMALL>;IGNORE
+<U1E02> <U0042>;<DOT>;<CAPITAL>;IGNORE
+<U1E03> <U0042>;<DOT>;<SMALL>;IGNORE
+<U1E04> <U0042>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E05> <U0042>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E06> <U0042>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E07> <U0042>;<LINE-BELOW>;<SMALL>;IGNORE
+<b8>
+<U0043> <U0043>;<NONE>;<CAPITAL>;IGNORE
+<U0063> <U0043>;<NONE>;<SMALL>;IGNORE
+<U0106> <U0043>;<ACUTE>;<CAPITAL>;IGNORE
+<U0107> <U0043>;<ACUTE>;<SMALL>;IGNORE
+<U0108> <U0043>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0109> <U0043>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0187> <U0043>;<HOOK>;<CAPITAL>;IGNORE
+<U0188> <U0043>;<HOOK>;<SMALL>;IGNORE
+<U010A> <U0043>;<DOT>;<CAPITAL>;IGNORE
+<U010B> <U0043>;<DOT>;<SMALL>;IGNORE
+<U00C7> <U0043>;<CEDILLA>;<CAPITAL>;IGNORE
+<U00E7> <U0043>;<CEDILLA>;<SMALL>;IGNORE
+<U1E08> <U0043>;<CEDILLA+ACUTE>;<CAPITAL>;IGNORE
+<U1E09> <U0043>;<CEDILLA+ACUTE>;<SMALL>;IGNORE
+<c8>
+<U010C> <U010D>;<NONE>;<CAPITAL>;IGNORE
+<U010D> <U010D>;<NONE>;<SMALL>;IGNORE
+<U0044> <U0044>;<NONE>;<CAPITAL>;IGNORE
+<U0064> <U0044>;<NONE>;<SMALL>;IGNORE
+<U010E> <U0044>;<CARON>;<CAPITAL>;IGNORE
+<U010F> <U0044>;<CARON>;<SMALL>;IGNORE
+<U1E0A> <U0044>;<DOT>;<CAPITAL>;IGNORE
+<U1E0B> <U0044>;<DOT>;<SMALL>;IGNORE
+<U1E0C> <U0044>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E0D> <U0044>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0110> <U0044>;<STROKE>;<CAPITAL>;IGNORE
+<U0111> <U0044>;<STROKE>;<SMALL>;IGNORE
+<U1E10> <U0044>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E11> <U0044>;<CEDILLA>;<SMALL>;IGNORE
+<U1E12> <U0044>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E13> <U0044>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E0E> <U0044>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E0F> <U0044>;<LINE-BELOW>;<SMALL>;IGNORE
+<d8>
+<U0045> <U0045>;<NONE>;<CAPITAL>;IGNORE
+<U0065> <U0045>;<NONE>;<SMALL>;IGNORE
+<U00C9> <U0045>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E9> <U0045>;<ACUTE>;<SMALL>;IGNORE
+<U00C8> <U0045>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E8> <U0045>;<GRAVE>;<SMALL>;IGNORE
+<U0204> <U0045>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0205> <U0045>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0114> <U0045>;<BREVE>;<CAPITAL>;IGNORE
+<U0115> <U0045>;<BREVE>;<SMALL>;IGNORE
+<U0206> <U0045>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0207> <U0045>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CA> <U0045>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EA> <U0045>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EBE> <U0045>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EBF> <U0045>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EC0> <U0045>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EC1> <U0045>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EC2> <U0045>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EC3> <U0045>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EC4> <U0045>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EC5> <U0045>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EC6> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EC7> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U011A> <U0045>;<CARON>;<CAPITAL>;IGNORE
+<U011B> <U0045>;<CARON>;<SMALL>;IGNORE
+<U00CB> <U0045>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EB> <U0045>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EBA> <U0045>;<HOOK>;<CAPITAL>;IGNORE
+<U1EBB> <U0045>;<HOOK>;<SMALL>;IGNORE
+<U1EBC> <U0045>;<TILDE>;<CAPITAL>;IGNORE
+<U1EBD> <U0045>;<TILDE>;<SMALL>;IGNORE
+<U1E1A> <U0045>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E1B> <U0045>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0116> <U0045>;<DOT>;<CAPITAL>;IGNORE
+<U0117> <U0045>;<DOT>;<SMALL>;IGNORE
+<U1EB8> <U0045>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB9> <U0045>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E1C> <U0045>;<CEDILLA+BREVE>;<CAPITAL>;IGNORE
+<U1E1D> <U0045>;<CEDILLA+BREVE>;<SMALL>;IGNORE
+<U0118> <U0045>;<OGONEK>;<CAPITAL>;IGNORE
+<U0119> <U0045>;<OGONEK>;<SMALL>;IGNORE
+<U0112> <U0045>;<MACRON>;<CAPITAL>;IGNORE
+<U0113> <U0045>;<MACRON>;<SMALL>;IGNORE
+<U1E16> <U0045>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E17> <U0045>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E14> <U0045>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E15> <U0045>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U1E18> <U0045>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E19> <U0045>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<e8>
+<U0046> <U0046>;<NONE>;<CAPITAL>;IGNORE
+<U0066> <U0046>;<NONE>;<SMALL>;IGNORE
+<U0191> <U0046>;<HOOK>;<CAPITAL>;IGNORE
+<U0192> <U0046>;<HOOK>;<SMALL>;IGNORE
+<U1E1E> <U0046>;<DOT>;<CAPITAL>;IGNORE
+<U1E1F> <U0046>;<DOT>;<SMALL>;IGNORE
+<f8>
+<UFB00> "<U0046><U0046>";"<NONE><NONE>";"<UFB00><UFB00>";IGNORE
+<UFB01> "<U0046><U0049>";"<NONE><NONE>";"<UFB01><UFB01>";IGNORE
+<UFB02> "<U0046><U004C>";"<NONE><NONE>";"<UFB02><UFB02>";IGNORE
+<UFB03> "<U0046><U0046><U0049>";"<NONE><NONE><NONE>";"<UFB03><UFB03><UFB03>";IGNORE
+<UFB04> "<U0046><U0046><U004C>";"<NONE><NONE><NONE>";"<UFB04><UFB04><UFB04>";IGNORE
+<U0047> <U0047>;<NONE>;<CAPITAL>;IGNORE
+<U0067> <U0047>;<NONE>;<SMALL>;IGNORE
+<U01F4> <U0047>;<ACUTE>;<CAPITAL>;IGNORE
+<U01F5> <U0047>;<ACUTE>;<SMALL>;IGNORE
+<U011E> <U0047>;<BREVE>;<CAPITAL>;IGNORE
+<U011F> <U0047>;<BREVE>;<SMALL>;IGNORE
+<U011C> <U0047>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U011D> <U0047>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01E6> <U0047>;<CARON>;<CAPITAL>;IGNORE
+<U01E7> <U0047>;<CARON>;<SMALL>;IGNORE
+<U0120> <U0047>;<DOT>;<CAPITAL>;IGNORE
+<U0121> <U0047>;<DOT>;<SMALL>;IGNORE
+<U01E4> <U0047>;<STROKE>;<CAPITAL>;IGNORE
+<U01E5> <U0047>;<STROKE>;<SMALL>;IGNORE
+<U0122> <U0047>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0123> <U0047>;<CEDILLA>;<SMALL>;IGNORE
+<U1E20> <U0047>;<MACRON>;<CAPITAL>;IGNORE
+<U1E21> <U0047>;<MACRON>;<SMALL>;IGNORE
+<g8>
+<U0048> <U0048>;<NONE>;<CAPITAL>;IGNORE
+<U0068> <U0048>;<NONE>;<SMALL>;IGNORE
+<U1E2A> <U0048>;<BREVE-BELOW>;<CAPITAL>;IGNORE
+<U1E2B> <U0048>;<BREVE-BELOW>;<SMALL>;IGNORE
+<U0124> <U0048>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0125> <U0048>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E26> <U0048>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E27> <U0048>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E22> <U0048>;<DOT>;<CAPITAL>;IGNORE
+<U1E23> <U0048>;<DOT>;<SMALL>;IGNORE
+<U1E24> <U0048>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E25> <U0048>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0126> <U0048>;<STROKE>;<CAPITAL>;IGNORE
+<U0127> <U0048>;<STROKE>;<SMALL>;IGNORE
+<U1E28> <U0048>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E29> <U0048>;<CEDILLA>;<SMALL>;IGNORE
+<h8>
+<U0049> <U0049>;<NONE>;<CAPITAL>;IGNORE
+<U0069> <U0049>;<NONE>;<SMALL>;IGNORE
+<U00CD> <U0049>;<ACUTE>;<CAPITAL>;IGNORE
+<U00ED> <U0049>;<ACUTE>;<SMALL>;IGNORE
+<U00CC> <U0049>;<GRAVE>;<CAPITAL>;IGNORE
+<U00EC> <U0049>;<GRAVE>;<SMALL>;IGNORE
+<U0208> <U0049>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0209> <U0049>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U012C> <U0049>;<BREVE>;<CAPITAL>;IGNORE
+<U012D> <U0049>;<BREVE>;<SMALL>;IGNORE
+<U020A> <U0049>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020B> <U0049>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CE> <U0049>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EE> <U0049>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01CF> <U0049>;<CARON>;<CAPITAL>;IGNORE
+<U01D0> <U0049>;<CARON>;<SMALL>;IGNORE
+<U00CF> <U0049>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EF> <U0049>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E2E> <U0049>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U1E2F> <U0049>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U1EC8> <U0049>;<HOOK>;<CAPITAL>;IGNORE
+<U1EC9> <U0049>;<HOOK>;<SMALL>;IGNORE
+<U0128> <U0049>;<TILDE>;<CAPITAL>;IGNORE
+<U0129> <U0049>;<TILDE>;<SMALL>;IGNORE
+<U1E2C> <U0049>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E2D> <U0049>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0130> <U0049>;<DOT>;<CAPITAL>;IGNORE
+<U0131> <U0049>;<DOT>;<SMALL>;IGNORE
+<U1ECA> <U0049>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECB> <U0049>;<DOT-BELOW>;<SMALL>;IGNORE
+<U012E> <U0049>;<OGONEK>;<CAPITAL>;IGNORE
+<U012F> <U0049>;<OGONEK>;<SMALL>;IGNORE
+<U012A> <U0049>;<MACRON>;<CAPITAL>;IGNORE
+<U012B> <U0049>;<MACRON>;<SMALL>;IGNORE
+<i8>
+<U0132> "<U0049><U004A>";"<U0132><U0132>";"<CAPITAL><CAPITAL>";IGNORE
+<U0133> "<U0049><U004A>";"<U0132><U0132>";"<SMALL><SMALL>";IGNORE
+<U004A> <U004A>;<NONE>;<CAPITAL>;IGNORE
+<U006A> <U004A>;<NONE>;<SMALL>;IGNORE
+<U0134> <U004A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0135> <U004A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<j8>
+<U004B> <U004B>;<NONE>;<CAPITAL>;IGNORE
+<U006B> <U004B>;<NONE>;<SMALL>;IGNORE
+<U1E30> <U004B>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E31> <U004B>;<ACUTE>;<SMALL>;IGNORE
+<U01E8> <U004B>;<CARON>;<CAPITAL>;IGNORE
+<U01E9> <U004B>;<CARON>;<SMALL>;IGNORE
+<U0198> <U004B>;<HOOK>;<CAPITAL>;IGNORE
+<U0199> <U004B>;<HOOK>;<SMALL>;IGNORE
+<U1E32> <U004B>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E33> <U004B>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0136> <U004B>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0137> <U004B>;<CEDILLA>;<SMALL>;IGNORE
+<U1E34> <U004B>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E35> <U004B>;<LINE-BELOW>;<SMALL>;IGNORE
+<k8>
+<U0138> <U004B>;<U0138>;<SMALL>;IGNORE
+<U004C> <U004C>;<NONE>;<CAPITAL>;IGNORE
+<U006C> <U004C>;<NONE>;<SMALL>;IGNORE
+<U0139> <U004C>;<ACUTE>;<CAPITAL>;IGNORE
+<U013A> <U004C>;<ACUTE>;<SMALL>;IGNORE
+<U013D> <U004C>;<CARON>;<CAPITAL>;IGNORE
+<U013E> <U004C>;<CARON>;<SMALL>;IGNORE
+<U013F> <U004C>;<DOT>;<CAPITAL>;IGNORE
+<U0140> <U004C>;<DOT>;<SMALL>;IGNORE
+<U1E36> <U004C>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E37> <U004C>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0141> <U004C>;<STROKE>;<CAPITAL>;IGNORE
+<U0142> <U004C>;<STROKE>;<SMALL>;IGNORE
+<U013B> <U004C>;<CEDILLA>;<CAPITAL>;IGNORE
+<U013C> <U004C>;<CEDILLA>;<SMALL>;IGNORE
+<U1E38> <U004C>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E39> <U004C>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E3C> <U004C>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E3D> <U004C>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E3A> <U004C>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E3B> <U004C>;<LINE-BELOW>;<SMALL>;IGNORE
+<l8>
+<U004D> <U004D>;<NONE>;<CAPITAL>;IGNORE
+<U006D> <U004D>;<NONE>;<SMALL>;IGNORE
+<U1E3E> <U004D>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E3F> <U004D>;<ACUTE>;<SMALL>;IGNORE
+<U1E40> <U004D>;<DOT>;<CAPITAL>;IGNORE
+<U1E41> <U004D>;<DOT>;<SMALL>;IGNORE
+<U1E42> <U004D>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E43> <U004D>;<DOT-BELOW>;<SMALL>;IGNORE
+<m8>
+<U004E> <U004E>;<NONE>;<CAPITAL>;IGNORE
+<U006E> <U004E>;<NONE>;<SMALL>;IGNORE
+<U0143> <U004E>;<ACUTE>;<CAPITAL>;IGNORE
+<U0144> <U004E>;<ACUTE>;<SMALL>;IGNORE
+<U0147> <U004E>;<CARON>;<CAPITAL>;IGNORE
+<U0148> <U004E>;<CARON>;<SMALL>;IGNORE
+<U00D1> <U004E>;<TILDE>;<CAPITAL>;IGNORE
+<U00F1> <U004E>;<TILDE>;<SMALL>;IGNORE
+<U1E44> <U004E>;<DOT>;<CAPITAL>;IGNORE
+<U1E45> <U004E>;<DOT>;<SMALL>;IGNORE
+<U1E46> <U004E>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E47> <U004E>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0145> <U004E>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0146> <U004E>;<CEDILLA>;<SMALL>;IGNORE
+<U1E4A> <U004E>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E4B> <U004E>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E48> <U004E>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E49> <U004E>;<LINE-BELOW>;<SMALL>;IGNORE
+<U0149> <U004E>;<PRECEDED-BY-APOSTROPHE>;<SMALL>;IGNORE
+<n8>
+<U014A> "<U004E><U0047>";"<U014A><U014A>";"<CAPITAL><CAPITAL>";IGNORE
+<U014B> "<U004E><U0047>";"<U014A><U014A>";"<SMALL><SMALL>";IGNORE
+<U004F> <U004F>;<NONE>;<CAPITAL>;IGNORE
+<U006F> <U004F>;<NONE>;<SMALL>;IGNORE
+<U00BA> <U004F>;<NONE>;<U00BA>;IGNORE
+<U00D3> <U004F>;<ACUTE>;<CAPITAL>;IGNORE
+<U00F3> <U004F>;<ACUTE>;<SMALL>;IGNORE
+<U00D2> <U004F>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F2> <U004F>;<GRAVE>;<SMALL>;IGNORE
+<U020C> <U004F>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U020D> <U004F>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U014E> <U004F>;<BREVE>;<CAPITAL>;IGNORE
+<U014F> <U004F>;<BREVE>;<SMALL>;IGNORE
+<U020E> <U004F>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020F> <U004F>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00D4> <U004F>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00F4> <U004F>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1ED0> <U004F>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1ED1> <U004F>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1ED2> <U004F>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1ED3> <U004F>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1ED4> <U004F>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1ED5> <U004F>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1ED6> <U004F>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1ED7> <U004F>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1ED8> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ED9> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01D1> <U004F>;<CARON>;<CAPITAL>;IGNORE
+<U01D2> <U004F>;<CARON>;<SMALL>;IGNORE
+<U00D6> <U004F>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00F6> <U004F>;<DIAERESIS>;<SMALL>;IGNORE
+<U0150> <U004F>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0151> <U004F>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1ECE> <U004F>;<HOOK>;<CAPITAL>;IGNORE
+<U1ECF> <U004F>;<HOOK>;<SMALL>;IGNORE
+<U00D5> <U004F>;<TILDE>;<CAPITAL>;IGNORE
+<U00F5> <U004F>;<TILDE>;<SMALL>;IGNORE
+<U1E4C> <U004F>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E4D> <U004F>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E4E> <U004F>;<TILDE+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E4F> <U004F>;<TILDE+DIAERESIS>;<SMALL>;IGNORE
+<U1ECC> <U004F>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECD> <U004F>;<DOT-BELOW>;<SMALL>;IGNORE
+<U00D8> <U004F>;<STROKE>;<CAPITAL>;IGNORE
+<U00F8> <U004F>;<STROKE>;<SMALL>;IGNORE
+<U01FE> <U004F>;<STROKE+ACUTE>;<CAPITAL>;IGNORE
+<U01FF> <U004F>;<STROKE+ACUTE>;<SMALL>;IGNORE
+<U01EA> <U004F>;<OGONEK>;<CAPITAL>;IGNORE
+<U01EB> <U004F>;<OGONEK>;<SMALL>;IGNORE
+<U01EC> <U004F>;<OGONEK+MACRON>;<CAPITAL>;IGNORE
+<U01ED> <U004F>;<OGONEK+MACRON>;<SMALL>;IGNORE
+<U014C> <U004F>;<MACRON>;<CAPITAL>;IGNORE
+<U014D> <U004F>;<MACRON>;<SMALL>;IGNORE
+<U1E52> <U004F>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E53> <U004F>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E50> <U004F>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E51> <U004F>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U01A0> <U004F>;<HORN>;<CAPITAL>;IGNORE
+<U01A1> <U004F>;<HORN>;<SMALL>;IGNORE
+<U1EDA> <U004F>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EDB> <U004F>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EDC> <U004F>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EDD> <U004F>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EDE> <U004F>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EDF> <U004F>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EE0> <U004F>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EE1> <U004F>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EE2> <U004F>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE3> <U004F>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<o8>
+<U0152> "<U004F><U0045>";"<U0152><U0152>";"<CAPITAL><CAPITAL>";IGNORE
+<U0153> "<U004F><U0045>";"<U0152><U0152>";"<SMALL><SMALL>";IGNORE
+<U0050> <U0050>;<NONE>;<CAPITAL>;IGNORE
+<U0070> <U0050>;<NONE>;<SMALL>;IGNORE
+<U1E54> <U0050>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E55> <U0050>;<ACUTE>;<SMALL>;IGNORE
+<U1E56> <U0050>;<DOT>;<CAPITAL>;IGNORE
+<U1E57> <U0050>;<DOT>;<SMALL>;IGNORE
+<p8>
+<U0051> <U0051>;<NONE>;<CAPITAL>;IGNORE
+<U0071> <U0051>;<NONE>;<SMALL>;IGNORE
+<q8>
+<U0052> <U0052>;<NONE>;<CAPITAL>;IGNORE
+<U0072> <U0052>;<NONE>;<SMALL>;IGNORE
+<U0154> <U0052>;<ACUTE>;<CAPITAL>;IGNORE
+<U0155> <U0052>;<ACUTE>;<SMALL>;IGNORE
+<U0210> <U0052>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0211> <U0052>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0212> <U0052>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0213> <U0052>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U0158> <U0052>;<CARON>;<CAPITAL>;IGNORE
+<U0159> <U0052>;<CARON>;<SMALL>;IGNORE
+<U1E58> <U0052>;<DOT>;<CAPITAL>;IGNORE
+<U1E59> <U0052>;<DOT>;<SMALL>;IGNORE
+<U1E5A> <U0052>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5B> <U0052>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0156> <U0052>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0157> <U0052>;<CEDILLA>;<SMALL>;IGNORE
+<U1E5C> <U0052>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5D> <U0052>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E5E> <U0052>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E5F> <U0052>;<LINE-BELOW>;<SMALL>;IGNORE
+<r8>
+<U0053> <U0053>;<NONE>;<CAPITAL>;IGNORE
+<U0073> <U0053>;<NONE>;<SMALL>;IGNORE
+<UFB06> "<U0053><U0054>";"<NONE><NONE>";"<UFB06><UFB06>";IGNORE
+<U015A> <U0053>;<ACUTE>;<CAPITAL>;IGNORE
+<U015B> <U0053>;<ACUTE>;<SMALL>;IGNORE
+<U1E64> <U0053>;<ACUTE+DOT>;<CAPITAL>;IGNORE
+<U1E65> <U0053>;<ACUTE+DOT>;<SMALL>;IGNORE
+<U015C> <U0053>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U015D> <U0053>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E66> <U0053>;<CARON+DOT>;<CAPITAL>;IGNORE
+<U1E67> <U0053>;<CARON+DOT>;<SMALL>;IGNORE
+<U1E60> <U0053>;<DOT>;<CAPITAL>;IGNORE
+<U1E61> <U0053>;<DOT>;<SMALL>;IGNORE
+<U1E62> <U0053>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E63> <U0053>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E68> <U0053>;<DOT+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E69> <U0053>;<DOT+DOT-BELOW>;<SMALL>;IGNORE
+<U015E> <U0053>;<CEDILLA>;<CAPITAL>;IGNORE
+<U015F> <U0053>;<CEDILLA>;<SMALL>;IGNORE
+<s8>
+<U0160> <U0161>;<NONE>;<CAPITAL>;IGNORE
+<U0161> <U0161>;<NONE>;<SMALL>;IGNORE
+<U017F> <U0053>;<U017F>;<SMALL>;IGNORE
+<U00DF> "<U0053><U0053>";"<NONE><NONE>";"<SMALL><U00DF>";IGNORE
+<UFB05> "<U0053><U0054>";"<NONE><NONE>";"<UFB05><UFB05>";IGNORE
+<U0054> <U0054>;<NONE>;<CAPITAL>;IGNORE
+<U0074> <U0054>;<NONE>;<SMALL>;IGNORE
+<U0164> <U0054>;<CARON>;<CAPITAL>;IGNORE
+<U0165> <U0054>;<CARON>;<SMALL>;IGNORE
+<U1E6A> <U0054>;<DOT>;<CAPITAL>;IGNORE
+<U1E6B> <U0054>;<DOT>;<SMALL>;IGNORE
+<U1E6C> <U0054>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E6D> <U0054>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0166> <U0054>;<STROKE>;<CAPITAL>;IGNORE
+<U0167> <U0054>;<STROKE>;<SMALL>;IGNORE
+<U0162> <U0054>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0163> <U0054>;<CEDILLA>;<SMALL>;IGNORE
+<U1E70> <U0054>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E71> <U0054>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E6E> <U0054>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E6F> <U0054>;<LINE-BELOW>;<SMALL>;IGNORE
+<t8>
+<U00DE> "<U0054><U0048>";"<U00DE><U00DE>";"<CAPITAL><CAPITAL>";IGNORE
+<U00FE> "<U0054><U0048>";"<U00DE><U00DE>";"<SMALL><SMALL>";IGNORE
+<U0055> <U0055>;<NONE>;<CAPITAL>;IGNORE
+<U0075> <U0055>;<NONE>;<SMALL>;IGNORE
+<U00DA> <U0055>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FA> <U0055>;<ACUTE>;<SMALL>;IGNORE
+<U00D9> <U0055>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F9> <U0055>;<GRAVE>;<SMALL>;IGNORE
+<U0214> <U0055>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0215> <U0055>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U016C> <U0055>;<BREVE>;<CAPITAL>;IGNORE
+<U016D> <U0055>;<BREVE>;<SMALL>;IGNORE
+<U0216> <U0055>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0217> <U0055>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00DB> <U0055>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00FB> <U0055>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01D3> <U0055>;<CARON>;<CAPITAL>;IGNORE
+<U01D4> <U0055>;<CARON>;<SMALL>;IGNORE
+<U016E> <U0055>;<RING>;<CAPITAL>;IGNORE
+<U016F> <U0055>;<RING>;<SMALL>;IGNORE
+<U00DC> <U0055>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FC> <U0055>;<DIAERESIS>;<SMALL>;IGNORE
+<U01D5> <U0055>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01D6> <U0055>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U01D7> <U0055>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U01D8> <U0055>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U01DB> <U0055>;<DIAERESIS+GRAVE>;<CAPITAL>;IGNORE
+<U01DC> <U0055>;<DIAERESIS+GRAVE>;<SMALL>;IGNORE
+<U01D9> <U0055>;<DIAERESIS+CARON>;<CAPITAL>;IGNORE
+<U01DA> <U0055>;<DIAERESIS+CARON>;<SMALL>;IGNORE
+<U0170> <U0055>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0171> <U0055>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1EE6> <U0055>;<HOOK>;<CAPITAL>;IGNORE
+<U1EE7> <U0055>;<HOOK>;<SMALL>;IGNORE
+<U0168> <U0055>;<TILDE>;<CAPITAL>;IGNORE
+<U0169> <U0055>;<TILDE>;<SMALL>;IGNORE
+<U1E78> <U0055>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E79> <U0055>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E74> <U0055>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E75> <U0055>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U1EE4> <U0055>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE5> <U0055>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0172> <U0055>;<OGONEK>;<CAPITAL>;IGNORE
+<U0173> <U0055>;<OGONEK>;<SMALL>;IGNORE
+<U016A> <U0055>;<MACRON>;<CAPITAL>;IGNORE
+<U016B> <U0055>;<MACRON>;<SMALL>;IGNORE
+<U1E7A> <U0055>;<MACRON+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E7B> <U0055>;<MACRON+DIAERESIS>;<SMALL>;IGNORE
+<U1E72> <U0055>;<MACRON+DIAERESIS-BELOW>;<CAPITAL>;IGNORE
+<U1E73> <U0055>;<MACRON+DIAERESIS-BELOW>;<SMALL>;IGNORE
+<U1E76> <U0055>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E77> <U0055>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U01AF> <U0055>;<HORN>;<CAPITAL>;IGNORE
+<U01B0> <U0055>;<HORN>;<SMALL>;IGNORE
+<U1EE8> <U0055>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EE9> <U0055>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EEA> <U0055>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EEB> <U0055>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EEC> <U0055>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EED> <U0055>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EEE> <U0055>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EEF> <U0055>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EF0> <U0055>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF1> <U0055>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<u8>
+<U0056> <U0056>;<NONE>;<CAPITAL>;IGNORE
+<U0076> <U0056>;<NONE>;<SMALL>;IGNORE
+<U1E7C> <U0056>;<TILDE>;<CAPITAL>;IGNORE
+<U1E7D> <U0056>;<TILDE>;<SMALL>;IGNORE
+<U1E7E> <U0056>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E7F> <U0056>;<DOT-BELOW>;<SMALL>;IGNORE
+<v8>
+<U0057> <U0057>;<NONE>;<CAPITAL>;IGNORE
+<U0077> <U0057>;<NONE>;<SMALL>;IGNORE
+<U1E82> <U0057>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E83> <U0057>;<ACUTE>;<SMALL>;IGNORE
+<U1E80> <U0057>;<GRAVE>;<CAPITAL>;IGNORE
+<U1E81> <U0057>;<GRAVE>;<SMALL>;IGNORE
+<U0174> <U0057>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0175> <U0057>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E84> <U0057>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E85> <U0057>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E86> <U0057>;<DOT>;<CAPITAL>;IGNORE
+<U1E87> <U0057>;<DOT>;<SMALL>;IGNORE
+<U1E88> <U0057>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E89> <U0057>;<DOT-BELOW>;<SMALL>;IGNORE
+<w8>
+<U0058> <U0058>;<NONE>;<CAPITAL>;IGNORE
+<U0078> <U0058>;<NONE>;<SMALL>;IGNORE
+<U1E8C> <U0058>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E8D> <U0058>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E8A> <U0058>;<DOT>;<CAPITAL>;IGNORE
+<U1E8B> <U0058>;<DOT>;<SMALL>;IGNORE
+<x8>
+<U0059> <U0059>;<NONE>;<CAPITAL>;IGNORE
+<U0079> <U0059>;<NONE>;<SMALL>;IGNORE
+<U00DD> <U0059>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FD> <U0059>;<ACUTE>;<SMALL>;IGNORE
+<U1EF2> <U0059>;<GRAVE>;<CAPITAL>;IGNORE
+<U1EF3> <U0059>;<GRAVE>;<SMALL>;IGNORE
+<U0176> <U0059>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0177> <U0059>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0178> <U0059>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FF> <U0059>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EF6> <U0059>;<HOOK>;<CAPITAL>;IGNORE
+<U1EF7> <U0059>;<HOOK>;<SMALL>;IGNORE
+<U1EF8> <U0059>;<TILDE>;<CAPITAL>;IGNORE
+<U1EF9> <U0059>;<TILDE>;<SMALL>;IGNORE
+<U1E8E> <U0059>;<DOT>;<CAPITAL>;IGNORE
+<U1E8F> <U0059>;<DOT>;<SMALL>;IGNORE
+<U1EF4> <U0059>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF5> <U0059>;<DOT-BELOW>;<SMALL>;IGNORE
+<y8>
+<U005A> <U005A>;<NONE>;<CAPITAL>;IGNORE
+<U007A> <U005A>;<NONE>;<SMALL>;IGNORE
+<U0179> <U005A>;<ACUTE>;<CAPITAL>;IGNORE
+<U017A> <U005A>;<ACUTE>;<SMALL>;IGNORE
+<U1E90> <U005A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E91> <U005A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U017B> <U005A>;<DOT>;<CAPITAL>;IGNORE
+<U017C> <U005A>;<DOT>;<SMALL>;IGNORE
+<U1E92> <U005A>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E93> <U005A>;<DOT-BELOW>;<SMALL>;IGNORE
+<U01B5> <U005A>;<STROKE>;<CAPITAL>;IGNORE
+<U01B6> <U005A>;<STROKE>;<SMALL>;IGNORE
+<U1E94> <U005A>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E95> <U005A>;<LINE-BELOW>;<SMALL>;IGNORE
+<z8>
+<U017D> <U017E>;<NONE>;<CAPITAL>;IGNORE
+<U017E> <U017E>;<NONE>;<SMALL>;IGNORE
+<U0391> <U0391>;<CAPITAL>;<GREEK>;IGNORE
+<U0386> <U0391>;<CAPITAL>;<TONOS>;IGNORE
+<U03B1> <U0391>;<SMALL>;<GREEK>;IGNORE
+<U03AC> <U0391>;<SMALL>;<TONOS>;IGNORE
+<U0392> <U0392>;<CAPITAL>;<GREEK>;IGNORE
+<U03B2> <U0392>;<SMALL>;<GREEK>;IGNORE
+<U0393> <U0393>;<CAPITAL>;<GREEK>;IGNORE
+<U03B3> <U0393>;<SMALL>;<GREEK>;IGNORE
+<U0394> <U0394>;<CAPITAL>;<GREEK>;IGNORE
+<U03B4> <U0394>;<SMALL>;<GREEK>;IGNORE
+<U0395> <U0395>;<CAPITAL>;<GREEK>;IGNORE
+<U0388> <U0395>;<CAPITAL>;<TONOS>;IGNORE
+<U03B5> <U0395>;<SMALL>;<GREEK>;IGNORE
+<U03AD> <U0395>;<SMALL>;<TONOS>;IGNORE
+<U0396> <U0396>;<CAPITAL>;<GREEK>;IGNORE
+<U03B6> <U0396>;<SMALL>;<GREEK>;IGNORE
+<U0397> <U0397>;<CAPITAL>;<GREEK>;IGNORE
+<U0389> <U0397>;<CAPITAL>;<TONOS>;IGNORE
+<U03B7> <U0397>;<SMALL>;<GREEK>;IGNORE
+<U03AE> <U0397>;<SMALL>;<TONOS>;IGNORE
+<U0398> <U0398>;<CAPITAL>;<GREEK>;IGNORE
+<U03B8> <U0398>;<SMALL>;<GREEK>;IGNORE
+<U0399> <U0399>;<CAPITAL>;<GREEK>;IGNORE
+<U038A> <U0399>;<CAPITAL>;<TONOS>;IGNORE
+<U03AA> <U0399>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03B9> <U0399>;<SMALL>;<GREEK>;IGNORE
+<U03AF> <U0399>;<SMALL>;<TONOS>;IGNORE
+<U03CA> <U0399>;<SMALL>;<DIALYTICA>;IGNORE
+<U0390> <U0399>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U039A> <U039A>;<CAPITAL>;<GREEK>;IGNORE
+<U03BA> <U039A>;<SMALL>;<GREEK>;IGNORE
+<U039B> <U039B>;<CAPITAL>;<GREEK>;IGNORE
+<U03BB> <U039B>;<SMALL>;<GREEK>;IGNORE
+<U039C> <U039C>;<CAPITAL>;<GREEK>;IGNORE
+<U03BC> <U039C>;<SMALL>;<GREEK>;IGNORE
+<U039D> <U039D>;<CAPITAL>;<GREEK>;IGNORE
+<U03BD> <U039D>;<SMALL>;<GREEK>;IGNORE
+<U039E> <U039E>;<CAPITAL>;<GREEK>;IGNORE
+<U03BE> <U039E>;<SMALL>;<GREEK>;IGNORE
+<U039F> <U039F>;<CAPITAL>;<GREEK>;IGNORE
+<U038C> <U039F>;<CAPITAL>;<TONOS>;IGNORE
+<U03BF> <U039F>;<SMALL>;<GREEK>;IGNORE
+<U03CC> <U039F>;<SMALL>;<TONOS>;IGNORE
+<U03A0> <U03A0>;<CAPITAL>;<GREEK>;IGNORE
+<U03C0> <U03A0>;<SMALL>;<GREEK>;IGNORE
+<U03A1> <U03A1>;<CAPITAL>;<GREEK>;IGNORE
+<U03C1> <U03A1>;<SMALL>;<GREEK>;IGNORE
+<U03A3> <U03A3>;<CAPITAL>;<GREEK>;IGNORE
+<U03C3> <U03A3>;<SMALL>;<GREEK>;IGNORE
+<U03C2> <U03A3>;<SMALL>;<U03C2>;IGNORE
+<U03A4> <U03A4>;<CAPITAL>;<GREEK>;IGNORE
+<U03C4> <U03A4>;<SMALL>;<GREEK>;IGNORE
+<U03A5> <U03A5>;<CAPITAL>;<GREEK>;IGNORE
+<U038E> <U03A5>;<CAPITAL>;<TONOS>;IGNORE
+<U03AB> <U03A5>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03C5> <U03A5>;<SMALL>;<GREEK>;IGNORE
+<U03CD> <U03A5>;<SMALL>;<TONOS>;IGNORE
+<U03CB> <U03A5>;<SMALL>;<DIALYTICA>;IGNORE
+<U03B0> <U03A5>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U03A6> <U03A6>;<CAPITAL>;<GREEK>;IGNORE
+<U03C6> <U03A6>;<SMALL>;<GREEK>;IGNORE
+<U03A7> <U03A7>;<CAPITAL>;<GREEK>;IGNORE
+<U03C7> <U03A7>;<SMALL>;<GREEK>;IGNORE
+<U03A8> <U03A8>;<CAPITAL>;<GREEK>;IGNORE
+<U03C8> <U03A8>;<SMALL>;<GREEK>;IGNORE
+<U03A9> <U03A9>;<CAPITAL>;<GREEK>;IGNORE
+<U038F> <U03A9>;<CAPITAL>;<TONOS>;IGNORE
+<U03C9> <U03A9>;<SMALL>;<GREEK>;IGNORE
+<U03CE> <U03A9>;<SMALL>;<TONOS>;IGNORE
+<U0410> <U0410>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0430> <U0410>;<CYRILLIC>;<SMALL>;IGNORE
+<U0411> <U0411>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0431> <U0411>;<CYRILLIC>;<SMALL>;IGNORE
+<U0412> <U0412>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0432> <U0412>;<CYRILLIC>;<SMALL>;IGNORE
+<U0413> <U0413>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0433> <U0413>;<CYRILLIC>;<SMALL>;IGNORE
+<U0403> <U0403>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0453> <U0403>;<CYRILLIC>;<SMALL>;IGNORE
+<U0490> <U0490>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0491> <U0490>;<CYRILLIC>;<SMALL>;IGNORE
+<U0414> <U0414>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0434> <U0414>;<CYRILLIC>;<SMALL>;IGNORE
+<U0402> <U0402>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0452> <U0402>;<CYRILLIC>;<SMALL>;IGNORE
+<U0415> <U0415>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0435> <U0415>;<CYRILLIC>;<SMALL>;IGNORE
+<U0401> <U0401>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0451> <U0401>;<CYRILLIC>;<SMALL>;IGNORE
+<U0404> <U0404>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0454> <U0404>;<CYRILLIC>;<SMALL>;IGNORE
+<U0416> <U0416>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0436> <U0416>;<CYRILLIC>;<SMALL>;IGNORE
+<U0417> <U0417>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0437> <U0417>;<CYRILLIC>;<SMALL>;IGNORE
+<U0418> <U0418>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0438> <U0418>;<CYRILLIC>;<SMALL>;IGNORE
+<U0406> <U0406>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0456> <U0406>;<CYRILLIC>;<SMALL>;IGNORE
+<U0407> <U0407>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0457> <U0407>;<CYRILLIC>;<SMALL>;IGNORE
+<U0408> <U0408>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0458> <U0408>;<CYRILLIC>;<SMALL>;IGNORE
+<U0419> <U0419>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0439> <U0419>;<CYRILLIC>;<SMALL>;IGNORE
+<U041A> <U041A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043A> <U041A>;<CYRILLIC>;<SMALL>;IGNORE
+<U040C> <U040C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045C> <U040C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041B> <U041B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043B> <U041B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0409> <U0409>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0459> <U0409>;<CYRILLIC>;<SMALL>;IGNORE
+<U041C> <U041C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043C> <U041C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041D> <U041D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043D> <U041D>;<CYRILLIC>;<SMALL>;IGNORE
+<U040A> <U040A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045A> <U040A>;<CYRILLIC>;<SMALL>;IGNORE
+<U041E> <U041E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043E> <U041E>;<CYRILLIC>;<SMALL>;IGNORE
+<U041F> <U041F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043F> <U041F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0420> <U0420>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0440> <U0420>;<CYRILLIC>;<SMALL>;IGNORE
+<U0421> <U0421>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0441> <U0421>;<CYRILLIC>;<SMALL>;IGNORE
+<U0422> <U0422>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0442> <U0422>;<CYRILLIC>;<SMALL>;IGNORE
+<U040B> <U040B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045B> <U040B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0423> <U0423>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0443> <U0423>;<CYRILLIC>;<SMALL>;IGNORE
+<U040E> <U040E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045E> <U040E>;<CYRILLIC>;<SMALL>;IGNORE
+<U0424> <U0424>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0444> <U0424>;<CYRILLIC>;<SMALL>;IGNORE
+<U0425> <U0425>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0445> <U0425>;<CYRILLIC>;<SMALL>;IGNORE
+<U0426> <U0426>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0446> <U0426>;<CYRILLIC>;<SMALL>;IGNORE
+<U0405> <U0405>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0455> <U0405>;<CYRILLIC>;<SMALL>;IGNORE
+<U0427> <U0427>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0447> <U0427>;<CYRILLIC>;<SMALL>;IGNORE
+<U040F> <U040F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045F> <U040F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0428> <U0428>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0448> <U0428>;<CYRILLIC>;<SMALL>;IGNORE
+<U0429> <U0429>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0449> <U0429>;<CYRILLIC>;<SMALL>;IGNORE
+<U044A> <U044A>;<CYRILLIC>;<SMALL>;IGNORE
+<U042A> <U044A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042B> <U042B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044B> <U042B>;<CYRILLIC>;<SMALL>;IGNORE
+<U044C> <U044C>;<CYRILLIC>;<SMALL>;IGNORE
+<U042C> <U044C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042D> <U042D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044D> <U042D>;<CYRILLIC>;<SMALL>;IGNORE
+<U042E> <U042E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044E> <U042E>;<CYRILLIC>;<SMALL>;IGNORE
+<U042F> <U042F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044F> <U042F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0462> <U0462>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0463> <U0462>;<CYRILLIC>;<SMALL>;IGNORE
+<U046A> <U046A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U046B> <U046A>;<CYRILLIC>;<SMALL>;IGNORE
+<U0472> <U0472>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0473> <U0472>;<CYRILLIC>;<SMALL>;IGNORE
+<U0474> <U0474>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0475> <U0474>;<CYRILLIC>;<SMALL>;IGNORE
+<U0480> <U0480>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0481> <U0480>;<CYRILLIC>;<SMALL>;IGNORE
+<U05D0> <U05D0>;IGNORE;IGNORE;IGNORE
+<U05D1> <U05D1>;IGNORE;IGNORE;IGNORE
+<U05D2> <U05D2>;IGNORE;IGNORE;IGNORE
+<U05D3> <U05D3>;IGNORE;IGNORE;IGNORE
+<U05D4> <U05D4>;IGNORE;IGNORE;IGNORE
+<U05D5> <U05D5>;IGNORE;IGNORE;IGNORE
+<U05D6> <U05D6>;IGNORE;IGNORE;IGNORE
+<U05D7> <U05D7>;IGNORE;IGNORE;IGNORE
+<U05D8> <U05D8>;IGNORE;IGNORE;IGNORE
+<U05D9> <U05D9>;IGNORE;IGNORE;IGNORE
+<U05DA> <U05DA>;IGNORE;IGNORE;IGNORE
+<U05DB> <U05DB>;IGNORE;IGNORE;IGNORE
+<U05DC> <U05DC>;IGNORE;IGNORE;IGNORE
+<U05DD> <U05DD>;IGNORE;IGNORE;IGNORE
+<U05DE> <U05DE>;IGNORE;IGNORE;IGNORE
+<U05DF> <U05DF>;IGNORE;IGNORE;IGNORE
+<U05E0> <U05E0>;IGNORE;IGNORE;IGNORE
+<U05E1> <U05E1>;IGNORE;IGNORE;IGNORE
+<U05E2> <U05E2>;IGNORE;IGNORE;IGNORE
+<U05E3> <U05E3>;IGNORE;IGNORE;IGNORE
+<U05E4> <U05E4>;IGNORE;IGNORE;IGNORE
+<U05E5> <U05E5>;IGNORE;IGNORE;IGNORE
+<U05E6> <U05E6>;IGNORE;IGNORE;IGNORE
+<U05E7> <U05E7>;IGNORE;IGNORE;IGNORE
+<U05E8> <U05E8>;IGNORE;IGNORE;IGNORE
+<U05E9> <U05E9>;IGNORE;IGNORE;IGNORE
+<U05EA> <U05EA>;IGNORE;IGNORE;IGNORE
+
+% Arabic collating
+
+<U060C> IGNORE;IGNORE;IGNORE;<U060C>
+<U061B> IGNORE;IGNORE;IGNORE;<U061B>
+<U061F> IGNORE;IGNORE;IGNORE;<U061F>
+<U0640> IGNORE;IGNORE;IGNORE;<U0640>
+
+<U0621> <U0621>;<U0621>;IGNORE;IGNORE
+<U0622> <U0622>;<U0622>;IGNORE;IGNORE
+<UFE82> <U0622>;<UFE82>;IGNORE;IGNORE
+<U0623> <U0621>;<U0623>;IGNORE;IGNORE
+<UFE84> <U0621>;<UFE84>;IGNORE;IGNORE
+<U0624> <U0621>;<U0624>;IGNORE;IGNORE
+<U0625> <U0621>;<U0625>;IGNORE;IGNORE
+<UFE88> <U0621>;<UFE88>;IGNORE;IGNORE
+<U0626> <U0621>;<U0626>;IGNORE;IGNORE
+<U0670> <U0670>;<U0670>;IGNORE;IGNORE
+<U0627> <U0627>;<U0627>;IGNORE;IGNORE
+<UFE8D> <U0627>;<UFE8D>;IGNORE;IGNORE
+<UFE8E> <U0627>;<UFE8E>;IGNORE;IGNORE
+<UE016> <U0627>;<UE016>;IGNORE;IGNORE
+<U0628> <U0628>;<U0628>;IGNORE;IGNORE
+<UFE8F> <U0628>;<UFE8F>;IGNORE;IGNORE
+<UFE90> <U0628>;<UFE90>;IGNORE;IGNORE
+<UFE91> <U0628>;<UFE91>;IGNORE;IGNORE
+<UFE92> <U0628>;<UFE92>;IGNORE;IGNORE
+<U067E> <U067E>;<U067E>;IGNORE;IGNORE
+<U06A4> <U06A4>;<U06A4>;IGNORE;IGNORE
+<U0629> <U0629>;<U0629>;IGNORE;IGNORE
+<UFE93> <U0629>;<UFE93>;IGNORE;IGNORE
+<UFE94> <U0629>;<UFE94>;IGNORE;IGNORE
+<U062A> <U0629>;<U062A>;IGNORE;IGNORE
+<UFE95> <U0629>;<UFE95>;IGNORE;IGNORE
+<UFE96> <U0629>;<UFE96>;IGNORE;IGNORE
+<UFE97> <U0629>;<UFE97>;IGNORE;IGNORE
+<UFE98> <U0629>;<UFE98>;IGNORE;IGNORE
+<U062B> <U062B>;<U062B>;IGNORE;IGNORE
+<UFE99> <U062B>;<UFE99>;IGNORE;IGNORE
+<UFE9A> <U062B>;<UFE9A>;IGNORE;IGNORE
+<UFE9B> <U062B>;<UFE9B>;IGNORE;IGNORE
+<UFE9C> <U062B>;<UFE9C>;IGNORE;IGNORE
+<U062C> <U062C>;<U062C>;IGNORE;IGNORE
+<UFE9D> <U062C>;<UFE9D>;IGNORE;IGNORE
+<UFE9E> <U062C>;<UFE9E>;IGNORE;IGNORE
+<UFE9F> <U062C>;<UFE9F>;IGNORE;IGNORE
+<UFEA0> <U062C>;<UFEA0>;IGNORE;IGNORE
+<U062D> <U062D>;<U062D>;IGNORE;IGNORE
+<UFEA1> <U062D>;<UFEA1>;IGNORE;IGNORE
+<UFEA2> <U062D>;<UFEA2>;IGNORE;IGNORE
+<UFEA3> <U062D>;<UFEA3>;IGNORE;IGNORE
+<UFEA4> <U062D>;<UFEA4>;IGNORE;IGNORE
+<U062E> <U062E>;<U062E>;IGNORE;IGNORE
+<UFEA5> <U062E>;<UFEA5>;IGNORE;IGNORE
+<UFEA6> <U062E>;<UFEA6>;IGNORE;IGNORE
+<UFEA7> <U062E>;<UFEA7>;IGNORE;IGNORE
+<UFEA8> <U062E>;<UFEA8>;IGNORE;IGNORE
+<U062F> <U062F>;<U062F>;IGNORE;IGNORE
+<UFEA9> <U062F>;<UFEA9>;IGNORE;IGNORE
+<UFEAA> <U062F>;<UFEAA>;IGNORE;IGNORE
+<U0630> <U0630>;<U0630>;IGNORE;IGNORE
+<UFEAB> <U0630>;<UFEAB>;IGNORE;IGNORE
+<UFEAC> <U0630>;<UFEAC>;IGNORE;IGNORE
+<U0631> <U0631>;<U0631>;IGNORE;IGNORE
+<UFEAD> <U0631>;<UFEAD>;IGNORE;IGNORE
+<UFEAE> <U0631>;<UFEAE>;IGNORE;IGNORE
+<U0632> <U0632>;<U0632>;IGNORE;IGNORE
+<UFEAF> <U0632>;<UFEAF>;IGNORE;IGNORE
+<UFEB0> <U0632>;<UFEB0>;IGNORE;IGNORE
+<U0633> <U0633>;<U0633>;IGNORE;IGNORE
+<UFEB1> <U0633>;<UFEB1>;IGNORE;IGNORE
+<UFEB2> <U0633>;<UFEB2>;IGNORE;IGNORE
+<UFEB3> <U0633>;<UFEB3>;IGNORE;IGNORE
+<UFEB4> <U0633>;<UFEB4>;IGNORE;IGNORE
+<U0634> <U0634>;<U0634>;IGNORE;IGNORE
+<UFEB5> <U0634>;<UFEB5>;IGNORE;IGNORE
+<UFEB6> <U0634>;<UFEB6>;IGNORE;IGNORE
+<UFEB7> <U0634>;<UFEB7>;IGNORE;IGNORE
+<UFEB8> <U0634>;<UFEB8>;IGNORE;IGNORE
+<U0635> <U0635>;<U0635>;IGNORE;IGNORE
+<UFEB9> <U0635>;<UFEB9>;IGNORE;IGNORE
+<UFEBA> <U0635>;<UFEBA>;IGNORE;IGNORE
+<UFEBB> <U0635>;<UFEBB>;IGNORE;IGNORE
+<UFEBC> <U0635>;<UFEBC>;IGNORE;IGNORE
+<U0636> <U0636>;<U0636>;IGNORE;IGNORE
+<UFEBD> <U0636>;<UFEBD>;IGNORE;IGNORE
+<UFEBE> <U0636>;<UFEBE>;IGNORE;IGNORE
+<UFEBF> <U0636>;<UFEBF>;IGNORE;IGNORE
+<UFEC0> <U0636>;<UFEC0>;IGNORE;IGNORE
+<U0637> <U0637>;<U0637>;IGNORE;IGNORE
+<UFEC1> <U0637>;<UFEC1>;IGNORE;IGNORE
+<UFEC2> <U0637>;<UFEC2>;IGNORE;IGNORE
+<UFEC3> <U0637>;<UFEC3>;IGNORE;IGNORE
+<UFEC4> <U0637>;<UFEC4>;IGNORE;IGNORE
+<U0638> <U0638>;<U0638>;IGNORE;IGNORE
+<UFEC5> <U0638>;<UFEC5>;IGNORE;IGNORE
+<UFEC6> <U0638>;<UFEC6>;IGNORE;IGNORE
+<UFEC7> <U0638>;<UFEC7>;IGNORE;IGNORE
+<UFEC8> <U0638>;<UFEC8>;IGNORE;IGNORE
+<U0639> <U0639>;<U0639>;IGNORE;IGNORE
+<UFEC9> <U0639>;<UFEC9>;IGNORE;IGNORE
+<UFECA> <U0639>;<UFECA>;IGNORE;IGNORE
+<UFECB> <U0639>;<UFECB>;IGNORE;IGNORE
+<UFECC> <U0639>;<UFECC>;IGNORE;IGNORE
+<U063A> <U063A>;<U063A>;IGNORE;IGNORE
+<UFECD> <U063A>;<UFECD>;IGNORE;IGNORE
+<UFECE> <U063A>;<UFECE>;IGNORE;IGNORE
+<UFECF> <U063A>;<UFECF>;IGNORE;IGNORE
+<UFED0> <U063A>;<UFED0>;IGNORE;IGNORE
+<U0641> <U0641>;<U0641>;IGNORE;IGNORE
+<UFED1> <U0641>;<UFED1>;IGNORE;IGNORE
+<UFED2> <U0641>;<UFED2>;IGNORE;IGNORE
+<UFED3> <U0641>;<UFED3>;IGNORE;IGNORE
+<UFED4> <U0641>;<UFED4>;IGNORE;IGNORE
+<U0642> <U0642>;<U0642>;IGNORE;IGNORE
+<UFED5> <U0642>;<UFED5>;IGNORE;IGNORE
+<UFED6> <U0642>;<UFED6>;IGNORE;IGNORE
+<UFED7> <U0642>;<UFED7>;IGNORE;IGNORE
+<UFED8> <U0642>;<UFED8>;IGNORE;IGNORE
+<U0643> <U0643>;<U0643>;IGNORE;IGNORE
+<UFED9> <U0643>;<UFED9>;IGNORE;IGNORE
+<UFEDA> <U0643>;<UFEDA>;IGNORE;IGNORE
+<UFEDB> <U0643>;<UFEDB>;IGNORE;IGNORE
+<UFEDC> <U0643>;<UFEDC>;IGNORE;IGNORE
+<U0644> <U0644>;<U0644>;IGNORE;IGNORE
+<UFEDD> <U0644>;<UFEDD>;IGNORE;IGNORE
+<UFEDE> <U0644>;<UFEDE>;IGNORE;IGNORE
+<UFEDF> <U0644>;<UFEDF>;IGNORE;IGNORE
+<UFEE0> <U0644>;<UFEE0>;IGNORE;IGNORE
+<U0645> <U0645>;<U0645>;IGNORE;IGNORE
+<UFEE1> <U0645>;<UFEE1>;IGNORE;IGNORE
+<UFEE2> <U0645>;<UFEE2>;IGNORE;IGNORE
+<UFEE3> <U0645>;<UFEE3>;IGNORE;IGNORE
+<UFEE4> <U0645>;<UFEE4>;IGNORE;IGNORE
+<U0646> <U0646>;<U0646>;IGNORE;IGNORE
+<UFEE5> <U0646>;<UFEE5>;IGNORE;IGNORE
+<UFEE6> <U0646>;<UFEE6>;IGNORE;IGNORE
+<UFEE7> <U0646>;<UFEE7>;IGNORE;IGNORE
+<UFEE8> <U0646>;<UFEE8>;IGNORE;IGNORE
+<U0647> <U0647>;<U0647>;IGNORE;IGNORE
+<UFEE9> <U0647>;<UFEE9>;IGNORE;IGNORE
+<UFEEA> <U0647>;<UFEEA>;IGNORE;IGNORE
+<UFEEB> <U0647>;<UFEEB>;IGNORE;IGNORE
+<UFEEC> <U0647>;<UFEEC>;IGNORE;IGNORE
+<U0648> <U0648>;<U0648>;IGNORE;IGNORE
+<UFEED> <U0648>;<UFEED>;IGNORE;IGNORE
+<UFEEE> <U0648>;<UFEEE>;IGNORE;IGNORE
+<U0649> <U0649>;<U0649>;IGNORE;IGNORE
+<UFEEF> <U0649>;<UFEEF>;IGNORE;IGNORE
+<UFEF0> <U0649>;<UFEF0>;IGNORE;IGNORE
+<U064A> <U064A>;<U064A>;IGNORE;IGNORE
+<UFEF1> <U064A>;<UFEF1>;IGNORE;IGNORE
+<UFEF2> <U064A>;<UFEF2>;IGNORE;IGNORE
+<UFEF3> <U064A>;<UFEF3>;IGNORE;IGNORE
+<UFEF4> <U064A>;<UFEF4>;IGNORE;IGNORE
+
+<U064B> IGNORE;IGNORE;<U064B>;IGNORE
+<U064C> IGNORE;IGNORE;<U064C>;IGNORE
+<U064D> IGNORE;IGNORE;<U064D>;IGNORE
+<U064E> IGNORE;IGNORE;<U064E>;IGNORE
+<U064F> IGNORE;IGNORE;<U064F>;IGNORE
+<U0650> IGNORE;IGNORE;<U0650>;IGNORE
+<U0651> IGNORE;IGNORE;<U0651>;IGNORE
+<UFE7D> IGNORE;IGNORE;<UFE7D>;IGNORE
+<U0652> IGNORE;IGNORE;<U0652>;IGNORE
+
+<U0660> <U0030>;<U0660>;IGNORE;IGNORE
+<U0661> <U0031>;<U0661>;IGNORE;IGNORE
+<U0662> <U0032>;<U0662>;IGNORE;IGNORE
+<U0663> <U0033>;<U0663>;IGNORE;IGNORE
+<U0664> <U0034>;<U0664>;IGNORE;IGNORE
+<U0665> <U0035>;<U0665>;IGNORE;IGNORE
+<U0666> <U0036>;<U0666>;IGNORE;IGNORE
+<U0667> <U0037>;<U0667>;IGNORE;IGNORE
+<U0668> <U0038>;<U0668>;IGNORE;IGNORE
+<U0669> <U0039>;<U0669>;IGNORE;IGNORE
+
+<UFEF5> "<U0644><U0622>";"<U0644><U0622>";"<UFEF5><UFEF5>";IGNORE
+<UFEF6> "<U0644><U0622>";"<U0644><UFE82>";"<UFEF6><UFEF6>";IGNORE
+<UFEF7> "<U0644><U0623>";"<U0644><U0623>";"<UFEF7><UFEF7>";IGNORE
+<UFEF8> "<U0644><U0623>";"<U0644><UFE84>";"<UFEF8><UFEF8>";IGNORE
+<UFEF9> "<U0644><U0625>";"<U0644><U0625>";"<UFEF9><UFEF9>";IGNORE
+<UFEFA> "<U0644><U0625>";"<U0644><UFE88>";"<UFEFA><UFEFA>";IGNORE
+<UFEFB> "<U0644><U0627>";"<U0644><UFE8D>";"<UFEFB><UFEFB>";IGNORE
+<UFEFC> "<U0644><U0627>";"<U0644><UFE8E>";"<UFEFC><UFEFC>";IGNORE
+
+% katakana/hiragana sorting
+% base is katakana, as this is present in most charsets
+% normal before voiced before semi-voiced
+% small vocals before normal vocals
+% katakana before hiragana
+
+<U30A1> <U30A1>;<U30A1>;IGNORE;IGNORE
+<U3041> <U30A1>;<U3041>;IGNORE;IGNORE
+<U30A2> <U30A1>;<U30A2>;IGNORE;IGNORE
+<U3042> <U30A1>;<U3042>;IGNORE;IGNORE
+<U30A3> <U30A3>;<U30A3>;IGNORE;IGNORE
+<U3043> <U30A3>;<U3043>;IGNORE;IGNORE
+<U30A4> <U30A3>;<U30A4>;IGNORE;IGNORE
+<U3044> <U30A3>;<U3044>;IGNORE;IGNORE
+<U30A5> <U30A5>;<U30A5>;IGNORE;IGNORE
+<U3045> <U30A5>;<U3045>;IGNORE;IGNORE
+<U30A6> <U30A5>;<U30A6>;IGNORE;IGNORE
+<U3046> <U30A5>;<U3046>;IGNORE;IGNORE
+<U30F4> <U30A5>;<U30F4>;IGNORE;IGNORE
+<U30A7> <U30A7>;<U30A7>;IGNORE;IGNORE
+<U3047> <U30A7>;<U3047>;IGNORE;IGNORE
+<U30A8> <U30A7>;<U30A8>;IGNORE;IGNORE
+<U3048> <U30A7>;<U3048>;IGNORE;IGNORE
+<U30A9> <U30A9>;<U30A9>;IGNORE;IGNORE
+<U3049> <U30A9>;<U3049>;IGNORE;IGNORE
+<U30AA> <U30A9>;<U30AA>;IGNORE;IGNORE
+<U304A> <U30A9>;<U304A>;IGNORE;IGNORE
+<U30F5> <U30F5>;<U30F5>;IGNORE;IGNORE
+<U30AB> <U30F5>;<U30AB>;IGNORE;IGNORE
+<U304B> <U30F5>;<U304B>;IGNORE;IGNORE
+<U30AC> <U30F5>;<U30AC>;IGNORE;IGNORE
+<U304C> <U30F5>;<U304C>;IGNORE;IGNORE
+<U30AD> <U30AD>;<U30AD>;IGNORE;IGNORE
+<U304D> <U30AD>;<U304D>;IGNORE;IGNORE
+<U30AE> <U30AD>;<U30AE>;IGNORE;IGNORE
+<U304E> <U30AD>;<U304E>;IGNORE;IGNORE
+<U30AF> <U30AF>;<U30AF>;IGNORE;IGNORE
+<U304F> <U30AF>;<U304F>;IGNORE;IGNORE
+<U30B0> <U30AF>;<U30B0>;IGNORE;IGNORE
+<U3050> <U30AF>;<U3050>;IGNORE;IGNORE
+<U30F6> <U30F6>;<U30F6>;IGNORE;IGNORE
+<U30B1> <U30F6>;<U30B1>;IGNORE;IGNORE
+<U3051> <U30F6>;<U3051>;IGNORE;IGNORE
+<U30B2> <U30F6>;<U30B2>;IGNORE;IGNORE
+<U3052> <U30F6>;<U3052>;IGNORE;IGNORE
+<U30B3> <U30B3>;<U30B3>;IGNORE;IGNORE
+<U3053> <U30B3>;<U3053>;IGNORE;IGNORE
+<U30B4> <U30B3>;<U30B4>;IGNORE;IGNORE
+<U3054> <U30B3>;<U3054>;IGNORE;IGNORE
+<U30B5> <U30B5>;<U30B5>;IGNORE;IGNORE
+<U3055> <U30B5>;<U3055>;IGNORE;IGNORE
+<U30B6> <U30B5>;<U30B6>;IGNORE;IGNORE
+<U3056> <U30B5>;<U3056>;IGNORE;IGNORE
+<U30B7> <U30B7>;<U30B7>;IGNORE;IGNORE
+<U3057> <U30B7>;<U3057>;IGNORE;IGNORE
+<U30B8> <U30B7>;<U30B8>;IGNORE;IGNORE
+<U3058> <U30B7>;<U3058>;IGNORE;IGNORE
+<U30B9> <U30B9>;<U30B9>;IGNORE;IGNORE
+<U3059> <U30B9>;<U3059>;IGNORE;IGNORE
+<U30BA> <U30B9>;<U30BA>;IGNORE;IGNORE
+<U305A> <U30B9>;<U305A>;IGNORE;IGNORE
+<U30BB> <U30BB>;<U30BB>;IGNORE;IGNORE
+<U305B> <U30BB>;<U305B>;IGNORE;IGNORE
+<U30BC> <U30BB>;<U30BC>;IGNORE;IGNORE
+<U305C> <U30BB>;<U305C>;IGNORE;IGNORE
+<U30BD> <U30BD>;<U30BD>;IGNORE;IGNORE
+<U305D> <U30BD>;<U305D>;IGNORE;IGNORE
+<U30BE> <U30BD>;<U30BE>;IGNORE;IGNORE
+<U305E> <U30BD>;<U305E>;IGNORE;IGNORE
+<U30BF> <U30BF>;<U30BF>;IGNORE;IGNORE
+<U305F> <U30BF>;<U305F>;IGNORE;IGNORE
+<U30C0> <U30BF>;<U30C0>;IGNORE;IGNORE
+<U3060> <U30BF>;<U3060>;IGNORE;IGNORE
+<U30C1> <U30C1>;<U30C1>;IGNORE;IGNORE
+<U3061> <U30C1>;<U3061>;IGNORE;IGNORE
+<U30C2> <U30C1>;<U30C2>;IGNORE;IGNORE
+<U3062> <U30C1>;<U3062>;IGNORE;IGNORE
+<U30C3> <U30C3>;<U30C3>;IGNORE;IGNORE
+<U3063> <U30C3>;<U3063>;IGNORE;IGNORE
+<U30C4> <U30C3>;<U30C4>;IGNORE;IGNORE
+<U3064> <U30C3>;<U3064>;IGNORE;IGNORE
+<U30C5> <U30C3>;<U30C5>;IGNORE;IGNORE
+<U3065> <U30C3>;<U3065>;IGNORE;IGNORE
+<U30C6> <U30C6>;<U30C6>;IGNORE;IGNORE
+<U3066> <U30C6>;<U3066>;IGNORE;IGNORE
+<U30C7> <U30C6>;<U30C7>;IGNORE;IGNORE
+<U3067> <U30C6>;<U3067>;IGNORE;IGNORE
+<U30C8> <U30C8>;<U30C8>;IGNORE;IGNORE
+<U3068> <U30C8>;<U3068>;IGNORE;IGNORE
+<U30C9> <U30C8>;<U30C9>;IGNORE;IGNORE
+<U3069> <U30C8>;<U3069>;IGNORE;IGNORE
+<U30CA> <U30CA>;<U30CA>;IGNORE;IGNORE
+<U306A> <U30CA>;<U306A>;IGNORE;IGNORE
+<U30CB> <U30CB>;<U30CB>;IGNORE;IGNORE
+<U306B> <U30CB>;<U306B>;IGNORE;IGNORE
+<U30CC> <U30CC>;<U30CC>;IGNORE;IGNORE
+<U306C> <U30CC>;<U306C>;IGNORE;IGNORE
+<U30CD> <U30CD>;<U30CD>;IGNORE;IGNORE
+<U306D> <U30CD>;<U306D>;IGNORE;IGNORE
+<U30CE> <U30CE>;<U30CE>;IGNORE;IGNORE
+<U306E> <U30CE>;<U306E>;IGNORE;IGNORE
+<U30CF> <U30CF>;<U30CF>;IGNORE;IGNORE
+<U306F> <U30CF>;<U306F>;IGNORE;IGNORE
+<U30D0> <U30CF>;<U30D0>;IGNORE;IGNORE
+<U3070> <U30CF>;<U3070>;IGNORE;IGNORE
+<U30D1> <U30CF>;<U30D1>;IGNORE;IGNORE
+<U3071> <U30CF>;<U3071>;IGNORE;IGNORE
+<U30D2> <U30D2>;<U30D2>;IGNORE;IGNORE
+<U3072> <U30D2>;<U3072>;IGNORE;IGNORE
+<U30D3> <U30D2>;<U30D3>;IGNORE;IGNORE
+<U3073> <U30D2>;<U3073>;IGNORE;IGNORE
+<U30D4> <U30D2>;<U30D4>;IGNORE;IGNORE
+<U3074> <U30D2>;<U3074>;IGNORE;IGNORE
+<U30D5> <U30D5>;<U30D5>;IGNORE;IGNORE
+<U3075> <U30D5>;<U3075>;IGNORE;IGNORE
+<U30D6> <U30D5>;<U30D6>;IGNORE;IGNORE
+<U3076> <U30D5>;<U3076>;IGNORE;IGNORE
+<U30D7> <U30D5>;<U30D7>;IGNORE;IGNORE
+<U3077> <U30D5>;<U3077>;IGNORE;IGNORE
+<U30D8> <U30D8>;<U30D8>;IGNORE;IGNORE
+<U3078> <U30D8>;<U3078>;IGNORE;IGNORE
+<U30D9> <U30D8>;<U30D9>;IGNORE;IGNORE
+<U3079> <U30D8>;<U3079>;IGNORE;IGNORE
+<U30DA> <U30D8>;<U30DA>;IGNORE;IGNORE
+<U307A> <U30D8>;<U307A>;IGNORE;IGNORE
+<U30DB> <U30DB>;<U30DB>;IGNORE;IGNORE
+<U307B> <U30DB>;<U307B>;IGNORE;IGNORE
+<U30DC> <U30DB>;<U30DC>;IGNORE;IGNORE
+<U307C> <U30DB>;<U307C>;IGNORE;IGNORE
+<U30DD> <U30DB>;<U30DD>;IGNORE;IGNORE
+<U307D> <U30DB>;<U307D>;IGNORE;IGNORE
+<U30DE> <U30DE>;<U30DE>;IGNORE;IGNORE
+<U307E> <U30DE>;<U307E>;IGNORE;IGNORE
+<U30DF> <U30DF>;<U30DF>;IGNORE;IGNORE
+<U307F> <U30DF>;<U307F>;IGNORE;IGNORE
+<U30E0> <U30E0>;<U30E0>;IGNORE;IGNORE
+<U3080> <U30E0>;<U3080>;IGNORE;IGNORE
+<U30E1> <U30E1>;<U30E1>;IGNORE;IGNORE
+<U3081> <U30E1>;<U3081>;IGNORE;IGNORE
+<U30E2> <U30E2>;<U30E2>;IGNORE;IGNORE
+<U3082> <U30E2>;<U3082>;IGNORE;IGNORE
+<U30E3> <U30E3>;<U30E3>;IGNORE;IGNORE
+<U3083> <U30E3>;<U3083>;IGNORE;IGNORE
+<U30E4> <U30E3>;<U30E4>;IGNORE;IGNORE
+<U3084> <U30E3>;<U3084>;IGNORE;IGNORE
+<U30E5> <U30E5>;<U30E5>;IGNORE;IGNORE
+<U3085> <U30E5>;<U3085>;IGNORE;IGNORE
+<U30E6> <U30E5>;<U30E6>;IGNORE;IGNORE
+<U3086> <U30E5>;<U3086>;IGNORE;IGNORE
+<U30E7> <U30E7>;<U30E7>;IGNORE;IGNORE
+<U3087> <U30E7>;<U3087>;IGNORE;IGNORE
+<U30E8> <U30E7>;<U30E8>;IGNORE;IGNORE
+<U3088> <U30E7>;<U3088>;IGNORE;IGNORE
+<U30E9> <U30E9>;<U30E9>;IGNORE;IGNORE
+<U3089> <U30E9>;<U3089>;IGNORE;IGNORE
+<U30EA> <U30EA>;<U30EA>;IGNORE;IGNORE
+<U308A> <U30EA>;<U308A>;IGNORE;IGNORE
+<U30EB> <U30EB>;<U30EB>;IGNORE;IGNORE
+<U308B> <U30EB>;<U308B>;IGNORE;IGNORE
+<U30EC> <U30EC>;<U30EC>;IGNORE;IGNORE
+<U308C> <U30EC>;<U308C>;IGNORE;IGNORE
+<U30ED> <U30ED>;<U30ED>;IGNORE;IGNORE
+<U308D> <U30ED>;<U308D>;IGNORE;IGNORE
+<U30EE> <U30EE>;<U30EE>;IGNORE;IGNORE
+<U308E> <U30EE>;<U308E>;IGNORE;IGNORE
+<U30EF> <U30EE>;<U30EF>;IGNORE;IGNORE
+<U308F> <U30EE>;<U308F>;IGNORE;IGNORE
+<U30F0> <U30F0>;<U30F0>;IGNORE;IGNORE
+<U3090> <U30F0>;<U3090>;IGNORE;IGNORE
+<U30F1> <U30F1>;<U30F1>;IGNORE;IGNORE
+<U3091> <U30F1>;<U3091>;IGNORE;IGNORE
+<U30F2> <U30F2>;<U30F2>;IGNORE;IGNORE
+<U3092> <U30F2>;<U3092>;IGNORE;IGNORE
+<U30F3> <U30F3>;<U30F3>;IGNORE;IGNORE
+<U3093> <U30F3>;<U3093>;IGNORE;IGNORE
+
+order_end
+
diff --git a/ap/build/uClibc/extra/locale/collation/sq_AL b/ap/build/uClibc/extra/locale/collation/sq_AL
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/sq_AL
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/sr_YU b/ap/build/uClibc/extra/locale/collation/sr_YU
new file mode 100644
index 0000000..1dcd15c
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/sr_YU
@@ -0,0 +1,90 @@
+copy "iso14651_t1"
+
+% a b c c' c< d dz< d// e f g h i j k l lj m n nj o p
+% q r s s< t u v w x y z z<
+
+collating-symbol <d-z-sh>
+collating-element <D-Z<> from "<U0044><U017D>"
+collating-element <D-z<> from "<U0044><U017E>"
+collating-element <d-Z<> from "<U0064><U017D>"
+collating-element <d-z<> from "<U0064><U017E>"
+collating-symbol <l-j-sh>
+collating-element <L-J> from "<U004C><U004A>"
+collating-element <L-j> from "<U004C><U006A>"
+collating-element <l-J> from "<U006C><U004A>"
+collating-element <l-j> from "<U006C><U006A>"
+collating-symbol <n-j-sh>
+collating-element <N-J> from "<U004E><U004A>"
+collating-element <N-j> from "<U004E><U006A>"
+collating-element <n-J> from "<U006E><U004A>"
+collating-element <n-j> from "<U006E><U006A>"
+collating-symbol <cacute>
+collating-symbol <ccaron>
+collating-symbol <d//>
+collating-symbol <scaron>
+collating-symbol <zcaron>
+
+collating-symbol <CAP-MIN>
+collating-symbol <MIN-CAP>
+
+reorder-after <MIN>
+<MIN-CAP>
+reorder-after <CAP>
+<CAP-MIN>
+
+reorder-after <c>
+<cacute>
+<ccaron>
+<d>
+<d-z-sh>
+<d//>
+reorder-after <l>
+<l-j-sh>
+reorder-after <n>
+<n-j-sh>
+reorder-after <s>
+<scaron>
+reorder-after <z>
+<zcaron>
+
+reorder-after <U0063>
+<U0107> <cacute>;<PCT>;<MIN>;IGNORE
+<U010D> <ccaron>;<PCT>;<MIN>;IGNORE
+reorder-after <U0043>
+<U0106> <cacute>;<PCT>;<CAP>;IGNORE
+<U010C> <ccaron>;<PCT>;<CAP>;IGNORE
+
+reorder-after <U0064>
+<d-z<> <d-z-sh>;<PCT>;<MIN>;IGNORE
+<d-Z<> <d-z-sh>;<PCT>;<MIN-CAP>;IGNORE
+<U0111> <d//>;<PCT>;<MIN>;IGNORE
+reorder-after <U0044>
+<D-Z<> <d-z-sh>;<PCT>;<CAP>;IGNORE
+<D-z<> <d-z-sh>;<PCT>;<CAP-MIN>;IGNORE
+<U0110> <d//>;<PCT>;<CAP>;IGNORE
+
+reorder-after <U006C>
+<l-j> <l-j-sh>;<PCT>;<MIN>;IGNORE
+<l-J> <l-j-sh>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U004C>
+<L-J> <l-j-sh>;<PCT>;<CAP>;IGNORE
+<L-j> <l-j-sh>;<PCT>;<CAP-MIN>;IGNORE
+
+reorder-after <U006E>
+<n-j> <n-j-sh>;<PCT>;<MIN>;IGNORE
+<n-J> <n-j-sh>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U004E>
+<N-J> <n-j-sh>;<PCT>;<CAP>;IGNORE
+<N-j> <n-j-sh>;<PCT>;<CAP-MIN>;IGNORE
+
+reorder-after <U0073>
+<U0161> <scaron>;<PCT>;<MIN>;IGNORE
+reorder-after <U0053>
+<U0160> <scaron>;<PCT>;<CAP>;IGNORE
+
+reorder-after <U007A>
+<U017E> <zcaron>;<PCT>;<MIN>;IGNORE
+reorder-after <U005A>
+<U017D> <zcaron>;<PCT>;<CAP>;IGNORE
+
+reorder-end
diff --git a/ap/build/uClibc/extra/locale/collation/sv_FI b/ap/build/uClibc/extra/locale/collation/sv_FI
new file mode 100644
index 0000000..ab50386
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/sv_FI
@@ -0,0 +1 @@
+copy "fi_FI"
diff --git a/ap/build/uClibc/extra/locale/collation/sv_SE b/ap/build/uClibc/extra/locale/collation/sv_SE
new file mode 100644
index 0000000..2d299a4
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/sv_SE
@@ -0,0 +1,51 @@
+copy "iso14651_t1"
+
+collating-symbol <aring>
+collating-symbol <ae>
+collating-symbol <oumlaut>
+collating-symbol <oslash>
+
+% æ is sorted after ä and å etc.
+reorder-after <REU>
+<LIG>
+
+reorder-after <z>
+<aring>
+<ae>
+<oumlaut>
+<oslash>
+
+% The letter w is normally not present in the Swedish alphabet. It
+% exists in some names in Swedish and foreign words, but is accounted
+% for as a variant of 'v'. Words and names with 'w' are in Swedish
+% ordered alphabetically among the words and names with 'v'. If two
+% words or names are only to be distinguished by 'v' or % 'w', 'v' is
+% placed before 'w'.
+reorder-after <U0056>
+<U0057> <v>;<BAS>;<CAP>;<w> % W
+reorder-after <U0076>
+<U0077> <v>;<BAS>;<MIN>;<w> % w
+
+reorder-after <U00E3>
+<U00E4> <ae>;<REU>;<MIN>;IGNORE % ä
+<U00E5> <aring>;<RNE>;<MIN>;IGNORE % å
+<U00E6> <ae>;<LIG>;<MIN>;IGNORE % æ
+reorder-after <U00F5>
+<U00F6> <oumlaut>;<REU>;<MIN>;IGNORE % ö
+<U00F8> <oslash>;<OBL>;<MIN>;IGNORE % ø
+
+reorder-after <U00C3>
+<U00C4> <ae>;<REU>;<CAP>;IGNORE % Ä
+<U00C5> <aring>;<RNE>;<CAP>;IGNORE % Å
+<U00C6> <ae>;<LIG>;<CAP>;IGNORE % Æ
+reorder-after <U00D5>
+<U00D6> <oumlaut>;<REU>;<CAP>;IGNORE % Ö
+<U00D8> <oslash>;<OBL>;<CAP>;IGNORE % Ø
+
+% ü/Ü is treated like y/Y but is sorted after the latter
+reorder-after <U00FB>
+<U00FC> <y>;<REU>;<MIN>;IGNORE % ü
+reorder-after <U00DB>
+<U00DC> <y>;<REU>;<CAP>;IGNORE % Ü
+reorder-end
+
diff --git a/ap/build/uClibc/extra/locale/collation/ta_IN b/ap/build/uClibc/extra/locale/collation/ta_IN
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ta_IN
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/te_IN b/ap/build/uClibc/extra/locale/collation/te_IN
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/te_IN
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/tg_TJ b/ap/build/uClibc/extra/locale/collation/tg_TJ
new file mode 100644
index 0000000..e2f01ae
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/tg_TJ
@@ -0,0 +1,63 @@
+
+% Tadjik cyrillic alphabet is:
+% <U0430>, <U0431>, <U0432>, <U0433>, <U0493> (cyr ghe with stroke), <U0434>, <U0435>,
+% <U0451>, <U0436>, <U0437>, <U0438>, <U04E3> (cyr i with macron), <U0439>, <U043A>,
+% <U049B> (cyr k with descender), <U043B>, <U043C>, <U043D>, <U043E>, <U043F>, <U0440>,
+% <U0441>, <U0442>, <U0443>, <U04EF> (cyr u with macron), <U0444>, <U0445>,
+% <U04B3> (cyr ha with descender), <U0447>, <U04B7> (cyr che with descender),
+% <U0448>, <U044A> (cyr hard sign), <U044D>, <U044E>, <U044F>
+
+copy "iso14651_t1"
+
+collating-symbol <g-=>
+collating-symbol <i-=>
+collating-symbol <k,=>
+collating-symbol <u-=>
+collating-symbol <h,=>
+collating-symbol <c%,=>
+
+reorder-after <CYR-GHE>
+<g-=>
+reorder-after <CYR-I>
+<i-=>
+reorder-after <CYR-KA>
+<k,=>
+reorder-after <CYR-OU>
+<u-=>
+reorder-after <CYR-HA>
+<h,=>
+reorder-after <CYR-CHE>
+<c%,=>
+
+reorder-after <U0433>
+<U0493> <g-=>;<PCL>;<MIN>;IGNORE
+reorder-after <U0413>
+<U0492> <g-=>;<PCL>;<CAP>;IGNORE
+
+reorder-after <U0438>
+<U04E3> <i-=>;<PCL>;<MIN>;IGNORE
+reorder-after <U0418>
+<U04E2> <i-=>;<PCL>;<CAP>;IGNORE
+
+reorder-after <U043A>
+<U049B> <k,=>;<PCL>;<MIN>;IGNORE
+reorder-after <U041A>
+<U049A> <k,=>;<PCL>;<CAP>;IGNORE
+
+reorder-after <U0443>
+<U04EF> <u-=>;<PCL>;<MIN>;IGNORE
+reorder-after <U0423>
+<U04EE> <u-=>;<PCL>;<CAP>;IGNORE
+
+reorder-after <U0445>
+<U04B3> <h,=>;<PCL>;<MIN>;IGNORE
+reorder-after <U0425>
+<U04B2> <h,=>;<PCL>;<CAP>;IGNORE
+
+reorder-after <U0447>
+<U04B7> <c%,=>;<PCL>;<MIN>;IGNORE
+reorder-after <U0427>
+<U04B6> <c%,=>;<PCL>;<CAP>;IGNORE
+
+reorder-end
+
diff --git a/ap/build/uClibc/extra/locale/collation/th_TH b/ap/build/uClibc/extra/locale/collation/th_TH
new file mode 100644
index 0000000..6e3230f
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/th_TH
@@ -0,0 +1,746 @@
+
+collating-element <ko-kai-e> from "<U0E40><U0E01>"
+collating-element <ko-kai-ae> from "<U0E41><U0E01>"
+collating-element <ko-kai-o> from "<U0E42><U0E01>"
+collating-element <ko-kai-ai-maimuan> from "<U0E43><U0E01>"
+collating-element <ko-kai-ai-maimalai> from "<U0E44><U0E01>"
+
+collating-element <kho-khai-e> from "<U0E40><U0E02>"
+collating-element <kho-khai-ae> from "<U0E41><U0E02>"
+collating-element <kho-khai-o> from "<U0E42><U0E02>"
+collating-element <kho-khai-ai-maimuan> from "<U0E43><U0E02>"
+collating-element <kho-khai-ai-maimalai> from "<U0E44><U0E02>"
+
+collating-element <kho-khuat-e> from "<U0E40><U0E03>"
+collating-element <kho-khuat-ae> from "<U0E41><U0E03>"
+collating-element <kho-khuat-o> from "<U0E42><U0E03>"
+collating-element <kho-khuat-ai-maimuan> from "<U0E43><U0E03>"
+collating-element <kho-khuat-ai-maimalai> from "<U0E44><U0E03>"
+
+collating-element <kho-khwai-e> from "<U0E40><U0E04>"
+collating-element <kho-khwai-ae> from "<U0E41><U0E04>"
+collating-element <kho-khwai-o> from "<U0E42><U0E04>"
+collating-element <kho-khwai-ai-maimuan> from "<U0E43><U0E04>"
+collating-element <kho-khwai-ai-maimalai> from "<U0E44><U0E04>"
+
+collating-element <kho-khon-e> from "<U0E40><U0E05>"
+collating-element <kho-khon-ae> from "<U0E41><U0E05>"
+collating-element <kho-khon-o> from "<U0E42><U0E05>"
+collating-element <kho-khon-ai-maimuan> from "<U0E43><U0E05>"
+collating-element <kho-khon-ai-maimalai> from "<U0E44><U0E05>"
+
+collating-element <kho-rakhang-e> from "<U0E40><U0E06>"
+collating-element <kho-rakhang-ae> from "<U0E41><U0E06>"
+collating-element <kho-rakhang-o> from "<U0E42><U0E06>"
+collating-element <kho-rakhang-ai-maimuan> from "<U0E43><U0E06>"
+collating-element <kho-rakhang-ai-maimalai> from "<U0E44><U0E06>"
+
+collating-element <ngo-ngu-e> from "<U0E40><U0E07>"
+collating-element <ngo-ngu-ae> from "<U0E41><U0E07>"
+collating-element <ngo-ngu-o> from "<U0E42><U0E07>"
+collating-element <ngo-ngu-ai-maimuan> from "<U0E43><U0E07>"
+collating-element <ngo-ngu-ai-maimalai> from "<U0E44><U0E07>"
+
+collating-element <cho-chan-e> from "<U0E40><U0E08>"
+collating-element <cho-chan-ae> from "<U0E41><U0E08>"
+collating-element <cho-chan-o> from "<U0E42><U0E08>"
+collating-element <cho-chan-ai-maimuan> from "<U0E43><U0E08>"
+collating-element <cho-chan-ai-maimalai> from "<U0E44><U0E08>"
+
+collating-element <cho-ching-e> from "<U0E40><U0E09>"
+collating-element <cho-ching-ae> from "<U0E41><U0E09>"
+collating-element <cho-ching-o> from "<U0E42><U0E09>"
+collating-element <cho-ching-ai-maimuan> from "<U0E43><U0E09>"
+collating-element <cho-ching-ai-maimalai> from "<U0E44><U0E09>"
+
+collating-element <cho-chang-e> from "<U0E40><U0E0A>"
+collating-element <cho-chang-ae> from "<U0E41><U0E0A>"
+collating-element <cho-chang-o> from "<U0E42><U0E0A>"
+collating-element <cho-chang-ai-maimuan> from "<U0E43><U0E0A>"
+collating-element <cho-chang-ai-maimalai> from "<U0E44><U0E0A>"
+
+collating-element <so-so-e> from "<U0E40><U0E0B>"
+collating-element <so-so-ae> from "<U0E41><U0E0B>"
+collating-element <so-so-o> from "<U0E42><U0E0B>"
+collating-element <so-so-ai-maimuan> from "<U0E43><U0E0B>"
+collating-element <so-so-ai-maimalai> from "<U0E44><U0E0B>"
+
+collating-element <cho-choe-e> from "<U0E40><U0E0C>"
+collating-element <cho-choe-ae> from "<U0E41><U0E0C>"
+collating-element <cho-choe-o> from "<U0E42><U0E0C>"
+collating-element <cho-choe-ai-maimuan> from "<U0E43><U0E0C>"
+collating-element <cho-choe-ai-maimalai> from "<U0E44><U0E0C>"
+
+collating-element <yo-ying-e> from "<U0E40><U0E0D>"
+collating-element <yo-ying-ae> from "<U0E41><U0E0D>"
+collating-element <yo-ying-o> from "<U0E42><U0E0D>"
+collating-element <yo-ying-ai-maimuan> from "<U0E43><U0E0D>"
+collating-element <yo-ying-ai-maimalai> from "<U0E44><U0E0D>"
+
+collating-element <do-chada-e> from "<U0E40><U0E0E>"
+collating-element <do-chada-ae> from "<U0E41><U0E0E>"
+collating-element <do-chada-o> from "<U0E42><U0E0E>"
+collating-element <do-chada-ai-maimuan> from "<U0E43><U0E0E>"
+collating-element <do-chada-ai-maimalai> from "<U0E44><U0E0E>"
+
+collating-element <to-patak-e> from "<U0E40><U0E0F>"
+collating-element <to-patak-ae> from "<U0E41><U0E0F>"
+collating-element <to-patak-o> from "<U0E42><U0E0F>"
+collating-element <to-patak-ai-maimuan> from "<U0E43><U0E0F>"
+collating-element <to-patak-ai-maimalai> from "<U0E44><U0E0F>"
+
+collating-element <tho-than-e> from "<U0E40><U0E10>"
+collating-element <tho-than-ae> from "<U0E41><U0E10>"
+collating-element <tho-than-o> from "<U0E42><U0E10>"
+collating-element <tho-than-ai-maimuan> from "<U0E43><U0E10>"
+collating-element <tho-than-ai-maimalai> from "<U0E44><U0E10>"
+
+collating-element <tho-nangmontho-e> from "<U0E40><U0E11>"
+collating-element <tho-nangmontho-ae> from "<U0E41><U0E11>"
+collating-element <tho-nangmontho-o> from "<U0E42><U0E11>"
+collating-element <tho-nangmontho-ai-maimuan> from "<U0E43><U0E11>"
+collating-element <tho-nangmontho-ai-maimalai> from "<U0E44><U0E11>"
+
+collating-element <tho-phuthao-e> from "<U0E40><U0E12>"
+collating-element <tho-phuthao-ae> from "<U0E41><U0E12>"
+collating-element <tho-phuthao-o> from "<U0E42><U0E12>"
+collating-element <tho-phuthao-ai-maimuan> from "<U0E43><U0E12>"
+collating-element <tho-phuthao-ai-maimalai> from "<U0E44><U0E12>"
+
+collating-element <no-nen-e> from "<U0E40><U0E13>"
+collating-element <no-nen-ae> from "<U0E41><U0E13>"
+collating-element <no-nen-o> from "<U0E42><U0E13>"
+collating-element <no-nen-ai-maimuan> from "<U0E43><U0E13>"
+collating-element <no-nen-ai-maimalai> from "<U0E44><U0E13>"
+
+collating-element <do-dek-e> from "<U0E40><U0E14>"
+collating-element <do-dek-ae> from "<U0E41><U0E14>"
+collating-element <do-dek-o> from "<U0E42><U0E14>"
+collating-element <do-dek-ai-maimuan> from "<U0E43><U0E14>"
+collating-element <do-dek-ai-maimalai> from "<U0E44><U0E14>"
+
+collating-element <to-tao-e> from "<U0E40><U0E15>"
+collating-element <to-tao-ae> from "<U0E41><U0E15>"
+collating-element <to-tao-o> from "<U0E42><U0E15>"
+collating-element <to-tao-ai-maimuan> from "<U0E43><U0E15>"
+collating-element <to-tao-ai-maimalai> from "<U0E44><U0E15>"
+
+collating-element <tho-thung-e> from "<U0E40><U0E16>"
+collating-element <tho-thung-ae> from "<U0E41><U0E16>"
+collating-element <tho-thung-o> from "<U0E42><U0E16>"
+collating-element <tho-thung-ai-maimuan> from "<U0E43><U0E16>"
+collating-element <tho-thung-ai-maimalai> from "<U0E44><U0E16>"
+
+collating-element <tho-thahan-e> from "<U0E40><U0E17>"
+collating-element <tho-thahan-ae> from "<U0E41><U0E17>"
+collating-element <tho-thahan-o> from "<U0E42><U0E17>"
+collating-element <tho-thahan-ai-maimuan> from "<U0E43><U0E17>"
+collating-element <tho-thahan-ai-maimalai> from "<U0E44><U0E17>"
+
+collating-element <tho-thong-e> from "<U0E40><U0E18>"
+collating-element <tho-thong-ae> from "<U0E41><U0E18>"
+collating-element <tho-thong-o> from "<U0E42><U0E18>"
+collating-element <tho-thong-ai-maimuan> from "<U0E43><U0E18>"
+collating-element <tho-thong-ai-maimalai> from "<U0E44><U0E18>"
+
+collating-element <no-nu-e> from "<U0E40><U0E19>"
+collating-element <no-nu-ae> from "<U0E41><U0E19>"
+collating-element <no-nu-o> from "<U0E42><U0E19>"
+collating-element <no-nu-ai-maimuan> from "<U0E43><U0E19>"
+collating-element <no-nu-ai-maimalai> from "<U0E44><U0E19>"
+
+collating-element <bo-baimai-e> from "<U0E40><U0E1A>"
+collating-element <bo-baimai-ae> from "<U0E41><U0E1A>"
+collating-element <bo-baimai-o> from "<U0E42><U0E1A>"
+collating-element <bo-baimai-ai-maimuan> from "<U0E43><U0E1A>"
+collating-element <bo-baimai-ai-maimalai> from "<U0E44><U0E1A>"
+
+collating-element <po-pla-e> from "<U0E40><U0E1B>"
+collating-element <po-pla-ae> from "<U0E41><U0E1B>"
+collating-element <po-pla-o> from "<U0E42><U0E1B>"
+collating-element <po-pla-ai-maimuan> from "<U0E43><U0E1B>"
+collating-element <po-pla-ai-maimalai> from "<U0E44><U0E1B>"
+
+collating-element <pho-phung-e> from "<U0E40><U0E1C>"
+collating-element <pho-phung-ae> from "<U0E41><U0E1C>"
+collating-element <pho-phung-o> from "<U0E42><U0E1C>"
+collating-element <pho-phung-ai-maimuan> from "<U0E43><U0E1C>"
+collating-element <pho-phung-ai-maimalai> from "<U0E44><U0E1C>"
+
+collating-element <fo-fa-e> from "<U0E40><U0E1D>"
+collating-element <fo-fa-ae> from "<U0E41><U0E1D>"
+collating-element <fo-fa-o> from "<U0E42><U0E1D>"
+collating-element <fo-fa-ai-maimuan> from "<U0E43><U0E1D>"
+collating-element <fo-fa-ai-maimalai> from "<U0E44><U0E1D>"
+
+collating-element <pho-phan-e> from "<U0E40><U0E1E>"
+collating-element <pho-phan-ae> from "<U0E41><U0E1E>"
+collating-element <pho-phan-o> from "<U0E42><U0E1E>"
+collating-element <pho-phan-ai-maimuan> from "<U0E43><U0E1E>"
+collating-element <pho-phan-ai-maimalai> from "<U0E44><U0E1E>"
+
+collating-element <fo-fan-e> from "<U0E40><U0E1F>"
+collating-element <fo-fan-ae> from "<U0E41><U0E1F>"
+collating-element <fo-fan-o> from "<U0E42><U0E1F>"
+collating-element <fo-fan-ai-maimuan> from "<U0E43><U0E1F>"
+collating-element <fo-fan-ai-maimalai> from "<U0E44><U0E1F>"
+
+collating-element <pho-samphao-e> from "<U0E40><U0E20>"
+collating-element <pho-samphao-ae> from "<U0E41><U0E20>"
+collating-element <pho-samphao-o> from "<U0E42><U0E20>"
+collating-element <pho-samphao-ai-maimuan> from "<U0E43><U0E20>"
+collating-element <pho-samphao-ai-maimalai> from "<U0E44><U0E20>"
+
+collating-element <mo-ma-e> from "<U0E40><U0E21>"
+collating-element <mo-ma-ae> from "<U0E41><U0E21>"
+collating-element <mo-ma-o> from "<U0E42><U0E21>"
+collating-element <mo-ma-ai-maimuan> from "<U0E43><U0E21>"
+collating-element <mo-ma-ai-maimalai> from "<U0E44><U0E21>"
+
+collating-element <yo-yak-e> from "<U0E40><U0E22>"
+collating-element <yo-yak-ae> from "<U0E41><U0E22>"
+collating-element <yo-yak-o> from "<U0E42><U0E22>"
+collating-element <yo-yak-ai-maimuan> from "<U0E43><U0E22>"
+collating-element <yo-yak-ai-maimalai> from "<U0E44><U0E22>"
+
+collating-element <ro-rua-e> from "<U0E40><U0E23>"
+collating-element <ro-rua-ae> from "<U0E41><U0E23>"
+collating-element <ro-rua-o> from "<U0E42><U0E23>"
+collating-element <ro-rua-ai-maimuan> from "<U0E43><U0E23>"
+collating-element <ro-rua-ai-maimalai> from "<U0E44><U0E23>"
+
+collating-element <lo-ling-e> from "<U0E40><U0E25>"
+collating-element <lo-ling-ae> from "<U0E41><U0E25>"
+collating-element <lo-ling-o> from "<U0E42><U0E25>"
+collating-element <lo-ling-ai-maimuan> from "<U0E43><U0E25>"
+collating-element <lo-ling-ai-maimalai> from "<U0E44><U0E25>"
+
+collating-element <wo-waen-e> from "<U0E40><U0E27>"
+collating-element <wo-waen-ae> from "<U0E41><U0E27>"
+collating-element <wo-waen-o> from "<U0E42><U0E27>"
+collating-element <wo-waen-ai-maimuan> from "<U0E43><U0E27>"
+collating-element <wo-waen-ai-maimalai> from "<U0E44><U0E27>"
+
+collating-element <so-sala-e> from "<U0E40><U0E28>"
+collating-element <so-sala-ae> from "<U0E41><U0E28>"
+collating-element <so-sala-o> from "<U0E42><U0E28>"
+collating-element <so-sala-ai-maimuan> from "<U0E43><U0E28>"
+collating-element <so-sala-ai-maimalai> from "<U0E44><U0E28>"
+
+collating-element <so-rusi-e> from "<U0E40><U0E29>"
+collating-element <so-rusi-ae> from "<U0E41><U0E29>"
+collating-element <so-rusi-o> from "<U0E42><U0E29>"
+collating-element <so-rusi-ai-maimuan> from "<U0E43><U0E29>"
+collating-element <so-rusi-ai-maimalai> from "<U0E44><U0E29>"
+
+collating-element <so-sua-e> from "<U0E40><U0E2A>"
+collating-element <so-sua-ae> from "<U0E41><U0E2A>"
+collating-element <so-sua-o> from "<U0E42><U0E2A>"
+collating-element <so-sua-ai-maimuan> from "<U0E43><U0E2A>"
+collating-element <so-sua-ai-maimalai> from "<U0E44><U0E2A>"
+
+collating-element <ho-hip-e> from "<U0E40><U0E2B>"
+collating-element <ho-hip-ae> from "<U0E41><U0E2B>"
+collating-element <ho-hip-o> from "<U0E42><U0E2B>"
+collating-element <ho-hip-ai-maimuan> from "<U0E43><U0E2B>"
+collating-element <ho-hip-ai-maimalai> from "<U0E44><U0E2B>"
+
+collating-element <lo-chula-e> from "<U0E40><U0E2C>"
+collating-element <lo-chula-ae> from "<U0E41><U0E2C>"
+collating-element <lo-chula-o> from "<U0E42><U0E2C>"
+collating-element <lo-chula-ai-maimuan> from "<U0E43><U0E2C>"
+collating-element <lo-chula-ai-maimalai> from "<U0E44><U0E2C>"
+
+collating-element <o-ang-e> from "<U0E40><U0E2D>"
+collating-element <o-ang-ae> from "<U0E41><U0E2D>"
+collating-element <o-ang-o> from "<U0E42><U0E2D>"
+collating-element <o-ang-ai-maimuan> from "<U0E43><U0E2D>"
+collating-element <o-ang-ai-maimalai> from "<U0E44><U0E2D>"
+
+collating-element <ho-nokhuk-e> from "<U0E40><U0E2E>"
+collating-element <ho-nokhuk-ae> from "<U0E41><U0E2E>"
+collating-element <ho-nokhuk-o> from "<U0E42><U0E2E>"
+collating-element <ho-nokhuk-ai-maimuan> from "<U0E43><U0E2E>"
+collating-element <ho-nokhuk-ai-maimalai> from "<U0E44><U0E2E>"
+
+collating-symbol <BLANK>
+collating-symbol <THAII>
+collating-symbol <CAP>
+collating-symbol <MIN>
+collating-symbol <EXTRA>
+
+order_start forward;forward;forward;forward
+
+% definitions of extra collating symbols
+<BLANK>
+<THAII>
+<CAP>
+<MIN>
+<EXTRA>
+
+UNDEFINED IGNORE;IGNORE;IGNORE;IGNORE
+
+% punctuation marks, ordered after ISO/IEC 14651
+<U0020> IGNORE;IGNORE;<U0020>;IGNORE % SPACE
+<U005F> IGNORE;IGNORE;<U005F>;IGNORE % LOW LINE
+<U002D> IGNORE;IGNORE;<U002D>;IGNORE % HYPHEN-MINUS
+<U002C> IGNORE;IGNORE;<U002C>;IGNORE % COMMA
+<U003B> IGNORE;IGNORE;<U003B>;IGNORE % SEMICOLON
+<U003A> IGNORE;IGNORE;<U003A>;IGNORE % COLON
+<U0021> IGNORE;IGNORE;<U0021>;IGNORE % EXCLAMATION MARK
+<U003F> IGNORE;IGNORE;<U003F>;IGNORE % QUESTION MARK
+<U002F> IGNORE;IGNORE;<U002F>;IGNORE % SOLIDUS
+<U002E> IGNORE;IGNORE;<U002E>;IGNORE % FULL STOP
+<U0E2F> IGNORE;IGNORE;<U0E2F>;IGNORE % THAI CHARACTER PAIYANNOI
+<U0E46> IGNORE;IGNORE;<U0E46>;IGNORE % THAI CHARACTER MAIYAMOK
+<U0060> IGNORE;IGNORE;<U0060>;IGNORE % GRAVE ACCENT
+<U005E> IGNORE;IGNORE;<U005E>;IGNORE % CIRCUMFLEX
+<U007E> IGNORE;IGNORE;<U007E>;IGNORE % TILDE
+<U0027> IGNORE;IGNORE;<U0027>;IGNORE % APOSTROPHE
+<U0022> IGNORE;IGNORE;<U0022>;IGNORE % QUOTATION MARK
+<U0028> IGNORE;IGNORE;<U0028>;IGNORE % LEFT PAREN.
+<U005B> IGNORE;IGNORE;<U005B>;IGNORE % LT BRACKET
+<U007B> IGNORE;IGNORE;<U007B>;IGNORE % LEFT CURLY BRACKET
+<U007D> IGNORE;IGNORE;<U007D>;IGNORE % RIGHT CURLY BRACKET
+<U005D> IGNORE;IGNORE;<U005D>;IGNORE % RT BRACKET
+<U0029> IGNORE;IGNORE;<U0029>;IGNORE % RIGHT PAREN.
+<U0040> IGNORE;IGNORE;<U0040>;IGNORE % COMMERCIAL AT
+<U0E3F> IGNORE;IGNORE;<U0E3F>;IGNORE % THAI CHARACTER SYMBOL BAHT
+<U0024> IGNORE;IGNORE;<U0024>;IGNORE % DOLLAR SIGN
+<U0E4F> IGNORE;IGNORE;<U0E4F>;IGNORE % THAI CHARACTER FONGMAN
+<U0E5A> IGNORE;IGNORE;<U0E5A>;IGNORE % THAI CHARACTER ANGKHANKHU
+<U0E5B> IGNORE;IGNORE;<U0E5B>;IGNORE % THAI CHARACTER KHOMUT
+<U002A> IGNORE;IGNORE;<U002A>;IGNORE % ASTERISK
+<U005C> IGNORE;IGNORE;<U005C>;IGNORE % BACK SOLIDUS
+<U0026> IGNORE;IGNORE;<U0026>;IGNORE % AMPERSAND
+<U0023> IGNORE;IGNORE;<U0023>;IGNORE % NUMBER SIGN
+<U0025> IGNORE;IGNORE;<U0025>;IGNORE % PERCENT
+<U002B> IGNORE;IGNORE;<U002B>;IGNORE % PLUS
+<U003C> IGNORE;IGNORE;<U003C>;IGNORE % LESS THAN
+<U003D> IGNORE;IGNORE;<U003D>;IGNORE % EQUAL
+<U003E> IGNORE;IGNORE;<U003E>;IGNORE % GREATER THAN
+<U007C> IGNORE;IGNORE;<U007C>;IGNORE % VERTICAL LINE
+
+% Thai tone marks and diacritics
+<U0E4E> IGNORE;<U0E4E>;<BLANK>;<BLANK> % THAI CHARACTER YAMAKKAN
+<U0E3A> IGNORE;<U0E3A>;<BLANK>;<BLANK> % THAI CHARACTER PINTHU
+<U0E4C> IGNORE;<U0E4C>;<BLANK>;<BLANK> % THAI CHARACTER THANTHAKHAT
+<U0E47> IGNORE;<U0E47>;<BLANK>;<BLANK> % THAI CHARACTER MAITAIKHU
+<U0E48> IGNORE;<U0E48>;<BLANK>;<BLANK> % THAI CHARACTER MAI EK
+<U0E49> IGNORE;<U0E49>;<BLANK>;<BLANK> % THAI CHARACTER MAI THO
+<U0E4A> IGNORE;<U0E4A>;<BLANK>;<BLANK> % THAI CHARACTER MAI TRI
+<U0E4B> IGNORE;<U0E4B>;<BLANK>;<BLANK> % THAI CHARACTER MAI CHATTAWA
+
+% Arabic and Thai decimal digits
+<U0030> <U0030>;<BLANK>;<BLANK>;<BLANK> % DIGIT ZERO
+<U0E50> <U0030>;<THAII>;<BLANK>;<BLANK> % THAI DIGIT ZERO
+<U0031> <U0031>;<BLANK>;<BLANK>;<BLANK> % DIGIT ONE
+<U0E51> <U0031>;<THAII>;<BLANK>;<BLANK> % THAI DIGIT ONE
+<U0032> <U0032>;<BLANK>;<BLANK>;<BLANK> % DIGIT TWO
+<U0E52> <U0032>;<THAII>;<BLANK>;<BLANK> % THAI DIGIT TWO
+<U0033> <U0033>;<BLANK>;<BLANK>;<BLANK> % DIGIT THREE
+<U0E53> <U0033>;<THAII>;<BLANK>;<BLANK> % THAI DIGIT THREE
+<U0034> <U0034>;<BLANK>;<BLANK>;<BLANK> % DIGIT FOUR
+<U0E54> <U0034>;<THAII>;<BLANK>;<BLANK> % THAI DIGIT FOUR
+<U0035> <U0035>;<BLANK>;<BLANK>;<BLANK> % DIGIT FIVE
+<U0E55> <U0035>;<THAII>;<BLANK>;<BLANK> % THAI DIGIT FIVE
+<U0036> <U0036>;<BLANK>;<BLANK>;<BLANK> % DIGIT SIX
+<U0E56> <U0036>;<THAII>;<BLANK>;<BLANK> % THAI DIGIT SIX
+<U0037> <U0037>;<BLANK>;<BLANK>;<BLANK> % DIGIT SEVEN
+<U0E57> <U0037>;<THAII>;<BLANK>;<BLANK> % THAI DIGIT SEVEN
+<U0038> <U0038>;<BLANK>;<BLANK>;<BLANK> % DIGIT EIGHT
+<U0E58> <U0038>;<THAII>;<BLANK>;<BLANK> % THAI DIGIT EIGHT
+<U0039> <U0039>;<BLANK>;<BLANK>;<BLANK> % DIGIT NINE
+<U0E59> <U0039>;<THAII>;<BLANK>;<BLANK> % THAI DIGIT NINE
+
+% Latin alphabet
+<U0041> <U0041>;<BLANK>;<BLANK>;<CAP> % A
+<U0061> <U0041>;<BLANK>;<BLANK>;<MIN> % a
+<U0042> <U0042>;<BLANK>;<BLANK>;<CAP> % B
+<U0062> <U0042>;<BLANK>;<BLANK>;<MIN> % b
+<U0043> <U0043>;<BLANK>;<BLANK>;<CAP> % C
+<U0063> <U0043>;<BLANK>;<BLANK>;<MIN> % c
+<U0044> <U0044>;<BLANK>;<BLANK>;<CAP> % D
+<U0064> <U0044>;<BLANK>;<BLANK>;<MIN> % d
+<U0045> <U0045>;<BLANK>;<BLANK>;<CAP> % E
+<U0065> <U0045>;<BLANK>;<BLANK>;<MIN> % e
+<U0046> <U0046>;<BLANK>;<BLANK>;<CAP> % F
+<U0066> <U0046>;<BLANK>;<BLANK>;<MIN> % f
+<U0047> <U0047>;<BLANK>;<BLANK>;<CAP> % G
+<U0067> <U0047>;<BLANK>;<BLANK>;<MIN> % g
+<U0048> <U0048>;<BLANK>;<BLANK>;<CAP> % H
+<U0068> <U0048>;<BLANK>;<BLANK>;<MIN> % h
+<U0049> <U0049>;<BLANK>;<BLANK>;<CAP> % I
+<U0069> <U0049>;<BLANK>;<BLANK>;<MIN> % i
+<U004A> <U004A>;<BLANK>;<BLANK>;<CAP> % J
+<U006A> <U004A>;<BLANK>;<BLANK>;<MIN> % j
+<U004B> <U004B>;<BLANK>;<BLANK>;<CAP> % K
+<U006B> <U004B>;<BLANK>;<BLANK>;<MIN> % k
+<U004C> <U004C>;<BLANK>;<BLANK>;<CAP> % L
+<U006C> <U004C>;<BLANK>;<BLANK>;<MIN> % l
+<U004D> <U004D>;<BLANK>;<BLANK>;<CAP> % M
+<U006D> <U004D>;<BLANK>;<BLANK>;<MIN> % m
+<U004E> <U004E>;<BLANK>;<BLANK>;<CAP> % N
+<U006E> <U004E>;<BLANK>;<BLANK>;<MIN> % n
+<U004F> <U004F>;<BLANK>;<BLANK>;<CAP> % O
+<U006F> <U004F>;<BLANK>;<BLANK>;<MIN> % o
+<U0050> <U0050>;<BLANK>;<BLANK>;<CAP> % P
+<U0070> <U0050>;<BLANK>;<BLANK>;<MIN> % p
+<U0051> <U0051>;<BLANK>;<BLANK>;<CAP> % Q
+<U0071> <U0051>;<BLANK>;<BLANK>;<MIN> % q
+<U0052> <U0052>;<BLANK>;<BLANK>;<CAP> % R
+<U0072> <U0052>;<BLANK>;<BLANK>;<MIN> % r
+<U0053> <U0053>;<BLANK>;<BLANK>;<CAP> % S
+<U0073> <U0053>;<BLANK>;<BLANK>;<MIN> % s
+<U0054> <U0054>;<BLANK>;<BLANK>;<CAP> % T
+<U0074> <U0054>;<BLANK>;<BLANK>;<MIN> % t
+<U0055> <U0055>;<BLANK>;<BLANK>;<CAP> % U
+<U0075> <U0055>;<BLANK>;<BLANK>;<MIN> % u
+<U0056> <U0056>;<BLANK>;<BLANK>;<CAP> % V
+<U0076> <U0056>;<BLANK>;<BLANK>;<MIN> % v
+<U0057> <U0057>;<BLANK>;<BLANK>;<CAP> % W
+<U0077> <U0057>;<BLANK>;<BLANK>;<MIN> % w
+<U0058> <U0058>;<BLANK>;<BLANK>;<CAP> % X
+<U0078> <U0058>;<BLANK>;<BLANK>;<MIN> % x
+<U0059> <U0059>;<BLANK>;<BLANK>;<CAP> % Y
+<U0079> <U0059>;<BLANK>;<BLANK>;<MIN> % y
+<U005A> <U005A>;<BLANK>;<BLANK>;<CAP> % Z
+<U007A> <U005A>;<BLANK>;<BLANK>;<MIN> % z
+
+%
+% Thai consonants, with leading vowels rearrangement
+%
+<U0E01> <U0E01>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER KO KAI
+<ko-kai-e> "<U0E01><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<ko-kai-ae> "<U0E01><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<ko-kai-o> "<U0E01><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<ko-kai-ai-maimuan> "<U0E01><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<ko-kai-ai-maimalai> "<U0E01><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E02> <U0E02>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER KHO KHAI
+<kho-khai-e> "<U0E02><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<kho-khai-ae> "<U0E02><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<kho-khai-o> "<U0E02><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<kho-khai-ai-maimuan> "<U0E02><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<kho-khai-ai-maimalai> "<U0E02><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E03> <U0E03>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER KHO KHUAT
+<kho-khuat-e> "<U0E03><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<kho-khuat-ae> "<U0E03><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<kho-khuat-o> "<U0E03><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<kho-khuat-ai-maimuan> "<U0E03><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<kho-khuat-ai-maimalai> "<U0E03><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E04> <U0E04>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER KHO KHWAI
+<kho-khwai-e> "<U0E04><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<kho-khwai-ae> "<U0E04><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<kho-khwai-o> "<U0E04><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<kho-khwai-ai-maimuan> "<U0E04><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<kho-khwai-ai-maimalai> "<U0E04><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E05> <U0E05>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER KHO KHON
+<kho-khon-e> "<U0E05><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<kho-khon-ae> "<U0E05><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<kho-khon-o> "<U0E05><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<kho-khon-ai-maimuan> "<U0E05><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<kho-khon-ai-maimalai> "<U0E05><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E06> <U0E06>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER KHO RAKHANG
+<kho-rakhang-e> "<U0E06><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<kho-rakhang-ae> "<U0E06><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<kho-rakhang-o> "<U0E06><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<kho-rakhang-ai-maimuan> "<U0E06><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<kho-rakhang-ai-maimalai> "<U0E06><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E07> <U0E07>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER NGO NGU
+<ngo-ngu-e> "<U0E07><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<ngo-ngu-ae> "<U0E07><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<ngo-ngu-o> "<U0E07><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<ngo-ngu-ai-maimuan> "<U0E07><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<ngo-ngu-ai-maimalai> "<U0E07><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E08> <U0E08>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER CHO CHAN
+<cho-chan-e> "<U0E08><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<cho-chan-ae> "<U0E08><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<cho-chan-o> "<U0E08><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<cho-chan-ai-maimuan> "<U0E08><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<cho-chan-ai-maimalai> "<U0E08><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E09> <U0E09>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER CHO CHING
+<cho-ching-e> "<U0E09><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<cho-ching-ae> "<U0E09><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<cho-ching-o> "<U0E09><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<cho-ching-ai-maimuan> "<U0E09><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<cho-ching-ai-maimalai> "<U0E09><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E0A> <U0E0A>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER CHO CHANG
+<cho-chang-e> "<U0E0A><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<cho-chang-ae> "<U0E0A><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<cho-chang-o> "<U0E0A><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<cho-chang-ai-maimuan> "<U0E0A><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<cho-chang-ai-maimalai> "<U0E0A><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E0B> <U0E0B>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER SO SO
+<so-so-e> "<U0E0B><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<so-so-ae> "<U0E0B><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<so-so-o> "<U0E0B><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<so-so-ai-maimuan> "<U0E0B><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<so-so-ai-maimalai> "<U0E0B><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E0C> <U0E0C>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER CHO CHOE
+<cho-choe-e> "<U0E0C><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<cho-choe-ae> "<U0E0C><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<cho-choe-o> "<U0E0C><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<cho-choe-ai-maimuan> "<U0E0C><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<cho-choe-ai-maimalai> "<U0E0C><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E0D> <U0E0D>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER YO YING
+<yo-ying-e> "<U0E0D><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<yo-ying-ae> "<U0E0D><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<yo-ying-o> "<U0E0D><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<yo-ying-ai-maimuan> "<U0E0D><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<yo-ying-ai-maimalai> "<U0E0D><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E0E> <U0E0E>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER DO CHADA
+<do-chada-e> "<U0E0E><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<do-chada-ae> "<U0E0E><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<do-chada-o> "<U0E0E><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<do-chada-ai-maimuan> "<U0E0E><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<do-chada-ai-maimalai> "<U0E0E><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E0F> <U0E0F>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER TO PATAK
+<to-patak-e> "<U0E0F><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<to-patak-ae> "<U0E0F><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<to-patak-o> "<U0E0F><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<to-patak-ai-maimuan> "<U0E0F><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<to-patak-ai-maimalai> "<U0E0F><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E10> <U0E10>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER THO THAN
+<tho-than-e> "<U0E10><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<tho-than-ae> "<U0E10><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<tho-than-o> "<U0E10><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<tho-than-ai-maimuan> "<U0E10><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<tho-than-ai-maimalai> "<U0E10><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E11> <U0E11>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER THO NANGMONTHO
+<tho-nangmontho-e> "<U0E11><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<tho-nangmontho-ae> "<U0E11><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<tho-nangmontho-o> "<U0E11><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<tho-nangmontho-ai-maimuan> "<U0E11><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<tho-nangmontho-ai-maimalai> "<U0E11><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E12> <U0E12>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER THO PHUTHAO
+<tho-phuthao-e> "<U0E12><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<tho-phuthao-ae> "<U0E12><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<tho-phuthao-o> "<U0E12><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<tho-phuthao-ai-maimuan> "<U0E12><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<tho-phuthao-ai-maimalai> "<U0E12><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E13> <U0E13>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER NO NEN
+<no-nen-e> "<U0E13><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<no-nen-ae> "<U0E13><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<no-nen-o> "<U0E13><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<no-nen-ai-maimuan> "<U0E13><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<no-nen-ai-maimalai> "<U0E13><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E14> <U0E14>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER DO DEK
+<do-dek-e> "<U0E14><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<do-dek-ae> "<U0E14><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<do-dek-o> "<U0E14><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<do-dek-ai-maimuan> "<U0E14><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<do-dek-ai-maimalai> "<U0E14><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E15> <U0E15>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER TO TAO
+<to-tao-e> "<U0E15><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<to-tao-ae> "<U0E15><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<to-tao-o> "<U0E15><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<to-tao-ai-maimuan> "<U0E15><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<to-tao-ai-maimalai> "<U0E15><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E16> <U0E16>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER THO THUNG
+<tho-thung-e> "<U0E16><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<tho-thung-ae> "<U0E16><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<tho-thung-o> "<U0E16><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<tho-thung-ai-maimuan> "<U0E16><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<tho-thung-ai-maimalai> "<U0E16><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E17> <U0E17>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER THO THAHAN
+<tho-thahan-e> "<U0E17><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<tho-thahan-ae> "<U0E17><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<tho-thahan-o> "<U0E17><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<tho-thahan-ai-maimuan> "<U0E17><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<tho-thahan-ai-maimalai> "<U0E17><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E18> <U0E18>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER THO THONG
+<tho-thong-e> "<U0E18><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<tho-thong-ae> "<U0E18><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<tho-thong-o> "<U0E18><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<tho-thong-ai-maimuan> "<U0E18><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<tho-thong-ai-maimalai> "<U0E18><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E19> <U0E19>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER NO NU
+<no-nu-e> "<U0E19><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<no-nu-ae> "<U0E19><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<no-nu-o> "<U0E19><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<no-nu-ai-maimuan> "<U0E19><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<no-nu-ai-maimalai> "<U0E19><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E1A> <U0E1A>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER BO BAIMAI
+<bo-baimai-e> "<U0E1A><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<bo-baimai-ae> "<U0E1A><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<bo-baimai-o> "<U0E1A><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<bo-baimai-ai-maimuan> "<U0E1A><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<bo-baimai-ai-maimalai> "<U0E1A><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E1B> <U0E1B>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER PO PLA
+<po-pla-e> "<U0E1B><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<po-pla-ae> "<U0E1B><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<po-pla-o> "<U0E1B><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<po-pla-ai-maimuan> "<U0E1B><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<po-pla-ai-maimalai> "<U0E1B><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E1C> <U0E1C>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER PHO PHUNG
+<pho-phung-e> "<U0E1C><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<pho-phung-ae> "<U0E1C><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<pho-phung-o> "<U0E1C><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<pho-phung-ai-maimuan> "<U0E1C><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<pho-phung-ai-maimalai> "<U0E1C><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E1D> <U0E1D>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER FO FA
+<fo-fa-e> "<U0E1D><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<fo-fa-ae> "<U0E1D><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<fo-fa-o> "<U0E1D><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<fo-fa-ai-maimuan> "<U0E1D><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<fo-fa-ai-maimalai> "<U0E1D><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E1E> <U0E1E>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER PHO PHAN
+<pho-phan-e> "<U0E1E><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<pho-phan-ae> "<U0E1E><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<pho-phan-o> "<U0E1E><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<pho-phan-ai-maimuan> "<U0E1E><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<pho-phan-ai-maimalai> "<U0E1E><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E1F> <U0E1F>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER FO FAN
+<fo-fan-e> "<U0E1F><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<fo-fan-ae> "<U0E1F><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<fo-fan-o> "<U0E1F><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<fo-fan-ai-maimuan> "<U0E1F><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<fo-fan-ai-maimalai> "<U0E1F><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E20> <U0E20>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER PHO SAMPHAO
+<pho-samphao-e> "<U0E20><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<pho-samphao-ae> "<U0E20><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<pho-samphao-o> "<U0E20><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<pho-samphao-ai-maimuan> "<U0E20><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<pho-samphao-ai-maimalai> "<U0E20><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E21> <U0E21>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER MO MA
+<mo-ma-e> "<U0E21><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<mo-ma-ae> "<U0E21><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<mo-ma-o> "<U0E21><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<mo-ma-ai-maimuan> "<U0E21><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<mo-ma-ai-maimalai> "<U0E21><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E22> <U0E22>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER YO YAK
+<yo-yak-e> "<U0E22><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<yo-yak-ae> "<U0E22><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<yo-yak-o> "<U0E22><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<yo-yak-ai-maimuan> "<U0E22><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<yo-yak-ai-maimalai> "<U0E22><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E23> <U0E23>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER RO RUA
+<ro-rua-e> "<U0E23><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<ro-rua-ae> "<U0E23><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<ro-rua-o> "<U0E23><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<ro-rua-ai-maimuan> "<U0E23><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<ro-rua-ai-maimalai> "<U0E23><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E24> <U0E24>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER RU
+
+<U0E25> <U0E25>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER LO LING
+<lo-ling-e> "<U0E25><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<lo-ling-ae> "<U0E25><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<lo-ling-o> "<U0E25><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<lo-ling-ai-maimuan> "<U0E25><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<lo-ling-ai-maimalai> "<U0E25><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E26> <U0E26>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER LU
+
+<U0E27> <U0E27>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER WO WAEN
+<wo-waen-e> "<U0E27><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<wo-waen-ae> "<U0E27><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<wo-waen-o> "<U0E27><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<wo-waen-ai-maimuan> "<U0E27><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<wo-waen-ai-maimalai> "<U0E27><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E28> <U0E28>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER SO SALA
+<so-sala-e> "<U0E28><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<so-sala-ae> "<U0E28><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<so-sala-o> "<U0E28><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<so-sala-ai-maimuan> "<U0E28><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<so-sala-ai-maimalai> "<U0E28><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E29> <U0E29>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER SO RUSI
+<so-rusi-e> "<U0E29><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<so-rusi-ae> "<U0E29><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<so-rusi-o> "<U0E29><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<so-rusi-ai-maimuan> "<U0E29><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<so-rusi-ai-maimalai> "<U0E29><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E2A> <U0E2A>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER SO SUA
+<so-sua-e> "<U0E2A><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<so-sua-ae> "<U0E2A><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<so-sua-o> "<U0E2A><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<so-sua-ai-maimuan> "<U0E2A><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<so-sua-ai-maimalai> "<U0E2A><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E2B> <U0E2B>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER HO HIP
+<ho-hip-e> "<U0E2B><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<ho-hip-ae> "<U0E2B><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<ho-hip-o> "<U0E2B><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<ho-hip-ai-maimuan> "<U0E2B><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<ho-hip-ai-maimalai> "<U0E2B><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E2C> <U0E2C>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER LO CHULA
+<lo-chula-e> "<U0E2C><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<lo-chula-ae> "<U0E2C><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<lo-chula-o> "<U0E2C><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<lo-chula-ai-maimuan> "<U0E2C><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<lo-chula-ai-maimalai> "<U0E2C><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E2D> <U0E2D>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER O ANG
+<o-ang-e> "<U0E2D><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<o-ang-ae> "<U0E2D><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<o-ang-o> "<U0E2D><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<o-ang-ai-maimuan> "<U0E2D><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<o-ang-ai-maimalai> "<U0E2D><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E2E> <U0E2E>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER HO NOKHUK
+<ho-nokhuk-e> "<U0E2E><U0E40>";<BLANK>;<BLANK>;<BLANK>
+<ho-nokhuk-ae> "<U0E2E><U0E41>";<BLANK>;<BLANK>;<BLANK>
+<ho-nokhuk-o> "<U0E2E><U0E42>";<BLANK>;<BLANK>;<BLANK>
+<ho-nokhuk-ai-maimuan> "<U0E2E><U0E43>";<BLANK>;<BLANK>;<BLANK>
+<ho-nokhuk-ai-maimalai> "<U0E2E><U0E44>";<BLANK>;<BLANK>;<BLANK>
+
+<U0E4D> <U0E4D>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER NIKHAHIT
+
+% order of Thai vowels
+<U0E30> <U0E30>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER SARA A
+<U0E31> <U0E31>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER MAI HAN-AKAT
+<U0E32> <U0E32>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER SARA AA
+<U0E45> <U0E32>;<BLANK>;<BLANK>;<EXTRA> % THAI CHARACTER LAKKHANGYAO
+<U0E33> <U0E33>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER SARA AM
+<U0E34> <U0E34>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER SARA I
+<U0E35> <U0E35>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER SARA II
+<U0E36> <U0E36>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER SARA UE
+<U0E37> <U0E37>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER SARA UEE
+<U0E38> <U0E38>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER SARA U
+<U0E39> <U0E39>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER SARA UU
+<U0E40> <U0E40>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER SARA E
+<U0E41> <U0E41>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER SARA AE
+<U0E42> <U0E42>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER SARA O
+<U0E43> <U0E43>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER SARA AI MAIMUAN
+<U0E44> <U0E44>;<BLANK>;<BLANK>;<BLANK> % THAI CHARACTER SARA AI MAIMALAI
+
+order_end
+
diff --git a/ap/build/uClibc/extra/locale/collation/ti_ER b/ap/build/uClibc/extra/locale/collation/ti_ER
new file mode 100644
index 0000000..61b292b
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ti_ER
@@ -0,0 +1 @@
+copy "am_ET"
diff --git a/ap/build/uClibc/extra/locale/collation/ti_ET b/ap/build/uClibc/extra/locale/collation/ti_ET
new file mode 100644
index 0000000..61b292b
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ti_ET
@@ -0,0 +1 @@
+copy "am_ET"
diff --git a/ap/build/uClibc/extra/locale/collation/tl_PH b/ap/build/uClibc/extra/locale/collation/tl_PH
new file mode 100644
index 0000000..420168c
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/tl_PH
@@ -0,0 +1,30 @@
+copy "iso14651_t1"
+
+%% a b c d e f g h i j k l m n ng o p q r s t u v w x y z
+
+collating-symbol <n-g-ph>
+collating-element <N-G> from "<U004E><U0047>"
+collating-element <n-g> from "<U006E><U0067>"
+collating-element <N-g> from "<U004E><U0067>"
+collating-element <n-G> from "<U006E><U0047>"
+
+collating-symbol <CAP-MIN>
+collating-symbol <MIN-CAP>
+
+reorder-after <MIN>
+<MIN-CAP>
+reorder-after <CAP>
+<CAP-MIN>
+
+reorder-after <n>
+<n-g-ph>
+
+reorder-after <U006E>
+<n-g> <n-g-ph>;<PCT>;<MIN>;IGNORE
+<n-G> <n-g-ph>;<PCT>;<MIN-CAP>;IGNORE
+reorder-after <U004E>
+<N-G> <n-g-ph>;<PCT>;<CAP>;IGNORE
+<N-g> <n-g-ph>;<PCT>;<CAP-MIN>;IGNORE
+
+reorder-end
+
diff --git a/ap/build/uClibc/extra/locale/collation/tr_TR b/ap/build/uClibc/extra/locale/collation/tr_TR
new file mode 100644
index 0000000..a96c2cf
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/tr_TR
@@ -0,0 +1,2061 @@
+
+% Base collation scheme: 1994-03-22
+
+% Ordering algorithm:
+% 1. Spaces and hyphen (but not soft
+% hyphen) before punctuation
+% characters, punctuation characters
+% before numbers,
+% numbers before letters.
+% 2. Letters with diacritical marks are
+% members of equivalence classes
+% 3. A distinction is made with regards
+% to case as noted below.
+% 4. Special characters are ignored
+% when comparing letters, but then
+% they are considered
+% 5. The alphabets are sorted in order
+% of first appearance in ISO 10646:
+% Latin, Greek, Cyrillic, etc.
+%
+% According to Greek specifications,
+% the steps 2. and 3. above are reversed
+% for the Greek script
+
+% collating symbols
+
+% The collating symbol naming is
+% mostly taken from ISO 10646-1,
+% for example the case and accent
+% names are from this standard.
+
+collating-symbol <CAPITAL>
+collating-symbol <CAPITAL-SMALL>
+collating-symbol <SMALL-CAPITAL>
+collating-symbol <SMALL>
+
+% <CAPITAL-SMALL> and <SMALL-CAPITAL>
+% are for cases like Danish <U0041><U0061>
+% and Spanish <U0043><U0068> being treated
+% as one letter.
+
+% The <a8> ...... <z8> collating
+% symbols have defined weights as
+% the last character in a group of
+% Latin letters. They are used
+% to specify deltas by locales using
+% a locale as the default ordering
+% and by "replace-after" statements
+% specifying the changed placement
+% in an ordering of a character.
+
+collating-symbol <a8>
+collating-symbol <b8>
+collating-symbol <c8>
+collating-symbol <d8>
+collating-symbol <e8>
+collating-symbol <f8>
+collating-symbol <g8>
+collating-symbol <h8>
+collating-symbol <i8>
+collating-symbol <j8>
+collating-symbol <k8>
+collating-symbol <l8>
+collating-symbol <m8>
+collating-symbol <n8>
+collating-symbol <o8>
+collating-symbol <p8>
+collating-symbol <q8>
+collating-symbol <r8>
+collating-symbol <s8>
+collating-symbol <t8>
+collating-symbol <u8>
+collating-symbol <v8>
+collating-symbol <w8>
+collating-symbol <x8>
+collating-symbol <y8>
+collating-symbol <z8>
+
+collating-symbol <NONE>
+collating-symbol <ACUTE>
+collating-symbol <ACUTE+DOT>
+collating-symbol <GRAVE>
+collating-symbol <DOUBLE-GRAVE>
+collating-symbol <BREVE>
+collating-symbol <BREVE+ACUTE>
+collating-symbol <BREVE+GRAVE>
+collating-symbol <BREVE+MACRON>
+collating-symbol <BREVE+HOOK>
+collating-symbol <BREVE+TILDE>
+collating-symbol <BREVE+DOT-BELOW>
+collating-symbol <BREVE-BELOW>
+collating-symbol <INVERTED-BREVE>
+collating-symbol <CIRCUMFLEX>
+collating-symbol <CIRCUMFLEX+ACUTE>
+collating-symbol <CIRCUMFLEX+GRAVE>
+collating-symbol <CIRCUMFLEX+HOOK>
+collating-symbol <CIRCUMFLEX+TILDE>
+collating-symbol <CIRCUMFLEX+DOT-BELOW>
+collating-symbol <CARON>
+collating-symbol <CARON+DIAERESIS>
+collating-symbol <CARON+DOT>
+collating-symbol <RING>
+collating-symbol <RING+ACUTE>
+collating-symbol <RING-BELOW>
+collating-symbol <DIAERESIS>
+collating-symbol <DIAERESIS+MACRON>
+collating-symbol <DIAERESIS+ACUTE>
+collating-symbol <DIAERESIS+GRAVE>
+collating-symbol <DIAERESIS+CARON>
+collating-symbol <DOUBLE-ACUTE>
+collating-symbol <HOOK>
+collating-symbol <TILDE>
+collating-symbol <TILDE+ACUTE>
+collating-symbol <TILDE+DIAERESIS>
+collating-symbol <TILDE-BELOW>
+collating-symbol <DOT>
+collating-symbol <DOT-BELOW>
+collating-symbol <DOT+DOT-BELOW>
+collating-symbol <STROKE>
+collating-symbol <STROKE+ACUTE>
+collating-symbol <CEDILLA>
+collating-symbol <CEDILLA+ACUTE>
+collating-symbol <CEDILLA+GRAVE>
+collating-symbol <CEDILLA+BREVE>
+collating-symbol <OGONEK>
+collating-symbol <OGONEK+MACRON>
+collating-symbol <MACRON>
+collating-symbol <MACRON+ACUTE>
+collating-symbol <MACRON+GRAVE>
+collating-symbol <MACRON+DIAERESIS>
+collating-symbol <MACRON+DIAERESIS-BELOW>
+collating-symbol <MACRON+DOT>
+collating-symbol <MACRON+DOT-BELOW>
+collating-symbol <MACRON+CIRCUMFLEX>
+collating-symbol <LINE-BELOW>
+collating-symbol <HORN>
+collating-symbol <HORN+ACUTE>
+collating-symbol <HORN+GRAVE>
+collating-symbol <HORN+HOOK>
+collating-symbol <HORN+TILDE>
+collating-symbol <HORN+DOT-BELOW>
+collating-symbol <PRECEDED-BY-APOSTROPHE>
+collating-symbol <GREEK>
+collating-symbol <TONOS>
+collating-symbol <DIALYTICA>
+collating-symbol <DIALYTICA+TONOS>
+collating-symbol <CYRILLIC>
+collating-symbol <HIRAGANA>
+collating-symbol <KATAKANA>
+collating-symbol <SPECIAL>
+
+% letter;accent;case;specials
+
+order_start forward;backward;forward;position
+
+% <CAPITAL> or <SMALL> letters first:
+
+<CAPITAL>
+<CAPITAL-SMALL>
+<SMALL-CAPITAL>
+<SMALL>
+
+% Accents:
+
+<NONE>
+<ACUTE>
+<ACUTE+DOT>
+<GRAVE>
+<DOUBLE-GRAVE>
+<BREVE>
+<BREVE+ACUTE>
+<BREVE+GRAVE>
+<BREVE+MACRON>
+<BREVE+HOOK>
+<BREVE+TILDE>
+<BREVE+DOT-BELOW>
+<BREVE-BELOW>
+<INVERTED-BREVE>
+<CIRCUMFLEX>
+<CIRCUMFLEX+ACUTE>
+<CIRCUMFLEX+GRAVE>
+<CIRCUMFLEX+HOOK>
+<CIRCUMFLEX+TILDE>
+<CIRCUMFLEX+DOT-BELOW>
+<CARON>
+<CARON+DIAERESIS>
+<CARON+DOT>
+<RING>
+<RING+ACUTE>
+<RING-BELOW>
+<DIAERESIS>
+<DIAERESIS+MACRON>
+<DIAERESIS+ACUTE>
+<DIAERESIS+GRAVE>
+<DIAERESIS+CARON>
+<DOUBLE-ACUTE>
+<HOOK>
+<TILDE>
+<TILDE+ACUTE>
+<TILDE+DIAERESIS>
+<TILDE-BELOW>
+<DOT>
+<DOT-BELOW>
+<DOT+DOT-BELOW>
+<STROKE>
+<STROKE+ACUTE>
+<CEDILLA>
+<CEDILLA+ACUTE>
+<CEDILLA+GRAVE>
+<CEDILLA+BREVE>
+<OGONEK>
+<OGONEK+MACRON>
+<MACRON>
+<MACRON+ACUTE>
+<MACRON+GRAVE>
+<MACRON+DIAERESIS>
+<MACRON+DIAERESIS-BELOW>
+<MACRON+DOT>
+<MACRON+DOT-BELOW>
+<MACRON+CIRCUMFLEX>
+<LINE-BELOW>
+<HORN>
+<HORN+ACUTE>
+<HORN+GRAVE>
+<HORN+HOOK>
+<HORN+TILDE>
+<HORN+DOT-BELOW>
+<PRECEDED-BY-APOSTROPHE>
+<GREEK>
+<TONOS>
+<DIALYTICA>
+<DIALYTICA+TONOS>
+<CYRILLIC>
+<HIRAGANA>
+<KATAKANA>
+<SPECIAL>
+
+<U00A0> <U00A0>;<U00A0>;<U00A0>;IGNORE
+<U0020> IGNORE;IGNORE;IGNORE;<U0020>
+<U0009> IGNORE;IGNORE;IGNORE;<U0009>
+<U000B> IGNORE;IGNORE;IGNORE;<U000B>
+<U000D> IGNORE;IGNORE;IGNORE;<U000D>
+<U000A> IGNORE;IGNORE;IGNORE;<U000A>
+<U000C> IGNORE;IGNORE;IGNORE;<U000C>
+<U005F> IGNORE;IGNORE;IGNORE;<U005F>
+<U00AF> IGNORE;IGNORE;IGNORE;<U00AF>
+<U00AD> IGNORE;IGNORE;IGNORE;<U00AD>
+<U002D> IGNORE;IGNORE;IGNORE;<U002D>
+<U002C> IGNORE;IGNORE;IGNORE;<U002C>
+<U003B> IGNORE;IGNORE;IGNORE;<U003B>
+<U003A> IGNORE;IGNORE;IGNORE;<U003A>
+<U0021> IGNORE;IGNORE;IGNORE;<U0021>
+<U00A1> IGNORE;IGNORE;IGNORE;<U00A1>
+<U003F> IGNORE;IGNORE;IGNORE;<U003F>
+<U00BF> IGNORE;IGNORE;IGNORE;<U00BF>
+<U002F> IGNORE;IGNORE;IGNORE;<U002F>
+<U002E> IGNORE;IGNORE;IGNORE;<U002E>
+<U00B4> IGNORE;IGNORE;IGNORE;<U00B4>
+<U0060> IGNORE;IGNORE;IGNORE;<U0060>
+<U005E> IGNORE;IGNORE;IGNORE;<U005E>
+<U00A8> IGNORE;IGNORE;IGNORE;<U00A8>
+<U007E> IGNORE;IGNORE;IGNORE;<U007E>
+<U00B7> IGNORE;IGNORE;IGNORE;<U00B7>
+<U00B8> IGNORE;IGNORE;IGNORE;<U00B8>
+<U0027> IGNORE;IGNORE;IGNORE;<U0027>
+<U2018> IGNORE;IGNORE;IGNORE;<U2018>
+<U2019> IGNORE;IGNORE;IGNORE;<U2019>
+<U0022> IGNORE;IGNORE;IGNORE;<U0022>
+<U201C> IGNORE;IGNORE;IGNORE;<U201C>
+<U201D> IGNORE;IGNORE;IGNORE;<U201D>
+<U00AB> IGNORE;IGNORE;IGNORE;<U00AB>
+<U00BB> IGNORE;IGNORE;IGNORE;<U00BB>
+<U0028> IGNORE;IGNORE;IGNORE;<U0028>
+<U207D> IGNORE;IGNORE;IGNORE;<U207D>
+<U0029> IGNORE;IGNORE;IGNORE;<U0029>
+<U207E> IGNORE;IGNORE;IGNORE;<U207E>
+<U005B> IGNORE;IGNORE;IGNORE;<U005B>
+<U005D> IGNORE;IGNORE;IGNORE;<U005D>
+<U007B> IGNORE;IGNORE;IGNORE;<U007B>
+<U007D> IGNORE;IGNORE;IGNORE;<U007D>
+<U00A7> IGNORE;IGNORE;IGNORE;<U00A7>
+<U00B6> IGNORE;IGNORE;IGNORE;<U00B6>
+<U00A9> IGNORE;IGNORE;IGNORE;<U00A9>
+<U00AE> IGNORE;IGNORE;IGNORE;<U00AE>
+<U0040> IGNORE;IGNORE;IGNORE;<U0040>
+<U00A4> IGNORE;IGNORE;IGNORE;<U00A4>
+<U00A2> IGNORE;IGNORE;IGNORE;<U00A2>
+<U0024> IGNORE;IGNORE;IGNORE;<U0024>
+<U00A3> IGNORE;IGNORE;IGNORE;<U00A3>
+<U00A5> IGNORE;IGNORE;IGNORE;<U00A5>
+<U002A> IGNORE;IGNORE;IGNORE;<U002A>
+<U005C> IGNORE;IGNORE;IGNORE;<U005C>
+<U0026> IGNORE;IGNORE;IGNORE;<U0026>
+<U0023> IGNORE;IGNORE;IGNORE;<U0023>
+<U0025> IGNORE;IGNORE;IGNORE;<U0025>
+<U207B> IGNORE;IGNORE;IGNORE;<U207B>
+<U002B> IGNORE;IGNORE;IGNORE;<U002B>
+<U207A> IGNORE;IGNORE;IGNORE;<U207A>
+<U00B1> IGNORE;IGNORE;IGNORE;<U00B1>
+<U00F7> IGNORE;IGNORE;IGNORE;<U00F7>
+<U00D7> IGNORE;IGNORE;IGNORE;<U00D7>
+<U2260> IGNORE;IGNORE;IGNORE;<U2260>
+<U003C> IGNORE;IGNORE;IGNORE;<U003C>
+<U2264> IGNORE;IGNORE;IGNORE;<U2264>
+<U003D> IGNORE;IGNORE;IGNORE;<U003D>
+<U2265> IGNORE;IGNORE;IGNORE;<U2265>
+<U003E> IGNORE;IGNORE;IGNORE;<U003E>
+<U00AC> IGNORE;IGNORE;IGNORE;<U00AC>
+<U007C> IGNORE;IGNORE;IGNORE;<U007C>
+<U00A6> IGNORE;IGNORE;IGNORE;<U00A6>
+<U00B0> IGNORE;IGNORE;IGNORE;<U00B0>
+<U00B5> IGNORE;IGNORE;IGNORE;<U00B5>
+<U02C7> IGNORE;IGNORE;IGNORE;<U02C7>
+<U02D8> IGNORE;IGNORE;IGNORE;<U02D8>
+<U02D9> IGNORE;IGNORE;IGNORE;<U02D9>
+<U02DA> IGNORE;IGNORE;IGNORE;<U02DA>
+<U02DB> IGNORE;IGNORE;IGNORE;<U02DB>
+<U02DC> IGNORE;IGNORE;IGNORE;<U02DC>
+<U02DD> IGNORE;IGNORE;IGNORE;<U02DD>
+<U0374> IGNORE;IGNORE;IGNORE;<U0374>
+<U0375> IGNORE;IGNORE;IGNORE;<U0375>
+<U037A> IGNORE;IGNORE;IGNORE;<U037A>
+<U037E> IGNORE;IGNORE;IGNORE;<U037E>
+<U0384> IGNORE;IGNORE;IGNORE;<U0384>
+<U0385> IGNORE;IGNORE;IGNORE;<U0385>
+<U0387> IGNORE;IGNORE;IGNORE;<U0387>
+<U03D0> IGNORE;IGNORE;IGNORE;<U03D0>
+<U1FBF> IGNORE;IGNORE;IGNORE;<U1FBF>
+<U1FC0> IGNORE;IGNORE;IGNORE;<U1FC0>
+<U1FC1> IGNORE;IGNORE;IGNORE;<U1FC1>
+<U1FCD> IGNORE;IGNORE;IGNORE;<U1FCD>
+<U1FCE> IGNORE;IGNORE;IGNORE;<U1FCE>
+<U1FCF> IGNORE;IGNORE;IGNORE;<U1FCF>
+<U1FDD> IGNORE;IGNORE;IGNORE;<U1FDD>
+<U1FDE> IGNORE;IGNORE;IGNORE;<U1FDE>
+<U1FDF> IGNORE;IGNORE;IGNORE;<U1FDF>
+<U1FED> IGNORE;IGNORE;IGNORE;<U1FED>
+<U1FEF> IGNORE;IGNORE;IGNORE;<U1FEF>
+<U1FFE> IGNORE;IGNORE;IGNORE;<U1FFE>
+<U2002> IGNORE;IGNORE;IGNORE;<U2002>
+<U2003> IGNORE;IGNORE;IGNORE;<U2003>
+<U2004> IGNORE;IGNORE;IGNORE;<U2004>
+<U2005> IGNORE;IGNORE;IGNORE;<U2005>
+<U2006> IGNORE;IGNORE;IGNORE;<U2006>
+<U200E> IGNORE;IGNORE;IGNORE;<U200E>
+<U200F> IGNORE;IGNORE;IGNORE;<U200F>
+<U2009> IGNORE;IGNORE;IGNORE;<U2009>
+<U200A> IGNORE;IGNORE;IGNORE;<U200A>
+<U2010> IGNORE;IGNORE;IGNORE;<U2010>
+<U2013> IGNORE;IGNORE;IGNORE;<U2013>
+<U2014> IGNORE;IGNORE;IGNORE;<U2014>
+<U2015> IGNORE;IGNORE;IGNORE;<U2015>
+<U2016> IGNORE;IGNORE;IGNORE;<U2016>
+<U2017> IGNORE;IGNORE;IGNORE;<U2017>
+<U201A> IGNORE;IGNORE;IGNORE;<U201A>
+<U201B> IGNORE;IGNORE;IGNORE;<U201B>
+<U201E> IGNORE;IGNORE;IGNORE;<U201E>
+<U201F> IGNORE;IGNORE;IGNORE;<U201F>
+<U2020> IGNORE;IGNORE;IGNORE;<U2020>
+<U2021> IGNORE;IGNORE;IGNORE;<U2021>
+<U2219> IGNORE;IGNORE;IGNORE;<U2219>
+<U2025> IGNORE;IGNORE;IGNORE;<U2025>
+<U2026> IGNORE;IGNORE;IGNORE;<U2026>
+<U2030> IGNORE;IGNORE;IGNORE;<U2030>
+<U2032> IGNORE;IGNORE;IGNORE;<U2032>
+<U2033> IGNORE;IGNORE;IGNORE;<U2033>
+<U2034> IGNORE;IGNORE;IGNORE;<U2034>
+<U2035> IGNORE;IGNORE;IGNORE;<U2035>
+<U2036> IGNORE;IGNORE;IGNORE;<U2036>
+<U2037> IGNORE;IGNORE;IGNORE;<U2037>
+<U2038> IGNORE;IGNORE;IGNORE;<U2038>
+<U2039> IGNORE;IGNORE;IGNORE;<U2039>
+<U203A> IGNORE;IGNORE;IGNORE;<U203A>
+<U203B> IGNORE;IGNORE;IGNORE;<U203B>
+<U203C> IGNORE;IGNORE;IGNORE;<U203C>
+<U203E> IGNORE;IGNORE;IGNORE;<U203E>
+<U207C> IGNORE;IGNORE;IGNORE;<U207C>
+<U2080> IGNORE;IGNORE;IGNORE;<U2080>
+<U2081> IGNORE;IGNORE;IGNORE;<U2081>
+<U2082> IGNORE;IGNORE;IGNORE;<U2082>
+<U2083> IGNORE;IGNORE;IGNORE;<U2083>
+<U2084> IGNORE;IGNORE;IGNORE;<U2084>
+<U2085> IGNORE;IGNORE;IGNORE;<U2085>
+<U2086> IGNORE;IGNORE;IGNORE;<U2086>
+<U2087> IGNORE;IGNORE;IGNORE;<U2087>
+<U2088> IGNORE;IGNORE;IGNORE;<U2088>
+<U2089> IGNORE;IGNORE;IGNORE;<U2089>
+<U208A> IGNORE;IGNORE;IGNORE;<U208A>
+<U208B> IGNORE;IGNORE;IGNORE;<U208B>
+<U208C> IGNORE;IGNORE;IGNORE;<U208C>
+<U208D> IGNORE;IGNORE;IGNORE;<U208D>
+<U208E> IGNORE;IGNORE;IGNORE;<U208E>
+<U20A3> IGNORE;IGNORE;IGNORE;<U20A3>
+<U20A4> IGNORE;IGNORE;IGNORE;<U20A4>
+<U20A7> IGNORE;IGNORE;IGNORE;<U20A7>
+<U20A9> IGNORE;IGNORE;IGNORE;<U20A9>
+<U2103> IGNORE;IGNORE;IGNORE;<U2103>
+<U2105> IGNORE;IGNORE;IGNORE;<U2105>
+<U2109> IGNORE;IGNORE;IGNORE;<U2109>
+<U2116> IGNORE;IGNORE;IGNORE;<U2116>
+<U2117> IGNORE;IGNORE;IGNORE;<U2117>
+<U211E> IGNORE;IGNORE;IGNORE;<U211E>
+<U2120> IGNORE;IGNORE;IGNORE;<U2120>
+<U2122> IGNORE;IGNORE;IGNORE;<U2122>
+<U2126> IGNORE;IGNORE;IGNORE;<U2126>
+<U212B> IGNORE;IGNORE;IGNORE;<U212B>
+<U2153> IGNORE;IGNORE;IGNORE;<U2153>
+<U2154> IGNORE;IGNORE;IGNORE;<U2154>
+<U2155> IGNORE;IGNORE;IGNORE;<U2155>
+<U2156> IGNORE;IGNORE;IGNORE;<U2156>
+<U2157> IGNORE;IGNORE;IGNORE;<U2157>
+<U2158> IGNORE;IGNORE;IGNORE;<U2158>
+<U2159> IGNORE;IGNORE;IGNORE;<U2159>
+<U215A> IGNORE;IGNORE;IGNORE;<U215A>
+<U2160> IGNORE;IGNORE;IGNORE;<U2160>
+<U2161> IGNORE;IGNORE;IGNORE;<U2161>
+<U2162> IGNORE;IGNORE;IGNORE;<U2162>
+<U2163> IGNORE;IGNORE;IGNORE;<U2163>
+<U2164> IGNORE;IGNORE;IGNORE;<U2164>
+<U2165> IGNORE;IGNORE;IGNORE;<U2165>
+<U2166> IGNORE;IGNORE;IGNORE;<U2166>
+<U2167> IGNORE;IGNORE;IGNORE;<U2167>
+<U2168> IGNORE;IGNORE;IGNORE;<U2168>
+<U2169> IGNORE;IGNORE;IGNORE;<U2169>
+<U216A> IGNORE;IGNORE;IGNORE;<U216A>
+<U216B> IGNORE;IGNORE;IGNORE;<U216B>
+<U216C> IGNORE;IGNORE;IGNORE;<U216C>
+<U216D> IGNORE;IGNORE;IGNORE;<U216D>
+<U216E> IGNORE;IGNORE;IGNORE;<U216E>
+<U216F> IGNORE;IGNORE;IGNORE;<U216F>
+<U2170> IGNORE;IGNORE;IGNORE;<U2170>
+<U2171> IGNORE;IGNORE;IGNORE;<U2171>
+<U2172> IGNORE;IGNORE;IGNORE;<U2172>
+<U2173> IGNORE;IGNORE;IGNORE;<U2173>
+<U2174> IGNORE;IGNORE;IGNORE;<U2174>
+<U2175> IGNORE;IGNORE;IGNORE;<U2175>
+<U2176> IGNORE;IGNORE;IGNORE;<U2176>
+<U2177> IGNORE;IGNORE;IGNORE;<U2177>
+<U2178> IGNORE;IGNORE;IGNORE;<U2178>
+<U2179> IGNORE;IGNORE;IGNORE;<U2179>
+<U217A> IGNORE;IGNORE;IGNORE;<U217A>
+<U217B> IGNORE;IGNORE;IGNORE;<U217B>
+<U217C> IGNORE;IGNORE;IGNORE;<U217C>
+<U217D> IGNORE;IGNORE;IGNORE;<U217D>
+<U217E> IGNORE;IGNORE;IGNORE;<U217E>
+<U217F> IGNORE;IGNORE;IGNORE;<U217F>
+<U2180> IGNORE;IGNORE;IGNORE;<U2180>
+<U2181> IGNORE;IGNORE;IGNORE;<U2181>
+<U2182> IGNORE;IGNORE;IGNORE;<U2182>
+<U2191> IGNORE;IGNORE;IGNORE;<U2191>
+<U2193> IGNORE;IGNORE;IGNORE;<U2193>
+<U2194> IGNORE;IGNORE;IGNORE;<U2194>
+<U2195> IGNORE;IGNORE;IGNORE;<U2195>
+<U2196> IGNORE;IGNORE;IGNORE;<U2196>
+<U2197> IGNORE;IGNORE;IGNORE;<U2197>
+<U2198> IGNORE;IGNORE;IGNORE;<U2198>
+<U2199> IGNORE;IGNORE;IGNORE;<U2199>
+<U21A8> IGNORE;IGNORE;IGNORE;<U21A8>
+<U21C0> IGNORE;IGNORE;IGNORE;<U21C0>
+<U21D0> IGNORE;IGNORE;IGNORE;<U21D0>
+<U21D2> IGNORE;IGNORE;IGNORE;<U21D2>
+<U21D4> IGNORE;IGNORE;IGNORE;<U21D4>
+<U2200> IGNORE;IGNORE;IGNORE;<U2200>
+<U2202> IGNORE;IGNORE;IGNORE;<U2202>
+<U2203> IGNORE;IGNORE;IGNORE;<U2203>
+<U2205> IGNORE;IGNORE;IGNORE;<U2205>
+<U2206> IGNORE;IGNORE;IGNORE;<U2206>
+<U2207> IGNORE;IGNORE;IGNORE;<U2207>
+<U2208> IGNORE;IGNORE;IGNORE;<U2208>
+<U220B> IGNORE;IGNORE;IGNORE;<U220B>
+<U220F> IGNORE;IGNORE;IGNORE;<U220F>
+<U2211> IGNORE;IGNORE;IGNORE;<U2211>
+<U2212> IGNORE;IGNORE;IGNORE;<U2212>
+<U2213> IGNORE;IGNORE;IGNORE;<U2213>
+<U2214> IGNORE;IGNORE;IGNORE;<U2214>
+<U2044> IGNORE;IGNORE;IGNORE;<U2044>
+<U2217> IGNORE;IGNORE;IGNORE;<U2217>
+<U2218> IGNORE;IGNORE;IGNORE;<U2218>
+<U2022> IGNORE;IGNORE;IGNORE;<U2022>
+<U221A> IGNORE;IGNORE;IGNORE;<U221A>
+<U221D> IGNORE;IGNORE;IGNORE;<U221D>
+<U221E> IGNORE;IGNORE;IGNORE;<U221E>
+<U221F> IGNORE;IGNORE;IGNORE;<U221F>
+<U2220> IGNORE;IGNORE;IGNORE;<U2220>
+<U2225> IGNORE;IGNORE;IGNORE;<U2225>
+<U2227> IGNORE;IGNORE;IGNORE;<U2227>
+<U2228> IGNORE;IGNORE;IGNORE;<U2228>
+<U2229> IGNORE;IGNORE;IGNORE;<U2229>
+<U222A> IGNORE;IGNORE;IGNORE;<U222A>
+<U222B> IGNORE;IGNORE;IGNORE;<U222B>
+<U222C> IGNORE;IGNORE;IGNORE;<U222C>
+<U222E> IGNORE;IGNORE;IGNORE;<U222E>
+<U2234> IGNORE;IGNORE;IGNORE;<U2234>
+<U2235> IGNORE;IGNORE;IGNORE;<U2235>
+<U2236> IGNORE;IGNORE;IGNORE;<U2236>
+<U2237> IGNORE;IGNORE;IGNORE;<U2237>
+<U223C> IGNORE;IGNORE;IGNORE;<U223C>
+<U223E> IGNORE;IGNORE;IGNORE;<U223E>
+<U2243> IGNORE;IGNORE;IGNORE;<U2243>
+<U2245> IGNORE;IGNORE;IGNORE;<U2245>
+<U2248> IGNORE;IGNORE;IGNORE;<U2248>
+<U224C> IGNORE;IGNORE;IGNORE;<U224C>
+<U2253> IGNORE;IGNORE;IGNORE;<U2253>
+<U2261> IGNORE;IGNORE;IGNORE;<U2261>
+<U226A> IGNORE;IGNORE;IGNORE;<U226A>
+<U226B> IGNORE;IGNORE;IGNORE;<U226B>
+<U226E> IGNORE;IGNORE;IGNORE;<U226E>
+<U226F> IGNORE;IGNORE;IGNORE;<U226F>
+<U2282> IGNORE;IGNORE;IGNORE;<U2282>
+<U2283> IGNORE;IGNORE;IGNORE;<U2283>
+<U2286> IGNORE;IGNORE;IGNORE;<U2286>
+<U2287> IGNORE;IGNORE;IGNORE;<U2287>
+<U2299> IGNORE;IGNORE;IGNORE;<U2299>
+<U229A> IGNORE;IGNORE;IGNORE;<U229A>
+<U22A5> IGNORE;IGNORE;IGNORE;<U22A5>
+<U22C5> IGNORE;IGNORE;IGNORE;<U22C5>
+<U22EE> IGNORE;IGNORE;IGNORE;<U22EE>
+<U2302> IGNORE;IGNORE;IGNORE;<U2302>
+<U2308> IGNORE;IGNORE;IGNORE;<U2308>
+<U2309> IGNORE;IGNORE;IGNORE;<U2309>
+<U230A> IGNORE;IGNORE;IGNORE;<U230A>
+<U230B> IGNORE;IGNORE;IGNORE;<U230B>
+<U2310> IGNORE;IGNORE;IGNORE;<U2310>
+<U2312> IGNORE;IGNORE;IGNORE;<U2312>
+<U2315> IGNORE;IGNORE;IGNORE;<U2315>
+<U2320> IGNORE;IGNORE;IGNORE;<U2320>
+<U2321> IGNORE;IGNORE;IGNORE;<U2321>
+<U2423> IGNORE;IGNORE;IGNORE;<U2423>
+<U2440> IGNORE;IGNORE;IGNORE;<U2440>
+<U2441> IGNORE;IGNORE;IGNORE;<U2441>
+<U2442> IGNORE;IGNORE;IGNORE;<U2442>
+<U2443> IGNORE;IGNORE;IGNORE;<U2443>
+<U2446> IGNORE;IGNORE;IGNORE;<U2446>
+<U2447> IGNORE;IGNORE;IGNORE;<U2447>
+<U2448> IGNORE;IGNORE;IGNORE;<U2448>
+<U2449> IGNORE;IGNORE;IGNORE;<U2449>
+<U2460> IGNORE;IGNORE;IGNORE;<U2460>
+<U2461> IGNORE;IGNORE;IGNORE;<U2461>
+<U2462> IGNORE;IGNORE;IGNORE;<U2462>
+<U2463> IGNORE;IGNORE;IGNORE;<U2463>
+<U2464> IGNORE;IGNORE;IGNORE;<U2464>
+<U2465> IGNORE;IGNORE;IGNORE;<U2465>
+<U2466> IGNORE;IGNORE;IGNORE;<U2466>
+<U2467> IGNORE;IGNORE;IGNORE;<U2467>
+<U2468> IGNORE;IGNORE;IGNORE;<U2468>
+<U2469> IGNORE;IGNORE;IGNORE;<U2469>
+<U246A> IGNORE;IGNORE;IGNORE;<U246A>
+<U246B> IGNORE;IGNORE;IGNORE;<U246B>
+<U246C> IGNORE;IGNORE;IGNORE;<U246C>
+<U246D> IGNORE;IGNORE;IGNORE;<U246D>
+<U246E> IGNORE;IGNORE;IGNORE;<U246E>
+<U246F> IGNORE;IGNORE;IGNORE;<U246F>
+<U2470> IGNORE;IGNORE;IGNORE;<U2470>
+<U2471> IGNORE;IGNORE;IGNORE;<U2471>
+<U2472> IGNORE;IGNORE;IGNORE;<U2472>
+<U2473> IGNORE;IGNORE;IGNORE;<U2473>
+<U2474> IGNORE;IGNORE;IGNORE;<U2474>
+<U2475> IGNORE;IGNORE;IGNORE;<U2475>
+<U2476> IGNORE;IGNORE;IGNORE;<U2476>
+<U2477> IGNORE;IGNORE;IGNORE;<U2477>
+<U2478> IGNORE;IGNORE;IGNORE;<U2478>
+<U2479> IGNORE;IGNORE;IGNORE;<U2479>
+<U247A> IGNORE;IGNORE;IGNORE;<U247A>
+<U247B> IGNORE;IGNORE;IGNORE;<U247B>
+<U247C> IGNORE;IGNORE;IGNORE;<U247C>
+<U247D> IGNORE;IGNORE;IGNORE;<U247D>
+<U247E> IGNORE;IGNORE;IGNORE;<U247E>
+<U247F> IGNORE;IGNORE;IGNORE;<U247F>
+<U2480> IGNORE;IGNORE;IGNORE;<U2480>
+<U2481> IGNORE;IGNORE;IGNORE;<U2481>
+<U2482> IGNORE;IGNORE;IGNORE;<U2482>
+<U2483> IGNORE;IGNORE;IGNORE;<U2483>
+<U2484> IGNORE;IGNORE;IGNORE;<U2484>
+<U2485> IGNORE;IGNORE;IGNORE;<U2485>
+<U2486> IGNORE;IGNORE;IGNORE;<U2486>
+<U2487> IGNORE;IGNORE;IGNORE;<U2487>
+<U2488> IGNORE;IGNORE;IGNORE;<U2488>
+<U2489> IGNORE;IGNORE;IGNORE;<U2489>
+<U248A> IGNORE;IGNORE;IGNORE;<U248A>
+<U248B> IGNORE;IGNORE;IGNORE;<U248B>
+<U248C> IGNORE;IGNORE;IGNORE;<U248C>
+<U248D> IGNORE;IGNORE;IGNORE;<U248D>
+<U248E> IGNORE;IGNORE;IGNORE;<U248E>
+<U248F> IGNORE;IGNORE;IGNORE;<U248F>
+<U2490> IGNORE;IGNORE;IGNORE;<U2490>
+<U2491> IGNORE;IGNORE;IGNORE;<U2491>
+<U2492> IGNORE;IGNORE;IGNORE;<U2492>
+<U2493> IGNORE;IGNORE;IGNORE;<U2493>
+<U2494> IGNORE;IGNORE;IGNORE;<U2494>
+<U2495> IGNORE;IGNORE;IGNORE;<U2495>
+<U2496> IGNORE;IGNORE;IGNORE;<U2496>
+<U2497> IGNORE;IGNORE;IGNORE;<U2497>
+<U2498> IGNORE;IGNORE;IGNORE;<U2498>
+<U2499> IGNORE;IGNORE;IGNORE;<U2499>
+<U249A> IGNORE;IGNORE;IGNORE;<U249A>
+<U249B> IGNORE;IGNORE;IGNORE;<U249B>
+<U24EA> IGNORE;IGNORE;IGNORE;<U24EA>
+<U2500> IGNORE;IGNORE;IGNORE;<U2500>
+<U2550> IGNORE;IGNORE;IGNORE;<U2550>
+<U2502> IGNORE;IGNORE;IGNORE;<U2502>
+<U2551> IGNORE;IGNORE;IGNORE;<U2551>
+<U2504> IGNORE;IGNORE;IGNORE;<U2504>
+<U2505> IGNORE;IGNORE;IGNORE;<U2505>
+<U2506> IGNORE;IGNORE;IGNORE;<U2506>
+<U2507> IGNORE;IGNORE;IGNORE;<U2507>
+<U2508> IGNORE;IGNORE;IGNORE;<U2508>
+<U2509> IGNORE;IGNORE;IGNORE;<U2509>
+<U250A> IGNORE;IGNORE;IGNORE;<U250A>
+<U250B> IGNORE;IGNORE;IGNORE;<U250B>
+<U250C> IGNORE;IGNORE;IGNORE;<U250C>
+<U2552> IGNORE;IGNORE;IGNORE;<U2552>
+<U2553> IGNORE;IGNORE;IGNORE;<U2553>
+<U2554> IGNORE;IGNORE;IGNORE;<U2554>
+<U2510> IGNORE;IGNORE;IGNORE;<U2510>
+<U2555> IGNORE;IGNORE;IGNORE;<U2555>
+<U2556> IGNORE;IGNORE;IGNORE;<U2556>
+<U2557> IGNORE;IGNORE;IGNORE;<U2557>
+<U2514> IGNORE;IGNORE;IGNORE;<U2514>
+<U2558> IGNORE;IGNORE;IGNORE;<U2558>
+<U2559> IGNORE;IGNORE;IGNORE;<U2559>
+<U255A> IGNORE;IGNORE;IGNORE;<U255A>
+<U2518> IGNORE;IGNORE;IGNORE;<U2518>
+<U255B> IGNORE;IGNORE;IGNORE;<U255B>
+<U255C> IGNORE;IGNORE;IGNORE;<U255C>
+<U255D> IGNORE;IGNORE;IGNORE;<U255D>
+<U251C> IGNORE;IGNORE;IGNORE;<U251C>
+<U255E> IGNORE;IGNORE;IGNORE;<U255E>
+<U251E> IGNORE;IGNORE;IGNORE;<U251E>
+<U251F> IGNORE;IGNORE;IGNORE;<U251F>
+<U255F> IGNORE;IGNORE;IGNORE;<U255F>
+<U2521> IGNORE;IGNORE;IGNORE;<U2521>
+<U2522> IGNORE;IGNORE;IGNORE;<U2522>
+<U2560> IGNORE;IGNORE;IGNORE;<U2560>
+<U2524> IGNORE;IGNORE;IGNORE;<U2524>
+<U2561> IGNORE;IGNORE;IGNORE;<U2561>
+<U2526> IGNORE;IGNORE;IGNORE;<U2526>
+<U2527> IGNORE;IGNORE;IGNORE;<U2527>
+<U2562> IGNORE;IGNORE;IGNORE;<U2562>
+<U2529> IGNORE;IGNORE;IGNORE;<U2529>
+<U252A> IGNORE;IGNORE;IGNORE;<U252A>
+<U2563> IGNORE;IGNORE;IGNORE;<U2563>
+<U252C> IGNORE;IGNORE;IGNORE;<U252C>
+<U252D> IGNORE;IGNORE;IGNORE;<U252D>
+<U252E> IGNORE;IGNORE;IGNORE;<U252E>
+<U2564> IGNORE;IGNORE;IGNORE;<U2564>
+<U2565> IGNORE;IGNORE;IGNORE;<U2565>
+<U2531> IGNORE;IGNORE;IGNORE;<U2531>
+<U2532> IGNORE;IGNORE;IGNORE;<U2532>
+<U2566> IGNORE;IGNORE;IGNORE;<U2566>
+<U2534> IGNORE;IGNORE;IGNORE;<U2534>
+<U2535> IGNORE;IGNORE;IGNORE;<U2535>
+<U2536> IGNORE;IGNORE;IGNORE;<U2536>
+<U2567> IGNORE;IGNORE;IGNORE;<U2567>
+<U2568> IGNORE;IGNORE;IGNORE;<U2568>
+<U2539> IGNORE;IGNORE;IGNORE;<U2539>
+<U253A> IGNORE;IGNORE;IGNORE;<U253A>
+<U2569> IGNORE;IGNORE;IGNORE;<U2569>
+<U253C> IGNORE;IGNORE;IGNORE;<U253C>
+<U253D> IGNORE;IGNORE;IGNORE;<U253D>
+<U253E> IGNORE;IGNORE;IGNORE;<U253E>
+<U256A> IGNORE;IGNORE;IGNORE;<U256A>
+<U2540> IGNORE;IGNORE;IGNORE;<U2540>
+<U2541> IGNORE;IGNORE;IGNORE;<U2541>
+<U256B> IGNORE;IGNORE;IGNORE;<U256B>
+<U2543> IGNORE;IGNORE;IGNORE;<U2543>
+<U2544> IGNORE;IGNORE;IGNORE;<U2544>
+<U2545> IGNORE;IGNORE;IGNORE;<U2545>
+<U2546> IGNORE;IGNORE;IGNORE;<U2546>
+<U2547> IGNORE;IGNORE;IGNORE;<U2547>
+<U2548> IGNORE;IGNORE;IGNORE;<U2548>
+<U2549> IGNORE;IGNORE;IGNORE;<U2549>
+<U254A> IGNORE;IGNORE;IGNORE;<U254A>
+<U256C> IGNORE;IGNORE;IGNORE;<U256C>
+<U2571> IGNORE;IGNORE;IGNORE;<U2571>
+<U2572> IGNORE;IGNORE;IGNORE;<U2572>
+<U2580> IGNORE;IGNORE;IGNORE;<U2580>
+<U2584> IGNORE;IGNORE;IGNORE;<U2584>
+<U2588> IGNORE;IGNORE;IGNORE;<U2588>
+<U258C> IGNORE;IGNORE;IGNORE;<U258C>
+<U2590> IGNORE;IGNORE;IGNORE;<U2590>
+<U2591> IGNORE;IGNORE;IGNORE;<U2591>
+<U2592> IGNORE;IGNORE;IGNORE;<U2592>
+<U2593> IGNORE;IGNORE;IGNORE;<U2593>
+<U25A0> IGNORE;IGNORE;IGNORE;<U25A0>
+<U25A1> IGNORE;IGNORE;IGNORE;<U25A1>
+<U25A2> IGNORE;IGNORE;IGNORE;<U25A2>
+<U25A3> IGNORE;IGNORE;IGNORE;<U25A3>
+<U25A4> IGNORE;IGNORE;IGNORE;<U25A4>
+<U25A5> IGNORE;IGNORE;IGNORE;<U25A5>
+<U25A6> IGNORE;IGNORE;IGNORE;<U25A6>
+<U25A7> IGNORE;IGNORE;IGNORE;<U25A7>
+<U25A8> IGNORE;IGNORE;IGNORE;<U25A8>
+<U25A9> IGNORE;IGNORE;IGNORE;<U25A9>
+<U25AA> IGNORE;IGNORE;IGNORE;<U25AA>
+<U25AC> IGNORE;IGNORE;IGNORE;<U25AC>
+<U25AD> IGNORE;IGNORE;IGNORE;<U25AD>
+<U25B2> IGNORE;IGNORE;IGNORE;<U25B2>
+<U25B3> IGNORE;IGNORE;IGNORE;<U25B3>
+<U25B7> IGNORE;IGNORE;IGNORE;<U25B7>
+<U25BA> IGNORE;IGNORE;IGNORE;<U25BA>
+<U25BC> IGNORE;IGNORE;IGNORE;<U25BC>
+<U25BD> IGNORE;IGNORE;IGNORE;<U25BD>
+<U25C1> IGNORE;IGNORE;IGNORE;<U25C1>
+<U25C4> IGNORE;IGNORE;IGNORE;<U25C4>
+<U25C6> IGNORE;IGNORE;IGNORE;<U25C6>
+<U25C7> IGNORE;IGNORE;IGNORE;<U25C7>
+<U25CA> IGNORE;IGNORE;IGNORE;<U25CA>
+<U25CB> IGNORE;IGNORE;IGNORE;<U25CB>
+<U25CE> IGNORE;IGNORE;IGNORE;<U25CE>
+<U25CF> IGNORE;IGNORE;IGNORE;<U25CF>
+<U25D0> IGNORE;IGNORE;IGNORE;<U25D0>
+<U25D1> IGNORE;IGNORE;IGNORE;<U25D1>
+<U25D8> IGNORE;IGNORE;IGNORE;<U25D8>
+<U25D9> IGNORE;IGNORE;IGNORE;<U25D9>
+<U25E2> IGNORE;IGNORE;IGNORE;<U25E2>
+<U25E3> IGNORE;IGNORE;IGNORE;<U25E3>
+<U25EF> IGNORE;IGNORE;IGNORE;<U25EF>
+<U2605> IGNORE;IGNORE;IGNORE;<U2605>
+<U2606> IGNORE;IGNORE;IGNORE;<U2606>
+<U260E> IGNORE;IGNORE;IGNORE;<U260E>
+<U260F> IGNORE;IGNORE;IGNORE;<U260F>
+<U261C> IGNORE;IGNORE;IGNORE;<U261C>
+<U261E> IGNORE;IGNORE;IGNORE;<U261E>
+<U263A> IGNORE;IGNORE;IGNORE;<U263A>
+<U263B> IGNORE;IGNORE;IGNORE;<U263B>
+<U263C> IGNORE;IGNORE;IGNORE;<U263C>
+<U2640> IGNORE;IGNORE;IGNORE;<U2640>
+<U2642> IGNORE;IGNORE;IGNORE;<U2642>
+<U2660> IGNORE;IGNORE;IGNORE;<U2660>
+<U2661> IGNORE;IGNORE;IGNORE;<U2661>
+<U2662> IGNORE;IGNORE;IGNORE;<U2662>
+<U2663> IGNORE;IGNORE;IGNORE;<U2663>
+<U2664> IGNORE;IGNORE;IGNORE;<U2664>
+<U2665> IGNORE;IGNORE;IGNORE;<U2665>
+<U2666> IGNORE;IGNORE;IGNORE;<U2666>
+<U2667> IGNORE;IGNORE;IGNORE;<U2667>
+<U2669> IGNORE;IGNORE;IGNORE;<U2669>
+<U266A> IGNORE;IGNORE;IGNORE;<U266A>
+<U266B> IGNORE;IGNORE;IGNORE;<U266B>
+<U266C> IGNORE;IGNORE;IGNORE;<U266C>
+<U266D> IGNORE;IGNORE;IGNORE;<U266D>
+<U266E> IGNORE;IGNORE;IGNORE;<U266E>
+<U266F> IGNORE;IGNORE;IGNORE;<U266F>
+<U2713> IGNORE;IGNORE;IGNORE;<U2713>
+<U2717> IGNORE;IGNORE;IGNORE;<U2717>
+<U2720> IGNORE;IGNORE;IGNORE;<U2720>
+<U3000> IGNORE;IGNORE;IGNORE;<U3000>
+<U3001> IGNORE;IGNORE;IGNORE;<U3001>
+<U3002> IGNORE;IGNORE;IGNORE;<U3002>
+<U3003> IGNORE;IGNORE;IGNORE;<U3003>
+<U3004> IGNORE;IGNORE;IGNORE;<U3004>
+<U3005> IGNORE;IGNORE;IGNORE;<U3005>
+<U3006> IGNORE;IGNORE;IGNORE;<U3006>
+<U3007> IGNORE;IGNORE;IGNORE;<U3007>
+<U300A> IGNORE;IGNORE;IGNORE;<U300A>
+<U300B> IGNORE;IGNORE;IGNORE;<U300B>
+<U300C> IGNORE;IGNORE;IGNORE;<U300C>
+<U300D> IGNORE;IGNORE;IGNORE;<U300D>
+<U300E> IGNORE;IGNORE;IGNORE;<U300E>
+<U300F> IGNORE;IGNORE;IGNORE;<U300F>
+<U3010> IGNORE;IGNORE;IGNORE;<U3010>
+<U3011> IGNORE;IGNORE;IGNORE;<U3011>
+<U3012> IGNORE;IGNORE;IGNORE;<U3012>
+<U3013> IGNORE;IGNORE;IGNORE;<U3013>
+<U3014> IGNORE;IGNORE;IGNORE;<U3014>
+<U3015> IGNORE;IGNORE;IGNORE;<U3015>
+<U3016> IGNORE;IGNORE;IGNORE;<U3016>
+<U3017> IGNORE;IGNORE;IGNORE;<U3017>
+<U301C> IGNORE;IGNORE;IGNORE;<U301C>
+<U3020> IGNORE;IGNORE;IGNORE;<U3020>
+<U309B> IGNORE;IGNORE;IGNORE;<U309B>
+<U309C> IGNORE;IGNORE;IGNORE;<U309C>
+<U309D> IGNORE;IGNORE;IGNORE;<U309D>
+<U309E> IGNORE;IGNORE;IGNORE;<U309E>
+<U30FB> IGNORE;IGNORE;IGNORE;<U30FB>
+<U30FC> IGNORE;IGNORE;IGNORE;<U30FC>
+<U30FD> IGNORE;IGNORE;IGNORE;<U30FD>
+<U30FE> IGNORE;IGNORE;IGNORE;<U30FE>
+<U321C> IGNORE;IGNORE;IGNORE;<U321C>
+<U3220> IGNORE;IGNORE;IGNORE;<U3220>
+<U3221> IGNORE;IGNORE;IGNORE;<U3221>
+<U3222> IGNORE;IGNORE;IGNORE;<U3222>
+<U3223> IGNORE;IGNORE;IGNORE;<U3223>
+<U3224> IGNORE;IGNORE;IGNORE;<U3224>
+<U3225> IGNORE;IGNORE;IGNORE;<U3225>
+<U3226> IGNORE;IGNORE;IGNORE;<U3226>
+<U3227> IGNORE;IGNORE;IGNORE;<U3227>
+<U3228> IGNORE;IGNORE;IGNORE;<U3228>
+<U3229> IGNORE;IGNORE;IGNORE;<U3229>
+<U327F> IGNORE;IGNORE;IGNORE;<U327F>
+<U33C2> IGNORE;IGNORE;IGNORE;<U33C2>
+<U33D8> IGNORE;IGNORE;IGNORE;<U33D8>
+<U0000> IGNORE;IGNORE;IGNORE;<U0000>
+<U0001> IGNORE;IGNORE;IGNORE;<U0001>
+<U0002> IGNORE;IGNORE;IGNORE;<U0002>
+<U0003> IGNORE;IGNORE;IGNORE;<U0003>
+<U0004> IGNORE;IGNORE;IGNORE;<U0004>
+<U0005> IGNORE;IGNORE;IGNORE;<U0005>
+<U0006> IGNORE;IGNORE;IGNORE;<U0006>
+<U0007> IGNORE;IGNORE;IGNORE;<U0007>
+<U0008> IGNORE;IGNORE;IGNORE;<U0008>
+<U000E> IGNORE;IGNORE;IGNORE;<U000E>
+<U000F> IGNORE;IGNORE;IGNORE;<U000F>
+<U0010> IGNORE;IGNORE;IGNORE;<U0010>
+<U0011> IGNORE;IGNORE;IGNORE;<U0011>
+<U0012> IGNORE;IGNORE;IGNORE;<U0012>
+<U0013> IGNORE;IGNORE;IGNORE;<U0013>
+<U0014> IGNORE;IGNORE;IGNORE;<U0014>
+<U0015> IGNORE;IGNORE;IGNORE;<U0015>
+<U0016> IGNORE;IGNORE;IGNORE;<U0016>
+<U0017> IGNORE;IGNORE;IGNORE;<U0017>
+<U0018> IGNORE;IGNORE;IGNORE;<U0018>
+<U0019> IGNORE;IGNORE;IGNORE;<U0019>
+<U001A> IGNORE;IGNORE;IGNORE;<U001A>
+<U001B> IGNORE;IGNORE;IGNORE;<U001B>
+<U001C> IGNORE;IGNORE;IGNORE;<U001C>
+<U001D> IGNORE;IGNORE;IGNORE;<U001D>
+<U001E> IGNORE;IGNORE;IGNORE;<U001E>
+<U001F> IGNORE;IGNORE;IGNORE;<U001F>
+<U007F> IGNORE;IGNORE;IGNORE;<U007F>
+<U0080> IGNORE;IGNORE;IGNORE;<U0080>
+<U0081> IGNORE;IGNORE;IGNORE;<U0081>
+<U0082> IGNORE;IGNORE;IGNORE;<U0082>
+<U0083> IGNORE;IGNORE;IGNORE;<U0083>
+<U0084> IGNORE;IGNORE;IGNORE;<U0084>
+<U0085> IGNORE;IGNORE;IGNORE;<U0085>
+<U0086> IGNORE;IGNORE;IGNORE;<U0086>
+<U0087> IGNORE;IGNORE;IGNORE;<U0087>
+<U0088> IGNORE;IGNORE;IGNORE;<U0088>
+<U0089> IGNORE;IGNORE;IGNORE;<U0089>
+<U008A> IGNORE;IGNORE;IGNORE;<U008A>
+<U008B> IGNORE;IGNORE;IGNORE;<U008B>
+<U008C> IGNORE;IGNORE;IGNORE;<U008C>
+<U008D> IGNORE;IGNORE;IGNORE;<U008D>
+<U008E> IGNORE;IGNORE;IGNORE;<U008E>
+<U008F> IGNORE;IGNORE;IGNORE;<U008F>
+<U0090> IGNORE;IGNORE;IGNORE;<U0090>
+<U0091> IGNORE;IGNORE;IGNORE;<U0091>
+<U0092> IGNORE;IGNORE;IGNORE;<U0092>
+<U0093> IGNORE;IGNORE;IGNORE;<U0093>
+<U0094> IGNORE;IGNORE;IGNORE;<U0094>
+<U0095> IGNORE;IGNORE;IGNORE;<U0095>
+<U0096> IGNORE;IGNORE;IGNORE;<U0096>
+<U0097> IGNORE;IGNORE;IGNORE;<U0097>
+<U0098> IGNORE;IGNORE;IGNORE;<U0098>
+<U0099> IGNORE;IGNORE;IGNORE;<U0099>
+<U009A> IGNORE;IGNORE;IGNORE;<U009A>
+<U009B> IGNORE;IGNORE;IGNORE;<U009B>
+<U009C> IGNORE;IGNORE;IGNORE;<U009C>
+<U009D> IGNORE;IGNORE;IGNORE;<U009D>
+<U009E> IGNORE;IGNORE;IGNORE;<U009E>
+<U009F> IGNORE;IGNORE;IGNORE;<U009F>
+<UE000> IGNORE;IGNORE;IGNORE;<UE000>
+<UE001> IGNORE;IGNORE;IGNORE;<UE001>
+<UE002> IGNORE;IGNORE;IGNORE;<UE002>
+<U0301> IGNORE;IGNORE;IGNORE;<U0301>
+<UE004> IGNORE;IGNORE;IGNORE;<UE004>
+<UE005> IGNORE;IGNORE;IGNORE;<UE005>
+<UE006> IGNORE;IGNORE;IGNORE;<UE006>
+<UE007> IGNORE;IGNORE;IGNORE;<UE007>
+<UE008> IGNORE;IGNORE;IGNORE;<UE008>
+<UE009> IGNORE;IGNORE;IGNORE;<UE009>
+<UE00A> IGNORE;IGNORE;IGNORE;<UE00A>
+<UE00B> IGNORE;IGNORE;IGNORE;<UE00B>
+<UE00C> IGNORE;IGNORE;IGNORE;<UE00C>
+<UE00D> IGNORE;IGNORE;IGNORE;<UE00D>
+<UE00E> IGNORE;IGNORE;IGNORE;<UE00E>
+<UE00F> IGNORE;IGNORE;IGNORE;<UE00F>
+<"=> IGNORE;IGNORE;IGNORE;<"=>
+<UE011> IGNORE;IGNORE;IGNORE;<UE011>
+<UE012> IGNORE;IGNORE;IGNORE;<UE012>
+<UE013> IGNORE;IGNORE;IGNORE;<UE013>
+<UE014> IGNORE;IGNORE;IGNORE;<UE014>
+<UE015> IGNORE;IGNORE;IGNORE;<UE015>
+<UE017> IGNORE;IGNORE;IGNORE;<UE017>
+<UE018> IGNORE;IGNORE;IGNORE;<UE018>
+<UE019> IGNORE;IGNORE;IGNORE;<UE019>
+UNDEFINED IGNORE;IGNORE;IGNORE
+
+<U0030> <U0030>;<U0030>;IGNORE;IGNORE
+<U2070> <U0030>;<U2070>;IGNORE;IGNORE
+<U215B> <U0030>;<U215B>;IGNORE;IGNORE
+<U00BC> <U0030>;<U00BC>;IGNORE;IGNORE
+<U215C> <U0030>;<U215C>;IGNORE;IGNORE
+<U00BD> <U0030>;<U00BD>;IGNORE;IGNORE
+<U215D> <U0030>;<U215D>;IGNORE;IGNORE
+<U00BE> <U0030>;<U00BE>;IGNORE;IGNORE
+<U215E> <U0030>;<U215E>;IGNORE;IGNORE
+<U0031> <U0031>;<U0031>;IGNORE;IGNORE
+<U0032> <U0032>;<U0032>;IGNORE;IGNORE
+<U0033> <U0033>;<U0033>;IGNORE;IGNORE
+<U0034> <U0034>;<U0034>;IGNORE;IGNORE
+<U0035> <U0035>;<U0035>;IGNORE;IGNORE
+<U0036> <U0036>;<U0036>;IGNORE;IGNORE
+<U0037> <U0037>;<U0037>;IGNORE;IGNORE
+<U0038> <U0038>;<U0038>;IGNORE;IGNORE
+<U0039> <U0039>;<U0039>;IGNORE;IGNORE
+<U00B9> <U0031>;<U00B9>;IGNORE;IGNORE
+<U00B2> <U0032>;<U00B2>;IGNORE;IGNORE
+<U00B3> <U0033>;<U00B3>;IGNORE;IGNORE
+<U2074> <U0034>;<U2074>;IGNORE;IGNORE
+<U2075> <U0035>;<U2075>;IGNORE;IGNORE
+<U2076> <U0036>;<U2076>;IGNORE;IGNORE
+<U2077> <U0037>;<U2077>;IGNORE;IGNORE
+<U2078> <U0038>;<U2078>;IGNORE;IGNORE
+<U2079> <U0039>;<U2079>;IGNORE;IGNORE
+<U0041> <U0041>;<NONE>;<CAPITAL>;IGNORE
+<U0061> <U0041>;<NONE>;<SMALL>;IGNORE
+<U00AA> <U0041>;<NONE>;<U00AA>;IGNORE
+<U00C1> <U0041>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E1> <U0041>;<ACUTE>;<SMALL>;IGNORE
+<U00C0> <U0041>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E0> <U0041>;<GRAVE>;<SMALL>;IGNORE
+<U0200> <U0041>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0201> <U0041>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0102> <U0041>;<BREVE>;<CAPITAL>;IGNORE
+<U0103> <U0041>;<BREVE>;<SMALL>;IGNORE
+<U1EAE> <U0041>;<BREVE+ACUTE>;<CAPITAL>;IGNORE
+<U1EAF> <U0041>;<BREVE+ACUTE>;<SMALL>;IGNORE
+<U1EB0> <U0041>;<BREVE+GRAVE>;<CAPITAL>;IGNORE
+<U1EB1> <U0041>;<BREVE+GRAVE>;<SMALL>;IGNORE
+<U1EB2> <U0041>;<BREVE+HOOK>;<CAPITAL>;IGNORE
+<U1EB3> <U0041>;<BREVE+HOOK>;<SMALL>;IGNORE
+<U1EB4> <U0041>;<BREVE+TILDE>;<CAPITAL>;IGNORE
+<U1EB5> <U0041>;<BREVE+TILDE>;<SMALL>;IGNORE
+<U1EB6> <U0041>;<BREVE+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB7> <U0041>;<BREVE+DOT-BELOW>;<SMALL>;IGNORE
+<U0202> <U0041>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0203> <U0041>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00C2> <U0041>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00E2> <U0041>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EA4> <U0041>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EA5> <U0041>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EA6> <U0041>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EA7> <U0041>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EA8> <U0041>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EA9> <U0041>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EAA> <U0041>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EAB> <U0041>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EAC> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EAD> <U0041>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01CD> <U0041>;<CARON>;<CAPITAL>;IGNORE
+<U01CE> <U0041>;<CARON>;<SMALL>;IGNORE
+<U00C5> <U0041>;<RING>;<CAPITAL>;IGNORE
+<U00E5> <U0041>;<RING>;<SMALL>;IGNORE
+<U01FA> <U0041>;<RING+ACUTE>;<CAPITAL>;IGNORE
+<U01FB> <U0041>;<RING+ACUTE>;<SMALL>;IGNORE
+<U1E00> <U0041>;<RING-BELOW>;<CAPITAL>;IGNORE
+<U1E01> <U0041>;<RING-BELOW>;<SMALL>;IGNORE
+<U00C4> <U0041>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00E4> <U0041>;<DIAERESIS>;<SMALL>;IGNORE
+<U01DE> <U0041>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01DF> <U0041>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U1EA2> <U0041>;<HOOK>;<CAPITAL>;IGNORE
+<U1EA3> <U0041>;<HOOK>;<SMALL>;IGNORE
+<U00C3> <U0041>;<TILDE>;<CAPITAL>;IGNORE
+<U00E3> <U0041>;<TILDE>;<SMALL>;IGNORE
+<U1EA0> <U0041>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EA1> <U0041>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0104> <U0041>;<OGONEK>;<CAPITAL>;IGNORE
+<U0105> <U0041>;<OGONEK>;<SMALL>;IGNORE
+<U0100> <U0041>;<MACRON>;<CAPITAL>;IGNORE
+<U0101> <U0041>;<MACRON>;<SMALL>;IGNORE
+<U01E0> <U0041>;<MACRON+DOT>;<CAPITAL>;IGNORE
+<U01E1> <U0041>;<MACRON+DOT>;<SMALL>;IGNORE
+<a8>
+<U00C6> "<U0041><U0045>";"<U00C6><U00C6>";"<CAPITAL><CAPITAL>";IGNORE
+<U00E6> "<U0041><U0045>";"<U00C6><U00C6>";"<SMALL><SMALL>";IGNORE
+<U01FC> "<U0041><U0045>";"<U01FC><U01FC>";"<CAPITAL><CAPITAL>";IGNORE
+<U01FD> "<U0041><U0045>";"<U01FC><U01FC>";"<SMALL><SMALL>";IGNORE
+<U01E2> "<U0041><U0045>";"<U01E2><U01E2>";"<CAPITAL><CAPITAL>";IGNORE
+<U01E3> "<U0041><U0045>";"<U01E2><U01E2>";"<SMALL><SMALL>";IGNORE
+<U0042> <U0042>;<NONE>;<CAPITAL>;IGNORE
+<U0062> <U0042>;<NONE>;<SMALL>;IGNORE
+<U1E02> <U0042>;<DOT>;<CAPITAL>;IGNORE
+<U1E03> <U0042>;<DOT>;<SMALL>;IGNORE
+<U1E04> <U0042>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E05> <U0042>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E06> <U0042>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E07> <U0042>;<LINE-BELOW>;<SMALL>;IGNORE
+<b8>
+<U0043> <U0043>;<NONE>;<CAPITAL>;IGNORE
+<U0063> <U0043>;<NONE>;<SMALL>;IGNORE
+<U0106> <U0043>;<ACUTE>;<CAPITAL>;IGNORE
+<U0107> <U0043>;<ACUTE>;<SMALL>;IGNORE
+<U0108> <U0043>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0109> <U0043>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U010C> <U0043>;<CARON>;<CAPITAL>;IGNORE
+<U010D> <U0043>;<CARON>;<SMALL>;IGNORE
+<U0187> <U0043>;<HOOK>;<CAPITAL>;IGNORE
+<U0188> <U0043>;<HOOK>;<SMALL>;IGNORE
+<U010A> <U0043>;<DOT>;<CAPITAL>;IGNORE
+<U010B> <U0043>;<DOT>;<SMALL>;IGNORE
+<U1E08> <U0043>;<CEDILLA+ACUTE>;<CAPITAL>;IGNORE
+<U1E09> <U0043>;<CEDILLA+ACUTE>;<SMALL>;IGNORE
+<c8>
+<U00C7> <U00C7>;<NONE>;<CAPITAL>;IGNORE
+<U00E7> <U00C7>;<NONE>;<SMALL>;IGNORE
+<U0044> <U0044>;<NONE>;<CAPITAL>;IGNORE
+<U0064> <U0044>;<NONE>;<SMALL>;IGNORE
+<U010E> <U0044>;<CARON>;<CAPITAL>;IGNORE
+<U010F> <U0044>;<CARON>;<SMALL>;IGNORE
+<U1E0A> <U0044>;<DOT>;<CAPITAL>;IGNORE
+<U1E0B> <U0044>;<DOT>;<SMALL>;IGNORE
+<U1E0C> <U0044>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E0D> <U0044>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0110> <U0044>;<STROKE>;<CAPITAL>;IGNORE
+<U0111> <U0044>;<STROKE>;<SMALL>;IGNORE
+<U1E10> <U0044>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E11> <U0044>;<CEDILLA>;<SMALL>;IGNORE
+<U1E12> <U0044>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E13> <U0044>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E0E> <U0044>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E0F> <U0044>;<LINE-BELOW>;<SMALL>;IGNORE
+<d8>
+<U0045> <U0045>;<NONE>;<CAPITAL>;IGNORE
+<U0065> <U0045>;<NONE>;<SMALL>;IGNORE
+<U00C9> <U0045>;<ACUTE>;<CAPITAL>;IGNORE
+<U00E9> <U0045>;<ACUTE>;<SMALL>;IGNORE
+<U00C8> <U0045>;<GRAVE>;<CAPITAL>;IGNORE
+<U00E8> <U0045>;<GRAVE>;<SMALL>;IGNORE
+<U0204> <U0045>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0205> <U0045>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0114> <U0045>;<BREVE>;<CAPITAL>;IGNORE
+<U0115> <U0045>;<BREVE>;<SMALL>;IGNORE
+<U0206> <U0045>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0207> <U0045>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CA> <U0045>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EA> <U0045>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1EBE> <U0045>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1EBF> <U0045>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1EC0> <U0045>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1EC1> <U0045>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1EC2> <U0045>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1EC3> <U0045>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1EC4> <U0045>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1EC5> <U0045>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1EC6> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EC7> <U0045>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U011A> <U0045>;<CARON>;<CAPITAL>;IGNORE
+<U011B> <U0045>;<CARON>;<SMALL>;IGNORE
+<U00CB> <U0045>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EB> <U0045>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EBA> <U0045>;<HOOK>;<CAPITAL>;IGNORE
+<U1EBB> <U0045>;<HOOK>;<SMALL>;IGNORE
+<U1EBC> <U0045>;<TILDE>;<CAPITAL>;IGNORE
+<U1EBD> <U0045>;<TILDE>;<SMALL>;IGNORE
+<U1E1A> <U0045>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E1B> <U0045>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U0116> <U0045>;<DOT>;<CAPITAL>;IGNORE
+<U0117> <U0045>;<DOT>;<SMALL>;IGNORE
+<U1EB8> <U0045>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EB9> <U0045>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E1C> <U0045>;<CEDILLA+BREVE>;<CAPITAL>;IGNORE
+<U1E1D> <U0045>;<CEDILLA+BREVE>;<SMALL>;IGNORE
+<U0118> <U0045>;<OGONEK>;<CAPITAL>;IGNORE
+<U0119> <U0045>;<OGONEK>;<SMALL>;IGNORE
+<U0112> <U0045>;<MACRON>;<CAPITAL>;IGNORE
+<U0113> <U0045>;<MACRON>;<SMALL>;IGNORE
+<U1E16> <U0045>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E17> <U0045>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E14> <U0045>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E15> <U0045>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U1E18> <U0045>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E19> <U0045>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<e8>
+<U0046> <U0046>;<NONE>;<CAPITAL>;IGNORE
+<U0066> <U0046>;<NONE>;<SMALL>;IGNORE
+<U0191> <U0046>;<HOOK>;<CAPITAL>;IGNORE
+<U0192> <U0046>;<HOOK>;<SMALL>;IGNORE
+<U1E1E> <U0046>;<DOT>;<CAPITAL>;IGNORE
+<U1E1F> <U0046>;<DOT>;<SMALL>;IGNORE
+<f8>
+<UFB00> "<U0046><U0046>";"<NONE><NONE>";"<UFB00><UFB00>";IGNORE
+<UFB01> "<U0046><U0049>";"<NONE><NONE>";"<UFB01><UFB01>";IGNORE
+<UFB02> "<U0046><U004C>";"<NONE><NONE>";"<UFB02><UFB02>";IGNORE
+<UFB03> "<U0046><U0046><U0049>";"<NONE><NONE><NONE>";"<UFB03><UFB03><UFB03>";IGNORE
+<UFB04> "<U0046><U0046><U004C>";"<NONE><NONE><NONE>";"<UFB04><UFB04><UFB04>";IGNORE
+<U0047> <U0047>;<NONE>;<CAPITAL>;IGNORE
+<U0067> <U0047>;<NONE>;<SMALL>;IGNORE
+<U01F4> <U0047>;<ACUTE>;<CAPITAL>;IGNORE
+<U01F5> <U0047>;<ACUTE>;<SMALL>;IGNORE
+<U011C> <U0047>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U011D> <U0047>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01E6> <U0047>;<CARON>;<CAPITAL>;IGNORE
+<U01E7> <U0047>;<CARON>;<SMALL>;IGNORE
+<U0120> <U0047>;<DOT>;<CAPITAL>;IGNORE
+<U0121> <U0047>;<DOT>;<SMALL>;IGNORE
+<U01E4> <U0047>;<STROKE>;<CAPITAL>;IGNORE
+<U01E5> <U0047>;<STROKE>;<SMALL>;IGNORE
+<U0122> <U0047>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0123> <U0047>;<CEDILLA>;<SMALL>;IGNORE
+<U1E20> <U0047>;<MACRON>;<CAPITAL>;IGNORE
+<U1E21> <U0047>;<MACRON>;<SMALL>;IGNORE
+<g8>
+<U011E> <U011E>;<NONE>;<CAPITAL>;IGNORE
+<U011F> <U011E>;<NONE>;<SMALL>;IGNORE
+<U0048> <U0048>;<NONE>;<CAPITAL>;IGNORE
+<U0068> <U0048>;<NONE>;<SMALL>;IGNORE
+<U1E2A> <U0048>;<BREVE-BELOW>;<CAPITAL>;IGNORE
+<U1E2B> <U0048>;<BREVE-BELOW>;<SMALL>;IGNORE
+<U0124> <U0048>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0125> <U0048>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E26> <U0048>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E27> <U0048>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E22> <U0048>;<DOT>;<CAPITAL>;IGNORE
+<U1E23> <U0048>;<DOT>;<SMALL>;IGNORE
+<U1E24> <U0048>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E25> <U0048>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0126> <U0048>;<STROKE>;<CAPITAL>;IGNORE
+<U0127> <U0048>;<STROKE>;<SMALL>;IGNORE
+<U1E28> <U0048>;<CEDILLA>;<CAPITAL>;IGNORE
+<U1E29> <U0048>;<CEDILLA>;<SMALL>;IGNORE
+<h8>
+<U0049> <U0131>;<NONE>;<CAPITAL>;IGNORE
+<U0131> <U0131>;<NONE>;<SMALL>;IGNORE
+<U0130> <U0049>;<NONE>;<CAPITAL>;IGNORE
+<U0069> <U0049>;<NONE>;<SMALL>;IGNORE
+<U00CD> <U0049>;<ACUTE>;<CAPITAL>;IGNORE
+<U00ED> <U0049>;<ACUTE>;<SMALL>;IGNORE
+<U00CC> <U0049>;<GRAVE>;<CAPITAL>;IGNORE
+<U00EC> <U0049>;<GRAVE>;<SMALL>;IGNORE
+<U0208> <U0049>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0209> <U0049>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U012C> <U0049>;<BREVE>;<CAPITAL>;IGNORE
+<U012D> <U0049>;<BREVE>;<SMALL>;IGNORE
+<U020A> <U0049>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020B> <U0049>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00CE> <U0049>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00EE> <U0049>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01CF> <U0049>;<CARON>;<CAPITAL>;IGNORE
+<U01D0> <U0049>;<CARON>;<SMALL>;IGNORE
+<U00CF> <U0049>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00EF> <U0049>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E2E> <U0049>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U1E2F> <U0049>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U1EC8> <U0049>;<HOOK>;<CAPITAL>;IGNORE
+<U1EC9> <U0049>;<HOOK>;<SMALL>;IGNORE
+<U0128> <U0049>;<TILDE>;<CAPITAL>;IGNORE
+<U0129> <U0049>;<TILDE>;<SMALL>;IGNORE
+<U1E2C> <U0049>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E2D> <U0049>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U1ECA> <U0049>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECB> <U0049>;<DOT-BELOW>;<SMALL>;IGNORE
+<U012E> <U0049>;<OGONEK>;<CAPITAL>;IGNORE
+<U012F> <U0049>;<OGONEK>;<SMALL>;IGNORE
+<U012A> <U0049>;<MACRON>;<CAPITAL>;IGNORE
+<U012B> <U0049>;<MACRON>;<SMALL>;IGNORE
+<i8>
+<U0132> "<U0049><U004A>";"<U0132><U0132>";"<CAPITAL><CAPITAL>";IGNORE
+<U0133> "<U0049><U004A>";"<U0132><U0132>";"<SMALL><SMALL>";IGNORE
+<U004A> <U004A>;<NONE>;<CAPITAL>;IGNORE
+<U006A> <U004A>;<NONE>;<SMALL>;IGNORE
+<U0134> <U004A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0135> <U004A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<j8>
+<U004B> <U004B>;<NONE>;<CAPITAL>;IGNORE
+<U006B> <U004B>;<NONE>;<SMALL>;IGNORE
+<U1E30> <U004B>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E31> <U004B>;<ACUTE>;<SMALL>;IGNORE
+<U01E8> <U004B>;<CARON>;<CAPITAL>;IGNORE
+<U01E9> <U004B>;<CARON>;<SMALL>;IGNORE
+<U0198> <U004B>;<HOOK>;<CAPITAL>;IGNORE
+<U0199> <U004B>;<HOOK>;<SMALL>;IGNORE
+<U1E32> <U004B>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E33> <U004B>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0136> <U004B>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0137> <U004B>;<CEDILLA>;<SMALL>;IGNORE
+<U1E34> <U004B>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E35> <U004B>;<LINE-BELOW>;<SMALL>;IGNORE
+<k8>
+<U0138> <U004B>;<U0138>;<SMALL>;IGNORE
+<U004C> <U004C>;<NONE>;<CAPITAL>;IGNORE
+<U006C> <U004C>;<NONE>;<SMALL>;IGNORE
+<U0139> <U004C>;<ACUTE>;<CAPITAL>;IGNORE
+<U013A> <U004C>;<ACUTE>;<SMALL>;IGNORE
+<U013D> <U004C>;<CARON>;<CAPITAL>;IGNORE
+<U013E> <U004C>;<CARON>;<SMALL>;IGNORE
+<U013F> <U004C>;<DOT>;<CAPITAL>;IGNORE
+<U0140> <U004C>;<DOT>;<SMALL>;IGNORE
+<U1E36> <U004C>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E37> <U004C>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0141> <U004C>;<STROKE>;<CAPITAL>;IGNORE
+<U0142> <U004C>;<STROKE>;<SMALL>;IGNORE
+<U013B> <U004C>;<CEDILLA>;<CAPITAL>;IGNORE
+<U013C> <U004C>;<CEDILLA>;<SMALL>;IGNORE
+<U1E38> <U004C>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E39> <U004C>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E3C> <U004C>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E3D> <U004C>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E3A> <U004C>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E3B> <U004C>;<LINE-BELOW>;<SMALL>;IGNORE
+<l8>
+<U004D> <U004D>;<NONE>;<CAPITAL>;IGNORE
+<U006D> <U004D>;<NONE>;<SMALL>;IGNORE
+<U1E3E> <U004D>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E3F> <U004D>;<ACUTE>;<SMALL>;IGNORE
+<U1E40> <U004D>;<DOT>;<CAPITAL>;IGNORE
+<U1E41> <U004D>;<DOT>;<SMALL>;IGNORE
+<U1E42> <U004D>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E43> <U004D>;<DOT-BELOW>;<SMALL>;IGNORE
+<m8>
+<U004E> <U004E>;<NONE>;<CAPITAL>;IGNORE
+<U006E> <U004E>;<NONE>;<SMALL>;IGNORE
+<U0143> <U004E>;<ACUTE>;<CAPITAL>;IGNORE
+<U0144> <U004E>;<ACUTE>;<SMALL>;IGNORE
+<U0147> <U004E>;<CARON>;<CAPITAL>;IGNORE
+<U0148> <U004E>;<CARON>;<SMALL>;IGNORE
+<U00D1> <U004E>;<TILDE>;<CAPITAL>;IGNORE
+<U00F1> <U004E>;<TILDE>;<SMALL>;IGNORE
+<U1E44> <U004E>;<DOT>;<CAPITAL>;IGNORE
+<U1E45> <U004E>;<DOT>;<SMALL>;IGNORE
+<U1E46> <U004E>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E47> <U004E>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0145> <U004E>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0146> <U004E>;<CEDILLA>;<SMALL>;IGNORE
+<U1E4A> <U004E>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E4B> <U004E>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E48> <U004E>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E49> <U004E>;<LINE-BELOW>;<SMALL>;IGNORE
+<U0149> <U004E>;<PRECEDED-BY-APOSTROPHE>;<SMALL>;IGNORE
+<n8>
+<U014A> "<U004E><U0047>";"<U014A><U014A>";"<CAPITAL><CAPITAL>";IGNORE
+<U014B> "<U004E><U0047>";"<U014A><U014A>";"<SMALL><SMALL>";IGNORE
+<U004F> <U004F>;<NONE>;<CAPITAL>;IGNORE
+<U006F> <U004F>;<NONE>;<SMALL>;IGNORE
+<U00BA> <U004F>;<NONE>;<U00BA>;IGNORE
+<U00D3> <U004F>;<ACUTE>;<CAPITAL>;IGNORE
+<U00F3> <U004F>;<ACUTE>;<SMALL>;IGNORE
+<U00D2> <U004F>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F2> <U004F>;<GRAVE>;<SMALL>;IGNORE
+<U020C> <U004F>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U020D> <U004F>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U014E> <U004F>;<BREVE>;<CAPITAL>;IGNORE
+<U014F> <U004F>;<BREVE>;<SMALL>;IGNORE
+<U020E> <U004F>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U020F> <U004F>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00D4> <U004F>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00F4> <U004F>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1ED0> <U004F>;<CIRCUMFLEX+ACUTE>;<CAPITAL>;IGNORE
+<U1ED1> <U004F>;<CIRCUMFLEX+ACUTE>;<SMALL>;IGNORE
+<U1ED2> <U004F>;<CIRCUMFLEX+GRAVE>;<CAPITAL>;IGNORE
+<U1ED3> <U004F>;<CIRCUMFLEX+GRAVE>;<SMALL>;IGNORE
+<U1ED4> <U004F>;<CIRCUMFLEX+HOOK>;<CAPITAL>;IGNORE
+<U1ED5> <U004F>;<CIRCUMFLEX+HOOK>;<SMALL>;IGNORE
+<U1ED6> <U004F>;<CIRCUMFLEX+TILDE>;<CAPITAL>;IGNORE
+<U1ED7> <U004F>;<CIRCUMFLEX+TILDE>;<SMALL>;IGNORE
+<U1ED8> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ED9> <U004F>;<CIRCUMFLEX+DOT-BELOW>;<SMALL>;IGNORE
+<U01D1> <U004F>;<CARON>;<CAPITAL>;IGNORE
+<U01D2> <U004F>;<CARON>;<SMALL>;IGNORE
+<U0150> <U004F>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0151> <U004F>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1ECE> <U004F>;<HOOK>;<CAPITAL>;IGNORE
+<U1ECF> <U004F>;<HOOK>;<SMALL>;IGNORE
+<U00D5> <U004F>;<TILDE>;<CAPITAL>;IGNORE
+<U00F5> <U004F>;<TILDE>;<SMALL>;IGNORE
+<U1E4C> <U004F>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E4D> <U004F>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E4E> <U004F>;<TILDE+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E4F> <U004F>;<TILDE+DIAERESIS>;<SMALL>;IGNORE
+<U1ECC> <U004F>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1ECD> <U004F>;<DOT-BELOW>;<SMALL>;IGNORE
+<U00D8> <U004F>;<STROKE>;<CAPITAL>;IGNORE
+<U00F8> <U004F>;<STROKE>;<SMALL>;IGNORE
+<U01FE> <U004F>;<STROKE+ACUTE>;<CAPITAL>;IGNORE
+<U01FF> <U004F>;<STROKE+ACUTE>;<SMALL>;IGNORE
+<U01EA> <U004F>;<OGONEK>;<CAPITAL>;IGNORE
+<U01EB> <U004F>;<OGONEK>;<SMALL>;IGNORE
+<U01EC> <U004F>;<OGONEK+MACRON>;<CAPITAL>;IGNORE
+<U01ED> <U004F>;<OGONEK+MACRON>;<SMALL>;IGNORE
+<U014C> <U004F>;<MACRON>;<CAPITAL>;IGNORE
+<U014D> <U004F>;<MACRON>;<SMALL>;IGNORE
+<U1E52> <U004F>;<MACRON+ACUTE>;<CAPITAL>;IGNORE
+<U1E53> <U004F>;<MACRON+ACUTE>;<SMALL>;IGNORE
+<U1E50> <U004F>;<MACRON+GRAVE>;<CAPITAL>;IGNORE
+<U1E51> <U004F>;<MACRON+GRAVE>;<SMALL>;IGNORE
+<U01A0> <U004F>;<HORN>;<CAPITAL>;IGNORE
+<U01A1> <U004F>;<HORN>;<SMALL>;IGNORE
+<U1EDA> <U004F>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EDB> <U004F>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EDC> <U004F>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EDD> <U004F>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EDE> <U004F>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EDF> <U004F>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EE0> <U004F>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EE1> <U004F>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EE2> <U004F>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE3> <U004F>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<o8>
+<U00D6> <U00D6>;<NONE>;<CAPITAL>;IGNORE
+<U00F6> <U00D6>;<NONE>;<SMALL>;IGNORE
+<U0152> "<U004F><U0045>";"<U0152><U0152>";"<CAPITAL><CAPITAL>";IGNORE
+<U0153> "<U004F><U0045>";"<U0152><U0152>";"<SMALL><SMALL>";IGNORE
+<U0050> <U0050>;<NONE>;<CAPITAL>;IGNORE
+<U0070> <U0050>;<NONE>;<SMALL>;IGNORE
+<U1E54> <U0050>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E55> <U0050>;<ACUTE>;<SMALL>;IGNORE
+<U1E56> <U0050>;<DOT>;<CAPITAL>;IGNORE
+<U1E57> <U0050>;<DOT>;<SMALL>;IGNORE
+<p8>
+<U0051> <U0051>;<NONE>;<CAPITAL>;IGNORE
+<U0071> <U0051>;<NONE>;<SMALL>;IGNORE
+<q8>
+<U0052> <U0052>;<NONE>;<CAPITAL>;IGNORE
+<U0072> <U0052>;<NONE>;<SMALL>;IGNORE
+<U0154> <U0052>;<ACUTE>;<CAPITAL>;IGNORE
+<U0155> <U0052>;<ACUTE>;<SMALL>;IGNORE
+<U0210> <U0052>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0211> <U0052>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U0212> <U0052>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0213> <U0052>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U0158> <U0052>;<CARON>;<CAPITAL>;IGNORE
+<U0159> <U0052>;<CARON>;<SMALL>;IGNORE
+<U1E58> <U0052>;<DOT>;<CAPITAL>;IGNORE
+<U1E59> <U0052>;<DOT>;<SMALL>;IGNORE
+<U1E5A> <U0052>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5B> <U0052>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0156> <U0052>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0157> <U0052>;<CEDILLA>;<SMALL>;IGNORE
+<U1E5C> <U0052>;<MACRON+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E5D> <U0052>;<MACRON+DOT-BELOW>;<SMALL>;IGNORE
+<U1E5E> <U0052>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E5F> <U0052>;<LINE-BELOW>;<SMALL>;IGNORE
+<r8>
+<U0053> <U0053>;<NONE>;<CAPITAL>;IGNORE
+<U0073> <U0053>;<NONE>;<SMALL>;IGNORE
+<UFB06> "<U0053><U0054>";"<NONE><NONE>";"<UFB06><UFB06>";IGNORE
+<U015A> <U0053>;<ACUTE>;<CAPITAL>;IGNORE
+<U015B> <U0053>;<ACUTE>;<SMALL>;IGNORE
+<U1E64> <U0053>;<ACUTE+DOT>;<CAPITAL>;IGNORE
+<U1E65> <U0053>;<ACUTE+DOT>;<SMALL>;IGNORE
+<U015C> <U0053>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U015D> <U0053>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0160> <U0053>;<CARON>;<CAPITAL>;IGNORE
+<U0161> <U0053>;<CARON>;<SMALL>;IGNORE
+<U1E66> <U0053>;<CARON+DOT>;<CAPITAL>;IGNORE
+<U1E67> <U0053>;<CARON+DOT>;<SMALL>;IGNORE
+<U1E60> <U0053>;<DOT>;<CAPITAL>;IGNORE
+<U1E61> <U0053>;<DOT>;<SMALL>;IGNORE
+<U1E62> <U0053>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E63> <U0053>;<DOT-BELOW>;<SMALL>;IGNORE
+<U1E68> <U0053>;<DOT+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E69> <U0053>;<DOT+DOT-BELOW>;<SMALL>;IGNORE
+<s8>
+<U015E> <U015E>;<NONE>;<CAPITAL>;IGNORE
+<U015F> <U015E>;<NONE>;<SMALL>;IGNORE
+<U017F> <U0053>;<U017F>;<SMALL>;IGNORE
+<U00DF> "<U0053><U0053>";"<NONE><NONE>";"<SMALL><U00DF>";IGNORE
+<UFB05> "<U0053><U0054>";"<NONE><NONE>";"<UFB05><UFB05>";IGNORE
+<U0054> <U0054>;<NONE>;<CAPITAL>;IGNORE
+<U0074> <U0054>;<NONE>;<SMALL>;IGNORE
+<U0164> <U0054>;<CARON>;<CAPITAL>;IGNORE
+<U0165> <U0054>;<CARON>;<SMALL>;IGNORE
+<U1E6A> <U0054>;<DOT>;<CAPITAL>;IGNORE
+<U1E6B> <U0054>;<DOT>;<SMALL>;IGNORE
+<U1E6C> <U0054>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E6D> <U0054>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0166> <U0054>;<STROKE>;<CAPITAL>;IGNORE
+<U0167> <U0054>;<STROKE>;<SMALL>;IGNORE
+<U0162> <U0054>;<CEDILLA>;<CAPITAL>;IGNORE
+<U0163> <U0054>;<CEDILLA>;<SMALL>;IGNORE
+<U1E70> <U0054>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E71> <U0054>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E6E> <U0054>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E6F> <U0054>;<LINE-BELOW>;<SMALL>;IGNORE
+<t8>
+<U00DE> "<U0054><U0048>";"<U00DE><U00DE>";"<CAPITAL><CAPITAL>";IGNORE
+<U00FE> "<U0054><U0048>";"<U00DE><U00DE>";"<SMALL><SMALL>";IGNORE
+<U0055> <U0055>;<NONE>;<CAPITAL>;IGNORE
+<U0075> <U0055>;<NONE>;<SMALL>;IGNORE
+<U00DA> <U0055>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FA> <U0055>;<ACUTE>;<SMALL>;IGNORE
+<U00D9> <U0055>;<GRAVE>;<CAPITAL>;IGNORE
+<U00F9> <U0055>;<GRAVE>;<SMALL>;IGNORE
+<U0214> <U0055>;<DOUBLE-GRAVE>;<CAPITAL>;IGNORE
+<U0215> <U0055>;<DOUBLE-GRAVE>;<SMALL>;IGNORE
+<U016C> <U0055>;<BREVE>;<CAPITAL>;IGNORE
+<U016D> <U0055>;<BREVE>;<SMALL>;IGNORE
+<U0216> <U0055>;<INVERTED-BREVE>;<CAPITAL>;IGNORE
+<U0217> <U0055>;<INVERTED-BREVE>;<SMALL>;IGNORE
+<U00DB> <U0055>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U00FB> <U0055>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U01D3> <U0055>;<CARON>;<CAPITAL>;IGNORE
+<U01D4> <U0055>;<CARON>;<SMALL>;IGNORE
+<U016E> <U0055>;<RING>;<CAPITAL>;IGNORE
+<U016F> <U0055>;<RING>;<SMALL>;IGNORE
+<U01D5> <U0055>;<DIAERESIS+MACRON>;<CAPITAL>;IGNORE
+<U01D6> <U0055>;<DIAERESIS+MACRON>;<SMALL>;IGNORE
+<U01D7> <U0055>;<DIAERESIS+ACUTE>;<CAPITAL>;IGNORE
+<U01D8> <U0055>;<DIAERESIS+ACUTE>;<SMALL>;IGNORE
+<U01DB> <U0055>;<DIAERESIS+GRAVE>;<CAPITAL>;IGNORE
+<U01DC> <U0055>;<DIAERESIS+GRAVE>;<SMALL>;IGNORE
+<U01D9> <U0055>;<DIAERESIS+CARON>;<CAPITAL>;IGNORE
+<U01DA> <U0055>;<DIAERESIS+CARON>;<SMALL>;IGNORE
+<U0170> <U0055>;<DOUBLE-ACUTE>;<CAPITAL>;IGNORE
+<U0171> <U0055>;<DOUBLE-ACUTE>;<SMALL>;IGNORE
+<U1EE6> <U0055>;<HOOK>;<CAPITAL>;IGNORE
+<U1EE7> <U0055>;<HOOK>;<SMALL>;IGNORE
+<U0168> <U0055>;<TILDE>;<CAPITAL>;IGNORE
+<U0169> <U0055>;<TILDE>;<SMALL>;IGNORE
+<U1E78> <U0055>;<TILDE+ACUTE>;<CAPITAL>;IGNORE
+<U1E79> <U0055>;<TILDE+ACUTE>;<SMALL>;IGNORE
+<U1E74> <U0055>;<TILDE-BELOW>;<CAPITAL>;IGNORE
+<U1E75> <U0055>;<TILDE-BELOW>;<SMALL>;IGNORE
+<U1EE4> <U0055>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EE5> <U0055>;<DOT-BELOW>;<SMALL>;IGNORE
+<U0172> <U0055>;<OGONEK>;<CAPITAL>;IGNORE
+<U0173> <U0055>;<OGONEK>;<SMALL>;IGNORE
+<U016A> <U0055>;<MACRON>;<CAPITAL>;IGNORE
+<U016B> <U0055>;<MACRON>;<SMALL>;IGNORE
+<U1E7A> <U0055>;<MACRON+DIAERESIS>;<CAPITAL>;IGNORE
+<U1E7B> <U0055>;<MACRON+DIAERESIS>;<SMALL>;IGNORE
+<U1E72> <U0055>;<MACRON+DIAERESIS-BELOW>;<CAPITAL>;IGNORE
+<U1E73> <U0055>;<MACRON+DIAERESIS-BELOW>;<SMALL>;IGNORE
+<U1E76> <U0055>;<MACRON+CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E77> <U0055>;<MACRON+CIRCUMFLEX>;<SMALL>;IGNORE
+<U01AF> <U0055>;<HORN>;<CAPITAL>;IGNORE
+<U01B0> <U0055>;<HORN>;<SMALL>;IGNORE
+<U1EE8> <U0055>;<HORN+ACUTE>;<CAPITAL>;IGNORE
+<U1EE9> <U0055>;<HORN+ACUTE>;<SMALL>;IGNORE
+<U1EEA> <U0055>;<HORN+GRAVE>;<CAPITAL>;IGNORE
+<U1EEB> <U0055>;<HORN+GRAVE>;<SMALL>;IGNORE
+<U1EEC> <U0055>;<HORN+HOOK>;<CAPITAL>;IGNORE
+<U1EED> <U0055>;<HORN+HOOK>;<SMALL>;IGNORE
+<U1EEE> <U0055>;<HORN+TILDE>;<CAPITAL>;IGNORE
+<U1EEF> <U0055>;<HORN+TILDE>;<SMALL>;IGNORE
+<U1EF0> <U0055>;<HORN+DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF1> <U0055>;<HORN+DOT-BELOW>;<SMALL>;IGNORE
+<u8>
+<U00DC> <U00DC>;<NONE>;<CAPITAL>;IGNORE
+<U00FC> <U00DC>;<NONE>;<SMALL>;IGNORE
+<U0056> <U0056>;<NONE>;<CAPITAL>;IGNORE
+<U0076> <U0056>;<NONE>;<SMALL>;IGNORE
+<U1E7C> <U0056>;<TILDE>;<CAPITAL>;IGNORE
+<U1E7D> <U0056>;<TILDE>;<SMALL>;IGNORE
+<U1E7E> <U0056>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E7F> <U0056>;<DOT-BELOW>;<SMALL>;IGNORE
+<v8>
+<U0057> <U0057>;<NONE>;<CAPITAL>;IGNORE
+<U0077> <U0057>;<NONE>;<SMALL>;IGNORE
+<U1E82> <U0057>;<ACUTE>;<CAPITAL>;IGNORE
+<U1E83> <U0057>;<ACUTE>;<SMALL>;IGNORE
+<U1E80> <U0057>;<GRAVE>;<CAPITAL>;IGNORE
+<U1E81> <U0057>;<GRAVE>;<SMALL>;IGNORE
+<U0174> <U0057>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0175> <U0057>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U1E84> <U0057>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E85> <U0057>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E86> <U0057>;<DOT>;<CAPITAL>;IGNORE
+<U1E87> <U0057>;<DOT>;<SMALL>;IGNORE
+<U1E88> <U0057>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E89> <U0057>;<DOT-BELOW>;<SMALL>;IGNORE
+<w8>
+<U0058> <U0058>;<NONE>;<CAPITAL>;IGNORE
+<U0078> <U0058>;<NONE>;<SMALL>;IGNORE
+<U1E8C> <U0058>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U1E8D> <U0058>;<DIAERESIS>;<SMALL>;IGNORE
+<U1E8A> <U0058>;<DOT>;<CAPITAL>;IGNORE
+<U1E8B> <U0058>;<DOT>;<SMALL>;IGNORE
+<x8>
+<U0059> <U0059>;<NONE>;<CAPITAL>;IGNORE
+<U0079> <U0059>;<NONE>;<SMALL>;IGNORE
+<U00DD> <U0059>;<ACUTE>;<CAPITAL>;IGNORE
+<U00FD> <U0059>;<ACUTE>;<SMALL>;IGNORE
+<U1EF2> <U0059>;<GRAVE>;<CAPITAL>;IGNORE
+<U1EF3> <U0059>;<GRAVE>;<SMALL>;IGNORE
+<U0176> <U0059>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U0177> <U0059>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U0178> <U0059>;<DIAERESIS>;<CAPITAL>;IGNORE
+<U00FF> <U0059>;<DIAERESIS>;<SMALL>;IGNORE
+<U1EF6> <U0059>;<HOOK>;<CAPITAL>;IGNORE
+<U1EF7> <U0059>;<HOOK>;<SMALL>;IGNORE
+<U1EF8> <U0059>;<TILDE>;<CAPITAL>;IGNORE
+<U1EF9> <U0059>;<TILDE>;<SMALL>;IGNORE
+<U1E8E> <U0059>;<DOT>;<CAPITAL>;IGNORE
+<U1E8F> <U0059>;<DOT>;<SMALL>;IGNORE
+<U1EF4> <U0059>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1EF5> <U0059>;<DOT-BELOW>;<SMALL>;IGNORE
+<y8>
+<U005A> <U005A>;<NONE>;<CAPITAL>;IGNORE
+<U007A> <U005A>;<NONE>;<SMALL>;IGNORE
+<U0179> <U005A>;<ACUTE>;<CAPITAL>;IGNORE
+<U017A> <U005A>;<ACUTE>;<SMALL>;IGNORE
+<U1E90> <U005A>;<CIRCUMFLEX>;<CAPITAL>;IGNORE
+<U1E91> <U005A>;<CIRCUMFLEX>;<SMALL>;IGNORE
+<U017D> <U005A>;<CARON>;<CAPITAL>;IGNORE
+<U017E> <U005A>;<CARON>;<SMALL>;IGNORE
+<U017B> <U005A>;<DOT>;<CAPITAL>;IGNORE
+<U017C> <U005A>;<DOT>;<SMALL>;IGNORE
+<U1E92> <U005A>;<DOT-BELOW>;<CAPITAL>;IGNORE
+<U1E93> <U005A>;<DOT-BELOW>;<SMALL>;IGNORE
+<U01B5> <U005A>;<STROKE>;<CAPITAL>;IGNORE
+<U01B6> <U005A>;<STROKE>;<SMALL>;IGNORE
+<U1E94> <U005A>;<LINE-BELOW>;<CAPITAL>;IGNORE
+<U1E95> <U005A>;<LINE-BELOW>;<SMALL>;IGNORE
+<z8>
+<U0391> <U0391>;<CAPITAL>;<GREEK>;IGNORE
+<U0386> <U0391>;<CAPITAL>;<TONOS>;IGNORE
+<U03B1> <U0391>;<SMALL>;<GREEK>;IGNORE
+<U03AC> <U0391>;<SMALL>;<TONOS>;IGNORE
+<U0392> <U0392>;<CAPITAL>;<GREEK>;IGNORE
+<U03B2> <U0392>;<SMALL>;<GREEK>;IGNORE
+<U0393> <U0393>;<CAPITAL>;<GREEK>;IGNORE
+<U03B3> <U0393>;<SMALL>;<GREEK>;IGNORE
+<U0394> <U0394>;<CAPITAL>;<GREEK>;IGNORE
+<U03B4> <U0394>;<SMALL>;<GREEK>;IGNORE
+<U0395> <U0395>;<CAPITAL>;<GREEK>;IGNORE
+<U0388> <U0395>;<CAPITAL>;<TONOS>;IGNORE
+<U03B5> <U0395>;<SMALL>;<GREEK>;IGNORE
+<U03AD> <U0395>;<SMALL>;<TONOS>;IGNORE
+<U0396> <U0396>;<CAPITAL>;<GREEK>;IGNORE
+<U03B6> <U0396>;<SMALL>;<GREEK>;IGNORE
+<U0397> <U0397>;<CAPITAL>;<GREEK>;IGNORE
+<U0389> <U0397>;<CAPITAL>;<TONOS>;IGNORE
+<U03B7> <U0397>;<SMALL>;<GREEK>;IGNORE
+<U03AE> <U0397>;<SMALL>;<TONOS>;IGNORE
+<U0398> <U0398>;<CAPITAL>;<GREEK>;IGNORE
+<U03B8> <U0398>;<SMALL>;<GREEK>;IGNORE
+<U0399> <U0399>;<CAPITAL>;<GREEK>;IGNORE
+<U038A> <U0399>;<CAPITAL>;<TONOS>;IGNORE
+<U03AA> <U0399>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03B9> <U0399>;<SMALL>;<GREEK>;IGNORE
+<U03AF> <U0399>;<SMALL>;<TONOS>;IGNORE
+<U03CA> <U0399>;<SMALL>;<DIALYTICA>;IGNORE
+<U0390> <U0399>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U039A> <U039A>;<CAPITAL>;<GREEK>;IGNORE
+<U03BA> <U039A>;<SMALL>;<GREEK>;IGNORE
+<U039B> <U039B>;<CAPITAL>;<GREEK>;IGNORE
+<U03BB> <U039B>;<SMALL>;<GREEK>;IGNORE
+<U039C> <U039C>;<CAPITAL>;<GREEK>;IGNORE
+<U03BC> <U039C>;<SMALL>;<GREEK>;IGNORE
+<U039D> <U039D>;<CAPITAL>;<GREEK>;IGNORE
+<U03BD> <U039D>;<SMALL>;<GREEK>;IGNORE
+<U039E> <U039E>;<CAPITAL>;<GREEK>;IGNORE
+<U03BE> <U039E>;<SMALL>;<GREEK>;IGNORE
+<U039F> <U039F>;<CAPITAL>;<GREEK>;IGNORE
+<U038C> <U039F>;<CAPITAL>;<TONOS>;IGNORE
+<U03BF> <U039F>;<SMALL>;<GREEK>;IGNORE
+<U03CC> <U039F>;<SMALL>;<TONOS>;IGNORE
+<U03A0> <U03A0>;<CAPITAL>;<GREEK>;IGNORE
+<U03C0> <U03A0>;<SMALL>;<GREEK>;IGNORE
+<U03A1> <U03A1>;<CAPITAL>;<GREEK>;IGNORE
+<U03C1> <U03A1>;<SMALL>;<GREEK>;IGNORE
+<U03A3> <U03A3>;<CAPITAL>;<GREEK>;IGNORE
+<U03C3> <U03A3>;<SMALL>;<GREEK>;IGNORE
+<U03C2> <U03A3>;<SMALL>;<U03C2>;IGNORE
+<U03A4> <U03A4>;<CAPITAL>;<GREEK>;IGNORE
+<U03C4> <U03A4>;<SMALL>;<GREEK>;IGNORE
+<U03A5> <U03A5>;<CAPITAL>;<GREEK>;IGNORE
+<U038E> <U03A5>;<CAPITAL>;<TONOS>;IGNORE
+<U03AB> <U03A5>;<CAPITAL>;<DIALYTICA>;IGNORE
+<U03C5> <U03A5>;<SMALL>;<GREEK>;IGNORE
+<U03CD> <U03A5>;<SMALL>;<TONOS>;IGNORE
+<U03CB> <U03A5>;<SMALL>;<DIALYTICA>;IGNORE
+<U03B0> <U03A5>;<SMALL>;<DIALYTICA+TONOS>;IGNORE
+<U03A6> <U03A6>;<CAPITAL>;<GREEK>;IGNORE
+<U03C6> <U03A6>;<SMALL>;<GREEK>;IGNORE
+<U03A7> <U03A7>;<CAPITAL>;<GREEK>;IGNORE
+<U03C7> <U03A7>;<SMALL>;<GREEK>;IGNORE
+<U03A8> <U03A8>;<CAPITAL>;<GREEK>;IGNORE
+<U03C8> <U03A8>;<SMALL>;<GREEK>;IGNORE
+<U03A9> <U03A9>;<CAPITAL>;<GREEK>;IGNORE
+<U038F> <U03A9>;<CAPITAL>;<TONOS>;IGNORE
+<U03C9> <U03A9>;<SMALL>;<GREEK>;IGNORE
+<U03CE> <U03A9>;<SMALL>;<TONOS>;IGNORE
+<U0410> <U0410>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0430> <U0410>;<CYRILLIC>;<SMALL>;IGNORE
+<U0411> <U0411>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0431> <U0411>;<CYRILLIC>;<SMALL>;IGNORE
+<U0412> <U0412>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0432> <U0412>;<CYRILLIC>;<SMALL>;IGNORE
+<U0413> <U0413>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0433> <U0413>;<CYRILLIC>;<SMALL>;IGNORE
+<U0403> <U0403>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0453> <U0403>;<CYRILLIC>;<SMALL>;IGNORE
+<U0490> <U0490>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0491> <U0490>;<CYRILLIC>;<SMALL>;IGNORE
+<U0414> <U0414>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0434> <U0414>;<CYRILLIC>;<SMALL>;IGNORE
+<U0402> <U0402>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0452> <U0402>;<CYRILLIC>;<SMALL>;IGNORE
+<U0415> <U0415>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0435> <U0415>;<CYRILLIC>;<SMALL>;IGNORE
+<U0401> <U0401>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0451> <U0401>;<CYRILLIC>;<SMALL>;IGNORE
+<U0404> <U0404>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0454> <U0404>;<CYRILLIC>;<SMALL>;IGNORE
+<U0416> <U0416>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0436> <U0416>;<CYRILLIC>;<SMALL>;IGNORE
+<U0417> <U0417>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0437> <U0417>;<CYRILLIC>;<SMALL>;IGNORE
+<U0418> <U0418>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0438> <U0418>;<CYRILLIC>;<SMALL>;IGNORE
+<U0406> <U0406>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0456> <U0406>;<CYRILLIC>;<SMALL>;IGNORE
+<U0407> <U0407>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0457> <U0407>;<CYRILLIC>;<SMALL>;IGNORE
+<U0408> <U0408>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0458> <U0408>;<CYRILLIC>;<SMALL>;IGNORE
+<U0419> <U0419>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0439> <U0419>;<CYRILLIC>;<SMALL>;IGNORE
+<U041A> <U041A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043A> <U041A>;<CYRILLIC>;<SMALL>;IGNORE
+<U040C> <U040C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045C> <U040C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041B> <U041B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043B> <U041B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0409> <U0409>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0459> <U0409>;<CYRILLIC>;<SMALL>;IGNORE
+<U041C> <U041C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043C> <U041C>;<CYRILLIC>;<SMALL>;IGNORE
+<U041D> <U041D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043D> <U041D>;<CYRILLIC>;<SMALL>;IGNORE
+<U040A> <U040A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045A> <U040A>;<CYRILLIC>;<SMALL>;IGNORE
+<U041E> <U041E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043E> <U041E>;<CYRILLIC>;<SMALL>;IGNORE
+<U041F> <U041F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U043F> <U041F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0420> <U0420>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0440> <U0420>;<CYRILLIC>;<SMALL>;IGNORE
+<U0421> <U0421>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0441> <U0421>;<CYRILLIC>;<SMALL>;IGNORE
+<U0422> <U0422>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0442> <U0422>;<CYRILLIC>;<SMALL>;IGNORE
+<U040B> <U040B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045B> <U040B>;<CYRILLIC>;<SMALL>;IGNORE
+<U0423> <U0423>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0443> <U0423>;<CYRILLIC>;<SMALL>;IGNORE
+<U040E> <U040E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045E> <U040E>;<CYRILLIC>;<SMALL>;IGNORE
+<U0424> <U0424>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0444> <U0424>;<CYRILLIC>;<SMALL>;IGNORE
+<U0425> <U0425>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0445> <U0425>;<CYRILLIC>;<SMALL>;IGNORE
+<U0426> <U0426>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0446> <U0426>;<CYRILLIC>;<SMALL>;IGNORE
+<U0405> <U0405>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0455> <U0405>;<CYRILLIC>;<SMALL>;IGNORE
+<U0427> <U0427>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0447> <U0427>;<CYRILLIC>;<SMALL>;IGNORE
+<U040F> <U040F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U045F> <U040F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0428> <U0428>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0448> <U0428>;<CYRILLIC>;<SMALL>;IGNORE
+<U0429> <U0429>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0449> <U0429>;<CYRILLIC>;<SMALL>;IGNORE
+<U044A> <U044A>;<CYRILLIC>;<SMALL>;IGNORE
+<U042A> <U044A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042B> <U042B>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044B> <U042B>;<CYRILLIC>;<SMALL>;IGNORE
+<U044C> <U044C>;<CYRILLIC>;<SMALL>;IGNORE
+<U042C> <U044C>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U042D> <U042D>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044D> <U042D>;<CYRILLIC>;<SMALL>;IGNORE
+<U042E> <U042E>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044E> <U042E>;<CYRILLIC>;<SMALL>;IGNORE
+<U042F> <U042F>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U044F> <U042F>;<CYRILLIC>;<SMALL>;IGNORE
+<U0462> <U0462>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0463> <U0462>;<CYRILLIC>;<SMALL>;IGNORE
+<U046A> <U046A>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U046B> <U046A>;<CYRILLIC>;<SMALL>;IGNORE
+<U0472> <U0472>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0473> <U0472>;<CYRILLIC>;<SMALL>;IGNORE
+<U0474> <U0474>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0475> <U0474>;<CYRILLIC>;<SMALL>;IGNORE
+<U0480> <U0480>;<CYRILLIC>;<CAPITAL>;IGNORE
+<U0481> <U0480>;<CYRILLIC>;<SMALL>;IGNORE
+<U05D0> <U05D0>;IGNORE;IGNORE;IGNORE
+<U05D1> <U05D1>;IGNORE;IGNORE;IGNORE
+<U05D2> <U05D2>;IGNORE;IGNORE;IGNORE
+<U05D3> <U05D3>;IGNORE;IGNORE;IGNORE
+<U05D4> <U05D4>;IGNORE;IGNORE;IGNORE
+<U05D5> <U05D5>;IGNORE;IGNORE;IGNORE
+<U05D6> <U05D6>;IGNORE;IGNORE;IGNORE
+<U05D7> <U05D7>;IGNORE;IGNORE;IGNORE
+<U05D8> <U05D8>;IGNORE;IGNORE;IGNORE
+<U05D9> <U05D9>;IGNORE;IGNORE;IGNORE
+<U05DA> <U05DA>;IGNORE;IGNORE;IGNORE
+<U05DB> <U05DB>;IGNORE;IGNORE;IGNORE
+<U05DC> <U05DC>;IGNORE;IGNORE;IGNORE
+<U05DD> <U05DD>;IGNORE;IGNORE;IGNORE
+<U05DE> <U05DE>;IGNORE;IGNORE;IGNORE
+<U05DF> <U05DF>;IGNORE;IGNORE;IGNORE
+<U05E0> <U05E0>;IGNORE;IGNORE;IGNORE
+<U05E1> <U05E1>;IGNORE;IGNORE;IGNORE
+<U05E2> <U05E2>;IGNORE;IGNORE;IGNORE
+<U05E3> <U05E3>;IGNORE;IGNORE;IGNORE
+<U05E4> <U05E4>;IGNORE;IGNORE;IGNORE
+<U05E5> <U05E5>;IGNORE;IGNORE;IGNORE
+<U05E6> <U05E6>;IGNORE;IGNORE;IGNORE
+<U05E7> <U05E7>;IGNORE;IGNORE;IGNORE
+<U05E8> <U05E8>;IGNORE;IGNORE;IGNORE
+<U05E9> <U05E9>;IGNORE;IGNORE;IGNORE
+<U05EA> <U05EA>;IGNORE;IGNORE;IGNORE
+
+% Arabic collating
+
+<U060C> IGNORE;IGNORE;IGNORE;<U060C>
+<U061B> IGNORE;IGNORE;IGNORE;<U061B>
+<U061F> IGNORE;IGNORE;IGNORE;<U061F>
+<U0640> IGNORE;IGNORE;IGNORE;<U0640>
+
+<U0621> <U0621>;<U0621>;IGNORE;IGNORE
+<U0622> <U0622>;<U0622>;IGNORE;IGNORE
+<UFE82> <U0622>;<UFE82>;IGNORE;IGNORE
+<U0623> <U0621>;<U0623>;IGNORE;IGNORE
+<UFE84> <U0621>;<UFE84>;IGNORE;IGNORE
+<U0624> <U0621>;<U0624>;IGNORE;IGNORE
+<U0625> <U0621>;<U0625>;IGNORE;IGNORE
+<UFE88> <U0621>;<UFE88>;IGNORE;IGNORE
+<U0626> <U0621>;<U0626>;IGNORE;IGNORE
+<U0670> <U0670>;<U0670>;IGNORE;IGNORE
+<U0627> <U0627>;<U0627>;IGNORE;IGNORE
+<UFE8D> <U0627>;<UFE8D>;IGNORE;IGNORE
+<UFE8E> <U0627>;<UFE8E>;IGNORE;IGNORE
+<UE016> <U0627>;<UE016>;IGNORE;IGNORE
+<U0628> <U0628>;<U0628>;IGNORE;IGNORE
+<UFE8F> <U0628>;<UFE8F>;IGNORE;IGNORE
+<UFE90> <U0628>;<UFE90>;IGNORE;IGNORE
+<UFE91> <U0628>;<UFE91>;IGNORE;IGNORE
+<UFE92> <U0628>;<UFE92>;IGNORE;IGNORE
+<U067E> <U067E>;<U067E>;IGNORE;IGNORE
+<U06A4> <U06A4>;<U06A4>;IGNORE;IGNORE
+<U0629> <U0629>;<U0629>;IGNORE;IGNORE
+<UFE93> <U0629>;<UFE93>;IGNORE;IGNORE
+<UFE94> <U0629>;<UFE94>;IGNORE;IGNORE
+<U062A> <U0629>;<U062A>;IGNORE;IGNORE
+<UFE95> <U0629>;<UFE95>;IGNORE;IGNORE
+<UFE96> <U0629>;<UFE96>;IGNORE;IGNORE
+<UFE97> <U0629>;<UFE97>;IGNORE;IGNORE
+<UFE98> <U0629>;<UFE98>;IGNORE;IGNORE
+<U062B> <U062B>;<U062B>;IGNORE;IGNORE
+<UFE99> <U062B>;<UFE99>;IGNORE;IGNORE
+<UFE9A> <U062B>;<UFE9A>;IGNORE;IGNORE
+<UFE9B> <U062B>;<UFE9B>;IGNORE;IGNORE
+<UFE9C> <U062B>;<UFE9C>;IGNORE;IGNORE
+<U062C> <U062C>;<U062C>;IGNORE;IGNORE
+<UFE9D> <U062C>;<UFE9D>;IGNORE;IGNORE
+<UFE9E> <U062C>;<UFE9E>;IGNORE;IGNORE
+<UFE9F> <U062C>;<UFE9F>;IGNORE;IGNORE
+<UFEA0> <U062C>;<UFEA0>;IGNORE;IGNORE
+<U062D> <U062D>;<U062D>;IGNORE;IGNORE
+<UFEA1> <U062D>;<UFEA1>;IGNORE;IGNORE
+<UFEA2> <U062D>;<UFEA2>;IGNORE;IGNORE
+<UFEA3> <U062D>;<UFEA3>;IGNORE;IGNORE
+<UFEA4> <U062D>;<UFEA4>;IGNORE;IGNORE
+<U062E> <U062E>;<U062E>;IGNORE;IGNORE
+<UFEA5> <U062E>;<UFEA5>;IGNORE;IGNORE
+<UFEA6> <U062E>;<UFEA6>;IGNORE;IGNORE
+<UFEA7> <U062E>;<UFEA7>;IGNORE;IGNORE
+<UFEA8> <U062E>;<UFEA8>;IGNORE;IGNORE
+<U062F> <U062F>;<U062F>;IGNORE;IGNORE
+<UFEA9> <U062F>;<UFEA9>;IGNORE;IGNORE
+<UFEAA> <U062F>;<UFEAA>;IGNORE;IGNORE
+<U0630> <U0630>;<U0630>;IGNORE;IGNORE
+<UFEAB> <U0630>;<UFEAB>;IGNORE;IGNORE
+<UFEAC> <U0630>;<UFEAC>;IGNORE;IGNORE
+<U0631> <U0631>;<U0631>;IGNORE;IGNORE
+<UFEAD> <U0631>;<UFEAD>;IGNORE;IGNORE
+<UFEAE> <U0631>;<UFEAE>;IGNORE;IGNORE
+<U0632> <U0632>;<U0632>;IGNORE;IGNORE
+<UFEAF> <U0632>;<UFEAF>;IGNORE;IGNORE
+<UFEB0> <U0632>;<UFEB0>;IGNORE;IGNORE
+<U0633> <U0633>;<U0633>;IGNORE;IGNORE
+<UFEB1> <U0633>;<UFEB1>;IGNORE;IGNORE
+<UFEB2> <U0633>;<UFEB2>;IGNORE;IGNORE
+<UFEB3> <U0633>;<UFEB3>;IGNORE;IGNORE
+<UFEB4> <U0633>;<UFEB4>;IGNORE;IGNORE
+<U0634> <U0634>;<U0634>;IGNORE;IGNORE
+<UFEB5> <U0634>;<UFEB5>;IGNORE;IGNORE
+<UFEB6> <U0634>;<UFEB6>;IGNORE;IGNORE
+<UFEB7> <U0634>;<UFEB7>;IGNORE;IGNORE
+<UFEB8> <U0634>;<UFEB8>;IGNORE;IGNORE
+<U0635> <U0635>;<U0635>;IGNORE;IGNORE
+<UFEB9> <U0635>;<UFEB9>;IGNORE;IGNORE
+<UFEBA> <U0635>;<UFEBA>;IGNORE;IGNORE
+<UFEBB> <U0635>;<UFEBB>;IGNORE;IGNORE
+<UFEBC> <U0635>;<UFEBC>;IGNORE;IGNORE
+<U0636> <U0636>;<U0636>;IGNORE;IGNORE
+<UFEBD> <U0636>;<UFEBD>;IGNORE;IGNORE
+<UFEBE> <U0636>;<UFEBE>;IGNORE;IGNORE
+<UFEBF> <U0636>;<UFEBF>;IGNORE;IGNORE
+<UFEC0> <U0636>;<UFEC0>;IGNORE;IGNORE
+<U0637> <U0637>;<U0637>;IGNORE;IGNORE
+<UFEC1> <U0637>;<UFEC1>;IGNORE;IGNORE
+<UFEC2> <U0637>;<UFEC2>;IGNORE;IGNORE
+<UFEC3> <U0637>;<UFEC3>;IGNORE;IGNORE
+<UFEC4> <U0637>;<UFEC4>;IGNORE;IGNORE
+<U0638> <U0638>;<U0638>;IGNORE;IGNORE
+<UFEC5> <U0638>;<UFEC5>;IGNORE;IGNORE
+<UFEC6> <U0638>;<UFEC6>;IGNORE;IGNORE
+<UFEC7> <U0638>;<UFEC7>;IGNORE;IGNORE
+<UFEC8> <U0638>;<UFEC8>;IGNORE;IGNORE
+<U0639> <U0639>;<U0639>;IGNORE;IGNORE
+<UFEC9> <U0639>;<UFEC9>;IGNORE;IGNORE
+<UFECA> <U0639>;<UFECA>;IGNORE;IGNORE
+<UFECB> <U0639>;<UFECB>;IGNORE;IGNORE
+<UFECC> <U0639>;<UFECC>;IGNORE;IGNORE
+<U063A> <U063A>;<U063A>;IGNORE;IGNORE
+<UFECD> <U063A>;<UFECD>;IGNORE;IGNORE
+<UFECE> <U063A>;<UFECE>;IGNORE;IGNORE
+<UFECF> <U063A>;<UFECF>;IGNORE;IGNORE
+<UFED0> <U063A>;<UFED0>;IGNORE;IGNORE
+<U0641> <U0641>;<U0641>;IGNORE;IGNORE
+<UFED1> <U0641>;<UFED1>;IGNORE;IGNORE
+<UFED2> <U0641>;<UFED2>;IGNORE;IGNORE
+<UFED3> <U0641>;<UFED3>;IGNORE;IGNORE
+<UFED4> <U0641>;<UFED4>;IGNORE;IGNORE
+<U0642> <U0642>;<U0642>;IGNORE;IGNORE
+<UFED5> <U0642>;<UFED5>;IGNORE;IGNORE
+<UFED6> <U0642>;<UFED6>;IGNORE;IGNORE
+<UFED7> <U0642>;<UFED7>;IGNORE;IGNORE
+<UFED8> <U0642>;<UFED8>;IGNORE;IGNORE
+<U0643> <U0643>;<U0643>;IGNORE;IGNORE
+<UFED9> <U0643>;<UFED9>;IGNORE;IGNORE
+<UFEDA> <U0643>;<UFEDA>;IGNORE;IGNORE
+<UFEDB> <U0643>;<UFEDB>;IGNORE;IGNORE
+<UFEDC> <U0643>;<UFEDC>;IGNORE;IGNORE
+<U0644> <U0644>;<U0644>;IGNORE;IGNORE
+<UFEDD> <U0644>;<UFEDD>;IGNORE;IGNORE
+<UFEDE> <U0644>;<UFEDE>;IGNORE;IGNORE
+<UFEDF> <U0644>;<UFEDF>;IGNORE;IGNORE
+<UFEE0> <U0644>;<UFEE0>;IGNORE;IGNORE
+<U0645> <U0645>;<U0645>;IGNORE;IGNORE
+<UFEE1> <U0645>;<UFEE1>;IGNORE;IGNORE
+<UFEE2> <U0645>;<UFEE2>;IGNORE;IGNORE
+<UFEE3> <U0645>;<UFEE3>;IGNORE;IGNORE
+<UFEE4> <U0645>;<UFEE4>;IGNORE;IGNORE
+<U0646> <U0646>;<U0646>;IGNORE;IGNORE
+<UFEE5> <U0646>;<UFEE5>;IGNORE;IGNORE
+<UFEE6> <U0646>;<UFEE6>;IGNORE;IGNORE
+<UFEE7> <U0646>;<UFEE7>;IGNORE;IGNORE
+<UFEE8> <U0646>;<UFEE8>;IGNORE;IGNORE
+<U0647> <U0647>;<U0647>;IGNORE;IGNORE
+<UFEE9> <U0647>;<UFEE9>;IGNORE;IGNORE
+<UFEEA> <U0647>;<UFEEA>;IGNORE;IGNORE
+<UFEEB> <U0647>;<UFEEB>;IGNORE;IGNORE
+<UFEEC> <U0647>;<UFEEC>;IGNORE;IGNORE
+<U0648> <U0648>;<U0648>;IGNORE;IGNORE
+<UFEED> <U0648>;<UFEED>;IGNORE;IGNORE
+<UFEEE> <U0648>;<UFEEE>;IGNORE;IGNORE
+<U0649> <U0649>;<U0649>;IGNORE;IGNORE
+<UFEEF> <U0649>;<UFEEF>;IGNORE;IGNORE
+<UFEF0> <U0649>;<UFEF0>;IGNORE;IGNORE
+<U064A> <U064A>;<U064A>;IGNORE;IGNORE
+<UFEF1> <U064A>;<UFEF1>;IGNORE;IGNORE
+<UFEF2> <U064A>;<UFEF2>;IGNORE;IGNORE
+<UFEF3> <U064A>;<UFEF3>;IGNORE;IGNORE
+<UFEF4> <U064A>;<UFEF4>;IGNORE;IGNORE
+
+<U064B> IGNORE;IGNORE;<U064B>;IGNORE
+<U064C> IGNORE;IGNORE;<U064C>;IGNORE
+<U064D> IGNORE;IGNORE;<U064D>;IGNORE
+<U064E> IGNORE;IGNORE;<U064E>;IGNORE
+<U064F> IGNORE;IGNORE;<U064F>;IGNORE
+<U0650> IGNORE;IGNORE;<U0650>;IGNORE
+<U0651> IGNORE;IGNORE;<U0651>;IGNORE
+<UFE7D> IGNORE;IGNORE;<UFE7D>;IGNORE
+<U0652> IGNORE;IGNORE;<U0652>;IGNORE
+
+<U0660> <U0030>;<U0660>;IGNORE;IGNORE
+<U0661> <U0031>;<U0661>;IGNORE;IGNORE
+<U0662> <U0032>;<U0662>;IGNORE;IGNORE
+<U0663> <U0033>;<U0663>;IGNORE;IGNORE
+<U0664> <U0034>;<U0664>;IGNORE;IGNORE
+<U0665> <U0035>;<U0665>;IGNORE;IGNORE
+<U0666> <U0036>;<U0666>;IGNORE;IGNORE
+<U0667> <U0037>;<U0667>;IGNORE;IGNORE
+<U0668> <U0038>;<U0668>;IGNORE;IGNORE
+<U0669> <U0039>;<U0669>;IGNORE;IGNORE
+
+<UFEF5> "<U0644><U0622>";"<U0644><U0622>";"<UFEF5><UFEF5>";IGNORE
+<UFEF6> "<U0644><U0622>";"<U0644><UFE82>";"<UFEF6><UFEF6>";IGNORE
+<UFEF7> "<U0644><U0623>";"<U0644><U0623>";"<UFEF7><UFEF7>";IGNORE
+<UFEF8> "<U0644><U0623>";"<U0644><UFE84>";"<UFEF8><UFEF8>";IGNORE
+<UFEF9> "<U0644><U0625>";"<U0644><U0625>";"<UFEF9><UFEF9>";IGNORE
+<UFEFA> "<U0644><U0625>";"<U0644><UFE88>";"<UFEFA><UFEFA>";IGNORE
+<UFEFB> "<U0644><U0627>";"<U0644><UFE8D>";"<UFEFB><UFEFB>";IGNORE
+<UFEFC> "<U0644><U0627>";"<U0644><UFE8E>";"<UFEFC><UFEFC>";IGNORE
+
+% katakana/hiragana sorting
+% base is katakana, as this is present in most charsets
+% normal before voiced before semi-voiced
+% small vocals before normal vocals
+% katakana before hiragana
+
+<U30A1> <U30A1>;<U30A1>;IGNORE;IGNORE
+<U3041> <U30A1>;<U3041>;IGNORE;IGNORE
+<U30A2> <U30A1>;<U30A2>;IGNORE;IGNORE
+<U3042> <U30A1>;<U3042>;IGNORE;IGNORE
+<U30A3> <U30A3>;<U30A3>;IGNORE;IGNORE
+<U3043> <U30A3>;<U3043>;IGNORE;IGNORE
+<U30A4> <U30A3>;<U30A4>;IGNORE;IGNORE
+<U3044> <U30A3>;<U3044>;IGNORE;IGNORE
+<U30A5> <U30A5>;<U30A5>;IGNORE;IGNORE
+<U3045> <U30A5>;<U3045>;IGNORE;IGNORE
+<U30A6> <U30A5>;<U30A6>;IGNORE;IGNORE
+<U3046> <U30A5>;<U3046>;IGNORE;IGNORE
+<U30F4> <U30A5>;<U30F4>;IGNORE;IGNORE
+<U30A7> <U30A7>;<U30A7>;IGNORE;IGNORE
+<U3047> <U30A7>;<U3047>;IGNORE;IGNORE
+<U30A8> <U30A7>;<U30A8>;IGNORE;IGNORE
+<U3048> <U30A7>;<U3048>;IGNORE;IGNORE
+<U30A9> <U30A9>;<U30A9>;IGNORE;IGNORE
+<U3049> <U30A9>;<U3049>;IGNORE;IGNORE
+<U30AA> <U30A9>;<U30AA>;IGNORE;IGNORE
+<U304A> <U30A9>;<U304A>;IGNORE;IGNORE
+<U30F5> <U30F5>;<U30F5>;IGNORE;IGNORE
+<U30AB> <U30F5>;<U30AB>;IGNORE;IGNORE
+<U304B> <U30F5>;<U304B>;IGNORE;IGNORE
+<U30AC> <U30F5>;<U30AC>;IGNORE;IGNORE
+<U304C> <U30F5>;<U304C>;IGNORE;IGNORE
+<U30AD> <U30AD>;<U30AD>;IGNORE;IGNORE
+<U304D> <U30AD>;<U304D>;IGNORE;IGNORE
+<U30AE> <U30AD>;<U30AE>;IGNORE;IGNORE
+<U304E> <U30AD>;<U304E>;IGNORE;IGNORE
+<U30AF> <U30AF>;<U30AF>;IGNORE;IGNORE
+<U304F> <U30AF>;<U304F>;IGNORE;IGNORE
+<U30B0> <U30AF>;<U30B0>;IGNORE;IGNORE
+<U3050> <U30AF>;<U3050>;IGNORE;IGNORE
+<U30F6> <U30F6>;<U30F6>;IGNORE;IGNORE
+<U30B1> <U30F6>;<U30B1>;IGNORE;IGNORE
+<U3051> <U30F6>;<U3051>;IGNORE;IGNORE
+<U30B2> <U30F6>;<U30B2>;IGNORE;IGNORE
+<U3052> <U30F6>;<U3052>;IGNORE;IGNORE
+<U30B3> <U30B3>;<U30B3>;IGNORE;IGNORE
+<U3053> <U30B3>;<U3053>;IGNORE;IGNORE
+<U30B4> <U30B3>;<U30B4>;IGNORE;IGNORE
+<U3054> <U30B3>;<U3054>;IGNORE;IGNORE
+<U30B5> <U30B5>;<U30B5>;IGNORE;IGNORE
+<U3055> <U30B5>;<U3055>;IGNORE;IGNORE
+<U30B6> <U30B5>;<U30B6>;IGNORE;IGNORE
+<U3056> <U30B5>;<U3056>;IGNORE;IGNORE
+<U30B7> <U30B7>;<U30B7>;IGNORE;IGNORE
+<U3057> <U30B7>;<U3057>;IGNORE;IGNORE
+<U30B8> <U30B7>;<U30B8>;IGNORE;IGNORE
+<U3058> <U30B7>;<U3058>;IGNORE;IGNORE
+<U30B9> <U30B9>;<U30B9>;IGNORE;IGNORE
+<U3059> <U30B9>;<U3059>;IGNORE;IGNORE
+<U30BA> <U30B9>;<U30BA>;IGNORE;IGNORE
+<U305A> <U30B9>;<U305A>;IGNORE;IGNORE
+<U30BB> <U30BB>;<U30BB>;IGNORE;IGNORE
+<U305B> <U30BB>;<U305B>;IGNORE;IGNORE
+<U30BC> <U30BB>;<U30BC>;IGNORE;IGNORE
+<U305C> <U30BB>;<U305C>;IGNORE;IGNORE
+<U30BD> <U30BD>;<U30BD>;IGNORE;IGNORE
+<U305D> <U30BD>;<U305D>;IGNORE;IGNORE
+<U30BE> <U30BD>;<U30BE>;IGNORE;IGNORE
+<U305E> <U30BD>;<U305E>;IGNORE;IGNORE
+<U30BF> <U30BF>;<U30BF>;IGNORE;IGNORE
+<U305F> <U30BF>;<U305F>;IGNORE;IGNORE
+<U30C0> <U30BF>;<U30C0>;IGNORE;IGNORE
+<U3060> <U30BF>;<U3060>;IGNORE;IGNORE
+<U30C1> <U30C1>;<U30C1>;IGNORE;IGNORE
+<U3061> <U30C1>;<U3061>;IGNORE;IGNORE
+<U30C2> <U30C1>;<U30C2>;IGNORE;IGNORE
+<U3062> <U30C1>;<U3062>;IGNORE;IGNORE
+<U30C3> <U30C3>;<U30C3>;IGNORE;IGNORE
+<U3063> <U30C3>;<U3063>;IGNORE;IGNORE
+<U30C4> <U30C3>;<U30C4>;IGNORE;IGNORE
+<U3064> <U30C3>;<U3064>;IGNORE;IGNORE
+<U30C5> <U30C3>;<U30C5>;IGNORE;IGNORE
+<U3065> <U30C3>;<U3065>;IGNORE;IGNORE
+<U30C6> <U30C6>;<U30C6>;IGNORE;IGNORE
+<U3066> <U30C6>;<U3066>;IGNORE;IGNORE
+<U30C7> <U30C6>;<U30C7>;IGNORE;IGNORE
+<U3067> <U30C6>;<U3067>;IGNORE;IGNORE
+<U30C8> <U30C8>;<U30C8>;IGNORE;IGNORE
+<U3068> <U30C8>;<U3068>;IGNORE;IGNORE
+<U30C9> <U30C8>;<U30C9>;IGNORE;IGNORE
+<U3069> <U30C8>;<U3069>;IGNORE;IGNORE
+<U30CA> <U30CA>;<U30CA>;IGNORE;IGNORE
+<U306A> <U30CA>;<U306A>;IGNORE;IGNORE
+<U30CB> <U30CB>;<U30CB>;IGNORE;IGNORE
+<U306B> <U30CB>;<U306B>;IGNORE;IGNORE
+<U30CC> <U30CC>;<U30CC>;IGNORE;IGNORE
+<U306C> <U30CC>;<U306C>;IGNORE;IGNORE
+<U30CD> <U30CD>;<U30CD>;IGNORE;IGNORE
+<U306D> <U30CD>;<U306D>;IGNORE;IGNORE
+<U30CE> <U30CE>;<U30CE>;IGNORE;IGNORE
+<U306E> <U30CE>;<U306E>;IGNORE;IGNORE
+<U30CF> <U30CF>;<U30CF>;IGNORE;IGNORE
+<U306F> <U30CF>;<U306F>;IGNORE;IGNORE
+<U30D0> <U30CF>;<U30D0>;IGNORE;IGNORE
+<U3070> <U30CF>;<U3070>;IGNORE;IGNORE
+<U30D1> <U30CF>;<U30D1>;IGNORE;IGNORE
+<U3071> <U30CF>;<U3071>;IGNORE;IGNORE
+<U30D2> <U30D2>;<U30D2>;IGNORE;IGNORE
+<U3072> <U30D2>;<U3072>;IGNORE;IGNORE
+<U30D3> <U30D2>;<U30D3>;IGNORE;IGNORE
+<U3073> <U30D2>;<U3073>;IGNORE;IGNORE
+<U30D4> <U30D2>;<U30D4>;IGNORE;IGNORE
+<U3074> <U30D2>;<U3074>;IGNORE;IGNORE
+<U30D5> <U30D5>;<U30D5>;IGNORE;IGNORE
+<U3075> <U30D5>;<U3075>;IGNORE;IGNORE
+<U30D6> <U30D5>;<U30D6>;IGNORE;IGNORE
+<U3076> <U30D5>;<U3076>;IGNORE;IGNORE
+<U30D7> <U30D5>;<U30D7>;IGNORE;IGNORE
+<U3077> <U30D5>;<U3077>;IGNORE;IGNORE
+<U30D8> <U30D8>;<U30D8>;IGNORE;IGNORE
+<U3078> <U30D8>;<U3078>;IGNORE;IGNORE
+<U30D9> <U30D8>;<U30D9>;IGNORE;IGNORE
+<U3079> <U30D8>;<U3079>;IGNORE;IGNORE
+<U30DA> <U30D8>;<U30DA>;IGNORE;IGNORE
+<U307A> <U30D8>;<U307A>;IGNORE;IGNORE
+<U30DB> <U30DB>;<U30DB>;IGNORE;IGNORE
+<U307B> <U30DB>;<U307B>;IGNORE;IGNORE
+<U30DC> <U30DB>;<U30DC>;IGNORE;IGNORE
+<U307C> <U30DB>;<U307C>;IGNORE;IGNORE
+<U30DD> <U30DB>;<U30DD>;IGNORE;IGNORE
+<U307D> <U30DB>;<U307D>;IGNORE;IGNORE
+<U30DE> <U30DE>;<U30DE>;IGNORE;IGNORE
+<U307E> <U30DE>;<U307E>;IGNORE;IGNORE
+<U30DF> <U30DF>;<U30DF>;IGNORE;IGNORE
+<U307F> <U30DF>;<U307F>;IGNORE;IGNORE
+<U30E0> <U30E0>;<U30E0>;IGNORE;IGNORE
+<U3080> <U30E0>;<U3080>;IGNORE;IGNORE
+<U30E1> <U30E1>;<U30E1>;IGNORE;IGNORE
+<U3081> <U30E1>;<U3081>;IGNORE;IGNORE
+<U30E2> <U30E2>;<U30E2>;IGNORE;IGNORE
+<U3082> <U30E2>;<U3082>;IGNORE;IGNORE
+<U30E3> <U30E3>;<U30E3>;IGNORE;IGNORE
+<U3083> <U30E3>;<U3083>;IGNORE;IGNORE
+<U30E4> <U30E3>;<U30E4>;IGNORE;IGNORE
+<U3084> <U30E3>;<U3084>;IGNORE;IGNORE
+<U30E5> <U30E5>;<U30E5>;IGNORE;IGNORE
+<U3085> <U30E5>;<U3085>;IGNORE;IGNORE
+<U30E6> <U30E5>;<U30E6>;IGNORE;IGNORE
+<U3086> <U30E5>;<U3086>;IGNORE;IGNORE
+<U30E7> <U30E7>;<U30E7>;IGNORE;IGNORE
+<U3087> <U30E7>;<U3087>;IGNORE;IGNORE
+<U30E8> <U30E7>;<U30E8>;IGNORE;IGNORE
+<U3088> <U30E7>;<U3088>;IGNORE;IGNORE
+<U30E9> <U30E9>;<U30E9>;IGNORE;IGNORE
+<U3089> <U30E9>;<U3089>;IGNORE;IGNORE
+<U30EA> <U30EA>;<U30EA>;IGNORE;IGNORE
+<U308A> <U30EA>;<U308A>;IGNORE;IGNORE
+<U30EB> <U30EB>;<U30EB>;IGNORE;IGNORE
+<U308B> <U30EB>;<U308B>;IGNORE;IGNORE
+<U30EC> <U30EC>;<U30EC>;IGNORE;IGNORE
+<U308C> <U30EC>;<U308C>;IGNORE;IGNORE
+<U30ED> <U30ED>;<U30ED>;IGNORE;IGNORE
+<U308D> <U30ED>;<U308D>;IGNORE;IGNORE
+<U30EE> <U30EE>;<U30EE>;IGNORE;IGNORE
+<U308E> <U30EE>;<U308E>;IGNORE;IGNORE
+<U30EF> <U30EE>;<U30EF>;IGNORE;IGNORE
+<U308F> <U30EE>;<U308F>;IGNORE;IGNORE
+<U30F0> <U30F0>;<U30F0>;IGNORE;IGNORE
+<U3090> <U30F0>;<U3090>;IGNORE;IGNORE
+<U30F1> <U30F1>;<U30F1>;IGNORE;IGNORE
+<U3091> <U30F1>;<U3091>;IGNORE;IGNORE
+<U30F2> <U30F2>;<U30F2>;IGNORE;IGNORE
+<U3092> <U30F2>;<U3092>;IGNORE;IGNORE
+<U30F3> <U30F3>;<U30F3>;IGNORE;IGNORE
+<U3093> <U30F3>;<U3093>;IGNORE;IGNORE
+
+order_end
+
diff --git a/ap/build/uClibc/extra/locale/collation/tt_RU b/ap/build/uClibc/extra/locale/collation/tt_RU
new file mode 100644
index 0000000..1ca9685
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/tt_RU
@@ -0,0 +1,162 @@
+
+% The new (2000) latin tatar alphabet is:
+% a, sw, b, c, c,, d, e, f, g, g(, h, i (dotless i),
+% i. (i with dot), j, k, q, l, m, n, ng, o, o--, p, r, s, s,,
+% t, u, u:, v, w, x, y, z
+% <U0430>,<U04D9>,<U0431>,<U04B9>,<U0447>,<U0434>,<U0435>,<U0444>,<U049D>,<U0493>,<U04BB>,
+% <U044B>, <U0438>, <U0436>,<U043A>,<U0433>,<U043B>,<U043C>,<U043D>,<U04A3>,
+% <U043E>,<U04E9>,<U043F>,<U0440>,<U0441>,<U0448>,<U0442>,<U0443>,<U04AF>,<U0432>,???, <U0445>,<U0458>,<U0437>
+%
+% However, a commonly used alphabet in internet uses <U00E4>, <U00F6> and <U00F1>
+% for respectively <U0259>, <U0275> and <U014B>
+
+copy "iso14651_t1"
+
+collating-symbol <sw>
+collating-symbol <c,>
+collating-symbol <g(>
+collating-symbol <i.>
+collating-symbol <ng>
+collating-symbol <o-->
+collating-symbol <s,>
+collating-symbol <u:>
+
+collating-symbol <g-=>
+collating-symbol <sw=>
+collating-symbol <k//=>
+collating-symbol <o-=>
+collating-symbol <u'=>
+collating-symbol <h'=>
+collating-symbol <c%//=>
+collating-symbol <n,=>
+
+reorder-after <a>
+<sw>
+reorder-after <c>
+<c,>
+reorder-after <g>
+<g(>
+reorder-after <h>
+<i>
+<i.>
+<j>
+<k>
+<q>
+reorder-after <n>
+<ng>
+reorder-after <o>
+<o-->
+reorder-after <s>
+<s,>
+reorder-after <u>
+<u:>
+
+% FIXME: check order of cyrillic letters (I copied from cyr Azeri)
+reorder-after <CYR-GHE>
+<g-=>
+reorder-after <CYR-IE>
+<sw=>
+reorder-after <CYR-KA>
+<k//=>
+reorder-after <CYR-EN>
+<n,=>
+reorder-after <CYR-O>
+<o-=>
+reorder-after <CYR-OUBRE>
+<u'=>
+reorder-after <CYR-HA>
+<h'=>
+reorder-after <CYR-CHE>
+<c%//=>
+
+reorder-after <U0061>
+<U0259> <sw>;<PCL>;<MIN>;IGNORE
+<U00E4> <sw>;<REU>;<MIN>;IGNORE
+reorder-after <U0041>
+<U018F> <sw>;<PCL>;<CAP>;IGNORE
+<U00C4> <sw>;<REU>;<CAP>;IGNORE
+
+reorder-after <U0063>
+<U00E7> <c,>;<CDI>;<MIN>;IGNORE
+reorder-after <U0043>
+<U00C7> <c,>;<CDI>;<CAP>;IGNORE
+
+reorder-after <U0067>
+<U011F> <g(>;<BRE>;<MIN>;IGNORE
+reorder-after <U0047>
+<U011E> <g(>;<BRE>;<CAP>;IGNORE
+
+reorder-after <U0068>
+<U0131> <i>;<BAS>;<MIN>;IGNORE
+<U0069> <i.>;<PCT>;<MIN>;IGNORE
+reorder-after <U0048>
+<U0049> <i>;<BAS>;<CAP>;IGNORE
+<U0130> <i.>;<PCT>;<CAP>;IGNORE
+
+reorder-after <U006E>
+<U014B> <ng>;<PCL>;<MIN>;IGNORE
+<U00F1> <ng>;<TIL>;<MIN>;IGNORE
+reorder-after <U004E>
+<U014A> <ng>;<PCL>;<CAP>;IGNORE
+<U00D1> <ng>;<TIL>;<CAP>;IGNORE
+
+reorder-after <U006F>
+<U0275> <o-->;<REU>;<MIN>;IGNORE
+<U00F6> <o-->;<REU>;<MIN>;IGNORE
+reorder-after <U004F>
+<U019F> <o-->;<REU>;<CAP>;IGNORE
+<U00D6> <o-->;<REU>;<CAP>;IGNORE
+
+reorder-after <U0073>
+<U015F> <s,>;<CDI>;<MIN>;IGNORE
+reorder-after <U0053>
+<U015E> <s,>;<CDI>;<CAP>;IGNORE
+
+reorder-after <U0075>
+<U00FC> <u:>;<REU>;<MIN>;IGNORE
+reorder-after <U0055>
+<U00DC> <u:>;<REU>;<CAP>;IGNORE
+
+reorder-after <U0433>
+<U0493> <g-=>;<PCL>;<MIN>;IGNORE
+reorder-after <U0413>
+<U0492> <g-=>;<PCL>;<CAP>;IGNORE
+
+reorder-after <U0435>
+<U04D9> <sw=>;<PCL>;<MIN>;IGNORE
+reorder-after <U0415>
+<U04D8> <sw=>;<PCL>;<CAP>;IGNORE
+
+reorder-after <U043A>
+<U049D> <k//=>;<PCL>;<MIN>;IGNORE
+reorder-after <U041A>
+<U049C> <k//=>;<PCL>;<CAP>;IGNORE
+
+reorder-after <U043D>
+<U04A3> <n,=>;<PCL>;<MIN>;IGNORE
+reorder-after <U041D>
+<U04A2> <n,=>;<PCL>;<CAP>;IGNORE
+
+reorder-after <U043E>
+<U04E9> <o-=>;<PCL>;<MIN>;IGNORE
+reorder-after <U041E>
+<U04E8> <o-=>;<PCL>;<CAP>;IGNORE
+
+reorder-after <U0443>
+<U04AF> <u'=>;<PCL>;<MIN>;IGNORE
+reorder-after <U0423>
+<U04AE> <u'=>;<PCL>;<CAP>;IGNORE
+
+reorder-after <U0445>
+<U04BB> <h'=>;<PCL>;<MIN>;IGNORE
+reorder-after <U0425>
+<U04BA> <h'=>;<PCL>;<CAP>;IGNORE
+
+reorder-after <U0447>
+<U04B9> <c%//=>;<PCL>;<MIN>;IGNORE
+reorder-after <U0427>
+<U04B8> <c%//=>;<PCL>;<CAP>;IGNORE
+
+reorder-end
+
+
diff --git a/ap/build/uClibc/extra/locale/collation/uk_UA b/ap/build/uClibc/extra/locale/collation/uk_UA
new file mode 100644
index 0000000..342a761
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/uk_UA
@@ -0,0 +1,15 @@
+copy "iso14651_t1"
+
+% iso14651_t1 is missing Ukrainian ghe
+collating-symbol <UKR-GHE>
+
+reorder-after <CYR-GZHE>
+<UKR-GHE>
+
+reorder-after <U0453>
+<U0491> <UKR-GHE>;<BAS>;<MIN>;IGNORE
+
+reorder-after <U0403>
+<U0490> <UKR-GHE>;<BAS>;<CAP>;IGNORE
+
+reorder-end
diff --git a/ap/build/uClibc/extra/locale/collation/ur_PK b/ap/build/uClibc/extra/locale/collation/ur_PK
new file mode 100644
index 0000000..d66184e
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/ur_PK
@@ -0,0 +1 @@
+copy "en_DK"
diff --git a/ap/build/uClibc/extra/locale/collation/uz_UZ b/ap/build/uClibc/extra/locale/collation/uz_UZ
new file mode 100644
index 0000000..afdc7d4
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/uz_UZ
@@ -0,0 +1,28 @@
+copy "iso14651_t1"
+
+%% a b c d e f g g' h i j k l m n o o' p q r s t u v x y z
+collating-symbol <g-'-uz>
+collating-element <g-'> from "<U0067><U0027>"
+collating-element <G-'> from "<U0047><U0027>"
+collating-symbol <o-'-uz>
+collating-element <o-'> from "<U006F><U0027>"
+collating-element <O-'> from "<U004F><U0027>"
+
+reorder-after <g>
+<g-'-uz>
+
+reorder-after <o>
+<o-'-uz>
+
+reorder-after <U0067>
+<g-'> <g-'-uz>;<PCL>;<MIN>;IGNORE
+reorder-after <U0047>
+<G-'> <g-'-uz>;<PCL>;<CAP>;IGNORE
+
+reorder-after <U006F>
+<o-'> <o-'-uz>;<PCL>;<MIN>;IGNORE
+reorder-after <U004F>
+<O-'> <o-'-uz>;<PCL>;<CAP>;IGNORE
+
+reorder-end
+
diff --git a/ap/build/uClibc/extra/locale/collation/vi_VN b/ap/build/uClibc/extra/locale/collation/vi_VN
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/vi_VN
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/wa_BE b/ap/build/uClibc/extra/locale/collation/wa_BE
new file mode 100644
index 0000000..be8221c
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/wa_BE
@@ -0,0 +1 @@
+copy "fr_BE"
diff --git a/ap/build/uClibc/extra/locale/collation/yi_US b/ap/build/uClibc/extra/locale/collation/yi_US
new file mode 100644
index 0000000..91de1b9
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/yi_US
@@ -0,0 +1,43 @@
+copy "iso14651_t1"
+
+collating-symbol <b-h-yi>
+collating-element <B+'H-> from "<U05D1><U05BF>"
+collating-symbol <k-m-yi>
+collating-element <K+.MH> from "<U05DB><U05BC>"
+collating-symbol <p-m-yi>
+collating-element <P+.MH> from "<U05E4><U05BC>"
+collating-symbol <p-h-yi>
+collating-element <P+'H-> from "<U05E4><U05BF>"
+collating-symbol <s-h-yi>
+collating-element <Sh'H.L> from "<U05E9><U05C2>"
+collating-symbol <t-m-yi>
+collating-element <T+.MH> from "<U05EA><U05BC>"
+
+reorder-after <bet>
+<b-h-yi>
+reorder-after <yod>
+<k-m-yi>
+reorder-after <ayin>
+<p-m-yi>
+<p-h-yi>
+reorder-after <shin>
+<s-h-yi>
+<t-m-yi>
+
+reorder-after <U05D1>
+<B+'H-> <b-h-yi>;<PCT>;<MIN>;IGNORE
+reorder-after <U05D5>
+<U05F0> "<vav><vav>";"<LIG><LIG>";IGNORE;IGNORE
+<U05F1> "<vav><yod>";"<LIG><LIG>";IGNORE;IGNORE
+reorder-after <U05D9>
+<U05F2> "<yod><yod>";"<LIG><LIG>";IGNORE;IGNORE
+<K+.MH> <k-m-yi>;<PCT>;<MIN>;IGNORE
+reorder-after <U05E2>
+<P+.MH> <p-m-yi>;<PCT>;<MIN>;IGNORE
+<P+'H-> <p-h-yi>;<PCT>;<MIN>;IGNORE
+reorder-after <U05E9>
+<Sh'H.L> <s-h-yi>;<PCT>;<MIN>;IGNORE
+<T+.MH> <t-m-yi>;<PCT>;<MIN>;IGNORE
+
+reorder-end
+
diff --git a/ap/build/uClibc/extra/locale/collation/zh_CN b/ap/build/uClibc/extra/locale/collation/zh_CN
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/zh_CN
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/collation/zh_HK b/ap/build/uClibc/extra/locale/collation/zh_HK
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/zh_HK
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/zh_SG b/ap/build/uClibc/extra/locale/collation/zh_SG
new file mode 100644
index 0000000..35ae3c6
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/zh_SG
@@ -0,0 +1,4 @@
+
+% Copy the template from ISO/IEC 14651
+copy "iso14651_t1"
+
diff --git a/ap/build/uClibc/extra/locale/collation/zh_TW b/ap/build/uClibc/extra/locale/collation/zh_TW
new file mode 100644
index 0000000..3738ee3
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/collation/zh_TW
@@ -0,0 +1 @@
+copy "iso14651_t1"
diff --git a/ap/build/uClibc/extra/locale/gen_collate.c b/ap/build/uClibc/extra/locale/gen_collate.c
new file mode 100644
index 0000000..15582c1
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/gen_collate.c
@@ -0,0 +1,3997 @@
+/*
+ * Usage:
+ * gen_collate <INPUTDIR> [-o OUTPUTFILE] LOCALE ...
+ *
+ * Generate collation data from locales LOCALE.
+ * Reads all LOCALE from INPUTDIR and writes collation data to OUTPUTFILE.
+ *
+ * The output file defaults to "locales_collate.h".
+ */
+/* TODO:
+ *
+ * add UNDEFINED at end if not specified
+ * convert POSITION -> FORWARD,POSITION
+ *
+ *
+ * deal with lowercase in <Uhhhh>
+ *
+ * what about reorders that keep the same rule?
+ *
+ * remove "unused" collation elements? (probably doesn't save much)
+ *
+ * add_rule function ... returns index into rule table after possibly adding custom-indexed rule
+ * but don't forget about multichar weights... replace with strings of indexes
+ *
+ */
+
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdint.h>
+#include <stdarg.h>
+#include <limits.h>
+#include <ctype.h>
+#include <assert.h>
+#include <errno.h>
+#include <search.h>
+
+typedef struct {
+ char *name; /* */
+
+ int num_weights; /* */
+
+ int ii_shift; /* */
+ int ti_shift; /* */
+ int ii_len; /* */
+ int ti_len; /* */
+ int max_weight; /* */
+ int num_col_base; /* */
+ int max_col_index; /* */
+ int undefined_idx; /* */
+ int range_low; /* */
+ int range_count; /* high - low */
+ int range_base_weight; /* */
+ int num_starters; /* */
+
+ int range_rule_offset; /* */
+ int wcs2colidt_offset; /* */
+ int index2weight_offset; /* */
+ int index2ruleidx_offset; /* */
+ int multistart_offset; /* */
+
+} base_locale_t;
+
+#define BASE_LOCALE_LEN 20
+static base_locale_t base_locale_array[BASE_LOCALE_LEN];
+static size_t base_locale_len;
+
+typedef struct {
+ char *name; /* */
+
+ int base_idx; /* */
+
+ int undefined_idx; /* */
+
+ int overrides_offset; /* */
+ int multistart_offset; /* */
+} der_locale_t;
+
+#define DER_LOCALE_LEN 300
+static der_locale_t der_locale_array[DER_LOCALE_LEN];
+static size_t der_locale_len;
+
+
+#define OVERRIDE_LEN 50000
+static uint16_t override_buffer[OVERRIDE_LEN];
+static size_t override_len;
+
+#define MULTISTART_LEN 10000
+static uint16_t multistart_buffer[MULTISTART_LEN];
+static size_t multistart_len;
+
+#define WCS2COLIDT_LEN 200000
+static uint16_t wcs2colidt_buffer[WCS2COLIDT_LEN];
+static size_t wcs2colidt_len;
+
+#define INDEX2WEIGHT_LEN 200000
+static uint16_t index2weight_buffer[INDEX2WEIGHT_LEN];
+static size_t index2weight_len;
+
+static uint16_t index2ruleidx_buffer[INDEX2WEIGHT_LEN];
+static size_t index2ruleidx_len;
+
+#define WEIGHTSTR_LEN 10000
+static uint16_t weightstr_buffer[WEIGHTSTR_LEN];
+static size_t weightstr_len;
+
+#define RULETABLE_LEN (1L<<16)
+static uint16_t ruletable_buffer[RULETABLE_LEN];
+static size_t ruletable_len;
+
+
+#define RANGE (0x10000UL)
+
+typedef uint16_t tbl_item;
+
+static uint16_t u16_buf[10000];
+static int u16_buf_len;
+static int u16_starter;
+
+typedef struct {
+ uint16_t ii_len;
+ uint16_t ti_len;
+ uint16_t ut_len;
+
+ unsigned char ii_shift;
+ unsigned char ti_shift;
+
+ tbl_item *ii;
+ tbl_item *ti;
+ tbl_item *ut;
+} table_data;
+
+
+static size_t newopt(tbl_item *ut, size_t usize, int shift, table_data *tbl);
+
+
+#define MAX_COLLATION_WEIGHTS 4
+
+#define MAX_FNO 1
+#define MAX_FILES (MAX_FNO + 1)
+
+static FILE *fstack[MAX_FILES];
+static char *fname[MAX_FILES];
+static int lineno[MAX_FILES];
+static int fno = -1;
+
+static tbl_item wcs2index[RANGE];
+
+static char linebuf[1024];
+static char *pos;
+static char *pos_e = NULL;
+static char end_of_token = 0; /* slot to save */
+
+#define IN_ORDER 0x01
+#define IN_REORDER 0x02
+#define IN_REORDER_SECTIONS 0x04
+static int order_state;
+static int cur_num_weights; /* number of weights in current use */
+static char cur_rule[MAX_COLLATION_WEIGHTS];
+
+static int anonsection = 0;
+
+typedef struct ll_item_struct ll_item_t;
+
+struct ll_item_struct {
+ ll_item_t *next;
+ ll_item_t *prev;
+ void *data;
+ int data_type;
+ int idx;
+};
+
+static ll_item_t *reorder_section_ptr = NULL;
+static int superset;
+static int superset_order_start_cnt; /* only support one order for now */
+static int superset_in_sync;
+static ll_item_t *comm_cur_ptr;
+static ll_item_t *comm_prev_ptr;
+
+enum {
+ R_FORWARD = 0x01,
+ R_POSITION = 0x02,
+ R_BACKWARD = 0x04 /* must be largest in value */
+};
+
+typedef struct {
+ size_t num_weights;
+ char rule[MAX_COLLATION_WEIGHTS];
+ const char *colitem[MAX_COLLATION_WEIGHTS];
+} weight_t;
+
+static void *root_weight = NULL;
+size_t unique_weights = 0;
+
+typedef struct {
+ const char *symbol;
+ weight_t *weight;
+} weighted_item_t;
+
+typedef struct {
+ const char *symbol1;
+ const char *symbol2;
+ int length;
+ weight_t *weight;
+} range_item_t;
+
+typedef struct {
+ const char *name;
+ ll_item_t *itm_list; /* weighted_item_t list .. circular!!! */
+ size_t num_items;
+ size_t num_rules;
+ char rules[MAX_COLLATION_WEIGHTS];
+} section_t;
+
+static section_t *cur_section = NULL;
+
+typedef struct {
+ const char *symbol;
+ ll_item_t *node;
+} wi_index_t;
+
+typedef struct col_locale_struct col_locale_t;
+
+struct col_locale_struct {
+ char *name;
+ void *root_colitem; /* all base and derived, or just derived */
+ void *root_element;
+ void *root_scripts;
+ void *root_wi_index;
+ void *root_wi_index_reordered;
+ ll_item_t *section_list;
+ col_locale_t *base_locale; /* null if this is a base */
+ void *root_derived_wi;
+ ll_item_t *derived_list;
+ void *root_starter_char;
+ void *root_starter_all;
+ ll_item_t *undefined_idx;
+};
+
+typedef struct {
+ const char *symbol;
+ int idx;
+} col_index_t;
+
+static void *root_col_locale = NULL;
+
+typedef struct {
+ const char *keyword;
+ void (*handler)(void);
+} keyword_table_t;
+
+typedef struct {
+ const char *string;
+ const char *element; /* NULL if collating symbol */
+} colitem_t;
+
+static col_locale_t *cur_base = NULL;
+static col_locale_t *cur_derived = NULL;
+static col_locale_t *cur_col = NULL;
+
+static void *root_sym = NULL;
+static size_t num_sym = 0;
+static size_t mem_sym = 0;
+
+static const char *inputdir;
+static size_t inputdir_len;
+static unsigned verbose = 0;
+enum {
+ VINFO = (1<<0),
+ VDETAIL = (1<<1),
+};
+
+static void error_msg(const char *fmt, ...) __attribute__ ((noreturn, format (printf, 1, 2)));
+static void *xmalloc(size_t n);
+static char *xsymdup(const char *s); /* only allocate once... store in a tree */
+static void pushfile(char *filename);
+static void popfile(void);
+static void processfile(void);
+static int iscommentchar(int);
+static void eatwhitespace(void);
+static int next_line(void);
+static char *next_token(void);
+static void do_unrecognized(void);
+static col_locale_t *new_col_locale(char *name);
+static ll_item_t *new_ll_item(int data_type, void *data);
+static weight_t *register_weight(weight_t *w);
+static size_t ll_len(ll_item_t *l);
+static size_t ll_count(ll_item_t *l, int mask);
+static void add_wi_index(ll_item_t *l);
+static size_t tnumnodes(const void *root);
+static ll_item_t *find_wi_index(const char *sym, col_locale_t *cl);
+static void mark_reordered(const char *sym);
+static ll_item_t *find_wi_index_reordered(const char *sym);
+static ll_item_t *next_comm_ptr(void);
+static ll_item_t *init_comm_ptr(void);
+static ll_item_t *find_ll_last(ll_item_t *p);
+static void dump_weights(const char *name);
+static void finalize_base(void);
+static int is_ucode(const char *s);
+static int sym_cmp(const void *n1, const void *n2);
+static void do_starter_lists(col_locale_t *cl);
+static void dump_base_locale(int n);
+static void dump_der_locale(int n);
+static void dump_collate(FILE *fp);
+
+enum {
+ DT_SECTION = 0x01,
+ DT_WEIGHTED = 0x02,
+ DT_REORDER = 0x04, /* a section to support reorder_after */
+ DT_COL_LOCALE = 0x08,
+ DT_RANGE = 0x10,
+};
+
+static int verbose_msg(const unsigned lvl, const char *fmt, ...)
+{
+ va_list arg;
+ int ret = 0;
+
+ if (verbose & lvl) {
+ va_start(arg, fmt);
+ ret = vfprintf(stderr, fmt, arg);
+ va_end(arg);
+ }
+ return ret;
+}
+static section_t *new_section(const char *name)
+{
+ section_t *p;
+ char buf[128];
+
+ p = xmalloc(sizeof(section_t));
+ if (!name) { /* anonymous section */
+ name = buf;
+ snprintf(buf, sizeof(buf), "anon%05d", anonsection);
+ ++anonsection;
+ } else if (*name != '<') { /* reorder */
+ name = buf;
+ snprintf(buf, sizeof(buf), "%s %05d", cur_col->name, anonsection);
+ ++anonsection;
+ }
+#warning devel code
+/* verbose_msg(VDETAIL, "section %s\n", name); */
+ p->name = xsymdup(name);
+ p->itm_list = NULL;
+ p->num_items = 0;
+ p->num_rules = 0;
+ memset(p->rules, 0, MAX_COLLATION_WEIGHTS);
+/* cur_num_weights = p->num_rules = 0; */
+/* memset(p->rules, 0, MAX_COLLATION_WEIGHTS); */
+/* memset(cur_rule, R_FORWARD, 4); */
+
+#warning devel code
+ if (*p->name == 'a') {
+ cur_num_weights = p->num_rules = 4;
+ memset(p->rules, R_FORWARD, 4);
+ memset(cur_rule, R_FORWARD, 4);
+ p->rules[3] |= R_POSITION;
+ cur_rule[3] |= R_POSITION;
+ }
+/* verbose_msg(VDETAIL, "new section %s -- cur_num_weights = %d\n", p->name, cur_num_weights); */
+
+ return p;
+}
+
+
+
+static void do_order_start(void);
+static void do_order_end(void);
+static void do_reorder_after(void);
+static void do_reorder_end(void);
+static void do_reorder_sections_after(void);
+static void do_reorder_sections_end(void);
+static void do_copy(void);
+static void do_colsym(void);
+static void do_colele(void);
+static void do_script(void);
+static void do_range(void);
+
+static col_locale_t *new_col_locale(char *name);
+static int colitem_cmp(const void *n1, const void *n2);
+static int colelement_cmp(const void *n1, const void *n2);
+static void del_colitem(colitem_t *p);
+static colitem_t *new_colitem(char *item, char *def);
+static void add_colitem(char *item, char *def);
+static void add_script(const char *s);
+static unsigned int add_rule(weighted_item_t *wi);
+static unsigned int add_range_rule(range_item_t *ri);
+
+static const keyword_table_t keyword_table[] = {
+ { "collating-symbol", do_colsym },
+ { "collating-element", do_colele },
+ { "script", do_script },
+ { "copy", do_copy },
+ { "order_start", do_order_start },
+ { "order_end", do_order_end },
+ { "order-end", do_order_end },
+ { "reorder-after", do_reorder_after },
+ { "reorder-end", do_reorder_end },
+ { "reorder-sections-after", do_reorder_sections_after },
+ { "reorder-sections-end", do_reorder_sections_end },
+ { "UCLIBC_RANGE", do_range },
+ { NULL, do_unrecognized }
+};
+
+
+static void do_unrecognized(void)
+{
+#if 1
+ error_msg("warning: unrecognized: %s", pos);
+#else
+/* verbose_msg(VDETAIL, "warning: unrecognized initial keyword \"%s\"\n", pos); */
+ fprintf(stderr, "warning: unrecognized: %s", pos);
+ if (end_of_token) {
+ fprintf(stderr, "%c%s", end_of_token, pos_e+1);
+ }
+ fprintf(stderr, "\n");
+#endif
+}
+
+/* typedef struct { */
+/* const char *symbol1; */
+/* const char *symbol2; */
+/* int length; */
+/* weight_t *weight; */
+/* } range_item_t; */
+
+static void do_range(void)
+{
+ range_item_t *ri;
+ weight_t w;
+ int i;
+ char *s;
+ char *s1;
+ char *s2;
+ const char **ci;
+ ll_item_t *lli;
+
+ assert(!superset);
+ assert(order_state == IN_ORDER);
+
+ s1 = next_token();
+ if (!s1) {
+ error_msg("missing start of range");
+ }
+ if (!is_ucode(s1)) {
+ error_msg("start of range is not a ucode: %s", s1);
+ }
+ s1 = xsymdup(s1);
+
+ s2 = next_token();
+ if (!s2) {
+ error_msg("missing end of range");
+ }
+ if (!is_ucode(s2)) {
+ error_msg("end of range is not a ucode: %s", s2);
+ }
+ s2 = xsymdup(s2);
+
+ ri = (range_item_t *) xmalloc(sizeof(range_item_t));
+ ri->symbol1 = s1;
+ ri->symbol2 = s2;
+ ri->length = strtoul(s2+2, NULL, 16) - strtoul(s1+2, NULL, 16);
+ if (ri->length <= 0) {
+ error_msg("illegal range length %d", ri->length);
+ }
+
+ s = next_token();
+ w.num_weights = cur_num_weights;
+
+ for (i=0 ; i < cur_num_weights ; i++) {
+ w.rule[i] = cur_rule[i];
+ }
+ ci = w.colitem + (i-1);
+ /* now i == cur_num_weights */
+
+#define STR_DITTO "."
+
+ while (s && *s && i) {
+ --i;
+ if (*s == ';') {
+ ci[-i] = xsymdup(STR_DITTO);
+ if (*++s) {
+ continue;
+ }
+ }
+ if (*s) {
+ ci[-i] = xsymdup(s);
+ }
+ s = next_token();
+ if (s) {
+ if (*s == ';') {
+ ++s;
+ } else if (i) {
+ error_msg("missing seperator");
+ }
+ }
+ }
+ if (s) {
+ error_msg("too many weights: %d %d |%s| %d", cur_num_weights, i, s, (int)*s);
+ }
+
+ while (i) { /* missing weights are not an error */
+ --i;
+ ci[-i] = xsymdup(STR_DITTO);
+ }
+
+ ri->weight = register_weight(&w);
+
+/* if ((i = is_ucode(t)) != 0) { */
+/* assert(!t[i]); */
+/* add_colitem(t, NULL); */
+/* } */
+
+ lli = new_ll_item(DT_RANGE, ri);
+ if (!cur_section->itm_list) {
+/* printf("creating new item list: %s\n", wi->symbol); */
+ cur_section->itm_list = lli;
+ lli->prev = lli->next = lli;
+ ++cur_section->num_items;
+ } else {
+ insque(lli, cur_section->itm_list->prev);
+/* printf("adding item to list: %d - %s\n", ll_len(cur_section->itm_list), wi->symbol); */
+ ++cur_section->num_items;
+ }
+/* add_wi_index(lli); */
+
+
+}
+
+static weighted_item_t *add_weight(char *t)
+{
+ weighted_item_t *wi;
+ weight_t w;
+ int i;
+ char *s;
+ const char **ci;
+
+ t = xsymdup(t);
+
+ s = next_token();
+ w.num_weights = cur_num_weights;
+
+ for (i=0 ; i < cur_num_weights ; i++) {
+ w.rule[i] = cur_rule[i];
+ }
+ ci = w.colitem + (i-1);
+ /* now i == cur_num_weights */
+
+ while (s && *s && i) {
+ --i;
+ if (*s == ';') {
+ ci[-i] = xsymdup(STR_DITTO);
+ if (*++s) {
+ continue;
+ }
+ }
+ if (*s) {
+ if (!strcmp(s,t)) {
+ s = STR_DITTO;
+ }
+ ci[-i] = xsymdup(s);
+ }
+ s = next_token();
+ if (s) {
+ if (*s == ';') {
+ ++s;
+ } else if (i) {
+ error_msg("missing seperator");
+ }
+ }
+ }
+ if (s) {
+ error_msg("too many weights: %d %d |%s| %d", cur_num_weights, i, s, (int)*s);
+ }
+
+ while (i) { /* missing weights are not an error */
+ --i;
+ ci[-i] = xsymdup(STR_DITTO);
+ }
+
+ wi = xmalloc(sizeof(weighted_item_t));
+ wi->symbol = t;
+ wi->weight = register_weight(&w);
+
+ if ((i = is_ucode(t)) != 0) {
+ assert(!t[i]);
+ add_colitem(t, NULL);
+ }
+
+ return wi;
+}
+
+static void add_superset_weight(char *t)
+{
+ ll_item_t *lli;
+ weighted_item_t *wi;
+
+ if (!comm_cur_ptr
+ || (strcmp(t, ((weighted_item_t *)(comm_cur_ptr->data))->symbol) != 0)
+ ) { /* now out of sync */
+ if (superset_in_sync) { /* need a new section */
+ superset_in_sync = 0;
+
+ cur_section = new_section("R");
+ cur_num_weights = cur_section->num_rules
+ = ((section_t *)(cur_base->section_list->data))->num_rules;
+ memcpy(cur_rule,
+ ((section_t *)(cur_base->section_list->data))->rules,
+ MAX_COLLATION_WEIGHTS);
+ memcpy(cur_section->rules,
+ ((section_t *)(cur_base->section_list->data))->rules,
+ MAX_COLLATION_WEIGHTS);
+
+ insque(new_ll_item(DT_REORDER, cur_section), find_ll_last(cur_col->section_list));
+ assert(comm_prev_ptr);
+ lli = new_ll_item(DT_REORDER, cur_section);
+ lli->prev = lli->next = lli;
+ insque(lli, comm_prev_ptr);
+/* verbose_msg(VDETAIL, " subsection -----------------------\n"); */
+ }
+
+/* verbose_msg(VDETAIL, " %s %s\n", t, ((weighted_item_t *)(comm_cur_ptr->data))->symbol); */
+ wi = add_weight(t);
+ lli = new_ll_item(DT_WEIGHTED, wi);
+ mark_reordered(wi->symbol);
+ /* printf("reorder: %s\n", t); */
+ if (!cur_section->itm_list) {
+ cur_section->itm_list = lli;
+ lli->prev = lli->next = lli;
+ ++cur_section->num_items;
+ } else {
+ insque(lli, cur_section->itm_list->prev);
+ ++cur_section->num_items;
+ }
+ add_wi_index(lli);
+
+ } else { /* in sync */
+ superset_in_sync = 1;
+ next_comm_ptr();
+ }
+}
+
+static void do_weight(char *t)
+{
+ weighted_item_t *wi;
+ ll_item_t *lli;
+
+ if (superset) {
+ add_superset_weight(t);
+ return;
+ }
+
+ switch(order_state) {
+ case 0:
+/* fprintf(stdout, "no-order weight: %s\n", t); */
+/* break; */
+ case IN_ORDER:
+ /* in a section */
+/* fprintf(stdout, "weight: %s\n", t); */
+ wi = add_weight(t);
+ lli = new_ll_item(DT_WEIGHTED, wi);
+ if (!cur_section->itm_list) {
+/* fprintf(stdout, "creating new item list: %s %s %p\n", wi->symbol, cur_section->name, lli); */
+ cur_section->itm_list = lli;
+ lli->prev = lli->next = lli;
+ ++cur_section->num_items;
+ } else {
+ insque(lli, cur_section->itm_list->prev);
+/* fprintf(stdout, "adding item to list: %d - %s %p\n", ll_len(cur_section->itm_list), wi->symbol, lli); */
+ ++cur_section->num_items;
+ }
+ add_wi_index(lli);
+ break;
+ case IN_REORDER:
+ /* std rule - but in a block with an insert-after pt */
+ wi = add_weight(t);
+ lli = new_ll_item(DT_WEIGHTED, wi);
+ mark_reordered(wi->symbol);
+/* fprintf(stdout, "reorder: %s %s %p\n", t, cur_section->name, lli); */
+ if (!cur_section->itm_list) {
+ cur_section->itm_list = lli;
+ lli->prev = lli->next = lli;
+ ++cur_section->num_items;
+ } else {
+ insque(lli, cur_section->itm_list->prev);
+ ++cur_section->num_items;
+ }
+ add_wi_index(lli);
+ break;
+ case IN_REORDER_SECTIONS:
+ t = xsymdup(t);
+ if (next_token() != NULL) {
+ error_msg("trailing text in reorder section item: %s", pos);
+ }
+ lli = cur_col->section_list;
+ do {
+ if (lli->data_type & DT_SECTION) {
+ if (!strcmp(((section_t *)(lli->data))->name, t)) {
+ lli->data_type = DT_REORDER;
+ lli = new_ll_item(DT_REORDER, (section_t *)(lli->data));
+ insque(lli, reorder_section_ptr);
+ reorder_section_ptr = lli;
+ return;
+ }
+ }
+ lli = lli->next;
+ } while (lli);
+ error_msg("reorder_sections_after for non-base item currently not supported: %s", t);
+/* fprintf(stdout, "reorder_secitons: %s\n", t); */
+ break;
+ default:
+ error_msg("invalid order_state %d", order_state);
+ }
+}
+
+static int col_locale_cmp(const void *n1, const void *n2)
+{
+ return strcmp(((const col_locale_t *) n1)->name, ((const col_locale_t *) n2)->name);
+}
+
+static void processfile(void)
+{
+ char *t;
+ const keyword_table_t *k;
+
+ order_state = 0;
+#warning devel code
+/* cur_num_weights = 0; */
+/* cur_num_weights = 4; */
+/* memset(cur_rule, R_FORWARD, 4); */
+
+ if (cur_col != cur_base) {
+ cur_col->base_locale = cur_base;
+ cur_col->undefined_idx = cur_base->undefined_idx;
+ if (!cur_base->derived_list) {
+ cur_base->derived_list = new_ll_item(DT_COL_LOCALE, cur_col);
+ } else {
+ insque(new_ll_item(DT_COL_LOCALE, cur_col), find_ll_last(cur_base->derived_list));
+ }
+ }
+
+ if (tfind(cur_col, &root_col_locale, col_locale_cmp)) {
+ error_msg("attempt to read locale: %s", cur_col->name);
+ }
+ if (!tsearch(cur_col, &root_col_locale, col_locale_cmp)) {
+ error_msg("OUT OF MEMORY!");
+ }
+
+ if (superset) {
+ superset_order_start_cnt = 0;
+ superset_in_sync = 0;
+ init_comm_ptr();
+ }
+
+ while (next_line()) {
+/* printf("%5d:", lineno[fno]); */
+/* while ((t = next_token()) != NULL) { */
+/* printf(" |%s|", t); */
+/* printf("\n"); */
+/* } */
+ t = next_token();
+ assert(t);
+ assert(t == pos);
+ if ((*t == '<') || (!strcmp(t, "UNDEFINED"))) {
+ do_weight(t);
+ } else {
+ for (k = keyword_table ; k->keyword ; k++) {
+ if (!strcmp(k->keyword, t)) {
+ break;
+ }
+ }
+ k->handler();
+ }
+ }
+
+ if (cur_base == cur_col) {
+ verbose_msg(VDETAIL, "Base: %15s", cur_col->name);
+ } else {
+#if 1
+ if (!cur_col->undefined_idx) {
+#if 0
+ if (superset) {
+ if (superset_order_start_cnt == 1) {
+ --superset_order_start_cnt; /* ugh.. hack this */
+ }
+ }
+#endif
+ /* This is an awful hack to get around the problem of unspecified UNDEFINED
+ * definitions in the supported locales derived from iso14651_t1. */
+ if (!strcmp(cur_base->name, "iso14651_t1")) {
+ fprintf(stderr, "Warning: adding UNDEFINED entry for %s\n", cur_col->name);
+ strcpy(linebuf, "script <UNDEFINED_SECTION>\n");
+ pos_e = NULL;
+ pos = linebuf;
+ t = next_token();
+ assert(t);
+ assert(t == pos);
+ do_script();
+ strcpy(linebuf, "order_start <UNDEFINED_SECTION>;forward;backward;forward;forward,position\n");
+ pos_e = NULL;
+ pos = linebuf;
+ t = next_token();
+ assert(t);
+ assert(t == pos);
+ do_order_start();
+ strcpy(linebuf, "UNDEFINED IGNORE;IGNORE;IGNORE\n");
+ pos_e = NULL;
+ pos = linebuf;
+ t = next_token();
+ assert(t);
+ assert(t == pos);
+ do_weight(t);
+ strcpy(linebuf, "order_end\n");
+ pos_e = NULL;
+ pos = linebuf;
+ t = next_token();
+ assert(t);
+ assert(t == pos);
+ do_order_end();
+ } else {
+ error_msg("no definition of UNDEFINED for %s", cur_col->name);
+ }
+ }
+#endif
+
+ verbose_msg(VDETAIL, " Der: %15s", cur_col->name);
+ }
+ {
+#if 0
+ ll_item_t *p = cur_col->section_list;
+#endif
+ verbose_msg(VDETAIL, "%6u weights", tnumnodes(cur_col->root_wi_index));
+ if (cur_base) {
+ verbose_msg(VDETAIL, " %6u der %6u reor %6u starter - %u new stubs",
+ tnumnodes(cur_base->root_derived_wi),
+ tnumnodes(cur_base->root_wi_index_reordered),
+ tnumnodes(cur_base->root_starter_char),
+ ll_count(cur_col->section_list, DT_REORDER));
+ }
+ verbose_msg(VDETAIL, "\n");
+
+#if 0
+ while (p) {
+ assert(((section_t *)(p->data))->num_items ==
+ ll_len(((section_t *)(p->data))->itm_list));
+
+
+ if (!p->next &&
+ ((*((section_t *)(p->data))->name == 'a')
+ && (((section_t *)(p->data))->num_items == 0))
+ ) {
+ break;
+ }
+
+ if (!(p->data_type & DT_REORDER)) {
+ if ((*((section_t *)(p->data))->name != 'a')
+ || (((section_t *)(p->data))->num_items > 0)
+ ) {
+ verbose_msg(VDETAIL,
+/* "\t%-15s %zu\n", */
+ "\t%-15s %6u\n",
+ ((section_t *)(p->data))->name,
+ ((section_t *)(p->data))->num_items);
+ }
+ }
+ p = p->next;
+ }
+#endif
+ }
+
+
+}
+
+static void print_colnode(const void *ptr, VISIT order, int level)
+{
+ const colitem_t *p = *(const colitem_t **) ptr;
+
+ if (order == postorder || order == leaf) {
+ printf("collating item = \"%s\"", p->string);
+ if (p->element) {
+ printf(" is %s", p->element);
+ }
+ printf("\n");
+ }
+}
+
+static void print_weight_node(const void *ptr, VISIT order, int level)
+{
+ const weight_t *p = *(const weight_t **) ptr;
+ int i;
+
+ if (order == postorder || order == leaf) {
+ printf("weight: (%d) ", p->num_weights);
+ for (i = 0 ; i < p->num_weights ; i++) {
+ if (p->rule[i] & R_FORWARD) {
+ printf("F");
+ }
+ if (p->rule[i] & R_BACKWARD) {
+ printf("B");
+ }
+ if (p->rule[i] & R_POSITION) {
+ printf("P");
+ }
+ printf(",");
+ }
+ for (i = 0 ; i < p->num_weights ; i++) {
+ printf(" %s", p->colitem[i]);
+ }
+ printf("\n");
+ }
+}
+
+
+typedef struct {
+ const char *der_name;
+ int base_locale;
+} deps_t;
+
+enum {
+ BASE_iso14651_t1,
+ BASE_comm,
+ BASE_cs_CZ,
+ BASE_ar_SA,
+ BASE_th_TH,
+ BASE_ja_JP,
+ BASE_ko_KR,
+ BASE_MAX
+};
+
+static const char *base_name[] = {
+ "iso14651_t1",
+ "comm",
+ "cs_CZ",
+ "ar_SA",
+ "th_TH",
+ "ja_JP",
+ "ko_KR"
+};
+
+
+
+static ll_item_t *locale_list[BASE_MAX];
+
+static void init_locale_list(void)
+{
+ int i;
+
+ for (i=0 ; i < BASE_MAX ; i++) {
+ locale_list[i] = (ll_item_t *) xmalloc(sizeof(ll_item_t));
+ locale_list[i]->prev = locale_list[i]->next = locale_list[i];
+ locale_list[i]->data = (void *) base_name[i];
+ }
+}
+
+
+deps_t deps[] = {
+ { "af_ZA", BASE_iso14651_t1 },
+ { "am_ET", BASE_iso14651_t1 },
+ { "ar_AE", BASE_iso14651_t1 },
+ { "ar_BH", BASE_iso14651_t1 },
+ { "ar_DZ", BASE_iso14651_t1 },
+ { "ar_EG", BASE_iso14651_t1 },
+ { "ar_IN", BASE_iso14651_t1 },
+ { "ar_IQ", BASE_iso14651_t1 },
+ { "ar_JO", BASE_iso14651_t1 },
+ { "ar_KW", BASE_iso14651_t1 },
+ { "ar_LB", BASE_iso14651_t1 },
+ { "ar_LY", BASE_iso14651_t1 },
+ { "ar_MA", BASE_iso14651_t1 },
+ { "ar_OM", BASE_iso14651_t1 },
+ { "ar_QA", BASE_iso14651_t1 },
+ { "ar_SA", BASE_ar_SA },
+ { "ar_SD", BASE_iso14651_t1 },
+ { "ar_SY", BASE_iso14651_t1 },
+ { "ar_TN", BASE_iso14651_t1 },
+ { "ar_YE", BASE_iso14651_t1 },
+ { "az_AZ", BASE_iso14651_t1 },
+ { "be_BY", BASE_iso14651_t1 },
+ { "bg_BG", BASE_iso14651_t1 },
+ { "bn_BD", BASE_iso14651_t1 },
+ { "bn_IN", BASE_iso14651_t1 },
+ { "br_FR", BASE_iso14651_t1 },
+ { "bs_BA", BASE_iso14651_t1 },
+ { "ca_ES", BASE_comm },
+ { "cs_CZ", BASE_cs_CZ },
+ { "cy_GB", BASE_iso14651_t1 },
+ { "da_DK", BASE_comm },
+ { "de_AT", BASE_iso14651_t1 },
+ { "de_BE", BASE_iso14651_t1 },
+ { "de_CH", BASE_iso14651_t1 },
+ { "de_DE", BASE_iso14651_t1 },
+ { "de_LU", BASE_iso14651_t1 },
+ { "el_GR", BASE_iso14651_t1 },
+ { "en_AU", BASE_iso14651_t1 },
+ { "en_BW", BASE_iso14651_t1 },
+ { "en_CA", BASE_comm },
+ { "en_DK", BASE_iso14651_t1 },
+ { "en_GB", BASE_iso14651_t1 },
+ { "en_HK", BASE_iso14651_t1 },
+ { "en_IE", BASE_iso14651_t1 },
+ { "en_IN", BASE_iso14651_t1 },
+ { "en_NZ", BASE_iso14651_t1 },
+ { "en_PH", BASE_iso14651_t1 },
+ { "en_SG", BASE_iso14651_t1 },
+ { "en_US", BASE_iso14651_t1 },
+ { "en_ZA", BASE_iso14651_t1 },
+ { "en_ZW", BASE_iso14651_t1 },
+ { "eo_EO", BASE_iso14651_t1 },
+ { "es_AR", BASE_comm },
+ { "es_BO", BASE_comm },
+ { "es_CL", BASE_comm },
+ { "es_CO", BASE_comm },
+ { "es_CR", BASE_comm },
+ { "es_DO", BASE_comm },
+ { "es_EC", BASE_comm },
+ { "es_ES", BASE_comm },
+ { "es_GT", BASE_comm },
+ { "es_HN", BASE_comm },
+ { "es_MX", BASE_comm },
+ { "es_NI", BASE_comm },
+ { "es_PA", BASE_comm },
+ { "es_PE", BASE_comm },
+ { "es_PR", BASE_comm },
+ { "es_PY", BASE_comm },
+ { "es_SV", BASE_comm },
+ { "es_US", BASE_comm },
+ { "es_UY", BASE_comm },
+ { "es_VE", BASE_comm },
+ { "et_EE", BASE_comm },
+ { "eu_ES", BASE_iso14651_t1 },
+ { "fa_IR", BASE_iso14651_t1 },
+ { "fi_FI", BASE_comm },
+ { "fo_FO", BASE_comm },
+ { "fr_BE", BASE_iso14651_t1 },
+ { "fr_CA", BASE_comm },
+ { "fr_CH", BASE_iso14651_t1 },
+ { "fr_FR", BASE_iso14651_t1 },
+ { "fr_LU", BASE_iso14651_t1 },
+ { "ga_IE", BASE_iso14651_t1 },
+ { "gd_GB", BASE_iso14651_t1 },
+ { "gl_ES", BASE_comm },
+ { "gv_GB", BASE_iso14651_t1 },
+ { "he_IL", BASE_iso14651_t1 },
+ { "hi_IN", BASE_iso14651_t1 },
+ { "hr_HR", BASE_comm },
+ { "hu_HU", BASE_iso14651_t1 },
+ { "hy_AM", BASE_iso14651_t1 },
+ { "id_ID", BASE_iso14651_t1 },
+ { "is_IS", BASE_comm },
+ { "it_CH", BASE_iso14651_t1 },
+ { "it_IT", BASE_iso14651_t1 },
+ { "iw_IL", BASE_iso14651_t1 },
+ { "ja_JP", BASE_ja_JP },
+ { "ka_GE", BASE_iso14651_t1 },
+ { "kl_GL", BASE_comm },
+ { "ko_KR", BASE_ko_KR },
+ { "kw_GB", BASE_iso14651_t1 },
+ { "lt_LT", BASE_comm },
+ { "lv_LV", BASE_comm },
+ { "mi_NZ", BASE_iso14651_t1 },
+ { "mk_MK", BASE_iso14651_t1 },
+ { "mr_IN", BASE_iso14651_t1 },
+ { "ms_MY", BASE_iso14651_t1 },
+ { "mt_MT", BASE_iso14651_t1 },
+ { "nl_BE", BASE_iso14651_t1 },
+ { "nl_NL", BASE_iso14651_t1 },
+ { "nn_NO", BASE_iso14651_t1 },
+ { "no_NO", BASE_comm },
+ { "oc_FR", BASE_iso14651_t1 },
+ { "pl_PL", BASE_comm },
+ { "pt_BR", BASE_iso14651_t1 },
+ { "pt_PT", BASE_iso14651_t1 },
+ { "ro_RO", BASE_iso14651_t1 },
+ { "ru_RU", BASE_iso14651_t1 },
+ { "ru_UA", BASE_iso14651_t1 },
+ { "se_NO", BASE_iso14651_t1 },
+ { "sk_SK", BASE_cs_CZ },
+ { "sl_SI", BASE_comm },
+ { "sq_AL", BASE_iso14651_t1 },
+ { "sr_YU", BASE_iso14651_t1 },
+ { "sv_FI", BASE_comm },
+ { "sv_SE", BASE_iso14651_t1 },
+ { "ta_IN", BASE_iso14651_t1 },
+ { "te_IN", BASE_iso14651_t1 },
+ { "tg_TJ", BASE_iso14651_t1 },
+ { "th_TH", BASE_th_TH },
+ { "ti_ER", BASE_iso14651_t1 },
+ { "ti_ET", BASE_iso14651_t1 },
+ { "tl_PH", BASE_iso14651_t1 },
+ { "tr_TR", BASE_comm },
+ { "tt_RU", BASE_iso14651_t1 },
+ { "uk_UA", BASE_iso14651_t1 },
+ { "ur_PK", BASE_iso14651_t1 },
+ { "uz_UZ", BASE_iso14651_t1 },
+ { "vi_VN", BASE_iso14651_t1 },
+ { "wa_BE", BASE_iso14651_t1 },
+ { "yi_US", BASE_iso14651_t1 },
+ { "zh_CN", BASE_iso14651_t1 },
+ { "zh_HK", BASE_iso14651_t1 },
+ { "zh_SG", BASE_iso14651_t1 },
+ { "zh_TW", BASE_iso14651_t1 },
+};
+
+
+static int der_count[BASE_MAX];
+static const char *new_args[500];
+static int new_arg_count;
+
+static int dep_cmp(const void *s1, const void *s2)
+{
+ return strcmp( (const char *) s1, ((const deps_t *) s2)->der_name);
+}
+
+static int old_main(int argc, char **argv);
+
+int main(int argc, char **argv)
+{
+ const deps_t *p;
+ ll_item_t *lli;
+ int i;
+ int total;
+ char *output_file = "locale_collate.h";
+ unsigned verbosity = 0;
+
+ if (argc < 3) {
+ return EXIT_FAILURE;
+ }
+ --argc;
+ inputdir = strdup(*++argv);
+ inputdir_len = strlen(inputdir);
+ init_locale_list();
+
+ while (--argc) {
+ ++argv;
+ if (!strcmp(*argv, "-o")) {
+ --argc;
+ if (*++argv == NULL) {
+ printf("-o <outfile> requires an argument\n");
+ return EXIT_FAILURE;
+ }
+ output_file = strdup(*argv);
+ continue;
+ } else if (!strcmp(*argv, "-v")) {
+ verbosity++;
+ continue;
+ }
+ p = (const deps_t *) bsearch(*argv, deps, sizeof(deps)/sizeof(deps[0]), sizeof(deps[0]), dep_cmp);
+ if (!p) {
+ if (!strcmp("C", *argv)) {
+ printf("ignoring %s locale\n", *argv);
+ continue;
+ } else {
+ printf("%s not found\n", *argv);
+ return EXIT_FAILURE;
+ }
+ }
+
+ i = p->base_locale;
+ ++der_count[i];
+
+ if (!strcmp(base_name[i], *argv)) {
+ /* same name as base, so skip after count incremented */
+ continue;
+ }
+
+ /* add it to the list. the main body will catch duplicates */
+ lli = (ll_item_t *) xmalloc(sizeof(ll_item_t));
+ lli->prev = lli->next = NULL;
+ lli->data = (void *) *argv;
+ insque(lli, locale_list[i]);
+ }
+
+ total = 0;
+ for (i=0 ; i < BASE_MAX ; i++) {
+/* printf("der_count[%2d] = %3d\n", i, der_count[i]); */
+ total += der_count[i];
+ }
+/* printf("total = %d\n", total); */
+
+ new_args[new_arg_count++] = "dummyprogramname";
+ for (i=0 ; i < BASE_MAX ; i++) {
+ if (!der_count[i]) {
+ continue;
+ }
+ new_args[new_arg_count++] = (i == BASE_comm) ? "-c" : "-b";
+ lli = locale_list[i];
+ do {
+ new_args[new_arg_count++] = (const char *) (lli->data);
+ lli = lli->next;
+ } while (lli != locale_list[i]);
+ new_args[new_arg_count++] = "-f";
+ }
+ for (i=0; i < verbosity; i++)
+ new_args[new_arg_count++] = "-v";
+
+ new_args[new_arg_count++] = "-o";
+ new_args[new_arg_count++] = output_file;
+/*
+ for (i=0 ; i < new_arg_count ; i++) {
+ printf("%3d: %s\n", i, new_args[i]);
+ }
+*/
+ return old_main(new_arg_count, (char **) new_args);
+}
+
+
+/* usage... prog -b basefile derived {derived} -s single {single} */
+
+static int old_main(int argc, char **argv)
+{
+ int next_is_base = 0;
+ int next_is_subset = 0;
+ char *output_file = NULL;
+
+ superset = 0;
+
+ while (--argc) {
+ ++argv;
+ if (**argv == '-') {
+ if ((*argv)[1] == 'd') {
+ dump_weights((*argv) + 2);
+ } else if ((*argv)[1] == 'f') { /* dump all weight rules */
+ finalize_base();
+ } else if ((*argv)[1] == 'R') { /* dump all weight rules */
+ twalk(root_weight, print_weight_node);
+ } else if (((*argv)[1] == 'c') && !(*argv)[2]) { /* new common subset */
+ cur_base = cur_derived = NULL;
+ next_is_subset = 1;
+ next_is_base = 1;
+ superset = 0;
+ } else if (((*argv)[1] == 'b') && !(*argv)[2]) { /* new base locale */
+ cur_base = cur_derived = NULL;
+ next_is_subset = 0;
+ next_is_base = 1;
+ superset = 0;
+ } else if (((*argv)[1] == 's') && !(*argv)[2]) { /* single locales follow */
+ cur_base = cur_derived = NULL;
+ next_is_subset = 0;
+ next_is_base = 2;
+ superset = 0;
+ } else if (((*argv)[1] == 'o') && !(*argv)[2]) { /* output file */
+ --argc;
+ output_file = *++argv;
+ } else if (((*argv)[1] == 'v') && !(*argv)[2]) { /* verbose */
+ ++verbose;
+ } else {
+ error_msg("unrecognized option %s", *argv);
+ }
+ continue;
+ }
+ /* new file */
+ new_col_locale(*argv); /* automaticly sets cur_col */
+ if (next_is_base) {
+ cur_base = cur_col;
+ } else {
+ cur_derived = cur_col;
+ }
+ pushfile(*argv);
+/* verbose_msg(VDETAIL, "processing file %s\n", *argv); */
+ processfile(); /* this does a popfile */
+
+/* twalk(cur_col->root_colitem, print_colnode); */
+
+ if (next_is_base == 1) {
+ next_is_base = 0;
+ }
+ if (next_is_subset) {
+ next_is_subset = 0;
+ superset = 1;
+ }
+ }
+
+ verbose_msg(VINFO, "success!\n");
+ verbose_msg(VINFO,
+/* "num_sym=%zu mem_sym=%zu unique_weights=%zu\n", */
+ "num_sym=%u mem_sym=%u unique_weights=%u\n",
+ num_sym, mem_sym, unique_weights);
+/* twalk(root_weight, print_weight_node); */
+
+ verbose_msg(VINFO, "num base locales = %d num derived locales = %d\n",
+ base_locale_len, der_locale_len);
+
+ verbose_msg(VINFO,
+ "override_len = %d multistart_len = %d weightstr_len = %d\n"
+ "wcs2colidt_len = %d index2weight_len = %d index2ruleidx_len = %d\n"
+ "ruletable_len = %d\n"
+ "total size is %d bytes or %d kB\n",
+ override_len, multistart_len, weightstr_len,
+ wcs2colidt_len, index2weight_len, index2ruleidx_len,
+ ruletable_len,
+#warning mult by 2 for rule indecies
+ (override_len + multistart_len + weightstr_len
+ + wcs2colidt_len + index2weight_len + index2ruleidx_len + ruletable_len) * 2,
+ (override_len + multistart_len + weightstr_len
+ + wcs2colidt_len + index2weight_len + index2ruleidx_len + ruletable_len + 511) / 512);
+
+#if 0
+ {
+ int i;
+
+ for (i=0 ; i < base_locale_len ; i++) {
+ dump_base_locale(i);
+ }
+ for (i=0 ; i < der_locale_len ; i++) {
+ dump_der_locale(i);
+ }
+ }
+#endif
+
+ {
+ FILE *fp = fopen(output_file, "w");
+
+ if (!fp) {
+ error_msg("cannot open output file '%s'!", output_file);
+ }
+ dump_collate(fp);
+ if (ferror(fp) || fclose(fp)) {
+ error_msg("write error or close error for output file!\n");
+ }
+ }
+
+ return EXIT_SUCCESS;
+}
+
+static void error_msg(const char *fmt, ...)
+{
+ va_list arg;
+
+ fprintf(stderr, "Error: ");
+ if (fno >= 0) {
+ fprintf(stderr, "file %s (%d): ", fname[fno], lineno[fno]);
+ }
+ va_start(arg, fmt);
+ vfprintf(stderr, fmt, arg);
+ va_end(arg);
+ fprintf(stderr, "\n");
+
+ exit(EXIT_FAILURE);
+}
+
+static void pushfile(char *filename)
+{
+ char *inputfile;
+ size_t inputfile_len;
+
+ if (fno >= MAX_FNO) {
+ error_msg("file stack size exceeded");
+ }
+
+ inputfile_len = inputdir_len + strlen(filename) + 2;
+ inputfile = xmalloc(inputfile_len);
+ memset(inputfile, 0, inputfile_len);
+ sprintf(inputfile, "%s/%s", inputdir, filename);
+ if (!(fstack[++fno] = fopen(inputfile, "r"))) {
+ --fno; /* oops */
+ error_msg("cannot open file %s: %s", inputfile, strerror(errno));
+ }
+
+ fname[fno] = xsymdup(inputfile);
+ lineno[fno] = 0;
+}
+
+static void popfile(void)
+{
+ if (fno < 0) {
+ error_msg("pop on empty file stack");
+ }
+
+/* free(fname[fno]); */
+ fclose(fstack[fno]);
+ --fno;
+}
+
+static void eatwhitespace(void)
+{
+ while (isspace(*pos)) {
+ ++pos;
+ }
+}
+
+static int iscommentchar(int c)
+{
+ return ((c == '#') || (c == '%'));
+}
+
+static int next_line(void)
+{
+ size_t n;
+ char *s = linebuf;
+
+ assert(fno >= 0);
+
+ pos_e = NULL;
+ do {
+ if (fgets(s, sizeof(linebuf), fstack[fno]) != NULL) {
+ ++lineno[fno];
+ n = strlen(linebuf);
+ if ((n == sizeof(linebuf) - 1) && (linebuf[n-1] != '\n')) {
+ /* Either line is too long or last line is very long with
+ * no trailing newline. But we'll always treat it as an
+ * errro. */
+ error_msg("line too long?");
+ }
+
+ --n;
+ /* Be careful... last line doesn't need a newline. */
+ if (linebuf[n] == '\n') {
+ linebuf[n--] = 0; /* trim trailing newline */
+ }
+
+ pos = linebuf;
+ eatwhitespace();
+ if (*pos && !iscommentchar(*pos)) { /* not empty or comment line */
+ return 1; /* got a line */
+ }
+ } else { /* eof */
+ popfile();
+ }
+ } while (fno >= 0);
+
+ return 0;
+}
+
+static char *next_token(void)
+{
+ char *p;
+
+#if 0
+ if (pos_e == NULL) {
+ return NULL
+ pos = pos_e;
+ *pos = end_of_token;
+ end_of_token = 0;
+ }
+#else
+ if (pos_e != NULL) {
+ pos = pos_e;
+ *pos = end_of_token;
+ end_of_token = 0;
+ }
+#endif
+ eatwhitespace();
+ p = pos;
+
+ if (!*p || iscommentchar(*p)) { /* end of line or start of comment */
+ pos = pos_e = NULL;
+ *p = 0; /* treat comment as end of line */
+/* fprintf(stdout, "returning NUL token |%s|\n", pos); */
+ return NULL;
+#if 1
+ } else if (*p == '<') { /* collating symbol, element, or value */
+ while (*++p) {
+ if ((*p == '/') && p[1]) {
+ ++p;
+ continue;
+ }
+ if (*p == '>') {
+ pos_e = ++p;
+ end_of_token = *p;
+ *p = 0;
+/* fprintf(stdout, "returning col token |%s|\n", pos); */
+ return pos;
+ }
+ }
+ } else if (*p == '"') { /* collating element value? */
+ while (*++p) {
+ if (*p == '"') { /* found the end of the quoted string */
+ pos_e = ++p;
+ end_of_token = *p;
+ *p = 0;
+/* fprintf(stdout, "returning quote token |%s|\n", pos); */
+ return pos;
+ }
+ }
+#endif
+ } else { /* some kind of keyword */
+ while (*++p) {
+ if (isspace(*p) || (*p == ';')) {
+ break;
+ }
+ }
+ pos_e = p;
+ end_of_token = *p;
+ *p = 0;
+/* fprintf(stdout, "returning key token |%s|\n", pos); */
+ return pos;
+ }
+
+ error_msg("illegal token |%s|", pos);
+}
+
+static void *xmalloc(size_t n)
+{
+ void *p;
+
+ if (!(p = malloc(n))) {
+ error_msg("OUT OF MEMORY");
+ }
+ return p;
+}
+
+static void do_copy(void)
+{
+ char *s;
+ char *e;
+
+ if ((s = next_token()) != NULL) {
+ e = strchr(s + 1, '"');
+ if ((*s == '"') && e && (*e == '"') && !e[1]) {
+ if (next_token() != NULL) {
+ error_msg("illegal trailing text: %s", pos);
+ }
+ *e = 0;
+ ++s;
+ if (cur_base && !strcmp(cur_base->name,s)) {
+/* verbose_msg(VDETAIL, "skipping copy of base file %s\n", s); */
+#warning need to update last in order and position or check
+ return;
+ }
+/* verbose_msg(VDETAIL, "full copy of %s\n", s); */
+ pushfile(s);
+ return;
+ }
+ }
+ error_msg("illegal or missing arg for copy: %s", s);
+}
+
+static void do_colsym(void)
+{
+ char *s;
+ char *e;
+
+ if ((s = next_token()) != NULL) {
+ e = strrchr(s,'>');
+ if ((*s == '<') && e && (*e == '>') && !e[1]) {
+ if (next_token() != NULL) {
+ error_msg("illegal trailing text: %s", pos);
+ }
+ e[1] = 0; /* cleanup in case next_token stored something */
+ add_colitem(s,NULL);
+ return;
+ }
+ }
+ error_msg("illegal or missing arg for collating-symbol: %s", s);
+}
+
+static void do_colele(void)
+{
+ char *s;
+ char *e;
+ char *s1;
+ char *e1;
+ int n;
+
+ if ((s = next_token()) != NULL) {
+ e = strrchr(s,'>');
+ if ((*s == '<') && e && (*e == '>') && !e[1]) {
+ if (((s1 = next_token()) == NULL)
+ || (strcmp(s1,"from") != 0)
+ || ((s1 = next_token()) == NULL)
+ || (*s1 != '\"')
+ ) {
+ error_msg("illegal format for collating-element spec");
+ }
+ e1 = strchr(s1 + 1, '"');
+ if ((*s1 != '"') || !e1 || (*e1 != '"') || (e1[1] != 0)) {
+ error_msg("illegal definition for collating-element: %s", s1);
+ }
+ if (next_token() != NULL) {
+ error_msg("illegal trailing text: %s", pos);
+ }
+ e[1] = 0; /* cleanup in case next_token stored something */
+ e1[1] = 0;
+ add_colitem(s,s1);
+ ++s1;
+ if (!(n = is_ucode(s1))) {
+ error_msg("starting char must be a <U####> code: %s", s1);
+ }
+ assert(s1[n] == '<');
+ s1[n] = 0;
+ s = xsymdup(s1);
+ if (!(tsearch(s, &cur_base->root_starter_char, sym_cmp))) {
+ error_msg("OUT OF MEMORY");
+ }
+
+ return;
+ }
+ }
+ error_msg("illegal or missing arg for collating-element: %s", s);
+}
+
+static ll_item_t *find_section_list_item(const char *name, col_locale_t *loc)
+{
+ ll_item_t *p;
+
+ if (!loc) {
+ return NULL;
+ }
+
+ p = loc->section_list;
+
+ while (p) {
+#warning devel code
+/* if (!((p->data_type == DT_SECTION) || (p->data_type == DT_REORDER))) { */
+/* verbose_msg(VDETAIL, "fsli = %d\n", p->data_type); */
+/* } */
+ assert((p->data_type == DT_SECTION) || (p->data_type == DT_REORDER));
+ if (!strcmp(name, ((section_t *)(p->data))->name)) {
+ break;
+ }
+ p = p->next;
+ }
+ return p;
+}
+
+static ll_item_t *find_ll_last(ll_item_t *p)
+{
+ assert(p);
+
+ while (p->next) {
+ p = p->next;
+ }
+ return p;
+}
+
+static void do_script(void)
+{
+ char *s;
+ char *e;
+
+ if ((s = next_token()) != NULL) {
+ e = strrchr(s,'>');
+ if ((*s == '<') && e && (*e == '>') && !e[1]) {
+ if (next_token() != NULL) {
+ error_msg("illegal trailing text: %s", pos);
+ }
+ e[1] = 0; /* cleanup in case next_token stored something */
+ add_script(s);
+ return;
+ }
+ }
+ error_msg("illegal or missing arg for script: %s", s);
+}
+
+static col_locale_t *new_col_locale(char *name)
+{
+ ll_item_t *lli;
+ ll_item_t *lli2;
+
+ cur_col = (col_locale_t *) xmalloc(sizeof(col_locale_t));
+ cur_col->name = name;
+ cur_col->root_colitem = NULL;
+ cur_col->root_element = NULL;
+ cur_col->root_scripts = NULL;
+ cur_col->base_locale = NULL;
+ if (!superset) {
+ /* start with an anonymous section */
+ cur_section = new_section(NULL);
+ cur_col->section_list = new_ll_item(DT_SECTION, cur_section);
+ } else {
+ /* start with a reorder section */
+ cur_section = new_section("R");
+ cur_num_weights = cur_section->num_rules
+ = ((section_t *)(cur_base->section_list->data))->num_rules;
+ memcpy(cur_rule,
+ ((section_t *)(cur_base->section_list->data))->rules,
+ MAX_COLLATION_WEIGHTS);
+ memcpy(cur_section->rules,
+ ((section_t *)(cur_base->section_list->data))->rules,
+ MAX_COLLATION_WEIGHTS);
+ cur_col->section_list = new_ll_item(DT_REORDER, cur_section);
+ assert(cur_base->section_list->next == NULL); /* currently only one section allowed */
+ lli = ((section_t *)(cur_base->section_list->data))->itm_list;
+ assert(lli);
+ lli2 = new_ll_item(DT_REORDER, cur_section);
+ lli2->prev = lli2->next = lli2;
+ insque(lli2, lli->prev);
+ ((section_t *)(cur_base->section_list->data))->itm_list = lli2;
+ }
+/* cur_col->section_list = NULL; */
+/* add_script(((section_t *)(cur_col->section_list->data))->name); */
+ cur_col->root_wi_index = NULL;
+ cur_col->root_wi_index_reordered = NULL;
+ cur_col->root_derived_wi = NULL;
+ cur_col->derived_list = NULL;
+ cur_col->root_starter_char = NULL;
+ cur_col->root_starter_all = NULL;
+ cur_col->undefined_idx = NULL;
+ return cur_col;
+}
+
+static int colitem_cmp(const void *n1, const void *n2)
+{
+ return strcmp(((colitem_t *)n1)->string, ((colitem_t *)n2)->string);
+}
+
+static int colelement_cmp(const void *n1, const void *n2)
+{
+ int r;
+
+ r = strcmp(((colitem_t *)n1)->string, ((colitem_t *)n2)->string);
+ if (!r) {
+ if (((colitem_t *)n1)->element && ((colitem_t *)n2)->element) {
+ r = strcmp(((colitem_t *)n1)->element, ((colitem_t *)n2)->element);
+ } else if (((colitem_t *)n1)->element == ((colitem_t *)n2)->element) {
+ r = 0; /* both null */
+ } else {
+ r = (((colitem_t *)n1)->element == NULL) ? -1 : 1;
+ }
+ }
+ return r;
+}
+
+static void del_colitem(colitem_t *p)
+{
+/* free((void *) p->element); */
+/* free((void *) p->string); */
+ free(p);
+}
+
+static colitem_t *new_colitem(char *item, char *def)
+{
+ colitem_t *p;
+
+ p = xmalloc(sizeof(colitem_t));
+ p->string = xsymdup(item);
+ p->element = (!def) ? def : xsymdup(def);
+
+ return p;
+}
+
+static void add_colitem(char *item, char *def)
+{
+ colitem_t *p;
+
+#if 0
+ printf("adding collation item %s", item);
+ if (def) {
+ printf(" with definition %s", def);
+ }
+ printf("\n");
+#endif
+
+ p = new_colitem(item, def);
+
+#warning devel code
+ if (superset) {
+ if (tfind(p, &cur_base->root_colitem, colitem_cmp)) {
+/* verbose_msg(VDETAIL, "skipping superset duplicate collating item \"%s\"\n", p->string); */
+ del_colitem(p);
+ return;
+/* } else { */
+/* verbose_msg(VDETAIL, "superset: new collating item \"%s\" = %s\n", p->string, p->element); */
+ }
+ }
+
+ if (cur_col == cur_derived) {
+ if (!tfind(p, &cur_base->root_colitem, colitem_cmp)) {
+ /* not in current but could be in base */
+ if (!tsearch(p, &cur_base->root_colitem, colitem_cmp)) {
+ error_msg("OUT OF MEMORY!");
+ }
+ } else if (!tfind(p, &cur_base->root_colitem, colelement_cmp)) {
+ error_msg("collating element/symbol mismatch: item=%s def=%s", item, def);
+ }
+ }
+
+
+ if (!tfind(p, &cur_col->root_colitem, colitem_cmp)) {
+ /* not in current but could be in base */
+ if (!tsearch(p, &cur_col->root_colitem, colitem_cmp)) {
+ error_msg("OUT OF MEMORY!");
+ }
+ } else if (!tfind(p, &cur_col->root_colitem, colelement_cmp)) {
+ error_msg("collating element/symbol mismatch");
+ } else { /* already there */
+ fprintf(stderr, "duplicate collating item \"%s\"\n", p->string);
+ del_colitem(p);
+ }
+}
+
+/* add a script (section) to the current locale */
+static void add_script(const char *s)
+{
+ ll_item_t *l;
+
+ /* make sure it isn't in base if working with derived */
+ if (cur_base != cur_col) {
+ if (find_section_list_item(s, cur_base)) {
+ error_msg("attempt to add script %s for derived when already in base", s);
+ }
+ }
+
+ if (find_section_list_item(s, cur_col)) {
+ error_msg("attempt to readd script %s", s);
+ }
+
+ l = find_ll_last(cur_col->section_list);
+ insque(new_ll_item(DT_SECTION, new_section(s)), l);
+}
+
+static const char str_forward[] = "forward";
+static const char str_backward[] = "backward";
+static const char str_position[] = "position";
+
+static void do_order_start(void)
+{
+ const char *s;
+ char *e;
+ ll_item_t *l;
+ section_t *sect;
+ int rule;
+
+ if (order_state & ~IN_ORDER) {
+ error_msg("order_start following reorder{_sections}_after");
+ }
+ order_state |= IN_ORDER;
+
+ if (superset) {
+ if (++superset_order_start_cnt > 1) {
+ error_msg("currently only a common order_start is supported in superset");
+ }
+ return;
+ }
+
+ if (!(s = next_token())) {
+ s = str_forward; /* if no args */
+ }
+
+ if (*s == '<') { /* section (script) */
+ e = strrchr(s,'>');
+ if ((*s == '<') && e && (*e == '>') && !e[1]) {
+ e[1] = 0; /* cleanup in case next_token stored something */
+
+ if (!(l = find_section_list_item(s, cur_col))) {
+ error_msg("ref of undefined sections: %s", s);
+ }
+ sect = (section_t *)(l->data);
+ if (sect->num_rules) {
+ error_msg("sections already defined: %s", s);
+ }
+ } else {
+ error_msg("illegal section ref: %s", s);
+ }
+
+ if (!(s = next_token())) {
+ s = str_forward; /* if no args */
+ } else if (*s != ';') {
+ error_msg("missing seperator!");
+ }
+ } else { /* need an anonymous section */
+ if ((*cur_section->name != '<') && (cur_section->num_items == 0)) { /* already in an empty anonymous section */
+ sect = cur_section;
+/* fprintf(stdout, "using empty anon section %s\n", sect->name); */
+ } else {
+ sect = new_section(NULL);
+ l = find_ll_last(cur_col->section_list);
+ insque(new_ll_item(DT_SECTION, sect), l);
+/* fprintf(stdout, "adding order section after section %s\n", ((section_t *)(l->data))->name); */
+/* fprintf(stdout, " last section is %s\n", ((section_t *)(l->next->data))->name); */
+ }
+ sect->num_rules = 0; /* setting this below so nix default */
+ }
+ cur_section = sect;
+/* fprintf(stdout, "cur_section now %s\n", cur_section->name); */
+
+#warning need to add section to weight list?
+
+ /* now do rules */
+ do {
+ rule = 0;
+ if (*s == ';') {
+ ++s;
+ }
+ while (*s) {
+ if (!strncmp(str_forward, s, 7)) {
+ rule |= R_FORWARD;
+ s += 7;
+ } else if (!strncmp(str_backward, s, 8)) {
+ rule |= R_BACKWARD;
+ s += 8;
+ } else if (!strncmp(str_position, s, 8)) {
+ rule |= R_POSITION;
+ s += 8;
+ }
+
+ if (*s == ',') {
+ ++s;
+ continue;
+ }
+
+ if (!*s || (*s == ';')) {
+ if (sect->num_rules >= MAX_COLLATION_WEIGHTS) {
+ error_msg("more than %d weight rules!", MAX_COLLATION_WEIGHTS);
+ }
+ if (!rule) {
+ error_msg("missing weight rule!");
+ }
+ if ((rule & (R_FORWARD|R_BACKWARD|R_POSITION)) > R_BACKWARD) {
+ error_msg("backward paired with forward and/or position!");
+ }
+
+ sect->rules[sect->num_rules++] = rule;
+ rule = 0;
+ continue;
+ }
+
+ error_msg("illegal weight rule: %s", s);
+ }
+ } while ((s = next_token()) != NULL);
+
+ cur_section = sect;
+
+/* verbose_msg(VDETAIL, "setting cur_num_weights to %d for %s\n", sect->num_rules, sect->name); */
+ cur_num_weights = sect->num_rules;
+ memcpy(cur_rule, sect->rules, MAX_COLLATION_WEIGHTS);
+}
+
+static void do_order_end(void)
+{
+ if (!(order_state & IN_ORDER)) {
+ error_msg("order_end with no matching order_start");
+ }
+ order_state &= ~IN_ORDER;
+
+ cur_section = new_section(NULL);
+}
+
+static void do_reorder_after(void)
+{
+ char *t;
+ ll_item_t *lli;
+ const weight_t *w;
+ int save_cur_num_weights;
+ char save_cur_rule[MAX_COLLATION_WEIGHTS];
+
+
+ if (order_state & ~IN_REORDER) {
+ error_msg("reorder_after following order_start or reorder_sections_after");
+ }
+ order_state |= IN_REORDER;
+
+ if (superset) {
+ error_msg("currently reorder_after is not supported in supersets");
+ }
+
+#warning have to use rule for current section!!!
+
+ if (!(t = next_token())) {
+ error_msg("missing arg for reorder_after");
+ }
+
+ t = xsymdup(t);
+
+ if (next_token() != NULL) {
+ error_msg("trailing text reorder_after: %s", pos);
+ }
+
+ if (cur_col == cur_base) {
+ error_msg("sorry.. reorder_after in base locale is not currently supported");
+ }
+
+ if (!(lli = find_wi_index(t, cur_base))) {
+ error_msg("reorder_after for non-base item currently not supported: %s", t);
+ }
+
+ w = ((weighted_item_t *)(lli->data))->weight;
+
+
+ save_cur_num_weights = cur_num_weights;
+ memcpy(save_cur_rule, cur_rule, MAX_COLLATION_WEIGHTS);
+
+ cur_section = new_section("R");
+ insque(new_ll_item(DT_REORDER, cur_section), lli);
+
+#if 0
+
+ {
+ ll_item_t *l1;
+ ll_item_t *l2;
+ ll_item_t *l3;
+ l1 = new_ll_item(DT_REORDER, cur_section);
+ l2 = find_ll_last(cur_col->section_list);
+ insque(l1, l2);
+ l3 = find_ll_last(cur_col->section_list);
+
+ verbose_msg(VDETAIL, "reorder_after %p %p %p %s\n", l1, l2, l3, cur_section->name);
+ }
+#else
+ insque(new_ll_item(DT_REORDER, cur_section), find_ll_last(cur_col->section_list));
+#endif
+
+ cur_num_weights = cur_section->num_rules = save_cur_num_weights;
+ memcpy(cur_rule, save_cur_rule, MAX_COLLATION_WEIGHTS);
+ memcpy(cur_section->rules, save_cur_rule, MAX_COLLATION_WEIGHTS);
+
+
+#warning devel code
+/* verbose_msg(VDETAIL, "reorder -- %s %d\n", ((weighted_item_t *)(lli->data))->symbol, w->num_weights); */
+
+#warning hack to get around hu_HU reorder-after problem
+/* if (!w->num_weights) { */
+
+/* } else { */
+/* cur_num_weights = w->num_weights; */
+/* memcpy(cur_rule, w->rule, MAX_COLLATION_WEIGHTS); */
+/* } */
+
+/* verbose_msg(VDETAIL, "reorder_after succeeded for %s\n", t); */
+}
+
+static void do_reorder_end(void)
+{
+ if (!(order_state & IN_REORDER)) {
+ error_msg("reorder_end with no matching reorder_after");
+ }
+ order_state &= ~IN_REORDER;
+}
+
+static void do_reorder_sections_after(void)
+{
+ const char *t;
+ ll_item_t *lli;
+
+ if (order_state & ~IN_REORDER_SECTIONS) {
+ error_msg("reorder_sections_after following order_start or reorder_after");
+ }
+ order_state |= IN_REORDER_SECTIONS;
+
+ if (superset) {
+ error_msg("currently reorder_sections_after is not supported in supersets");
+ }
+
+ if (!(t = next_token())) {
+ error_msg("missing arg for reorder_sections_after");
+ }
+
+ t = xsymdup(t);
+
+ if (next_token() != NULL) {
+ error_msg("trailing text reorder_sections_after: %s", pos);
+ }
+
+ if (cur_col == cur_base) {
+ error_msg("sorry.. reorder_sections_after in base locale is not currently supported");
+ }
+
+ lli = cur_base->section_list;
+ do {
+/* verbose_msg(VDETAIL, "hmm -- |%s|%d|\n", ((section_t *)(lli->data))->name, lli->data_type); */
+ if (lli->data_type & DT_SECTION) {
+/* verbose_msg(VDETAIL, "checking |%s|%s|\n", ((section_t *)(lli->data))->name, t); */
+ if (!strcmp(((section_t *)(lli->data))->name, t)) {
+ reorder_section_ptr = lli;
+ return;
+ }
+ }
+ lli = lli->next;
+ } while (lli);
+
+ error_msg("reorder_sections_after for non-base item currently not supported: %s", t);
+}
+
+static void do_reorder_sections_end(void)
+{
+ if (!(order_state & IN_REORDER_SECTIONS)) {
+ error_msg("reorder_sections_end with no matching reorder_sections_after");
+ }
+ order_state &= ~IN_REORDER_SECTIONS;
+
+ reorder_section_ptr = NULL;
+}
+
+static ll_item_t *new_ll_item(int data_type, void *data)
+{
+ ll_item_t *p;
+
+ p = xmalloc(sizeof(ll_item_t));
+ p->next = p->prev = NULL;
+ p->data_type = data_type;
+ p->data = data;
+ p->idx = INT_MIN;
+
+ return p;
+}
+
+static int sym_cmp(const void *n1, const void *n2)
+{
+/* verbose_msg(VDETAIL, "sym_cmp: |%s| |%s|\n", (const char *)n1, (const char *)n2); */
+ return strcmp((const char *) n1, (const char *) n2);
+}
+
+static char *xsymdup(const char *s)
+{
+ void *p;
+
+ if (!(p = tfind(s, &root_sym, sym_cmp))) { /* not a currently known symbol */
+ if (!(s = strdup(s)) || !(p = tsearch(s, &root_sym, sym_cmp))) {
+ error_msg("OUT OF MEMORY!");
+ }
+ ++num_sym;
+ mem_sym += strlen(s) + 1;
+/* verbose_msg(VDETAIL, "xsymdup: alloc |%s| %p |%s| %p\n", *(char **)p, p, s, s); */
+/* } else { */
+/* verbose_msg(VDETAIL, "xsymdup: found |%s| %p\n", *(char **)p, p); */
+ }
+ return *(char **) p;
+}
+
+static int weight_cmp(const void *n1, const void *n2)
+{
+ const weight_t *w1 = (const weight_t *) n1;
+ const weight_t *w2 = (const weight_t *) n2;
+ int i, r;
+
+ if (w1->num_weights != w2->num_weights) {
+ return w1->num_weights - w2->num_weights;
+ }
+
+ for (i=0 ; i < w1->num_weights ; i++) {
+ if (w1->rule[i] != w2->rule[i]) {
+ return w1->rule[i] - w2->rule[i];
+ }
+ if ((r = strcmp(w1->colitem[i], w2->colitem[i])) != 0) {
+ return r;
+ }
+ }
+ return 0;
+}
+
+static weight_t *register_weight(weight_t *w)
+{
+ void *p;
+
+ if (!(p = tfind(w, &root_weight, weight_cmp))) { /* new weight */
+ p = xmalloc(sizeof(weight_t));
+ memcpy(p, w, sizeof(weight_t));
+ if (!(p = tsearch(p, &root_weight, weight_cmp))) {
+ error_msg("OUT OF MEMORY!");
+ }
+ ++unique_weights;
+/* } else { */
+/* verbose_msg(VDETAIL, "rw: found\n"); */
+ }
+ return *(weight_t **)p;
+}
+
+static size_t ll_len(ll_item_t *l)
+{
+ size_t n = 0;
+ ll_item_t *p = l;
+
+ while (p) {
+ ++n;
+ p = p->next;
+ if (p == l) { /* work for circular too */
+ break;
+ }
+ }
+ return n;
+}
+
+static size_t ll_count(ll_item_t *l, int mask)
+{
+ size_t n = 0;
+ ll_item_t *p = l;
+
+ while (p) {
+ if (p->data_type & mask) {
+ ++n;
+ }
+ p = p->next;
+ if (p == l) { /* work for circular too */
+ break;
+ }
+ }
+ return n;
+}
+
+
+static int wi_index_cmp(const void *n1, const void *n2)
+{
+ const char *s1 = ((weighted_item_t *)(((ll_item_t *) n1)->data))->symbol;
+ const char *s2 = ((weighted_item_t *)(((ll_item_t *) n2)->data))->symbol;
+
+ return strcmp(s1, s2);
+}
+
+static void add_wi_index(ll_item_t *l)
+{
+ assert(l->data_type == DT_WEIGHTED);
+
+ if (!strcmp(((weighted_item_t *)(l->data))->symbol, "UNDEFINED")) {
+ cur_col->undefined_idx = l;
+ }
+
+ if (!tfind(l, &cur_col->root_wi_index, wi_index_cmp)) { /* new wi_index */
+ if (!tsearch(l, &cur_col->root_wi_index, wi_index_cmp)) {
+ error_msg("OUT OF MEMORY!");
+ }
+ }
+
+ if (cur_base != cur_col) {
+ if (!tfind(l, &cur_base->root_wi_index, wi_index_cmp)) {/* not a base val */
+/* printf("derived: %s\n", ((weighted_item_t *)(l->data))->symbol); */
+ if (!tfind(l, &cur_base->root_derived_wi, wi_index_cmp)) { /* new derived */
+ if (!tsearch(l, &cur_base->root_derived_wi, wi_index_cmp)) {
+ error_msg("OUT OF MEMORY!");
+ }
+ }
+ }
+ }
+}
+
+static int final_index;
+
+
+static int is_ucode(const char *s)
+{
+ if ((s[0] == '<')
+ && (s[1] == 'U')
+ && isxdigit(s[2])
+ && isxdigit(s[3])
+ && isxdigit(s[4])
+ && isxdigit(s[5])
+ && (s[6] == '>')
+ ) {
+ return 7;
+ } else {
+ return 0;
+ }
+}
+
+static void add_final_col_index(const char *s)
+{
+ ENTRY e;
+
+ e.key = (char *) s;
+ e.data = (void *)(final_index);
+ if (!hsearch(e, FIND)) { /* not in the table */
+ if (!hsearch(e, ENTER)) {
+ error_msg("OUT OF MEMORY! (hsearch)");
+ }
+#if 0
+ {
+ int n;
+ void *v;
+ colitem_t ci;
+ colitem_t *p;
+ const char *t;
+
+ if (!strcmp(s, "UNDEFINED")) {
+ printf("%6d: %s\n", final_index, s);
+ } else {
+ assert(*s == '<');
+ if ((n = is_ucode(s)) != 0) {
+ assert(!s[n]);
+ printf("%6d: %s\n", final_index, s);
+ } else {
+ ci.string = (char *) s;
+ ci.element = NULL; /* don't care */
+ v = tfind(&ci, &cur_base->root_colitem, colitem_cmp);
+ if (!v) {
+ verbose_msg(VDETAIL, "%s NOT DEFINED!!!\n", s);
+ } else {
+ p = *((colitem_t **) v);
+ if (p->element != NULL) {
+ t = p->element;
+ assert(*t == '"');
+ ++t;
+ n = is_ucode(t);
+ assert(n);
+ printf("%6d: %.*s | ", final_index, n, t);
+ do {
+ t += n;
+ assert(*t);
+ if (*t == '"') {
+ assert(!t[1]);
+ break;
+ }
+ n = is_ucode(t);
+ assert(n);
+ printf("%.*s", n, t);
+ } while (1);
+ printf(" collating-element %s\n", s);
+ } else {
+ printf("%6d: %s (collating-symbol)\n", final_index, s);
+ }
+ }
+ }
+ }
+ }
+#endif
+ ++final_index;
+ }
+
+}
+
+static int final_index_val0(const char *s)
+{
+ ENTRY *p;
+ ENTRY e;
+ e.key = (char *) s;
+
+ if (!(p = hsearch(e, FIND))) { /* not in the table */
+ return 0;
+ }
+
+ return (int)(p->data);
+}
+
+static int final_index_val(const char *s)
+{
+ ENTRY *p;
+ ENTRY e;
+ e.key = (char *) s;
+
+ if (!(p = hsearch(e, FIND))) { /* not in the table */
+ error_msg("can't find final index: %s", s);
+ }
+
+ return (int)(p->data);
+}
+
+static size_t num_tree_nodes;
+
+static void count_nodes(const void *ptr, VISIT order, int level)
+{
+ if ((order == postorder) || (order == leaf)) {
+ ++num_tree_nodes;
+ }
+}
+
+static size_t tnumnodes(const void *root)
+{
+ num_tree_nodes = 0;
+
+ twalk(root, count_nodes);
+
+ return num_tree_nodes;
+
+}
+
+static ll_item_t *find_wi_index(const char *sym, col_locale_t *cl)
+{
+ weighted_item_t w;
+ ll_item_t l;
+ void *p;
+
+ w.symbol = sym;
+ l.data = &w;
+ l.data_type = DT_WEIGHTED;
+
+ p = tfind(&l, &cl->root_wi_index, wi_index_cmp);
+
+ if (p) {
+ p = *(ll_item_t **)p;
+ }
+
+ return (ll_item_t *) p;
+}
+
+static void mark_reordered(const char *sym)
+{
+ ll_item_t *lli;
+
+ lli = find_wi_index(sym, cur_base);
+
+ if (lli) {
+ if (!tsearch(lli, &cur_base->root_wi_index_reordered, wi_index_cmp)) {
+ error_msg("OUT OF MEMORY!");
+ }
+ }
+}
+
+static ll_item_t *find_wi_index_reordered(const char *sym)
+{
+ weighted_item_t w;
+ ll_item_t l;
+ void *p;
+
+ w.symbol = sym;
+ l.data = &w;
+ l.data_type = DT_WEIGHTED;
+
+ p = tfind(&l, &cur_base->root_wi_index_reordered, wi_index_cmp);
+
+ if (p) {
+ p = *(ll_item_t **)p;
+ }
+
+ return (ll_item_t *) p;
+}
+
+static ll_item_t *init_comm_ptr(void)
+{
+ assert(cur_base);
+ assert(cur_base->section_list);
+ /* at the moment, only support one section in comm */
+ assert(cur_base->section_list->next == NULL);
+
+ comm_cur_ptr = ((section_t *)(cur_base->section_list->data))->itm_list;
+
+ while (comm_cur_ptr && (comm_cur_ptr->data_type & DT_REORDER)) {
+ comm_cur_ptr = comm_cur_ptr->next;
+ }
+
+#warning devel code
+/* { */
+/* ll_item_t *p = comm_cur_ptr; */
+/* verbose_msg(VDETAIL, "init_comm_ptr\n"); */
+
+/* while (p != comm_cur_ptr) { */
+/* if (p->data_type & DT_WEIGHTED) { */
+/* verbose_msg(VDETAIL, "%s", ((weighted_item_t *)p)->symbol); */
+/* } */
+/* p = p->next; */
+/* } */
+/* } */
+
+ assert(comm_cur_ptr);
+
+/* verbose_msg(VDETAIL, "init_comm_ptr -- %s %p %p %p %d\n", */
+/* ((weighted_item_t *)(comm_cur_ptr->data))->symbol, */
+/* comm_cur_ptr, comm_cur_ptr->prev, comm_cur_ptr->next, */
+/* ll_len(comm_cur_ptr)); */
+
+ comm_prev_ptr = NULL;
+ return comm_cur_ptr;
+}
+
+static ll_item_t *next_comm_ptr(void)
+{
+ /* at the moment, only support one section in comm */
+ assert(cur_base->section_list->next == NULL);
+
+ comm_prev_ptr = comm_cur_ptr;
+
+ while (comm_cur_ptr && ((comm_cur_ptr = comm_cur_ptr->next) != NULL)) {
+ if (!(comm_cur_ptr->data_type & DT_REORDER)) {
+ break;
+ }
+ }
+
+ return comm_cur_ptr;
+}
+
+static int dump_count;
+
+#if 0
+static void dump_section(section_t *s, int mask, col_locale_t *der)
+{
+ ll_item_t *lli;
+ ll_item_t *lli0;
+ weighted_item_t *w;
+ weight_t *p;
+ int i;
+
+ lli0 = lli = s->itm_list;
+
+ if (!lli0) {
+ return;
+ }
+
+ do {
+ if (!(lli->data_type & mask)) {
+ lli = lli->next;
+ continue;
+ }
+ if (lli->data_type & DT_WEIGHTED) {
+ ++dump_count;
+ w = (weighted_item_t *)(lli->data);
+ p = w->weight;
+ printf("%6d: %s (%d) ", dump_count, w->symbol, p->num_weights);
+ for (i = 0 ; i < p->num_weights ; i++) {
+ if (p->rule[i] & R_FORWARD) {
+ printf("F");
+ }
+ if (p->rule[i] & R_BACKWARD) {
+ printf("B");
+ }
+ if (p->rule[i] & R_POSITION) {
+ printf("P");
+ }
+ printf(",");
+ }
+ for (i = 0 ; i < p->num_weights ; i++) {
+ printf(" %s", p->colitem[i]);
+ }
+ printf("\n");
+ } else if (lli->data_type & (DT_SECTION|DT_REORDER)) {
+
+ if (lli->data_type == DT_REORDER) {
+ assert(der);
+ if (strncmp(((section_t *)(lli->data))->name, der->name, strlen(der->name))) {
+ lli = lli->next;
+ continue;
+ }
+ }
+
+ if (lli->data_type & DT_SECTION) {
+ printf("SECTION -----------------\n");
+ } else {
+ printf("REORDER -----------------\n");
+ }
+
+ dump_section((section_t *)(lli->data), mask, der);
+ printf("DONE --------------------\n");
+ }
+ lli = lli->next;
+ } while (lli != lli0);
+}
+#else
+static int in_reorder_section = 0;
+
+static void dump_section(section_t *s, int mask, col_locale_t *der)
+{
+ ll_item_t *lli;
+ ll_item_t *lli0;
+ weighted_item_t *w;
+ weight_t *p;
+ int i;
+
+ lli0 = lli = s->itm_list;
+
+ if (!lli0) {
+ return;
+ }
+
+ do {
+ if (!(lli->data_type & mask)) {
+ lli = lli->next;
+ continue;
+ }
+ if (lli->data_type & DT_WEIGHTED) {
+ ++dump_count;
+ w = (weighted_item_t *)(lli->data);
+ p = w->weight;
+#if 1
+ if (in_reorder_section) {
+ printf(" %p", w);
+ }
+#else
+ printf("%6d: %s (%d) ", dump_count, w->symbol, p->num_weights);
+ for (i = 0 ; i < p->num_weights ; i++) {
+ if (p->rule[i] & R_FORWARD) {
+ printf("F");
+ }
+ if (p->rule[i] & R_BACKWARD) {
+ printf("B");
+ }
+ if (p->rule[i] & R_POSITION) {
+ printf("P");
+ }
+ printf(",");
+ }
+ for (i = 0 ; i < p->num_weights ; i++) {
+ printf(" %s", p->colitem[i]);
+ }
+ printf("\n");
+#endif
+ } else if (lli->data_type & (DT_SECTION|DT_REORDER)) {
+
+ if (lli->data_type == DT_REORDER) {
+ assert(der);
+ if (strncmp(((section_t *)(lli->data))->name, der->name, strlen(der->name))) {
+ lli = lli->next;
+ continue;
+ }
+ }
+
+ if (lli->data_type & DT_SECTION) {
+/* printf("SECTION -----------------\n"); */
+ assert(0);
+ } else {
+/* printf("REORDER -----------------\n"); */
+ in_reorder_section = 1;
+ }
+
+ dump_section((section_t *)(lli->data), mask, der);
+/* printf("DONE --------------------\n"); */
+ printf("\n");
+ in_reorder_section = 0;
+ }
+ lli = lli->next;
+ } while (lli != lli0);
+}
+#endif
+
+static void dump_weights(const char *name)
+{
+ ll_item_t *lli;
+ col_locale_t *base;
+ col_locale_t *der;
+ col_locale_t cl;
+ void *p;
+
+ assert(name);
+
+ if (!*name) { /* use last */
+ base = cur_base;
+ der = cur_derived;
+ } else {
+ cl.name = (char *) name;
+ if (!(p = tfind(&cl, &root_col_locale, col_locale_cmp))) {
+ error_msg("unknown locale: %s", name);
+ }
+ base = *((col_locale_t **) p);
+ der = NULL;
+ if (base->base_locale) { /* oops... really derived */
+ der = base;
+ base = der->base_locale;
+ }
+ }
+
+ dump_count = 0;
+
+ if (base) {
+/* printf("BASE - %s\n", base->name); */
+ for (lli = base->section_list ; lli ; lli = lli->next) {
+/* printf("SECTION %s\n", ((section_t *)(lli->data))->name); */
+ dump_section((section_t *)(lli->data), ~0, der);
+ }
+ }
+
+ assert(der != base);
+
+ if (der) {
+/* printf("DERIVED - %s\n", der->name); */
+ for (lli = der->section_list ; lli ; lli = lli->next) {
+ if (lli->data_type == DT_SECTION) {
+ dump_section((section_t *)(lli->data), DT_WEIGHTED, der);
+ }
+ }
+ }
+/* printf("DONE\n"); */
+}
+
+static void print_starter_node(const void *ptr, VISIT order, int level)
+{
+ if (order == postorder || order == leaf) {
+ fprintf(stderr, " %s\n", *(const char **) ptr);
+ }
+}
+
+static void finalize_base(void)
+{
+ ll_item_t *s;
+ ll_item_t *h;
+ ll_item_t *lli;
+ ll_item_t *h2;
+ ll_item_t *l2;
+ ll_item_t *cli;
+ ll_item_t *rli = NULL;
+ weighted_item_t *w;
+ weight_t *p;
+ int i, n, mr, r, mi;
+ col_locale_t *cl;
+ void *mm;
+
+ int num_invariant = 0;
+ int num_varying = 0;
+ int max_weight;
+ int index2weight_len_inc = 1;
+
+ assert(cur_base);
+ assert(base_locale_len+1 < BASE_LOCALE_LEN);
+
+ base_locale_array[base_locale_len].name = cur_base->name;
+ base_locale_array[base_locale_len].num_weights = 1;
+ base_locale_array[base_locale_len].index2weight_offset = index2weight_len;
+ base_locale_array[base_locale_len].index2ruleidx_offset = index2ruleidx_len;
+ if (!strcmp(cur_base->name,"ja_JP") || !strcmp(cur_base->name,"ko_KR")) {
+#warning fix the index2weight check!!
+ index2weight_len_inc = 0;
+ }
+/* printf("%s -- index2weight_len = %d\n", cur_base->name, index2weight_len); */
+
+ if (!hcreate(30000)) {
+ error_msg("OUT OF MEMORY!");
+ }
+
+ /* first pass ... set the fixed indexes */
+ final_index = i = 1;
+ mr = 0;
+ for (s = cur_base->section_list ; s ; s = s->next) {
+#if 1
+ if (s->data_type & DT_REORDER) { /* a reordered section */
+ verbose_msg(VDETAIL, "pass1: reordered section %s - xxx\n", ((section_t *)(s->data))->name);
+ lli = ((section_t *)(s->data))->itm_list;
+ r = 0;
+ if (lli) {
+/* r = ll_len( ((section_t *)(lli->data))->itm_list ); */
+ r = ll_len(lli) + 1;
+ }
+ if (r > mr) {
+ mr = r;
+ }
+ verbose_msg(VDETAIL, "pass1: reordered section %s - %d\n", ((section_t *)(s->data))->name, r);
+ continue;
+ }
+#endif
+ h = lli = ((section_t *)(s->data))->itm_list;
+ if (!lli) {
+ continue;
+ }
+ do {
+ if (lli->data_type & DT_RANGE) {
+ i += mr;
+ mr = 0;
+#warning check ko_kR and 9
+/* ++i; */
+ lli->idx = i;
+ assert(!rli);
+ rli = lli;
+ verbose_msg(VDETAIL, "range pre = %d after = ", i);
+ i += ((range_item_t *)(lli->data))->length + 1;
+#warning check ko_kR and 9
+/* ++i; */
+ verbose_msg(VDETAIL, "%d\n", i);
+ if (!index2weight_len_inc) { /* ko_KR hack */
+ final_index += ((range_item_t *)(lli->data))->length + 1;
+ }
+/* add_final_col_index("RANGE"); */
+ } else if (lli->data_type & DT_WEIGHTED) {
+ i += mr;
+ mr = 0;
+ w = (weighted_item_t *)(lli->data);
+ if (find_wi_index_reordered(w->symbol)) { /* reordered symbol so skip on first pass */
+ ++num_varying;
+ ++i;
+ continue;
+ }
+ ++num_invariant;
+ index2weight_buffer[index2weight_len] = lli->idx = i++;
+ index2weight_len += index2weight_len_inc;
+ add_final_col_index(w->symbol);
+
+ } else {
+ assert(lli->data_type & DT_REORDER);
+ r = ll_len( ((section_t *)(lli->data))->itm_list );
+#warning check ko_kR and 9
+ if (r > mr) {
+ mr = r;
+ }
+/* r = 0; */
+ }
+ } while ((lli = lli->next) != h);
+ }
+
+ /* second pass ... set the reordered indexes */
+ mi = i + mr;
+ mr = i = 0;
+ for (s = cur_base->section_list ; s ; s = s->next) {
+ h = lli = ((section_t *)(s->data))->itm_list;
+ if (!lli) {
+ continue;
+ }
+ do {
+ if (lli->data_type & DT_RANGE) {
+ i += mr;
+ mr = 0;
+ i = lli->idx + ((range_item_t *)(lli->data))->length + 1;
+#warning check
+ } else if ((lli->data_type & DT_WEIGHTED) && !(s->data_type & DT_REORDER)) {
+ i += mr;
+ mr = 0;
+ w = (weighted_item_t *)(lli->data);
+ if (find_wi_index_reordered(w->symbol) /* reordered symbol skipped on first pass */
+#if 0
+ || (s->data_type & DT_REORDER) /* or in a reordered section */
+#endif
+ ) {
+ assert(!(s->data_type & DT_REORDER));
+ index2weight_buffer[index2weight_len] = lli->idx = ++i;
+ index2weight_len += index2weight_len_inc;
+ add_final_col_index(w->symbol);
+
+/* fprintf(stdout, "%11s: r %6d %6d %s\n", */
+/* cur_base->name, lli->idx, final_index_val(w->symbol), w->symbol); */
+
+ continue;
+ }
+ i = lli->idx;
+
+/* fprintf(stdout, "%11s: w %6d %6d %s\n", */
+/* cur_base->name, lli->idx, final_index_val(w->symbol), w->symbol); */
+
+ } else {
+/* verbose_msg(VDETAIL, "section: %s %d %d\n", ((section_t *)(s->data))->name, */
+/* s->data_type, lli->data_type); */
+/* assert(!(s->data_type & DT_REORDER)); */
+/* assert(lli->data_type & DT_REORDER); */
+#if 1
+ if (s->data_type & DT_REORDER) {
+ h2 = l2 = lli;
+ if (!h2) {
+ continue;
+ }
+ } else {
+ assert(s->data_type & DT_SECTION);
+ h2 = l2 = ((section_t *)(lli->data))->itm_list;
+ if (!h2) {
+ continue;
+ }
+ }
+
+
+#else
+ h2 = l2 = ((section_t *)(lli->data))->itm_list;
+ if (!h2) {
+ continue;
+ }
+#endif
+ r = 0;
+ do {
+ assert(l2->data_type & DT_WEIGHTED);
+ ++r;
+ l2->idx = i + r;
+
+/* fprintf(stdout, "%s: R %6d %s\n", */
+/* ((section_t *)(lli->data))->name, l2->idx, ((weighted_item_t *)(l2->data))->symbol); */
+
+ } while ((l2 = l2->next) != h2);
+ if (r > mr) {
+ mr = r;
+ }
+ }
+ } while ((lli = lli->next) != h);
+ }
+
+ /* finally, walk through all derived locales and set non-reordered section items */
+ mr = mi;
+ for (cli = cur_base->derived_list ; cli ; cli = cli->next) {
+ cl = (col_locale_t *)(cli->data);
+/* verbose_msg(VDETAIL, "pass3: %d %s\n", cli->data_type, cl->name); */
+
+/* fprintf(stdout, "pass3: %d %s\n", cli->data_type, cl->name); */
+
+ assert(cli->data_type == DT_COL_LOCALE);
+
+ i = mi;
+ for (s = cl->section_list ; s ; s = s->next) {
+/* if (s->data_type & DT_REORDER) { */
+/* continue; */
+/* } */
+ h = lli = ((section_t *)(s->data))->itm_list;
+ if (!lli) {
+ continue;
+ }
+ do {
+ assert(!(lli->data_type & DT_RANGE));
+ if (lli->data_type & DT_WEIGHTED) {
+/* verbose_msg(VDETAIL, " %d %d %s\n", lli->data_type, lli->idx, ((weighted_item_t *)(lli->data))->symbol); */
+ add_final_col_index(((weighted_item_t *)(lli->data))->symbol);
+ if (s->data_type & DT_REORDER) {
+ continue;
+ }
+ assert(lli->idx == INT_MIN);
+ lli->idx = ++i;
+
+/* fprintf(stdout, "%11s: S %6d %6d %s\n", */
+/* cl->name, lli->idx, */
+/* final_index_val(((weighted_item_t *)(lli->data))->symbol), */
+/* ((weighted_item_t *)(lli->data))->symbol); */
+
+ } else {
+ assert(0);
+ assert(lli->data_type & DT_SECTION);
+
+ h2 = l2 = ((section_t *)(lli->data))->itm_list;
+ if (!h2) {
+ continue;
+ }
+ do {
+ assert(l2->data_type & DT_WEIGHTED);
+ assert(l2->idx == INT_MIN);
+ l2->idx = ++i;
+ add_final_col_index(((weighted_item_t *)(l2->data))->symbol);
+ } while ((l2 = l2->next) != h2);
+ }
+ } while ((lli = lli->next) != h);
+ }
+ if (i > mr) {
+ mr = i;
+ }
+ }
+ max_weight = mr;
+
+ assert(num_varying == tnumnodes(cur_base->root_wi_index_reordered));
+
+ /* we can now initialize the wcs2index array */
+ {
+ ENTRY *p;
+ ENTRY e;
+ char buf[8];
+ static const char xd[] = "0123456789ABCDEF";
+ int starter_index = final_index;
+ int wcs2index_count = 0;
+
+ strcpy(buf, "<U....>");
+ memset(wcs2index, 0, sizeof(wcs2index));
+ e.key = (char *) buf;
+ for (i=1 ; i <= 0xffff ; i++) {
+ buf[5] = xd[ i & 0xf ];
+ buf[4] = xd[ (i >> 4) & 0xf ];
+ buf[3] = xd[ (i >> 8) & 0xf ];
+ buf[2] = xd[ (i >> 12) & 0xf ];
+
+ if ((p = hsearch(e, FIND)) != NULL) {
+ ++wcs2index_count;
+ if ((tfind(buf, &cur_base->root_starter_char, sym_cmp)) != NULL) {
+ wcs2index[i] = ++starter_index;
+/* verbose_msg(VDETAIL, "wcs2index[ %#06x ] = %d (starter)\n", i, wcs2index[i]); */
+ } else {
+ wcs2index[i] = (int)(p->data);
+/* verbose_msg(VDETAIL, "wcs2index[ %#06x ] = %d\n", i, wcs2index[i]); */
+ }
+ } else {
+ if ((tfind(buf, &cur_base->root_starter_char, sym_cmp)) != NULL) {
+ error_msg("marked starter but not in hash: %s", buf);
+ }
+ }
+ }
+
+
+ /* ---------------------------------------------------------------------- */
+ {
+ int i, n;
+ table_data table;
+ size_t t, smallest;
+
+ n = 0;
+ smallest = SIZE_MAX;
+ table.ii = NULL;
+ for (i=0 ; i < 14 ; i++) {
+ if ((RANGE >> i) < 4) {
+ break;
+ }
+ t = newopt(wcs2index, RANGE, i, &table);
+ if (smallest >= t) {
+ n = i;
+ smallest = t;
+ /* } else { */
+ /* break; */
+ }
+ }
+
+
+/* printf("smallest = %u for range %#x (%u)\n", smallest, RANGE, RANGE); */
+ assert(smallest != SIZE_MAX);
+ if (smallest + wcs2colidt_len >= WCS2COLIDT_LEN) {
+ error_msg("WCS2COLIDT_LEN too small");
+ }
+ base_locale_array[base_locale_len].wcs2colidt_offset = wcs2colidt_len;
+ table.ii = wcs2colidt_buffer + wcs2colidt_len;
+ t = smallest;
+ smallest = SIZE_MAX;
+ smallest = newopt(wcs2index, RANGE, n, &table);
+ assert(t == smallest);
+ wcs2colidt_len += smallest;
+/* verbose_msg(VDETAIL, "smallest = %d wcs2colidt_len = %d\n", smallest, wcs2colidt_len); */
+
+#if 0
+ {
+ unsigned int sc, n, i0, i1;
+ unsigned int u = 0xe40;
+ table_data *tbl = &table;
+
+#define __LOCALE_DATA_WCctype_TI_MASK ((1 << tbl->ti_shift)-1)
+#define __LOCALE_DATA_WCctype_TI_SHIFT (tbl->ti_shift)
+#define __LOCALE_DATA_WCctype_TI_LEN (tbl->ti_len)
+#define __LOCALE_DATA_WCctype_II_MASK ((1 << tbl->ii_shift)-1)
+#define __LOCALE_DATA_WCctype_II_SHIFT (tbl->ii_shift)
+#define __LOCALE_DATA_WCctype_II_LEN (tbl->ii_len)
+
+ sc = u & __LOCALE_DATA_WCctype_TI_MASK;
+ u >>= __LOCALE_DATA_WCctype_TI_SHIFT;
+ n = u & __LOCALE_DATA_WCctype_II_MASK;
+ u >>= __LOCALE_DATA_WCctype_II_SHIFT;
+
+ i0 = tbl->ii[u];
+ verbose_msg(VDETAIL, "i0 = %d\n", i0);
+ i0 <<= __LOCALE_DATA_WCctype_II_SHIFT;
+ i1 = tbl->ii[__LOCALE_DATA_WCctype_II_LEN + i0 + n];
+ /* i1 = tbl->ti[i0 + n]; */
+ verbose_msg(VDETAIL, "i1 = %d\n", i1);
+ i1 <<= __LOCALE_DATA_WCctype_TI_SHIFT;
+ /* return *(uint16_t *)(&(tbl->ii[__LOCALE_DATA_WCctype_II_LEN + __LOCALE_DATA_WCctype_TI_LEN + i1 + sc])); */
+ verbose_msg(VDETAIL, "i2 = %d\n", __LOCALE_DATA_WCctype_II_LEN + __LOCALE_DATA_WCctype_TI_LEN + i1 + sc);
+ verbose_msg(VDETAIL, "val = %d\n", tbl->ii[__LOCALE_DATA_WCctype_II_LEN + __LOCALE_DATA_WCctype_TI_LEN + i1 + sc]);
+ /* return tbl->ut[i1 + sc]; */
+
+
+ }
+#endif
+ base_locale_array[base_locale_len].ii_shift = table.ii_shift;
+ base_locale_array[base_locale_len].ti_shift = table.ti_shift;
+ base_locale_array[base_locale_len].ii_len = table.ii_len;
+ base_locale_array[base_locale_len].ti_len = table.ti_len;
+ }
+ /* ---------------------------------------------------------------------- */
+
+ base_locale_array[base_locale_len].num_col_base = num_invariant + num_varying;
+ base_locale_array[base_locale_len].max_col_index = final_index;
+ base_locale_array[base_locale_len].max_weight = max_weight;
+
+ verbose_msg(VDETAIL, "%s: %6u invariant %6u varying %6u derived %6u total %6u max weight %6u wcs2\n",
+ cur_base->name, num_invariant, num_varying,
+ tnumnodes(cur_base->root_derived_wi), final_index, max_weight,
+ wcs2index_count);
+
+ }
+
+#if 1
+ /* ok, now we need to dump out the base and derived tables... */
+ /* don't forget to break up collating elements!!! */
+
+/* fprintf(stdout, "**************************************************\n"); */
+ /* first pass ... set the invariants */
+ for (s = cur_base->section_list ; s ; s = s->next) {
+#if 1
+ if (s->data_type & DT_REORDER) {
+ verbose_msg(VDETAIL, "1: skipping reordered section %s\n", ((section_t *)(s->data))->name);
+ continue;
+ }
+#endif
+ h = lli = ((section_t *)(s->data))->itm_list;
+ if (!lli) {
+ continue;
+ }
+ do {
+ if (lli->data_type & DT_WEIGHTED) {
+ w = (weighted_item_t *)(lli->data);
+ if (find_wi_index_reordered(w->symbol)) { /* reordered symbol so skip on first pass */
+ continue;
+ }
+ if (index2weight_len_inc) {
+ index2ruleidx_buffer[index2ruleidx_len++] =
+ add_rule((weighted_item_t *)(lli->data));
+ }
+/* fprintf(stdout, "%11s: w %6d %6d %s\n", */
+/* cur_base->name, lli->idx, final_index_val(w->symbol), w->symbol); */
+ }
+ } while ((lli = lli->next) != h);
+ }
+
+ /* second pass ... set varying */
+ for (s = cur_base->section_list ; s ; s = s->next) {
+#if 1
+ if (s->data_type & DT_REORDER) {
+ verbose_msg(VDETAIL, "2: skipping reordered section %s\n", ((section_t *)(s->data))->name);
+ continue;
+ }
+#endif
+ h = lli = ((section_t *)(s->data))->itm_list;
+ if (!lli) {
+ continue;
+ }
+ do {
+ if (lli->data_type & DT_WEIGHTED) {
+ w = (weighted_item_t *)(lli->data);
+ if (find_wi_index_reordered(w->symbol)) { /* reordered symbol so skip on first pass */
+ if (index2weight_len_inc) {
+ index2ruleidx_buffer[index2ruleidx_len++] =
+ add_rule((weighted_item_t *)(lli->data));
+ }
+/* fprintf(stdout, "%11s: r %6d %6d %s\n", */
+/* cur_base->name, lli->idx, final_index_val(w->symbol), w->symbol); */
+ continue;
+ }
+ }
+ } while ((lli = lli->next) != h);
+ }
+
+ do_starter_lists(cur_base);
+
+
+/* verbose_msg(VDETAIL,"updated final_index = %d\n", final_index); */
+
+ if (rli) {
+ base_locale_array[base_locale_len].range_low
+ = strtoul(((range_item_t *)(rli->data))->symbol1 + 2, NULL, 16);
+ base_locale_array[base_locale_len].range_count
+ = ((range_item_t *)(rli->data))->length;
+ base_locale_array[base_locale_len].range_base_weight = rli->idx;
+ base_locale_array[base_locale_len].range_rule_offset = add_range_rule((range_item_t *)(rli->data));
+/* fprintf(stdout, "%11s: %6d %6d %s %s (%d)\n", */
+/* "RANGE", rli->idx, -1, */
+/* ((range_item_t *)(rli->data))->symbol1, */
+/* ((range_item_t *)(rli->data))->symbol2, */
+/* ((range_item_t *)(rli->data))->length); */
+ }
+
+/* fprintf(stdout,"\nDerived\n\n"); */
+
+ /* first, if base name is of the form ll_CC, add a derived locale for it */
+ if ((strlen(cur_base->name) == 5)
+ && islower(cur_base->name[0])
+ && islower(cur_base->name[1])
+ && (cur_base->name[2] == '_')
+ && isupper(cur_base->name[3])
+ && isupper(cur_base->name[4])
+ ) {
+
+ verbose_msg(VDETAIL, "adding special derived for %s\n", cur_base->name);
+/* verbose_msg(VDETAIL,"updated final_index = %d\n", final_index); */
+
+
+ assert(der_locale_len+1 < DER_LOCALE_LEN);
+
+ der_locale_array[der_locale_len].name = cur_base->name;
+ der_locale_array[der_locale_len].base_idx = base_locale_len;
+
+ u16_buf[0] = 1;
+ u16_buf[1] = 0;
+ u16_buf_len = 2;
+
+ mm = NULL;
+ if ((u16_buf_len > override_len) ||
+ !(mm = memmem(override_buffer, override_len*sizeof(override_buffer[0]),
+ u16_buf, u16_buf_len*sizeof(u16_buf[0])))
+ ) {
+ assert(override_len + u16_buf_len < OVERRIDE_LEN);
+ memcpy(override_buffer + override_len, u16_buf, u16_buf_len*sizeof(u16_buf[0]));
+ der_locale_array[der_locale_len].overrides_offset = override_len;
+ override_len += u16_buf_len;
+/* printf("%s: override_len = %d u16_buf_len = %d\n", cl->name, override_len, u16_buf_len); */
+ } else if (!(u16_buf_len > override_len)) {
+ assert(mm);
+ der_locale_array[der_locale_len].overrides_offset = ((uint16_t *)(mm)) - override_buffer;
+/* printf("%s: memmem found a match with u16_buf_len = %d\n", cl->name, u16_buf_len); */
+ }
+ der_locale_array[der_locale_len].multistart_offset
+ = base_locale_array[base_locale_len].multistart_offset;
+ der_locale_array[der_locale_len].undefined_idx = final_index_val0("UNDEFINED");
+
+ if (!der_locale_array[der_locale_len].undefined_idx) {
+ error_msg("no UNDEFINED definition for %s", cur_base->name);
+ }
+
+ ++der_locale_len;
+ } else {
+ verbose_msg(VDETAIL, "NOT adding special derived for %s\n", cur_base->name);
+ }
+
+ /* now all the derived... */
+ for (cli = cur_base->derived_list ; cli ; cli = cli->next) {
+ cl = (col_locale_t *)(cli->data);
+ assert(cli->data_type == DT_COL_LOCALE);
+
+ assert(der_locale_len+1 < DER_LOCALE_LEN);
+
+ der_locale_array[der_locale_len].name = cl->name;
+ der_locale_array[der_locale_len].base_idx = base_locale_len;
+
+ u16_buf_len = 0;
+
+ for (i = 0 ; i < 2 ; i++) {
+ if (i) {
+/* fprintf(stdout, " section --- (singles)\n"); */
+ u16_buf[u16_buf_len++] = 1; /* single */
+ }
+ /* we do this in two passes... first all sequences, then all single reorders */
+ for (s = cl->section_list ; s ; s = s->next) {
+/* verbose_msg(VDETAIL, "doing section %s\n", ((section_t *)(s->data))->name); */
+ h = lli = ((section_t *)(s->data))->itm_list;
+ if (!lli) {
+/* fprintf(stdout, "EMPTY ITEM LIST IN SECTION %s\n", ((section_t *)(s->data))->name ); */
+ continue;
+ }
+ assert(u16_buf_len +4 < sizeof(u16_buf)/sizeof(u16_buf[0]));
+ if ((!i && (ll_len(h) > 1) ) || (ll_len(h) == i)) {
+ if (!i) {
+/* fprintf(stdout, " section ----------------- %d %d\n", i, ll_len(h)); */
+ u16_buf[u16_buf_len++] = ll_len(h); /* multi */
+ assert(lli->data_type & DT_WEIGHTED);
+#if 0
+ u16_buf[u16_buf_len++] = final_index_val(((weighted_item_t *)(lli->data))->symbol); /* start index */
+#endif
+ u16_buf[u16_buf_len++] = lli->idx; /* start weight */
+ }
+ do {
+ assert(lli->data_type & DT_WEIGHTED);
+ if (lli->data_type & DT_WEIGHTED) {
+/* fprintf(stdout, "%11s: S %6d %6d %s\n", */
+/* cl->name, lli->idx, */
+/* final_index_val(((weighted_item_t *)(lli->data))->symbol), */
+/* ((weighted_item_t *)(lli->data))->symbol); */
+#if 0
+ if (i) {
+ assert(u16_buf_len +4 < sizeof(u16_buf)/sizeof(u16_buf[0]));
+ u16_buf[u16_buf_len++] = final_index_val(((weighted_item_t *)(lli->data))->symbol);
+ assert(u16_buf[u16_buf_len-1]);
+ u16_buf[u16_buf_len++] = lli->idx; /* weight */
+ }
+#else
+ assert(u16_buf_len +4 < sizeof(u16_buf)/sizeof(u16_buf[0]));
+ u16_buf[u16_buf_len++] = final_index_val(((weighted_item_t *)(lli->data))->symbol);
+ assert(u16_buf[u16_buf_len-1]);
+ if (i) {
+ u16_buf[u16_buf_len++] = lli->idx; /* weight */
+ }
+#endif
+ u16_buf[u16_buf_len++] = add_rule((weighted_item_t *)(lli->data));
+
+ }
+ } while ((lli = lli->next) != h);
+ }
+ }
+ }
+ u16_buf[u16_buf_len++] = 0;
+
+ mm = NULL;
+ if ((u16_buf_len > override_len) ||
+ !(mm = memmem(override_buffer, override_len*sizeof(override_buffer[0]),
+ u16_buf, u16_buf_len*sizeof(u16_buf[0])))
+ ) {
+ assert(override_len + u16_buf_len < OVERRIDE_LEN);
+ memcpy(override_buffer + override_len, u16_buf, u16_buf_len*sizeof(u16_buf[0]));
+ der_locale_array[der_locale_len].overrides_offset = override_len;
+ override_len += u16_buf_len;
+/* printf("%s: override_len = %d u16_buf_len = %d\n", cl->name, override_len, u16_buf_len); */
+ } else if (!(u16_buf_len > override_len)) {
+ assert(mm);
+ der_locale_array[der_locale_len].overrides_offset = ((uint16_t *)(mm)) - override_buffer;
+/* printf("%s: memmem found a match with u16_buf_len = %d\n", cl->name, u16_buf_len); */
+ }
+
+ do_starter_lists(cl);
+
+ der_locale_array[der_locale_len].undefined_idx = final_index_val0("UNDEFINED");
+#if 0
+ assert(der_locale_array[der_locale_len].undefined_idx);
+ if (!der_locale_array[der_locale_len].undefined_idx) {
+ der_locale_array[der_locale_len].undefined_idx = base_locale_array[base_locale_len].undefined_idx;
+ }
+#endif
+
+ if (!der_locale_array[der_locale_len].undefined_idx) {
+ error_msg("no UNDEFINED definition for %s", cl->name);
+ }
+
+ ++der_locale_len;
+ }
+
+#endif
+
+#warning handle UNDEFINED idx specially? what if in only some of derived?
+/* base_locale_array[base_locale_len].undefined_idx = final_index_val0("UNDEFINED"); */
+ base_locale_array[base_locale_len].undefined_idx = 0;
+
+
+ hdestroy();
+
+ ++base_locale_len;
+
+/* if (tnumnodes(cur_base->root_starter_char)) { */
+/* verbose_msg(VDETAIL, "starter nodes\n"); */
+/* twalk(cur_base->root_starter_char, print_starter_node); */
+/* } */
+}
+
+static int starter_all_cmp(const void *n1, const void *n2)
+{
+ const char *s1 = ((weighted_item_t *) n1)->symbol;
+ const char *s2 = ((weighted_item_t *) n2)->symbol;
+ colitem_t x;
+ colitem_t *p;
+ int n;
+
+ /* sort by 1st char ... then inverse for string */
+
+ x.element = NULL;
+ if (!is_ucode(s1)) {
+ x.string = s1;
+ p = tfind(&x, &cur_base->root_colitem, colitem_cmp);
+ s1 = (*((colitem_t **) p))->element + 1;
+ }
+ if (!is_ucode(s2)) {
+ x.string = s2;
+ p = tfind(&x, &cur_base->root_colitem, colitem_cmp);
+ s2 = (*((colitem_t **) p))->element + 1;
+ }
+
+ /* <U####>< */
+ /* 01234567 */
+
+ assert(is_ucode(s1));
+ assert(is_ucode(s2));
+
+ n = strncmp(s1+2, s2+2, 4);
+ if (n) {
+ return n;
+ }
+
+ s1 += 7;
+ s2 += 7;
+
+ return strcmp(s2, s1);
+}
+
+static void print_starter_all_node(const void *ptr, VISIT order, int level)
+{
+ const weighted_item_t *w = *(const weighted_item_t **) ptr;
+ colitem_t *ci;
+ void *p;
+ int n;
+ colitem_t x;
+
+ if (order == postorder || order == leaf) {
+#if 0
+ if ((n = is_ucode(w->symbol)) != 0) {
+ printf(" %s\n", w->symbol);
+ } else {
+ x.string = w->symbol;
+ x.element = NULL;
+ p = tfind(&x, &cur_base->root_colitem, colitem_cmp);
+ assert(p);
+ ci = *((colitem_t **) p);
+ printf("%s = %s\n", ci->element, w->symbol);
+ }
+#else
+ printf("%s|", w->symbol);
+/* if ((n = is_ucode(w->symbol)) != 0) { */
+/* printf("\n"); */
+/* } */
+#endif
+ }
+}
+
+static void process_starter_node(const void *ptr, VISIT order, int level)
+{
+ const weighted_item_t *w = *(const weighted_item_t **) ptr;
+ colitem_t *ci;
+ void *p;
+ int n;
+ colitem_t x;
+ const char *s;
+ char buf[32];
+
+ /* store index of collation item followed by (unprefixed) nul-terminated string */
+ if (order == postorder || order == leaf) {
+ if ((n = is_ucode(w->symbol)) != 0) {
+ u16_buf[u16_buf_len++] = final_index_val(w->symbol);
+ assert(u16_buf[u16_buf_len-1]);
+ u16_buf[u16_buf_len++] = 0;
+ if (++u16_starter < base_locale_array[base_locale_len].num_starters) {
+ u16_buf[u16_starter] = u16_buf_len;
+ }
+/* verbose_msg(VDETAIL, "ucode - %d %d\n", u16_buf[u16_starter-1], u16_buf_len); */
+ } else {
+ x.string = w->symbol;
+ x.element = NULL;
+ p = tfind(&x, &cur_base->root_colitem, colitem_cmp);
+ assert(p);
+ ci = *((colitem_t **) p);
+ s = ci->element;
+ u16_buf[u16_buf_len++] = final_index_val(w->symbol);
+ assert(u16_buf[u16_buf_len-1]);
+ assert(*s == '"');
+ n = is_ucode(++s);
+/* verbose_msg(VDETAIL, "s is |%s| with len %d (%d)\n", s, strlen(s), n); */
+ assert(n);
+ s += n;
+ while (*s != '"') {
+ n = is_ucode(s);
+ assert(n);
+ strncpy(buf, s, n+1);
+ buf[n] = 0;
+/* verbose_msg(VDETAIL, "buf is |%s| with len %d (%d)\n", buf, strlen(buf), n); */
+ u16_buf[u16_buf_len++] = final_index_val(buf);
+ assert(u16_buf[u16_buf_len-1]);
+ s += n;
+ }
+ u16_buf[u16_buf_len++] = 0;
+ }
+ }
+}
+
+static void **p_cl_root_starter_all;
+
+static void complete_starter_node(const void *ptr, VISIT order, int level)
+{
+ weighted_item_t w;
+ weighted_item_t *p;
+
+ if (order == postorder || order == leaf) {
+ w.symbol = *(const char **) ptr;
+ w.weight = NULL;
+ if (!tfind(&w, p_cl_root_starter_all, starter_all_cmp)) {
+ p = xmalloc(sizeof(weighted_item_t));
+ p->symbol = w.symbol;
+ p->weight = NULL;
+/* verbose_msg(VDETAIL, "complete_starter_node: %s\n", *(const char **) ptr); */
+ if (!tsearch(p, p_cl_root_starter_all, starter_all_cmp)) {
+ error_msg("OUT OF MEMORY");
+ }
+ }
+ }
+}
+
+static void do_starter_lists(col_locale_t *cl)
+{
+ ll_item_t *s;
+ ll_item_t *h;
+ ll_item_t *lli;
+ col_locale_t *c;
+ colitem_t *ci;
+ weighted_item_t *w;
+ void *p;
+ char buf[32];
+ int n;
+ colitem_t x;
+ void *mm;
+
+ c = cl;
+ if (c != cur_base) {
+ c = cur_base;
+ }
+
+/* printf("STARTERS %s --------------------\n", cl->name); */
+ LOOP:
+ for (s = c->section_list ; s ; s = s->next) {
+ h = lli = ((section_t *)(s->data))->itm_list;
+ if (!lli) {
+ continue;
+ }
+ do {
+ if (lli->data_type & DT_WEIGHTED) {
+ w = (weighted_item_t *)(lli->data);
+ ci = NULL;
+ if ((n = is_ucode(w->symbol)) != 0) {
+ strcpy(buf, w->symbol);
+ } else {
+/* fprintf(stdout, "looking for |%s|\n", w->symbol); */
+ x.string = w->symbol;
+ x.element = NULL;
+ p = tfind(&x, &cur_base->root_colitem, colitem_cmp);
+ if (!p) {
+/* verbose_msg(VDETAIL, "Whoa... processing starters for %s and couldn't find %s\n", */
+/* cl->name, w->symbol); */
+ continue;
+ }
+ ci = *((colitem_t **) p);
+ if (!ci->element) { /* just a collating symbol */
+ continue;
+ }
+ assert(ci->element[0] == '"');
+ n = is_ucode(ci->element + 1);
+ assert(n);
+ strncpy(buf, ci->element + 1, n);
+ }
+ if ((tfind(buf, &cur_base->root_starter_char, sym_cmp)) != NULL) {
+/* fprintf(stdout, "adding from %s: %s", c->name, w->symbol); */
+/* if (ci) { */
+/* fprintf(stdout, " = %s", ci->element); */
+/* } */
+/* fprintf(stdout, "\n"); */
+
+ if (!tsearch(w, &cl->root_starter_all, starter_all_cmp)) {
+ error_msg("OUT OF MEMORY");
+ }
+ }
+ }
+ } while ((lli = lli->next) != h);
+ }
+
+ if (c != cl) {
+ c = cl;
+ goto LOOP;
+ }
+
+ p_cl_root_starter_all = &cl->root_starter_all;
+ twalk(cur_base->root_starter_char, complete_starter_node);
+
+ if (cl == cur_base) {
+ base_locale_array[base_locale_len].num_starters = tnumnodes(cur_base->root_starter_char);
+ }
+
+#if 0
+ printf("\nNow walking tree...\n\n");
+ twalk(cl->root_starter_all, print_starter_all_node);
+ printf("\n\n");
+
+#endif
+ u16_starter = 0;
+ u16_buf[0] = u16_buf_len = base_locale_array[base_locale_len].num_starters;
+ twalk(cl->root_starter_all, process_starter_node);
+/* verbose_msg(VDETAIL, "s=%d n=%d\n", u16_starter, base_locale_array[base_locale_len].num_starters); */
+ assert(u16_starter == base_locale_array[base_locale_len].num_starters);
+
+#if 0
+ { int i;
+ for (i=0 ; i < u16_buf_len ; i++) {
+ verbose_msg(VDETAIL, "starter %2d: %d - %#06x\n", i, u16_buf[i], u16_buf[i]);
+ }}
+#endif
+
+ mm = NULL;
+ if (u16_buf_len) {
+/* assert(base_locale_array[base_locale_len].num_starters); */
+ if ((u16_buf_len > multistart_len) ||
+ !(mm = memmem(multistart_buffer, multistart_len*sizeof(multistart_buffer[0]),
+ u16_buf, u16_buf_len*sizeof(u16_buf[0])))
+ ) {
+ assert(multistart_len + u16_buf_len < MULTISTART_LEN);
+ memcpy(multistart_buffer + multistart_len, u16_buf, u16_buf_len*sizeof(u16_buf[0]));
+ if (cl == cur_base) {
+ base_locale_array[base_locale_len].multistart_offset = multistart_len;
+ } else {
+ der_locale_array[der_locale_len].multistart_offset = multistart_len;
+ }
+ multistart_len += u16_buf_len;
+/* verbose_msg(VDETAIL, "%s: multistart_len = %d u16_buf_len = %d\n", cl->name, multistart_len, u16_buf_len); */
+ } else if (!(u16_buf_len > multistart_len)) {
+ assert(mm);
+ if (cl == cur_base) {
+ base_locale_array[base_locale_len].multistart_offset = ((uint16_t *)(mm)) - multistart_buffer;
+ } else {
+ der_locale_array[der_locale_len].multistart_offset = ((uint16_t *)(mm)) - multistart_buffer;
+ }
+/* verbose_msg(VDETAIL, "%s: memmem found a match with u16_buf_len = %d\n", cl->name, u16_buf_len); */
+ }
+ } else {
+ assert(!base_locale_array[base_locale_len].num_starters);
+ }
+
+/* printf("u16_buf_len = %d\n", u16_buf_len); */
+
+/* printf("STARTERS %s DONE ---------------\n", cl->name); */
+}
+
+
+/* For sorting the blocks of unsigned chars. */
+static size_t nu_val;
+
+int nu_memcmp(const void *a, const void *b)
+{
+ return memcmp(*(unsigned char**)a, *(unsigned char**)b, nu_val * sizeof(tbl_item));
+}
+
+
+size_t newopt(tbl_item *ut, size_t usize, int shift, table_data *tbl)
+{
+ static int recurse;
+ tbl_item *ti[RANGE]; /* table index */
+ size_t numblocks;
+ size_t blocksize;
+ size_t uniq;
+ size_t i, j;
+ size_t smallest, t;
+ tbl_item *ii_save;
+ int uniqblock[1 << (8*sizeof(tbl_item) - 1)];
+ tbl_item uit[RANGE];
+ int shift2;
+
+ if (shift > 15) {
+ return SIZE_MAX;
+ }
+
+ ii_save = NULL;
+ blocksize = 1 << shift;
+ numblocks = usize >> shift;
+
+ /* init table index */
+ for (i=j=0 ; i < numblocks ; i++) {
+ ti[i] = ut + j;
+ j += blocksize;
+ }
+
+ /* sort */
+ nu_val = blocksize;
+ qsort(ti, numblocks, sizeof(unsigned char *), nu_memcmp);
+
+ uniq = 1;
+ uit[(ti[0]-ut)/blocksize] = 0;
+ for (i=1 ; i < numblocks ; i++) {
+ if (memcmp(ti[i-1], ti[i], blocksize*sizeof(tbl_item)) < 0) {
+ if (++uniq > (1 << (8*sizeof(tbl_item) - 1))) {
+ break;
+ }
+ uniqblock[uniq - 1] = i;
+ }
+#if 1
+ else if (memcmp(ti[i-1], ti[i], blocksize*sizeof(tbl_item)) > 0) {
+ printf("bad sort %i!\n", i);
+ abort();
+ }
+#endif
+ uit[(ti[i]-ut)/blocksize] = uniq - 1;
+ }
+
+ smallest = SIZE_MAX;
+ shift2 = -1;
+ if (uniq <= (1 << (8*sizeof(tbl_item) - 1))) {
+ smallest = numblocks + uniq * blocksize;
+ if (!recurse) {
+ ++recurse;
+ for (j=1 ; j < 14 ; j++) {
+ if ((numblocks >> j) < 2) break;
+ if (tbl) {
+ ii_save = tbl->ii;
+ tbl->ii = NULL;
+ }
+ if ((t = newopt(uit, numblocks, j, tbl)) < SIZE_MAX) {
+ t += uniq * blocksize;
+ }
+ if (tbl) {
+ tbl->ii = ii_save;
+ }
+ if (smallest >= t) {
+ shift2 = j;
+ smallest = t;
+/* if (!tbl->ii) { */
+/* printf("ishift %u tshift %u size %u\n", */
+/* shift2, shift, t); */
+/* } */
+/* } else { */
+/* break; */
+ }
+ }
+ --recurse;
+ }
+ } else {
+ return SIZE_MAX;
+ }
+
+ if (tbl->ii) {
+ if (recurse) {
+ tbl->ii_shift = shift;
+ tbl->ii_len = numblocks;
+ memcpy(tbl->ii, uit, numblocks*sizeof(tbl_item));
+ tbl->ti = tbl->ii + tbl->ii_len;
+ tbl->ti_len = uniq * blocksize;
+ for (i=0 ; i < uniq ; i++) {
+ memcpy(tbl->ti + i * blocksize, ti[uniqblock[i]], blocksize*sizeof(tbl_item));
+ }
+ } else {
+ ++recurse;
+/* printf("setting ishift %u tshift %u\n", shift2, shift); */
+ newopt(uit, numblocks, shift2, tbl);
+ --recurse;
+ tbl->ti_shift = shift;
+ tbl->ut_len = uniq * blocksize;
+ tbl->ut = tbl->ti + tbl->ti_len;
+ for (i=0 ; i < uniq ; i++) {
+ memcpy(tbl->ut + i * blocksize, ti[uniqblock[i]], blocksize*sizeof(tbl_item));
+ }
+ }
+ }
+ return smallest;
+}
+
+static const int rule2val[8] = {
+ -1,
+ (1 << 14), /* forward */
+ (2 << 14), /* position */
+ (3 << 14), /* forward,position */
+ 0, /* backward */
+ -1,
+ -1,
+ -1,
+};
+
+
+static int final_index_val_x(const char *s, const char *sym)
+{
+ int r;
+
+ if (!(r = final_index_val0(s))) {
+ if (!strcmp(s, "IGNORE")) {
+ r = 0;
+ } else if (!strcmp(s, "..") || !strcmp(sym, "RANGE")) {
+ if (*sym == '.') {
+ final_index_val(sym); /* make sure it's known */
+ }
+ r = 0x3fff;
+ } else if (!strcmp(s, ".")) {
+ r = 0x3ffe;
+ } else {
+ error_msg("can't find final index: %s", s);
+ }
+ }
+ return r;
+}
+
+/* store rule2val in 2 high bits and collation index in lower.
+ * for sort strings, store (offset from base) + max colindex as index.
+ */
+static unsigned int add_rule(weighted_item_t *wi)
+{
+ weight_t *w = wi->weight;
+ int i, j, r, n;
+ uint16_t rbuf[MAX_COLLATION_WEIGHTS];
+ uint16_t ws_buf[32];
+ void *mm;
+ char buf[32];
+ const char *s;
+ const char *e;
+
+ for (i=0 ; i < MAX_COLLATION_WEIGHTS ; i++) {
+ rbuf[i] = rule2val[R_FORWARD]; /* set a default to forward-ignore */
+ }
+
+ if (base_locale_array[base_locale_len].num_weights < w->num_weights) {
+ base_locale_array[base_locale_len].num_weights = w->num_weights;
+ }
+
+ for (i=0 ; i < w->num_weights ; i++) {
+ assert(rule2val[(int)(w->rule[i])] >= 0);
+ assert(w->colitem[i] && *w->colitem[i]);
+ if (*w->colitem[i] == '"') { /* string... */
+ s = w->colitem[i] + 1;
+ assert(*s == '<');
+ n = 0;
+ do {
+ e = s;
+ do {
+ if (*e == '/') {
+ e += 2;
+ continue;
+ }
+ } while (*e++ != '>');
+ assert(((size_t)(e-s) < sizeof(buf)));
+ memcpy(buf, s, (size_t)(e-s));
+ buf[(size_t)(e-s)] = 0;
+
+ r = final_index_val_x(buf, wi->symbol);
+ assert(n + 1 < sizeof(ws_buf)/sizeof(ws_buf[0]));
+ ws_buf[n++] = r | rule2val[(int)(w->rule[i])];
+
+ s = e;
+ } while (*s != '"');
+ ws_buf[n++] = 0; /* terminator */
+
+ mm = memmem(weightstr_buffer, weightstr_len*sizeof(weightstr_buffer[0]),
+ ws_buf, n*sizeof(ws_buf[0]));
+
+ if (!mm) {
+ assert(weightstr_len + n < WEIGHTSTR_LEN);
+ memcpy(weightstr_buffer + weightstr_len, ws_buf, n*sizeof(ws_buf[0]));
+ mm = weightstr_buffer + weightstr_len;
+ weightstr_len += n;
+ }
+ r = (((uint16_t *)(mm)) - weightstr_buffer)
+ + base_locale_array[base_locale_len].max_col_index + 2;
+ assert(r < (1 << 14));
+ rbuf[i] = r | rule2val[(int)(w->rule[i])];
+ } else { /* item */
+ r = final_index_val_x(w->colitem[i], wi->symbol);
+ rbuf[i] = r | rule2val[(int)(w->rule[i])];
+ }
+ }
+
+ for (i=0 ; i < ruletable_len ; i += MAX_COLLATION_WEIGHTS) {
+ if (!memcmp(ruletable_buffer + i, rbuf, MAX_COLLATION_WEIGHTS*sizeof(ruletable_buffer[0]))) {
+ return i/MAX_COLLATION_WEIGHTS;
+ }
+ }
+
+ memcpy(ruletable_buffer + ruletable_len, rbuf, MAX_COLLATION_WEIGHTS*sizeof(ruletable_buffer[0]));
+ ruletable_len += MAX_COLLATION_WEIGHTS;
+
+ return (ruletable_len / MAX_COLLATION_WEIGHTS)-1;
+}
+
+static unsigned int add_range_rule(range_item_t *ri)
+{
+ weight_t *w = ri->weight;
+ int i, j, r, n;
+ uint16_t rbuf[MAX_COLLATION_WEIGHTS];
+ uint16_t ws_buf[32];
+ void *mm;
+ char buf[32];
+ const char *s;
+ const char *e;
+
+ for (i=0 ; i < MAX_COLLATION_WEIGHTS ; i++) {
+ rbuf[i] = rule2val[R_FORWARD]; /* set a default to forward-ignore */
+ }
+
+ if (base_locale_array[base_locale_len].num_weights < w->num_weights) {
+ base_locale_array[base_locale_len].num_weights = w->num_weights;
+ }
+
+ for (i=0 ; i < w->num_weights ; i++) {
+ assert(rule2val[(int)(w->rule[i])] >= 0);
+ assert(w->colitem[i] && *w->colitem[i]);
+ if (*w->colitem[i] == '"') { /* string... */
+ s = w->colitem[i] + 1;
+ assert(*s == '<');
+ n = 0;
+ do {
+ e = s;
+ do {
+ if (*e == '/') {
+ e += 2;
+ continue;
+ }
+ } while (*e++ != '>');
+ assert(((size_t)(e-s) < sizeof(buf)));
+ memcpy(buf, s, (size_t)(e-s));
+ buf[(size_t)(e-s)] = 0;
+
+ r = final_index_val_x(buf, "RANGE");
+ assert(n + 1 < sizeof(ws_buf)/sizeof(ws_buf[0]));
+ ws_buf[n++] = r | rule2val[(int)(w->rule[i])];
+
+ s = e;
+ } while (*s != '"');
+ ws_buf[n++] = 0; /* terminator */
+
+ mm = memmem(weightstr_buffer, weightstr_len*sizeof(weightstr_buffer[0]),
+ ws_buf, n*sizeof(ws_buf[0]));
+
+ if (!mm) {
+ assert(weightstr_len + n < WEIGHTSTR_LEN);
+ memcpy(weightstr_buffer + weightstr_len, ws_buf, n*sizeof(ws_buf[0]));
+ mm = weightstr_buffer + weightstr_len;
+ weightstr_len += n;
+ }
+ r = (((uint16_t *)(mm)) - weightstr_buffer)
+ + base_locale_array[base_locale_len].max_col_index + 2;
+ assert(r < (1 << 14));
+ rbuf[i] = r | rule2val[(int)(w->rule[i])];
+ } else { /* item */
+ r = final_index_val_x(w->colitem[i], "RANGE");
+ rbuf[i] = r | rule2val[(int)(w->rule[i])];
+ }
+ }
+
+ for (i=0 ; i < ruletable_len ; i += MAX_COLLATION_WEIGHTS) {
+ if (!memcmp(ruletable_buffer + i, rbuf, MAX_COLLATION_WEIGHTS*sizeof(ruletable_buffer[0]))) {
+ return i/MAX_COLLATION_WEIGHTS;
+ }
+ }
+
+ memcpy(ruletable_buffer + ruletable_len, rbuf, MAX_COLLATION_WEIGHTS*sizeof(ruletable_buffer[0]));
+ ruletable_len += MAX_COLLATION_WEIGHTS;
+
+ return (ruletable_len / MAX_COLLATION_WEIGHTS)-1;
+}
+
+#define DUMPn(X) fprintf(stderr, "%10d-%-.20s", base_locale_array[n]. X, #X);
+
+static void dump_base_locale(int n)
+{
+ assert(n < base_locale_len);
+
+ fprintf(stderr, "Base Locale: %s\n", base_locale_array[n].name);
+
+ DUMPn(num_weights);
+
+ DUMPn(ii_shift);
+ DUMPn(ti_shift);
+ DUMPn(ii_len);
+ DUMPn(ti_len);
+ DUMPn(max_weight);
+ fprintf(stderr, "\n");
+ DUMPn(num_col_base);
+ DUMPn(max_col_index);
+ DUMPn(undefined_idx);
+ DUMPn(range_low);
+ DUMPn(range_count);
+ fprintf(stderr, "\n");
+ DUMPn(range_base_weight);
+ DUMPn(num_starters);
+
+ fprintf(stderr, "\n");
+ DUMPn(range_rule_offset);
+ DUMPn(wcs2colidt_offset);
+ DUMPn(index2weight_offset);
+ fprintf(stderr, "\n");
+ DUMPn(index2ruleidx_offset);
+ DUMPn(multistart_offset);
+ fprintf(stderr, "\n");
+}
+
+#undef DUMPn
+#define DUMPn(X) fprintf(stderr, "%10d-%s", der_locale_array[n]. X, #X);
+
+static void dump_der_locale(int n)
+{
+ assert(n < der_locale_len);
+
+ fprintf(stderr, "Derived Locale: %s (%.12s)",
+ der_locale_array[n].name,
+ base_locale_array[der_locale_array[n].base_idx].name);
+
+
+ DUMPn(base_idx);
+
+ DUMPn(undefined_idx);
+
+ DUMPn(overrides_offset);
+ DUMPn(multistart_offset);
+
+ fprintf(stderr, "\n");
+}
+
+
+static unsigned long collate_pos;
+
+static void dump_u16_array(FILE *fp, uint16_t *u, int len, const char *name)
+{
+ int i;
+
+ fprintf(fp, "\t/* %8lu %s */\n", collate_pos, name);
+ for (i=0 ; i < len ; i++) {
+ if (!(i & 7)) {
+ fprintf(fp, "\n\t");
+ }
+ fprintf(fp," %#06x,", (unsigned int)(u[i]));
+ }
+ fprintf(fp,"\n");
+ collate_pos += len;
+}
+
+#define OUT_U16C(X,N) fprintf(fp,"\t%10d, /* %8lu %s */\n", X, collate_pos++, N);
+
+static void dump_collate(FILE *fp)
+{
+ int n;
+
+ fprintf(fp, "const uint16_t __locale_collate_tbl[] = {\n");
+
+ OUT_U16C(base_locale_len, "numbef of base locales");
+ OUT_U16C(der_locale_len, "number of derived locales");
+ OUT_U16C(MAX_COLLATION_WEIGHTS, "max collation weights");
+ OUT_U16C(index2weight_len, "number of index2{weight|ruleidx} elements");
+ OUT_U16C(weightstr_len, "number of weightstr elements");
+ OUT_U16C(multistart_len, "number of multistart elements");
+ OUT_U16C(override_len, "number of override elements");
+ OUT_U16C(ruletable_len, "number of ruletable elements");
+
+#undef DUMPn
+#define DUMPn(X) fprintf(fp, "\t%10d, /* %8lu %s */\n", base_locale_array[n]. X, collate_pos++, #X);
+ for (n=0 ; n < base_locale_len ; n++) {
+ unsigned wcs2colidt_offset_low = base_locale_array[n].wcs2colidt_offset & 0xffffU;
+ unsigned wcs2colidt_offset_hi = base_locale_array[n].wcs2colidt_offset >> 16;
+ fprintf(fp, "\t/* Base Locale %2d: %s */\n", n, base_locale_array[n].name);
+ DUMPn(num_weights);
+ DUMPn(num_starters);
+ DUMPn(ii_shift);
+ DUMPn(ti_shift);
+ DUMPn(ii_len);
+ DUMPn(ti_len);
+ DUMPn(max_weight);
+ DUMPn(num_col_base);
+ DUMPn(max_col_index);
+ DUMPn(undefined_idx);
+ DUMPn(range_low);
+ DUMPn(range_count);
+ DUMPn(range_base_weight);
+ DUMPn(range_rule_offset);
+ DUMPn(index2weight_offset);
+ DUMPn(index2ruleidx_offset);
+ DUMPn(multistart_offset);
+#undef DUMPn
+#define DUMPn(X) fprintf(fp, "\t%10d, /* %8lu %s */\n", X, collate_pos++, #X);
+ DUMPn(wcs2colidt_offset_low);
+ DUMPn(wcs2colidt_offset_hi);
+ }
+#undef DUMPn
+
+
+ fprintf(fp, "#define COL_IDX_C %5d\n", 0);
+#define DUMPn(X) fprintf(fp, "\t%10d, /* %8lu %s */\n", der_locale_array[n]. X, collate_pos++, #X);
+ for (n=0 ; n < der_locale_len ; n++) {
+ fprintf(fp, "#define COL_IDX_%s %5d\n", der_locale_array[n].name, n+1);
+ fprintf(fp, "\t/* Derived Locale %4d: %s (%.12s) */\n",
+ n, der_locale_array[n].name,
+ base_locale_array[der_locale_array[n].base_idx].name);
+ DUMPn(base_idx);
+ DUMPn(undefined_idx);
+ DUMPn(overrides_offset);
+ DUMPn(multistart_offset);
+ }
+#undef DUMPn
+
+ fprintf(fp, "\n");
+
+ dump_u16_array(fp, index2weight_buffer, index2weight_len, "index2weight");
+ dump_u16_array(fp, index2ruleidx_buffer, index2ruleidx_len, "index2ruleidx");
+ dump_u16_array(fp, multistart_buffer, multistart_len, "multistart");
+ dump_u16_array(fp, override_buffer, override_len, "override");
+ dump_u16_array(fp, ruletable_buffer, ruletable_len, "ruletable");
+ dump_u16_array(fp, weightstr_buffer, weightstr_len, "weightstr");
+ dump_u16_array(fp, wcs2colidt_buffer, wcs2colidt_len, "wcs2colidt");
+
+
+ fprintf(fp,"}; /* %8lu */\n", collate_pos);
+
+ fprintf(fp,"#define __lc_collate_data_LEN %lu\n\n", collate_pos);
+}
diff --git a/ap/build/uClibc/extra/locale/gen_ldc.c b/ap/build/uClibc/extra/locale/gen_ldc.c
new file mode 100644
index 0000000..2cedbdd
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/gen_ldc.c
@@ -0,0 +1,298 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <stdint.h>
+#include <stddef.h>
+
+#ifndef __WCHAR_ENABLED
+#warning WHOA!!! __WCHAR_ENABLED is not defined! defining it now...
+#define __WCHAR_ENABLED
+#endif
+
+#define WANT_DATA
+#include "c8tables.h"
+#ifndef __CTYPE_HAS_8_BIT_LOCALES
+#warning __CTYPE_HAS_8_BIT_LOCALES is not defined...
+/* #define __CTYPE_HAS_8_BIT_LOCALES */
+#endif
+
+/* #define __LOCALE_DATA_Cctype_TBL_LEN 328 */
+/* #define __LOCALE_DATA_Cuplow_TBL_LEN 400 */
+/* #define __LOCALE_DATA_Cc2wc_TBL_LEN 1448 */
+/* #define __LOCALE_DATA_Cwc2c_TBL_LEN 3744 */
+
+#define WANT_WCctype_data
+#define WANT_WCuplow_data
+#define WANT_WCuplow_diff_data
+/* #define WANT_WCcomb_data */
+/* #define WANT_WCwidth_data */
+#include "wctables.h"
+#undef WANT_WCctype_data
+#undef WANT_WCuplow_data
+#undef WANT_WCuplow_diff_data
+/* #undef WANT_WCcomb_data */
+/* #undef WANT_WCwidth_data */
+
+ #define __LOCALE_DATA_WCctype_TBL_LEN (__LOCALE_DATA_WCctype_II_LEN + __LOCALE_DATA_WCctype_TI_LEN + __LOCALE_DATA_WCctype_UT_LEN)
+ #define __LOCALE_DATA_WCuplow_TBL_LEN (__LOCALE_DATA_WCuplow_II_LEN + __LOCALE_DATA_WCuplow_TI_LEN + __LOCALE_DATA_WCuplow_UT_LEN)
+ #define __LOCALE_DATA_WCuplow_diff_TBL_LEN (2 * __LOCALE_DATA_WCuplow_diffs)
+/* #define WCcomb_TBL_LEN (WCcomb_II_LEN + WCcomb_TI_LEN + WCcomb_UT_LEN) */
+
+#include "locale_collate.h"
+#include "locale_tables.h"
+
+#include "locale_mmap.h"
+
+/* #undef __PASTE2 */
+/* #define __PASTE2(A,B) A ## B */
+/* #undef __PASTE3 */
+/* #define __PASTE3(A,B,C) A ## B ## C */
+
+
+/* #define __LOCALE_DATA_MAGIC_SIZE 64 */
+
+/* #define COMMON_MMAP(X) \ */
+/* unsigned char __PASTE3(lc_,X,_data)[__PASTE3(__lc_,X,_data_LEN)]; */
+
+/* #define COMMON_MMIDX(X) \ */
+/* unsigned char __PASTE3(lc_,X,_rows)[__PASTE3(__lc_,X,_rows_LEN)]; \ */
+/* uint16_t __PASTE3(lc_,X,_item_offsets)[__PASTE3(__lc_,X,_item_offsets_LEN)]; \ */
+/* uint16_t __PASTE3(lc_,X,_item_idx)[__PASTE3(__lc_,X,_item_idx_LEN)]; \ */
+
+/* ---------------------------------------------------------------------- */
+
+#define COMMON_OFFSETS(X) \
+ offsetof(__locale_mmap_t, __PASTE3(lc_,X,_rows)), \
+ offsetof(__locale_mmap_t, __PASTE3(lc_,X,_item_offsets)), \
+ offsetof(__locale_mmap_t, __PASTE3(lc_,X,_item_idx)), \
+ offsetof(__locale_mmap_t, __PASTE3(lc_,X,_data)) \
+
+
+static const size_t common_tbl_offsets[__LOCALE_DATA_CATEGORIES*4] = {
+ COMMON_OFFSETS(ctype),
+ COMMON_OFFSETS(numeric),
+ COMMON_OFFSETS(monetary),
+ COMMON_OFFSETS(time),
+ 0, 0, 0, 0, /* collate */
+ COMMON_OFFSETS(messages),
+};
+
+
+void out_uc(FILE *f, const unsigned char *p, size_t n, char *comment)
+{
+ size_t i;
+
+ fprintf(f, "{\t/* %s */", comment);
+ for (i = 0 ; i < n ; i++) {
+ if (!(i & 7)) {
+ fprintf(f, "\n\t");
+ }
+ if (p[i]) {
+ fprintf(f, "%#04x, ", p[i]);
+ } else {
+ fprintf(f, "%#4x, ", p[i]);
+ }
+ }
+ fprintf(f, "\n},\n");
+}
+
+void out_u16(FILE *f, const uint16_t *p, size_t n, char *comment)
+{
+ size_t i;
+
+ fprintf(f, "{\t/* %s */", comment);
+ for (i = 0 ; i < n ; i++) {
+ if (!(i & 7)) {
+ fprintf(f, "\n\t");
+ }
+ if (p[i]) {
+ fprintf(f, "%#06x, ", p[i]);
+ } else {
+ fprintf(f, "%#6x, ", p[i]);
+ }
+ }
+ fprintf(f, "\n},\n");
+}
+
+void out_i16(FILE *f, const int16_t *p, size_t n, char *comment)
+{
+ size_t i;
+
+ fprintf(f, "{\t/* %s */", comment);
+ for (i = 0 ; i < n ; i++) {
+ if (!(i & 7)) {
+ fprintf(f, "\n\t");
+ }
+ fprintf(f, "%6d, ", p[i]);
+ }
+ fprintf(f, "\n},\n");
+}
+
+void out_size_t(FILE *f, const size_t *p, size_t n, char *comment)
+{
+ size_t i;
+
+ fprintf(f, "{\t/* %s */", comment);
+ for (i = 0 ; i < n ; i++) {
+ if (!(i & 3)) {
+ fprintf(f, "\n\t");
+ }
+ if (p[i]) {
+ fprintf(f, "%#010zx, ", p[i]);
+ } else {
+ fprintf(f, "%#10zx, ", p[i]);
+ }
+ }
+ fprintf(f, "\n},\n");
+}
+
+
+int main(int argc, char **argv)
+{
+ char *output_file = "locale_data.c";
+ FILE *lso; /* static object */
+ int i;
+#ifdef __LOCALE_DATA_MAGIC_SIZE
+ unsigned char magic[__LOCALE_DATA_MAGIC_SIZE];
+
+ memset(magic, 0, __LOCALE_DATA_MAGIC_SIZE);
+#endif /* __LOCALE_DATA_MAGIC_SIZE */
+
+ if (argc == 2)
+ output_file = argv[1];
+ if (!(lso = fopen(output_file, "w"))) {
+ printf("cannot open output file '%s'!\n", output_file);
+ return EXIT_FAILURE;
+ }
+
+ fprintf(lso,
+ "#include <stddef.h>\n"
+ "#include <stdint.h>\n"
+/* "#define __CTYPE_HAS_8_BIT_LOCALES\n" */
+ "#ifndef __WCHAR_ENABLED\n"
+ "#error __WCHAR_ENABLED not defined\n"
+ "#endif\n"
+ "#include \"c8tables.h\"\n"
+ "#include \"wctables.h\"\n"
+ "#include \"lt_defines.h\"\n"
+ "#include \"locale_mmap.h\"\n\n"
+ "static const __locale_mmap_t locale_mmap = {\n\n"
+ );
+#ifdef __LOCALE_DATA_MAGIC_SIZE
+ out_uc(lso, magic, __LOCALE_DATA_MAGIC_SIZE, "magic");
+#endif /* __LOCALE_DATA_MAGIC_SIZE */
+#ifdef __CTYPE_HAS_8_BIT_LOCALES
+ out_uc(lso, __LOCALE_DATA_Cctype_data, __LOCALE_DATA_Cctype_TBL_LEN, "tbl8ctype");
+ out_uc(lso, __LOCALE_DATA_Cuplow_data, __LOCALE_DATA_Cuplow_TBL_LEN, "tbl8uplow");
+#ifdef __WCHAR_ENABLED
+ out_u16(lso, __LOCALE_DATA_Cc2wc_data, __LOCALE_DATA_Cc2wc_TBL_LEN, "tbl8c2wc");
+ out_uc(lso, __LOCALE_DATA_Cwc2c_data, __LOCALE_DATA_Cwc2c_TBL_LEN, "tbl8wc2c");
+ /* translit */
+#endif /* __WCHAR_ENABLED */
+#endif /* __CTYPE_HAS_8_BIT_LOCALES */
+#ifdef __WCHAR_ENABLED
+ out_uc(lso, __LOCALE_DATA_WCctype_data, __LOCALE_DATA_WCctype_TBL_LEN, "tblwctype");
+ out_uc(lso, __LOCALE_DATA_WCuplow_data, __LOCALE_DATA_WCuplow_TBL_LEN, "tblwuplow");
+ out_i16(lso, __LOCALE_DATA_WCuplow_diff_data, __LOCALE_DATA_WCuplow_diff_TBL_LEN, "tblwuplow_diff");
+/* const unsigned char tblwcomb[WCcomb_TBL_LEN]; */
+ /* width?? */
+#endif /* __WCHAR_ENABLED */
+ out_uc(lso, __lc_ctype_data, __lc_ctype_data_LEN, "lc_ctype_data");
+ out_uc(lso, __lc_numeric_data, __lc_numeric_data_LEN, "lc_numeric_data");
+ out_uc(lso, __lc_monetary_data, __lc_monetary_data_LEN, "lc_monetary_data");
+ out_uc(lso, __lc_time_data, __lc_time_data_LEN, "lc_time_data");
+ /* TODO -- collate*/
+ out_uc(lso, __lc_messages_data, __lc_messages_data_LEN, "lc_messages_data");
+
+#ifdef __CTYPE_HAS_8_BIT_LOCALES
+ fprintf(lso, "{ /* codeset_8_bit array */\n");
+ for (i = 0 ; i < __LOCALE_DATA_NUM_CODESETS ; i++) {
+ fprintf(lso, "{ /* codeset_8_bit[%d] */\n", i);
+ out_uc(lso, codeset_8_bit[i].idx8ctype, __LOCALE_DATA_Cctype_IDX_LEN, "idx8ctype");
+ out_uc(lso, codeset_8_bit[i].idx8uplow, __LOCALE_DATA_Cuplow_IDX_LEN, "idx8uplow");
+ out_uc(lso, codeset_8_bit[i].idx8c2wc, __LOCALE_DATA_Cc2wc_IDX_LEN, "idx8c2wc");
+ out_uc(lso, codeset_8_bit[i].idx8wc2c, __LOCALE_DATA_Cwc2c_II_LEN, "idx8wc2c");
+ fprintf(lso, "},\n");
+ }
+ fprintf(lso, "},\n");
+#endif /* __CTYPE_HAS_8_BIT_LOCALES */
+
+ out_uc(lso, __lc_ctype_rows, __lc_ctype_rows_LEN, "lc_ctype_rows");
+ out_u16(lso, __lc_ctype_item_offsets, __lc_ctype_item_offsets_LEN, "lc_ctype_item_offsets");
+ out_u16(lso, __lc_ctype_item_idx, __lc_ctype_item_idx_LEN, "lc_ctype_item_idx");
+
+ out_uc(lso, __lc_numeric_rows, __lc_numeric_rows_LEN, "lc_numeric_rows");
+ out_u16(lso, __lc_numeric_item_offsets, __lc_numeric_item_offsets_LEN, "lc_numeric_item_offsets");
+ out_u16(lso, __lc_numeric_item_idx, __lc_numeric_item_idx_LEN, "lc_numeric_item_idx");
+
+ out_uc(lso, __lc_monetary_rows, __lc_monetary_rows_LEN, "lc_monetary_rows");
+ out_u16(lso, __lc_monetary_item_offsets, __lc_monetary_item_offsets_LEN, "lc_monetary_item_offsets");
+ out_u16(lso, __lc_monetary_item_idx, __lc_monetary_item_idx_LEN, "lc_monetary_item_idx");
+
+ out_uc(lso, __lc_time_rows, __lc_time_rows_LEN, "lc_time_rows");
+ out_u16(lso, __lc_time_item_offsets, __lc_time_item_offsets_LEN, "lc_time_item_offsets");
+ out_u16(lso, __lc_time_item_idx, __lc_time_item_idx_LEN, "lc_time_item_idx");
+
+ out_uc(lso, __lc_messages_rows, __lc_messages_rows_LEN, "lc_messages_rows");
+ out_u16(lso, __lc_messages_item_offsets, __lc_messages_item_offsets_LEN, "lc_messages_item_offsets");
+ out_u16(lso, __lc_messages_item_idx, __lc_messages_item_idx_LEN, "lc_messages_item_idx");
+
+ /* collate should be last*/
+ assert(sizeof(__locale_collate_tbl)/sizeof(__locale_collate_tbl[0]) == __lc_collate_data_LEN) ;
+ out_u16(lso, __locale_collate_tbl, __lc_collate_data_LEN, "collate_data");
+
+
+ {
+ unsigned char co_buf[__LOCALE_DATA_CATEGORIES] = {
+ __lc_ctype_item_offsets_LEN,
+ __lc_numeric_item_offsets_LEN,
+ __lc_monetary_item_offsets_LEN,
+ __lc_time_item_offsets_LEN,
+ 0,
+ __lc_messages_item_offsets_LEN
+ };
+ out_uc(lso, co_buf, __LOCALE_DATA_CATEGORIES, "lc_common_item_offsets_LEN");
+ }
+
+ out_size_t(lso, common_tbl_offsets, __LOCALE_DATA_CATEGORIES * 4, "lc_common_tbl_offsets");
+ /* offsets from start of locale_mmap_t */
+ /* rows, item_offsets, item_idx, data */
+
+#ifdef __LOCALE_DATA_NUM_LOCALES
+ out_uc(lso, __locales, __LOCALE_DATA_NUM_LOCALES * __LOCALE_DATA_WIDTH_LOCALES, "locales");
+ out_uc(lso, __locale_names5, 5 * __LOCALE_DATA_NUM_LOCALE_NAMES, "locale_names5");
+#ifdef __LOCALE_DATA_AT_MODIFIERS_LENGTH
+ out_uc(lso, __locale_at_modifiers, __LOCALE_DATA_AT_MODIFIERS_LENGTH, "locale_at_modifiers");
+#else
+#error __LOCALE_DATA_AT_MODIFIERS_LENGTH not defined!
+#endif /* __LOCALE_DATA_AT_MODIFIERS_LENGTH */
+#endif /* __LOCALE_DATA_NUM_LOCALES */
+
+ out_uc(lso, lc_names, __lc_names_LEN, "lc_names");
+#ifdef __CTYPE_HAS_8_BIT_LOCALES
+ out_uc(lso, (const unsigned char*) __LOCALE_DATA_CODESET_LIST, sizeof(__LOCALE_DATA_CODESET_LIST), "codeset_list");
+#endif /* __CTYPE_HAS_8_BIT_LOCALES */
+
+ fprintf(lso,
+ "\n};\n\n"
+ "const __locale_mmap_t *__locale_mmap = &locale_mmap;\n\n"
+ );
+
+ if (ferror(lso) || fclose(lso)) {
+ printf("error writing!\n");
+ return EXIT_FAILURE;
+ }
+
+ return EXIT_SUCCESS;
+}
+
+/* ---------------------------------------------------------------------- */
+
+/* TODO:
+ * collate data (8-bit weighted single char only)
+ * @ mappings!
+ * codeset list? yes, since we'll want to be able to inspect them...
+ * that means putting some header stuff in magic
+ * fix ctype LEN defines in gen_c8tables
+ */
diff --git a/ap/build/uClibc/extra/locale/gen_locale.c b/ap/build/uClibc/extra/locale/gen_locale.c
new file mode 100644
index 0000000..5e89360
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/gen_locale.c
@@ -0,0 +1,1337 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h>
+#include <limits.h>
+#include <assert.h>
+#include <stdarg.h>
+#include <locale.h>
+#include <langinfo.h>
+#include <nl_types.h>
+#include <stdint.h>
+
+#include "c8tables.h"
+
+
+#define __LOCALE_DATA_CATEGORIES 6
+
+/* must agree with ordering of gen_mmap! */
+static const char *lc_names[] = {
+ "LC_CTYPE",
+ "LC_NUMERIC",
+ "LC_MONETARY",
+ "LC_TIME",
+ "LC_COLLATE",
+ "LC_MESSAGES",
+#if __LOCALE_DATA_CATEGORIES == 12
+ "LC_PAPER",
+ "LC_NAME",
+ "LC_ADDRESS",
+ "LC_TELEPHONE",
+ "LC_MEASUREMENT",
+ "LC_IDENTIFICATION",
+#elif __LOCALE_DATA_CATEGORIES != 6
+#error unsupported __LOCALE_DATA_CATEGORIES value!
+#endif
+};
+
+
+
+typedef struct {
+ char *glibc_name;
+ char name[5];
+ char dot_cs; /* 0 if no codeset specified */
+ char cs;
+ unsigned char idx_name;
+ unsigned char lc_time_row;
+ unsigned char lc_numeric_row;
+ unsigned char lc_monetary_row;
+ unsigned char lc_messages_row;
+ unsigned char lc_ctype_row;
+#if __LOCALE_DATA_CATEGORIES != 6
+#error unsupported __LOCALE_DATA_CATEGORIES value
+#endif
+} locale_entry;
+
+static void read_at_mappings(void);
+static void read_enable_disable(void);
+static void read_locale_list(void);
+
+static int find_codeset_num(const char *cs);
+static int find_at_string_num(const char *as);
+static int le_cmp(const void *, const void *);
+static void dump_table8(const char *name, const char *tbl, int len);
+static void dump_table8c(const char *name, const char *tbl, int len);
+static void dump_table16(const char *name, const int *tbl, int len);
+
+static void do_lc_time(void);
+static void do_lc_numeric(void);
+static void do_lc_monetary(void);
+
+static void do_lc_messages(void);
+static void do_lc_ctype(void);
+
+
+static FILE *fp;
+static FILE *ofp;
+static char line_buf[80];
+static char at_mappings[256];
+static char at_mapto[256];
+static char at_strings[1024];
+static char *at_strings_end;
+static locale_entry locales[700];
+static char glibc_locale_names[60000];
+
+static int num_locales;
+
+static int default_utf8;
+static int default_8bit;
+
+static int total_size;
+static int null_count;
+
+static unsigned verbose = 0;
+enum {
+ VINFO = (1<<0),
+ VDETAIL = (1<<1),
+};
+static int verbose_msg(const unsigned lvl, const char *fmt, ...)
+{
+ va_list arg;
+ int ret = 0;
+
+ if (verbose & lvl) {
+ va_start(arg, fmt);
+ ret = vfprintf(stderr, fmt, arg);
+ va_end(arg);
+ }
+ return ret;
+}
+
+static void error_msg(const char *fmt, ...) __attribute__ ((noreturn, format (printf, 1, 2)));
+static void error_msg(const char *fmt, ...)
+{
+ va_list arg;
+
+ fprintf(stderr, "Error: ");
+/* if (fno >= 0) {
+ fprintf(stderr, "file %s (%d): ", fname[fno], lineno[fno]);
+ } */
+ va_start(arg, fmt);
+ vfprintf(stderr, fmt, arg);
+ va_end(arg);
+ fprintf(stderr, "\n");
+
+ exit(EXIT_FAILURE);
+}
+
+static void do_locale_names(void)
+{
+ /* "C" locale name is handled specially by the setlocale code. */
+ int uniq = 0;
+ int i;
+
+ if (num_locales <= 1) {
+/* error_msg("only C locale?"); */
+ fprintf(ofp, "static const unsigned char __locales[%d];\n", (3 + __LOCALE_DATA_CATEGORIES));
+ fprintf(ofp, "static const unsigned char __locale_names5[5];\n");
+ } else {
+ if (default_utf8) {
+ fprintf(ofp, "#define __CTYPE_HAS_UTF_8_LOCALES\t\t\t1\n");
+ }
+ fprintf(ofp, "#define __LOCALE_DATA_CATEGORIES\t\t\t%d\n", __LOCALE_DATA_CATEGORIES);
+ fprintf(ofp, "#define __LOCALE_DATA_WIDTH_LOCALES\t\t\t%d\n", 3+__LOCALE_DATA_CATEGORIES);
+ fprintf(ofp, "#define __LOCALE_DATA_NUM_LOCALES\t\t\t%d\n", num_locales);
+ fprintf(ofp, "static const unsigned char __locales[%d] = {\n",
+ (num_locales) * (3 + __LOCALE_DATA_CATEGORIES));
+ for (i=0 ; i < num_locales ; i++) {
+ if (memcmp(locales[i].name, locales[i-1].name, 5) != 0) {
+ locales[i].idx_name = uniq;
+ ++uniq;
+ } else {
+ locales[i].idx_name = uniq - 1;
+ }
+ fprintf(ofp, "\t%#4x, ", (int)((unsigned char) locales[i].idx_name));
+ fprintf(ofp, "\t%#4x, ", (int)((unsigned char) locales[i].dot_cs));
+ fprintf(ofp, "\t%#4x, ", (int)((unsigned char) locales[i].cs));
+ /* lc_ctype would store translit flags and turkish up/low flag. */
+ fprintf(ofp, "%#4x, ", (int)((unsigned char) locales[i].lc_ctype_row));
+ fprintf(ofp, "%#4x, ", (int)((unsigned char) locales[i].lc_numeric_row));
+ fprintf(ofp, "%#4x, ", (int)((unsigned char) locales[i].lc_monetary_row));
+ fprintf(ofp, "%#4x, ", (int)((unsigned char) locales[i].lc_time_row));
+#if 1
+ /* lc_collate */
+ if (strlen(locales[i].glibc_name) >= 5) {
+ fprintf(ofp, "COL_IDX_%.2s_%.2s, ", locales[i].glibc_name, locales[i].glibc_name+3);
+ } else if (!strcmp(locales[i].glibc_name, "C")) {
+ fprintf(ofp, "COL_IDX_C , ");
+ } else {
+ error_msg("don't know how to handle COL_IDX_ for %s", locales[i].glibc_name);
+ }
+#else
+ fprintf(ofp, "%#4x, ", 0); /* place holder for lc_collate */
+#endif
+ fprintf(ofp, "%#4x, ", (int)((unsigned char) locales[i].lc_messages_row));
+ fprintf(ofp, "\t/* %s */\n", locales[i].glibc_name);
+ }
+ fprintf(ofp, "};\n\n");
+
+ fprintf(ofp, "#define __LOCALE_DATA_NUM_LOCALE_NAMES\t\t%d\n", uniq );
+ fprintf(ofp, "static const unsigned char __locale_names5[%d] = \n\t", uniq * 5);
+ uniq = 0;
+ for (i=1 ; i < num_locales ; i++) {
+ if (memcmp(locales[i].name, locales[i-1].name, 5) != 0) {
+ fprintf(ofp, "\"%5.5s\" ", locales[i].name);
+ ++uniq;
+ if ((uniq % 8) == 0) {
+ fprintf(ofp, "\n\t");
+ }
+ }
+ }
+ fprintf(ofp,";\n\n");
+
+ if (at_strings_end > at_strings) {
+ int i, j;
+ char *p;
+ i = 0;
+ p = at_strings;
+ while (*p) {
+ ++i;
+ p += 1 + (unsigned char) *p;
+ }
+ /* len, char, string\0 */
+ fprintf(ofp, "#define __LOCALE_DATA_AT_MODIFIERS_LENGTH\t\t%d\n",
+ i + (at_strings_end - at_strings));
+ fprintf(ofp, "static const unsigned char __locale_at_modifiers[%d] = {",
+ i + (at_strings_end - at_strings));
+ i = 0;
+ p = at_strings;
+ while (*p) {
+ fprintf(ofp, "\n\t%4d, '%c',",
+ (unsigned char) *p, /* len of string\0 */
+ at_mapto[i]);
+ for (j=1 ; j < ((unsigned char) *p) ; j++) {
+ fprintf(ofp, " '%c',", p[j]);
+ }
+ fprintf(ofp, " 0,");
+ ++i;
+ p += 1 + (unsigned char) *p;
+ }
+ fprintf(ofp, "\n};\n\n");
+ }
+
+ {
+ int pos[__LOCALE_DATA_CATEGORIES];
+ pos[0] = __LOCALE_DATA_CATEGORIES;
+ for (i=0 ; i < __LOCALE_DATA_CATEGORIES ; i++) {
+ fprintf(ofp, "#define __%s\t\t%d\n", lc_names[i], i);
+ if (i + 1 < __LOCALE_DATA_CATEGORIES) {
+ pos[i+1] = 1 + strlen(lc_names[i]) + pos[i];
+ }
+ }
+ if (pos[__LOCALE_DATA_CATEGORIES-1] > 255) {
+ error_msg("lc_names is too big (%d)", pos[__LOCALE_DATA_CATEGORIES-1]);
+ }
+ fprintf(ofp, "#define __LC_ALL\t\t%d\n\n", i);
+
+ fprintf(ofp, "#define __lc_names_LEN\t\t%d\n",
+ pos[__LOCALE_DATA_CATEGORIES-1] + strlen(lc_names[__LOCALE_DATA_CATEGORIES-1]) + 1);
+ total_size += pos[__LOCALE_DATA_CATEGORIES-1] + strlen(lc_names[__LOCALE_DATA_CATEGORIES-1]) + 1;
+
+ fprintf(ofp, "static unsigned const char lc_names[%d] =\n",
+ pos[__LOCALE_DATA_CATEGORIES-1] + strlen(lc_names[__LOCALE_DATA_CATEGORIES-1]) + 1);
+ fprintf(ofp, "\t\"");
+ for (i=0 ; i < __LOCALE_DATA_CATEGORIES ; i++) {
+ fprintf(ofp, "\\x%02x", (unsigned char) pos[i]);
+ }
+ fprintf(ofp, "\"");
+ for (i=0 ; i < __LOCALE_DATA_CATEGORIES ; i++) {
+ fprintf(ofp, "\n\t\"%s\\0\"", lc_names[i]);
+ }
+ fprintf(ofp, ";\n\n");
+ }
+
+ verbose_msg(VDETAIL,"locale data = %d name data = %d for %d uniq\n",
+ num_locales * (3 + __LOCALE_DATA_CATEGORIES), uniq * 5, uniq);
+
+ total_size += num_locales * (3 + __LOCALE_DATA_CATEGORIES) + uniq * 5;
+ }
+
+}
+
+static void read_at_mappings(void)
+{
+ char *p;
+ char *m;
+ int mc = 0;
+
+ do {
+ if (!(p = strtok(line_buf, " \t\n")) || (*p == '#')) {
+ if (!fgets(line_buf, sizeof(line_buf), fp)) {
+ if (ferror(fp)) {
+ error_msg("reading file");
+ }
+ return; /* EOF */
+ }
+ if ((*line_buf == '#') && (line_buf[1] == '-')) {
+ break;
+ }
+ continue;
+ }
+ if (*p == '@') {
+ if (p[1] == 0) {
+ error_msg("missing @modifier name");
+ }
+ m = p; /* save the modifier name */
+ if (!(p = strtok(NULL, " \t\n")) || p[1] || (((unsigned char) *p) > 0x7f)) {
+ error_msg("missing or illegal @modifier mapping char");
+ }
+ if (at_mappings[(int)((unsigned char) *p)]) {
+ error_msg("reused @modifier mapping char");
+ }
+ at_mappings[(int)((unsigned char) *p)] = 1;
+ at_mapto[mc] = *p;
+ ++mc;
+ *at_strings_end = (char)( (unsigned char) (strlen(m)) );
+ strcpy(++at_strings_end, m+1);
+ at_strings_end += (unsigned char) at_strings_end[-1];
+
+ verbose_msg(VDETAIL,"@mapping: \"%s\" to '%c'\n", m, *p);
+
+ if (((p = strtok(NULL, " \t\n")) != NULL) && (*p != '#')) {
+ fprintf(stderr,"ignoring trailing text: %s...\n", p);
+ }
+ *line_buf = 0;
+ continue;
+ }
+ break;
+ } while (1);
+
+#if 0
+ {
+ p = at_strings;
+
+ if (!*p) {
+ verbose_msg(VDETAIL,"no @ strings\n");
+ return;
+ }
+
+ do {
+ verbose_msg(VDETAIL,"%s\n", p+1);
+ p += 1 + (unsigned char) *p;
+ } while (*p);
+ }
+#endif
+}
+
+static void read_enable_disable(void)
+{
+ char *p;
+
+ do {
+ if (!(p = strtok(line_buf, " =\t\n")) || (*p == '#')) {
+ if (!fgets(line_buf, sizeof(line_buf), fp)) {
+ if (ferror(fp)) {
+ error_msg("reading file");
+ }
+ return; /* EOF */
+ }
+ if ((*line_buf == '#') && (line_buf[1] == '-')) {
+ break;
+ }
+ continue;
+ }
+ if (!strcmp(p, "UTF-8")) {
+ if (!(p = strtok(NULL, " =\t\n"))
+ || ((toupper(*p) != 'Y') && (toupper(*p) != 'N'))) {
+ error_msg("missing or illegal UTF-8 setting");
+ }
+ default_utf8 = (toupper(*p) == 'Y');
+ verbose_msg(VINFO,"UTF-8 locales are %sabled\n", "dis\0en"+ (default_utf8 << 2));
+ } else if (!strcmp(p, "8-BIT")) {
+ if (!(p = strtok(NULL, " =\t\n"))
+ || ((toupper(*p) != 'Y') && (toupper(*p) != 'N'))) {
+ error_msg("missing or illegal 8-BIT setting");
+ }
+ default_8bit = (toupper(*p) == 'Y');
+ verbose_msg(VINFO,"8-BIT locales are %sabled\n", "dis\0en" + (default_8bit << 2));
+ } else {
+ break;
+ }
+
+ if (((p = strtok(NULL, " \t\n")) != NULL) && (*p != '#')) {
+ fprintf(stderr,"ignoring trailing text: %s...\n", p);
+ }
+ *line_buf = 0;
+ continue;
+
+ } while (1);
+}
+
+#ifdef __LOCALE_DATA_CODESET_LIST
+
+static int find_codeset_num(const char *cs)
+{
+ int r = 2;
+ char *s = __LOCALE_DATA_CODESET_LIST;
+
+ /* 7-bit is 1, UTF-8 is 2, 8-bits are > 2 */
+
+ if (strcmp(cs, "UTF-8") != 0) {
+ ++r;
+ while (*s && strcmp(__LOCALE_DATA_CODESET_LIST+ ((unsigned char) *s), cs)) {
+/* verbose_msg(VDETAIL,"tried %s\n", __LOCALE_DATA_CODESET_LIST + ((unsigned char) *s)); */
+ ++r;
+ ++s;
+ }
+ if (!*s) {
+ error_msg("unsupported codeset %s", cs);
+ }
+ }
+ return r;
+}
+
+#else
+
+static int find_codeset_num(const char *cs)
+{
+ int r = 2;
+
+ /* 7-bit is 1, UTF-8 is 2, 8-bits are > 2 */
+
+ if (strcmp(cs, "UTF-8") != 0) {
+ error_msg("unsupported codeset %s", cs);
+ }
+ return r;
+}
+
+#endif
+
+static int find_at_string_num(const char *as)
+{
+ int i = 0;
+ char *p = at_strings;
+
+ while (*p) {
+ if (!strcmp(p+1, as)) {
+ return i;
+ }
+ ++i;
+ p += 1 + (unsigned char) *p;
+ }
+
+ error_msg("error: unmapped @string %s", as);
+}
+
+static void read_locale_list(void)
+{
+ char *p;
+ char *s;
+ char *ln; /* locale name */
+ char *ls; /* locale name ll_CC */
+ char *as; /* at string */
+ char *ds; /* dot string */
+ char *cs; /* codeset */
+ int i;
+
+ typedef struct {
+ char *glibc_name;
+ char name[5];
+ char dot_cs; /* 0 if no codeset specified */
+ char cs;
+ } locale_entry;
+
+ /* First the C locale. */
+ locales[0].glibc_name = locales[0].name;
+ strncpy(locales[0].name,"C",5);
+ locales[0].dot_cs = 0;
+ locales[0].cs = 1; /* 7-bit encoding */
+ ++num_locales;
+
+ do {
+ if (!(p = strtok(line_buf, " \t\n")) || (*p == '#')) {
+ if (!fgets(line_buf, sizeof(line_buf), fp)) {
+ if (ferror(fp)) {
+ error_msg("reading file");
+ }
+ return; /* EOF */
+ }
+ if ((*line_buf == '#') && (line_buf[1] == '-')) {
+ break;
+ }
+ continue;
+ }
+
+ s = glibc_locale_names;
+ for (i=0 ; i < num_locales ; i++) {
+ if (!strcmp(s+1, p)) {
+ break;
+ }
+ s += 1 + ((unsigned char) *s);
+ }
+ if (i < num_locales) {
+ fprintf(stderr,"ignoring duplicate locale name: %s", p);
+ *line_buf = 0;
+ continue;
+ }
+
+ /* New locale, but don't increment num until codeset verified! */
+ *s = (char)((unsigned char) (strlen(p) + 1));
+ strcpy(s+1, p);
+ locales[num_locales].glibc_name = s+1;
+ ln = p; /* save locale name */
+
+ if (!(p = strtok(NULL, " \t\n"))) {
+ error_msg("missing codeset for locale %s", ln);
+ }
+ cs = p;
+ i = find_codeset_num(p);
+ if ((i == 2) && !default_utf8) {
+ fprintf(stderr,"ignoring UTF-8 locale %s\n", ln);
+ *line_buf = 0;
+ continue;
+ } else if ((i > 2) && !default_8bit) {
+ fprintf(stderr,"ignoring 8-bit codeset locale %s\n", ln);
+ *line_buf = 0;
+ continue;
+ }
+ locales[num_locales].cs = (char)((unsigned char) i);
+
+ if (((p = strtok(NULL, " \t\n")) != NULL) && (*p != '#')) {
+ verbose_msg(VINFO,"ignoring trailing text: %s...\n", p);
+ }
+
+ /* Now go back to locale string for .codeset and @modifier */
+ as = strtok(ln, "@");
+ if (as) {
+ as = strtok(NULL, "@");
+ }
+ ds = strtok(ln, ".");
+ if (ds) {
+ ds = strtok(NULL, ".");
+ }
+ ls = ln;
+
+ if ((strlen(ls) != 5) || (ls[2] != '_')) {
+ error_msg("illegal locale name %s", ls);
+ }
+
+ i = 0; /* value for unspecified codeset */
+ if (ds) {
+ i = find_codeset_num(ds);
+ if ((i == 2) && !default_utf8) {
+ fprintf(stderr,"ignoring UTF-8 locale %s\n", ln);
+ *line_buf = 0;
+ continue;
+ } else if ((i > 2) && !default_8bit) {
+ fprintf(stderr,"ignoring 8-bit codeset locale %s\n", ln);
+ *line_buf = 0;
+ continue;
+ }
+ }
+ locales[num_locales].dot_cs = (char)((unsigned char) i);
+
+ if (as) {
+ i = find_at_string_num(as);
+ ls[2] = at_mapto[i];
+ }
+ memcpy(locales[num_locales].name, ls, 5);
+/* verbose_msg(VDETAIL,"locale: %5.5s %2d %2d %s\n", */
+/* locales[num_locales].name, */
+/* locales[num_locales].cs, */
+/* locales[num_locales].dot_cs, */
+/* locales[num_locales].glibc_name */
+/* ); */
+ ++num_locales;
+ *line_buf = 0;
+ } while (1);
+}
+
+static int le_cmp(const void *a, const void *b)
+{
+ const locale_entry *p;
+ const locale_entry *q;
+ int r;
+
+ p = (const locale_entry *) a;
+ q = (const locale_entry *) b;
+
+ if (!(r = p->name[0] - q->name[0])
+ && !(r = p->name[1] - q->name[1])
+ && !(r = p->name[3] - q->name[3])
+ && !(r = p->name[4] - q->name[4])
+ && !(r = p->name[2] - q->name[2])
+ && !(r = -(p->cs - q->cs))
+ ) {
+ r = -(p->dot_cs - q->dot_cs);
+ /* Reverse the ordering of the codesets so UTF-8 comes last.
+ * Work-around (hopefully) for glibc bug affecting at least
+ * the euro currency symbol. */
+ }
+
+ return r;
+}
+
+int main(int argc, char **argv)
+{
+ char *output_file = NULL;
+
+ while (--argc) {
+ ++argv;
+ if (!strcmp(*argv, "-o")) {
+ --argc;
+ output_file = strdup(*++argv);
+ } else if (!strcmp(*argv, "-v")) {
+ verbose++;
+ } else if (!(fp = fopen(*argv, "r"))) {
+no_inputfile:
+ error_msg("missing filename or file!");
+ }
+ }
+ if (fp == NULL)
+ goto no_inputfile;
+ if (output_file == NULL)
+ output_file = strdup("locale_tables.h");
+
+ at_strings_end = at_strings;
+
+ read_at_mappings();
+ read_enable_disable();
+ read_locale_list();
+
+ fclose(fp);
+
+ /* handle C locale specially */
+ qsort(locales+1, num_locales-1, sizeof(locale_entry), le_cmp);
+
+#if 0
+ for (i=0 ; i < num_locales ; i++) {
+ verbose_msg(VDETAIL,"locale: %5.5s %2d %2d %s\n",
+ locales[i].name,
+ locales[i].cs,
+ locales[i].dot_cs,
+ locales[i].glibc_name
+ );
+ }
+#endif
+ if (argc == 3)
+ output_file = *++argv;
+ if (output_file == NULL || !(ofp = fopen(output_file, "w"))) {
+ error_msg("cannot open output file '%s'!", output_file);
+ }
+
+ do_lc_time();
+ do_lc_numeric();
+ do_lc_monetary();
+ do_lc_messages();
+ do_lc_ctype();
+
+ do_locale_names();
+
+ fclose(ofp);
+
+ verbose_msg(VINFO, "total data size = %d\n", total_size);
+ verbose_msg(VDETAIL, "null count = %d\n", null_count);
+
+ return EXIT_SUCCESS;
+}
+
+static char *idx[10000];
+static char buf[100000];
+static char *last;
+static int uniq;
+
+static int addblock(const char *s, size_t n) /* l includes nul terminator */
+{
+ int j;
+
+ if (!s) {
+ ++null_count;
+ return 0;
+ }
+
+ for (j=0 ; (j < uniq) && (idx[j] + n < last) ; j++) {
+ if (!memcmp(s, idx[j], n)) {
+ return idx[j] - buf;
+ }
+ }
+ if (uniq >= sizeof(idx)) {
+ error_msg("too many uniq strings!");
+ }
+ if (last + n >= buf + sizeof(buf)) {
+ error_msg("need to increase size of buf!");
+ }
+
+ idx[uniq] = last;
+ ++uniq;
+ memcpy(last, s, n);
+ last += n;
+ return idx[uniq - 1] - buf;
+}
+
+static int addstring(const char *s)
+{
+ int j;
+ size_t l;
+
+ if (!s) {
+ ++null_count;
+ return 0;
+ }
+
+ for (j=0 ; j < uniq ; j++) {
+ if (!strcmp(s, idx[j])) {
+ return idx[j] - buf;
+ }
+ }
+ if (uniq >= sizeof(idx)) {
+ error_msg("too many uniq strings!");
+ }
+ l = strlen(s) + 1;
+ if (last + l >= buf + sizeof(buf)) {
+ error_msg("need to increase size of buf!");
+ }
+
+ idx[uniq] = last;
+ ++uniq;
+ strcpy(last, s);
+ last += l;
+ return idx[uniq - 1] - buf;
+}
+
+#define DO_LC_COMMON(CATEGORY) \
+ verbose_msg(VDETAIL, "buf-size=%d uniq=%d rows=%d\n", \
+ (int)(last - buf), uniq, lc_##CATEGORY##_uniq); \
+ verbose_msg(VDETAIL, "total = %d + %d * %d + %d = %d\n", \
+ num_locales, lc_##CATEGORY##_uniq, NUM_NL_##CATEGORY, (int)(last - buf), \
+ i = num_locales + lc_##CATEGORY##_uniq*NUM_NL_##CATEGORY + (int)(last - buf)); \
+ total_size += i; \
+ dump_table8c("__lc_" #CATEGORY "_data", buf, (int)(last - buf)); \
+ for (i=0 ; i < lc_##CATEGORY##_uniq ; i++) { \
+ m = locales[i].lc_##CATEGORY##_row; \
+ for (k=0 ; k < NUM_NL_##CATEGORY ; k++) { \
+ buf[NUM_NL_##CATEGORY*i + k] = (char)((unsigned char) lc_##CATEGORY##_uniq_X[i][k]); \
+ } \
+ } \
+ dump_table8("__lc_" #CATEGORY "_rows", buf, lc_##CATEGORY##_uniq * NUM_NL_##CATEGORY); \
+ buf16[0] =0; \
+ for (i=0 ; i < NUM_NL_##CATEGORY - 1 ; i++) { \
+ buf16[i+1] = buf16[i] + lc_##CATEGORY##_count[i]; \
+ } \
+ dump_table16("__lc_" #CATEGORY "_item_offsets", buf16, NUM_NL_##CATEGORY); \
+ m = 0; \
+ for (k=0 ; k < NUM_NL_##CATEGORY ; k++) { \
+ for (i=0 ; i < lc_##CATEGORY##_count[k] ; i++) { \
+ buf16[m] = lc_##CATEGORY##_item[k][i]; \
+ ++m; \
+ } \
+ } \
+ dump_table16("__lc_" #CATEGORY "_item_idx", buf16, m);
+
+
+#define DL_LC_LOOPTAIL(CATEGORY) \
+ if (k > NUM_NL_##CATEGORY) { \
+ error_msg("lc_" #CATEGORY " nl_item count > %d!", NUM_NL_##CATEGORY); \
+ } \
+ { \
+ int r; \
+ for (r=0 ; r < lc_##CATEGORY##_uniq ; r++) { \
+ if (!memcmp(lc_##CATEGORY##_uniq_X[lc_##CATEGORY##_uniq], \
+ lc_##CATEGORY##_uniq_X[r], NUM_NL_##CATEGORY)) { \
+ break; \
+ } \
+ } \
+ if (r == lc_##CATEGORY##_uniq) { /* new locale row */ \
+ ++lc_##CATEGORY##_uniq; \
+ if (lc_##CATEGORY##_uniq > 255) { \
+ error_msg("too many unique lc_" #CATEGORY " rows!"); \
+ } \
+ } \
+ locales[i].lc_##CATEGORY##_row = r; \
+ }
+
+
+
+static int buf16[100*256];
+
+static void dump_table8(const char *name, const char *tbl, int len)
+{
+ int i;
+
+ fprintf(ofp, "#define %s_LEN\t\t%d\n", name, len);
+ fprintf(ofp, "static const unsigned char %s[%d] = {", name, len);
+ for (i=0 ; i < len ; i++) {
+ if ((i % 12) == 0) {
+ fprintf(ofp, "\n\t");
+ }
+ fprintf(ofp, "%#4x, ", (int)((unsigned char) tbl[i]));
+ }
+ fprintf(ofp, "\n};\n\n");
+}
+
+#define __C_isdigit(c) \
+ ((sizeof(c) == sizeof(char)) \
+ ? (((unsigned char)((c) - '0')) < 10) \
+ : (((unsigned int)((c) - '0')) < 10))
+#define __C_isalpha(c) \
+ ((sizeof(c) == sizeof(char)) \
+ ? (((unsigned char)(((c) | 0x20) - 'a')) < 26) \
+ : (((unsigned int)(((c) | 0x20) - 'a')) < 26))
+#define __C_isalnum(c) (__C_isalpha(c) || __C_isdigit(c))
+
+static void dump_table8c(const char *name, const char *tbl, int len)
+{
+ int i;
+
+ fprintf(ofp, "#define %s_LEN\t\t%d\n", name, len);
+ fprintf(ofp, "static const unsigned char %s[%d] = {", name, len);
+ for (i=0 ; i < len ; i++) {
+ if ((i % 12) == 0) {
+ fprintf(ofp, "\n\t");
+ }
+ if (__C_isalnum(tbl[i]) || (tbl[i] == ' ')) {
+ fprintf(ofp, " '%c', ", (int)((unsigned char) tbl[i]));
+ } else {
+ fprintf(ofp, "%#4x, ", (int)((unsigned char) tbl[i]));
+ }
+ }
+ fprintf(ofp, "\n};\n\n");
+}
+
+static void dump_table16(const char *name, const int *tbl, int len)
+{
+ int i;
+
+ fprintf(ofp, "#define %s_LEN\t\t%d\n", name, len);
+ fprintf(ofp, "static const uint16_t %s[%d] = {", name, len);
+ for (i=0 ; i < len ; i++) {
+ if ((i % 8) == 0) {
+ fprintf(ofp, "\n\t");
+ }
+ if (tbl[i] != (uint16_t) tbl[i]) {
+ error_msg("falls outside uint16 range!");
+ }
+ fprintf(ofp, "%#6x, ", tbl[i]);
+ }
+ fprintf(ofp, "\n};\n\n");
+}
+
+
+#define NUM_NL_time 50
+
+static int lc_time_item[NUM_NL_time][256];
+static int lc_time_count[NUM_NL_time];
+static unsigned char lc_time_uniq_X[700][NUM_NL_time];
+static int lc_time_uniq;
+
+#define DO_NL_S(X) lc_time_S(X, k++)
+
+static void lc_time_S(int X, int k)
+{
+ size_t len;
+ int j, m;
+ const char *s = nl_langinfo(X);
+ const char *p;
+ static const char nulbuf[] = "";
+
+ if (X == ALT_DIGITS) {
+ len = 1;
+ if (!s) {
+ s = nulbuf;
+ }
+ if (*s) {
+ p = s;
+ for (j = 0 ; j < 100 ; j++) {
+ while (*p) {
+ ++p;
+ }
+ ++p;
+ }
+ len = p - s;
+ }
+ j = addblock(s, len);
+/* if (len > 1) verbose_msg(VDETAIL, "alt_digit: called addblock with len %zd\n", len); */
+ } else if (X == ERA) {
+ if (!s) {
+ s = nulbuf;
+ }
+ p = s;
+ while (*p) {
+ while (*p) {
+ ++p;
+ }
+ ++p;
+ }
+ ++p;
+ j = addblock(s, p - s);
+/* if (p-s > 1) verbose_msg(VDETAIL, "era: called addblock with len %d\n", p-s); */
+ } else {
+ j = addstring(s);
+ }
+ for (m=0 ; m < lc_time_count[k] ; m++) {
+ if (lc_time_item[k][m] == j) {
+ break;
+ }
+ }
+ if (m == lc_time_count[k]) { /* new for this nl_item */
+ if (m > 255) {
+ error_msg("too many nl_item %d entries in lc_time", k);
+ }
+ lc_time_item[k][m] = j;
+ ++lc_time_count[k];
+ }
+ lc_time_uniq_X[lc_time_uniq][k] = m;
+}
+
+static void do_lc_time(void)
+{
+ int i, k, m;
+
+ last = buf+1;
+ uniq = 1;
+ *buf = 0;
+ *idx = buf;
+
+ for (i=0 ; i < num_locales ; i++) {
+ k = 0;
+
+ if (!setlocale(LC_ALL, locales[i].glibc_name)) {
+ verbose_msg(VDETAIL, "setlocale(LC_ALL,%s) failed!\n",
+ locales[i].glibc_name);
+ }
+
+ DO_NL_S(ABDAY_1);
+ DO_NL_S(ABDAY_2);
+ DO_NL_S(ABDAY_3);
+ DO_NL_S(ABDAY_4);
+ DO_NL_S(ABDAY_5);
+ DO_NL_S(ABDAY_6);
+ DO_NL_S(ABDAY_7);
+
+ DO_NL_S(DAY_1);
+ DO_NL_S(DAY_2);
+ DO_NL_S(DAY_3);
+ DO_NL_S(DAY_4);
+ DO_NL_S(DAY_5);
+ DO_NL_S(DAY_6);
+ DO_NL_S(DAY_7);
+
+ DO_NL_S(ABMON_1);
+ DO_NL_S(ABMON_2);
+ DO_NL_S(ABMON_3);
+ DO_NL_S(ABMON_4);
+ DO_NL_S(ABMON_5);
+ DO_NL_S(ABMON_6);
+ DO_NL_S(ABMON_7);
+ DO_NL_S(ABMON_8);
+ DO_NL_S(ABMON_9);
+ DO_NL_S(ABMON_10);
+ DO_NL_S(ABMON_11);
+ DO_NL_S(ABMON_12);
+
+ DO_NL_S(MON_1);
+ DO_NL_S(MON_2);
+ DO_NL_S(MON_3);
+ DO_NL_S(MON_4);
+ DO_NL_S(MON_5);
+ DO_NL_S(MON_6);
+ DO_NL_S(MON_7);
+ DO_NL_S(MON_8);
+ DO_NL_S(MON_9);
+ DO_NL_S(MON_10);
+ DO_NL_S(MON_11);
+ DO_NL_S(MON_12);
+
+ DO_NL_S(AM_STR);
+ DO_NL_S(PM_STR);
+
+ DO_NL_S(D_T_FMT);
+ DO_NL_S(D_FMT);
+ DO_NL_S(T_FMT);
+ DO_NL_S(T_FMT_AMPM);
+ DO_NL_S(ERA);
+
+ DO_NL_S(ERA_YEAR); /* non SuSv3 */
+ DO_NL_S(ERA_D_FMT);
+ DO_NL_S(ALT_DIGITS);
+ DO_NL_S(ERA_D_T_FMT);
+ DO_NL_S(ERA_T_FMT);
+
+ DL_LC_LOOPTAIL(time)
+ }
+
+ DO_LC_COMMON(time)
+}
+
+#undef DO_NL_S
+
+#define NUM_NL_numeric 3
+
+static int lc_numeric_item[NUM_NL_numeric][256];
+static int lc_numeric_count[NUM_NL_numeric];
+static unsigned char lc_numeric_uniq_X[700][NUM_NL_numeric];
+static int lc_numeric_uniq;
+
+#define DO_NL_S(X) lc_numeric_S(X, k++)
+
+static void lc_numeric_S(int X, int k)
+{
+ int j, m;
+ char buf[256];
+ char *e;
+ char *s;
+ char c;
+
+ s = nl_langinfo(X);
+ if (X == GROUPING) {
+ if (s) {
+ if ((*s == CHAR_MAX) || (*s == -1)) { /* stupid glibc... :-( */
+ s = "";
+ }
+ e = s;
+ c = 0;
+ while (*e) { /* find end of string */
+ if (*e == CHAR_MAX) {
+ c = CHAR_MAX;
+ ++e;
+ break;
+ }
+ ++e;
+ }
+ if ((e - s) > sizeof(buf)) {
+ error_msg("grouping specifier too long");
+ }
+ strncpy(buf, s, (e-s));
+ e = buf + (e-s);
+ *e = 0; /* Make sure we're null-terminated. */
+
+ if (c != CHAR_MAX) { /* remove duplicate repeats */
+ while (e > buf) {
+ --e;
+ if (*e != e[-1]) {
+ break;
+ }
+ }
+ *++e = 0;
+ }
+ s = buf;
+ }
+ }
+ j = addstring(s);
+ for (m=0 ; m < lc_numeric_count[k] ; m++) {
+ if (lc_numeric_item[k][m] == j) {
+ break;
+ }
+ }
+ if (m == lc_numeric_count[k]) { /* new for this nl_item */
+ if (m > 255) {
+ error_msg("too many nl_item %d entries in lc_numeric", k);
+ }
+ lc_numeric_item[k][m] = j;
+ ++lc_numeric_count[k];
+ }
+/* verbose_msg(VDETAIL, "\\x%02x", m); */
+ lc_numeric_uniq_X[lc_numeric_uniq][k] = m;
+}
+
+static void do_lc_numeric(void)
+{
+ int i, k, m;
+
+ last = buf+1;
+ uniq = 1;
+ *buf = 0;
+ *idx = buf;
+
+ for (i=0 ; i < num_locales ; i++) {
+ k = 0;
+
+ if (!setlocale(LC_ALL, locales[i].glibc_name)) {
+ verbose_msg(VDETAIL,"setlocale(LC_ALL,%s) failed!\n",
+ locales[i].glibc_name);
+ }
+
+ DO_NL_S(RADIXCHAR); /* DECIMAL_POINT */
+ DO_NL_S(THOUSEP); /* THOUSANDS_SEP */
+ DO_NL_S(GROUPING);
+
+ DL_LC_LOOPTAIL(numeric)
+ }
+
+ DO_LC_COMMON(numeric)
+}
+
+#undef DO_NL_S
+
+#define NUM_NL_monetary (7+14+1)
+
+static int lc_monetary_item[NUM_NL_monetary][256];
+static int lc_monetary_count[NUM_NL_monetary];
+static unsigned char lc_monetary_uniq_X[700][NUM_NL_monetary];
+static int lc_monetary_uniq;
+
+#define DO_NL_S(X) lc_monetary_S(X, k++)
+
+/* #define DO_NL_C(X) verbose_msg(VDETAIL,"%#02x", (int)(unsigned char)(*nl_langinfo(X))); */
+#define DO_NL_C(X) lc_monetary_C(X, k++)
+
+static void lc_monetary_C(int X, int k)
+{
+ int j, m;
+ char c_buf[2];
+
+#warning fix the char entries for monetary... target signedness of char may be different!
+
+ c_buf[1] = 0;
+ c_buf[0] = *nl_langinfo(X);
+ j = addstring(c_buf);
+ for (m=0 ; m < lc_monetary_count[k] ; m++) {
+ if (lc_monetary_item[k][m] == j) {
+ break;
+ }
+ }
+ if (m == lc_monetary_count[k]) { /* new for this nl_item */
+ if (m > 255) {
+ error_msg("too many nl_item %d entries in lc_monetary", k);
+ }
+ lc_monetary_item[k][m] = j;
+ ++lc_monetary_count[k];
+ }
+/* verbose_msg(VDETAIL,"\\x%02x", m); */
+ lc_monetary_uniq_X[lc_monetary_uniq][k] = m;
+}
+
+
+static void lc_monetary_S(int X, int k)
+{
+ int j, m;
+ char buf[256];
+ char *e;
+ char *s;
+ char c;
+
+ s = nl_langinfo(X);
+ if (X == MON_GROUPING) {
+ if (s) {
+ if ((*s == CHAR_MAX) || (*s == -1)) { /* stupid glibc... :-( */
+ s = "";
+ }
+ e = s;
+ c = 0;
+ while (*e) { /* find end of string */
+ if (*e == CHAR_MAX) {
+ c = CHAR_MAX;
+ ++e;
+ break;
+ }
+ ++e;
+ }
+ if ((e - s) > sizeof(buf)) {
+ error_msg("mon_grouping specifier too long");
+ }
+ strncpy(buf, s, (e-s));
+ e = buf + (e-s);
+ *e = 0; /* Make sure we're null-terminated. */
+
+ if (c != CHAR_MAX) { /* remove duplicate repeats */
+ while (e > buf) {
+ --e;
+ if (*e != e[-1]) {
+ break;
+ }
+ }
+ *++e = 0;
+ }
+ s = buf;
+ }
+ }
+ j = addstring(s);
+ for (m=0 ; m < lc_monetary_count[k] ; m++) {
+ if (lc_monetary_item[k][m] == j) {
+ break;
+ }
+ }
+ if (m == lc_monetary_count[k]) { /* new for this nl_item */
+ if (m > 255) {
+ error_msg("too many nl_item %d entries in lc_monetary", k);
+ }
+ lc_monetary_item[k][m] = j;
+ ++lc_monetary_count[k];
+ }
+/* verbose_msg(VDETAIL,"\\x%02x", m); */
+ lc_monetary_uniq_X[lc_monetary_uniq][k] = m;
+}
+
+static void do_lc_monetary(void)
+{
+ int i, k, m;
+
+ last = buf+1;
+ uniq = 1;
+ *buf = 0;
+ *idx = buf;
+
+ for (i=0 ; i < num_locales ; i++) {
+ k = 0;
+
+ if (!setlocale(LC_ALL, locales[i].glibc_name)) {
+ verbose_msg(VDETAIL,"setlocale(LC_ALL,%s) failed!\n",
+ locales[i].glibc_name);
+ }
+
+
+ /* non SUSv3 */
+ DO_NL_S(INT_CURR_SYMBOL);
+ DO_NL_S(CURRENCY_SYMBOL);
+ DO_NL_S(MON_DECIMAL_POINT);
+ DO_NL_S(MON_THOUSANDS_SEP);
+ DO_NL_S(MON_GROUPING);
+ DO_NL_S(POSITIVE_SIGN);
+ DO_NL_S(NEGATIVE_SIGN);
+ DO_NL_C(INT_FRAC_DIGITS);
+ DO_NL_C(FRAC_DIGITS);
+ DO_NL_C(P_CS_PRECEDES);
+ DO_NL_C(P_SEP_BY_SPACE);
+ DO_NL_C(N_CS_PRECEDES);
+ DO_NL_C(N_SEP_BY_SPACE);
+ DO_NL_C(P_SIGN_POSN);
+ DO_NL_C(N_SIGN_POSN);
+ DO_NL_C(INT_P_CS_PRECEDES);
+ DO_NL_C(INT_P_SEP_BY_SPACE);
+ DO_NL_C(INT_N_CS_PRECEDES);
+ DO_NL_C(INT_N_SEP_BY_SPACE);
+ DO_NL_C(INT_P_SIGN_POSN);
+ DO_NL_C(INT_N_SIGN_POSN);
+
+ DO_NL_S(CRNCYSTR); /* CURRENCY_SYMBOL */
+
+ DL_LC_LOOPTAIL(monetary)
+ }
+
+ DO_LC_COMMON(monetary)
+}
+
+
+#undef DO_NL_S
+
+#define NUM_NL_messages 4
+
+static int lc_messages_item[NUM_NL_messages][256];
+static int lc_messages_count[NUM_NL_messages];
+static unsigned char lc_messages_uniq_X[700][NUM_NL_messages];
+static int lc_messages_uniq;
+
+#define DO_NL_S(X) lc_messages_S(X, k++)
+
+static void lc_messages_S(int X, int k)
+{
+ int j, m;
+ j = addstring(nl_langinfo(X));
+ for (m=0 ; m < lc_messages_count[k] ; m++) {
+ if (lc_messages_item[k][m] == j) {
+ break;
+ }
+ }
+ if (m == lc_messages_count[k]) { /* new for this nl_item */
+ if (m > 255) {
+ error_msg("too many nl_item %d entries in lc_messages", k);
+ }
+ lc_messages_item[k][m] = j;
+ ++lc_messages_count[k];
+ }
+/* verbose_msg(VDETAIL, "\\x%02x", m); */
+ lc_messages_uniq_X[lc_messages_uniq][k] = m;
+}
+
+static void do_lc_messages(void)
+{
+ int i, k, m;
+
+ last = buf+1;
+ uniq = 1;
+ *buf = 0;
+ *idx = buf;
+
+ for (i=0 ; i < num_locales ; i++) {
+ k = 0;
+
+ if (!setlocale(LC_ALL, locales[i].glibc_name)) {
+ verbose_msg(VDETAIL, "setlocale(LC_ALL,%s) failed!\n",
+ locales[i].glibc_name);
+ }
+
+ DO_NL_S(YESEXPR);
+ DO_NL_S(NOEXPR);
+ DO_NL_S(YESSTR);
+ DO_NL_S(NOSTR);
+
+ DL_LC_LOOPTAIL(messages)
+ }
+
+ DO_LC_COMMON(messages)
+}
+
+#undef DO_NL_S
+
+#define NUM_NL_ctype 10
+
+static int lc_ctype_item[NUM_NL_ctype][256];
+static int lc_ctype_count[NUM_NL_ctype];
+static unsigned char lc_ctype_uniq_X[700][NUM_NL_ctype];
+static int lc_ctype_uniq;
+
+#define DO_NL_S(X) lc_ctype_S(X, k++)
+
+static void lc_ctype_S(int X, int k)
+{
+ int j, m;
+ j = addstring(nl_langinfo(X));
+ for (m=0 ; m < lc_ctype_count[k] ; m++) {
+ if (lc_ctype_item[k][m] == j) {
+ break;
+ }
+ }
+ if (m == lc_ctype_count[k]) { /* new for this nl_item */
+ if (m > 255) {
+ error_msg("too many nl_item %d entries in lc_ctype", k);
+ }
+ lc_ctype_item[k][m] = j;
+ ++lc_ctype_count[k];
+ }
+/* verbose_msg(VDETAIL, "\\x%02x", m); */
+ lc_ctype_uniq_X[lc_ctype_uniq][k] = m;
+}
+
+static void do_lc_ctype(void)
+{
+ int i, k, m;
+
+ last = buf+1;
+ uniq = 1;
+ *buf = 0;
+ *idx = buf;
+
+ for (i=0 ; i < num_locales ; i++) {
+ k = 0;
+
+ if (!setlocale(LC_ALL, locales[i].glibc_name)) {
+ verbose_msg(VDETAIL, "setlocale(LC_ALL,%s) failed!\n",
+ locales[i].glibc_name);
+ }
+
+ DO_NL_S(_NL_CTYPE_OUTDIGIT0_MB);
+ DO_NL_S(_NL_CTYPE_OUTDIGIT1_MB);
+ DO_NL_S(_NL_CTYPE_OUTDIGIT2_MB);
+ DO_NL_S(_NL_CTYPE_OUTDIGIT3_MB);
+ DO_NL_S(_NL_CTYPE_OUTDIGIT4_MB);
+ DO_NL_S(_NL_CTYPE_OUTDIGIT5_MB);
+ DO_NL_S(_NL_CTYPE_OUTDIGIT6_MB);
+ DO_NL_S(_NL_CTYPE_OUTDIGIT7_MB);
+ DO_NL_S(_NL_CTYPE_OUTDIGIT8_MB);
+ DO_NL_S(_NL_CTYPE_OUTDIGIT9_MB);
+
+ DL_LC_LOOPTAIL(ctype)
+ }
+
+ DO_LC_COMMON(ctype)
+}
diff --git a/ap/build/uClibc/extra/locale/gen_mmap.c b/ap/build/uClibc/extra/locale/gen_mmap.c
new file mode 100644
index 0000000..1cf0bb9
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/gen_mmap.c
@@ -0,0 +1,237 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+#include <stdint.h>
+#include <stddef.h>
+
+#define WANT_DATA
+#include "c8tables.h"
+
+/* #define Cctype_TBL_LEN 328 */
+/* #define Cuplow_TBL_LEN 400 */
+/* #define Cc2wc_TBL_LEN 1448 */
+/* #define Cwc2c_TBL_LEN 3744 */
+
+#define WANT_WCctype_data
+#define WANT_WCuplow_data
+#define WANT_WCuplow_diff_data
+/* #define WANT_WCcomb_data */
+/* #define WANT_WCwidth_data */
+#include "wctables.h"
+#undef WANT_WCctype_data
+#undef WANT_WCuplow_data
+#undef WANT_WCuplow_diff_data
+/* #undef WANT_WCcomb_data */
+/* #undef WANT_WCwidth_data */
+
+/* #define WCctype_TBL_LEN (WCctype_II_LEN + WCctype_TI_LEN + WCctype_UT_LEN) */
+/* #define WCuplow_TBL_LEN (WCuplow_II_LEN + WCuplow_TI_LEN + WCuplow_UT_LEN) */
+/* #define WCuplow_diff_TBL_LEN (2 * WCuplow_diffs) */
+/* #define WCcomb_TBL_LEN (WCcomb_II_LEN + WCcomb_TI_LEN + WCcomb_UT_LEN) */
+
+#include "locale_tables.h"
+
+#include "locale_mmap.h"
+
+/* #undef __PASTE2 */
+/* #define __PASTE2(A,B) A ## B */
+/* #undef __PASTE3 */
+/* #define __PASTE3(A,B,C) A ## B ## C */
+
+
+/* #define MAGIC_SIZE 64 */
+
+/* #define COMMON_MMAP(X) \ */
+/* unsigned char __PASTE3(lc_,X,_data)[__PASTE3(__lc_,X,_data_LEN)]; */
+
+/* #define COMMON_MMIDX(X) \ */
+/* unsigned char __PASTE3(lc_,X,_rows)[__PASTE3(__lc_,X,_rows_LEN)]; \ */
+/* uint16_t __PASTE3(lc_,X,_item_offsets)[__PASTE3(__lc_,X,_item_offsets_LEN)]; \ */
+/* uint16_t __PASTE3(lc_,X,_item_idx)[__PASTE3(__lc_,X,_item_idx_LEN)]; \ */
+
+#define WRITE_COMMON_MMAP(X) \
+ fseek(fp, (long) offsetof(__locale_mmap_t, __PASTE3(lc_,X,_data)), SEEK_SET); \
+ for (i=0 ; i < __PASTE3(__lc_,X,_data_LEN) ; i++) { \
+ putc(__PASTE3(__lc_,X,_data)[i], fp); \
+ }
+
+#define WRITE_COMMON_MMIDX(X) \
+ fseek(fp, (long) offsetof(__locale_mmap_t, __PASTE3(lc_,X,_rows)), SEEK_SET); \
+ for (i=0 ; i < __PASTE3(__lc_,X,_rows_LEN) ; i++) { \
+ putc(__PASTE3(__lc_,X,_rows)[i], fp); \
+ } \
+ fseek(fp, (long) offsetof(__locale_mmap_t, __PASTE3(lc_,X,_item_offsets)), SEEK_SET); \
+ for (i=0 ; i < __PASTE3(__lc_,X,_item_offsets_LEN) ; i++) { \
+ putc( ((unsigned char *) &(__PASTE3(__lc_,X,_item_offsets)[i]))[0], fp); \
+ putc( ((unsigned char *) &(__PASTE3(__lc_,X,_item_offsets)[i]))[1], fp); \
+ } \
+ fseek(fp, (long) offsetof(__locale_mmap_t, __PASTE3(lc_,X,_item_idx)), SEEK_SET); \
+ for (i=0 ; i < __PASTE3(__lc_,X,_item_idx_LEN) ; i++) { \
+ putc( ((unsigned char *) &(__PASTE3(__lc_,X,_item_idx)[i]))[0], fp); \
+ putc( ((unsigned char *) &(__PASTE3(__lc_,X,_item_idx)[i]))[1], fp); \
+ }
+
+#define WRITE_WC_DATA(X) \
+ fseek(fp, (long) offsetof(__locale_mmap_t, __PASTE2(tblw,X)), SEEK_SET); \
+ for (i=0 ; i < __PASTE3(WC,X,_TBL_LEN) ; i++) { \
+ putc(__PASTE3(WC,X,_data)[i], fp); \
+ }
+
+#define WRITE_WC_I16_DATA(X) \
+ fseek(fp, (long) offsetof(__locale_mmap_t, __PASTE2(tblw,X)), SEEK_SET); \
+ for (i=0 ; i < __PASTE3(WC,X,_TBL_LEN) ; i++) { \
+ putc( ((unsigned char *) &(__PASTE3(WC,X,_data)[i]))[0], fp); \
+ putc( ((unsigned char *) &(__PASTE3(WC,X,_data)[i]))[1], fp); \
+ }
+
+#define WRITE_C_DATA(X) \
+ fseek(fp, (long) offsetof(__locale_mmap_t, __PASTE2(tbl8,X)), SEEK_SET); \
+ for (i=0 ; i < __PASTE3(C,X,_TBL_LEN) ; i++) { \
+ putc(__PASTE3(C,X,_data)[i], fp); \
+ }
+
+#define WRITE_C_U16_DATA(X) \
+ fseek(fp, (long) offsetof(__locale_mmap_t, __PASTE2(tbl8,X)), SEEK_SET); \
+ for (i=0 ; i < __PASTE3(C,X,_TBL_LEN) ; i++) { \
+ putc( ((unsigned char *) &(__PASTE3(C,X,_data)[i]))[0], fp); \
+ putc( ((unsigned char *) &(__PASTE3(C,X,_data)[i]))[1], fp); \
+ }
+
+/**********************************************************************/
+
+#define COMMON_OFFSETS(X) \
+ offsetof(__locale_mmap_t, __PASTE3(lc_,X,_rows)), \
+ offsetof(__locale_mmap_t, __PASTE3(lc_,X,_item_offsets)), \
+ offsetof(__locale_mmap_t, __PASTE3(lc_,X,_item_idx)), \
+ offsetof(__locale_mmap_t, __PASTE3(lc_,X,_data)) \
+
+
+static const size_t common_tbl_offsets[CATEGORIES*4] = {
+ 0, 0, 0, 0, /* ctype */
+ COMMON_OFFSETS(numeric),
+ COMMON_OFFSETS(monetary),
+ COMMON_OFFSETS(time),
+ 0, 0, 0, 0, /* collate */
+ COMMON_OFFSETS(messages),
+};
+
+
+
+
+
+int main(void)
+{
+ FILE *fp;
+ size_t i;
+ unsigned char *p;
+
+ if (!(fp = fopen("locale.mmap", "w"))) {
+ printf("cannot open locale.mmap for writing!");
+ return EXIT_FAILURE;
+ }
+
+ for (i=0 ; i < sizeof(__locale_mmap_t) ; i++) {
+ putc(0, fp); /* Zero out the file. */
+ }
+
+#ifdef __CTYPE_HAS_8_BIT_LOCALES
+ WRITE_C_DATA(ctype);
+ WRITE_C_DATA(uplow);
+#ifdef __WCHAR_ENABLED
+ WRITE_C_U16_DATA(c2wc);
+ WRITE_C_DATA(wc2c);
+ /* translit */
+#endif /* __WCHAR_ENABLED */
+#endif /* __CTYPE_HAS_8_BIT_LOCALES */
+
+#ifdef __WCHAR_ENABLED
+ WRITE_WC_DATA(ctype);
+ WRITE_WC_DATA(uplow);
+ WRITE_WC_I16_DATA(uplow_diff);
+/* WRITE_WC_DATA(comb); */
+ /* width?? */
+#endif /* __WCHAR_ENABLED */
+
+ WRITE_COMMON_MMAP(numeric);
+ WRITE_COMMON_MMAP(monetary);
+ WRITE_COMMON_MMAP(time);
+ /* TODO -- collate*/
+ WRITE_COMMON_MMAP(messages);
+
+#ifdef __CTYPE_HAS_8_BIT_LOCALES
+ fseek(fp, (long) offsetof(__locale_mmap_t, codeset_8_bit), SEEK_SET); \
+ p = (unsigned char *) codeset_8_bit;
+ for (i=0 ; i < sizeof(codeset_8_bit) ; i++) {
+ putc(p[i], fp);
+ }
+#endif /* __CTYPE_HAS_8_BIT_LOCALES */
+
+ WRITE_COMMON_MMIDX(numeric);
+ WRITE_COMMON_MMIDX(monetary);
+ WRITE_COMMON_MMIDX(time);
+ /* TODO -- collate*/
+ WRITE_COMMON_MMIDX(messages);
+
+ fseek(fp, (long) offsetof(__locale_mmap_t, lc_common_item_offsets_LEN), SEEK_SET);
+ putc(1, fp); /* ctype -- (codeset) handled specially */
+ putc(__lc_numeric_item_offsets_LEN, fp);
+ putc(__lc_monetary_item_offsets_LEN, fp);
+ putc(__lc_time_item_offsets_LEN, fp);
+ putc(0, fp); /* collate */
+ putc(__lc_messages_item_offsets_LEN, fp);
+
+ fseek(fp, (long) offsetof(__locale_mmap_t, lc_common_tbl_offsets), SEEK_SET);
+ for (i=0 ; i < sizeof(common_tbl_offsets) ; i++) {
+ putc(((unsigned char *)common_tbl_offsets)[i], fp);
+ }
+
+#ifdef NUM_LOCALES
+ fseek(fp, (long) offsetof(__locale_mmap_t, locales), SEEK_SET);
+ for (i=0 ; i < (NUM_LOCALES * WIDTH_LOCALES) ; i++) {
+ putc(__locales[i], fp);
+ }
+
+ fseek(fp, (long) offsetof(__locale_mmap_t, locale_names5), SEEK_SET);
+ for (i=0 ; i < 5 * NUM_LOCALE_NAMES ; i++) {
+ putc(__locale_names5[i], fp);
+ }
+
+#ifdef LOCALE_AT_MODIFIERS_LENGTH
+ fseek(fp, (long) offsetof(__locale_mmap_t, locale_at_modifiers), SEEK_SET);
+ for (i=0 ; i < LOCALE_AT_MODIFIERS_LENGTH ; i++) {
+ putc(__locale_at_modifiers[i], fp);
+ }
+#endif /* LOCALE_AT_MODIFIERS_LENGTH */
+#endif /* NUM_LOCALES */
+
+ fseek(fp, (long) offsetof(__locale_mmap_t, lc_names), SEEK_SET);
+ for (i=0 ; i < lc_names_LEN ; i++) {
+ putc(lc_names[i], fp);
+ }
+
+#ifdef __CTYPE_HAS_8_BIT_LOCALES
+ fseek(fp, (long) offsetof(__locale_mmap_t, codeset_list), SEEK_SET);
+ for (i=0 ; i < sizeof(CODESET_LIST) ; i++) {
+ putc((unsigned char)(CODESET_LIST[i]), fp);
+ }
+#endif /* __CTYPE_HAS_8_BIT_LOCALES */
+
+
+ if (ferror(fp) || (fclose(fp) == EOF)) {
+ printf("error - stream in error state or fclose failed!");
+ return EXIT_FAILURE;
+ }
+
+ printf("sizeof(__locale_mmap_t) = %zd\n", sizeof(__locale_mmap_t));
+
+ return EXIT_SUCCESS;
+}
+
+/* TODO:
+ * collate data (8-bit weighted single char only)
+ * @ mappings!
+ * codeset list? yes, since we'll want to be able to inspect them...
+ * that means putting some header stuff in magic
+ * fix ctype LEN defines in gen_c8tables
+ */
diff --git a/ap/build/uClibc/extra/locale/gen_wc8bit.c b/ap/build/uClibc/extra/locale/gen_wc8bit.c
new file mode 100644
index 0000000..a861caa
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/gen_wc8bit.c
@@ -0,0 +1,732 @@
+/*
+ * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+#define _GNU_SOURCE
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <locale.h>
+#include <stddef.h>
+#include <wctype.h>
+#include <limits.h>
+
+#ifndef _CTYPE_H
+#define _CTYPE_H
+#endif
+#ifndef _WCTYPE_H
+#define _WCTYPE_H
+#endif
+#include "include/bits/uClibc_ctype.h"
+
+/* TODO: maybe support -v like gen_wctype.c */
+#define verbose_msg(msg...) if (verbose) fprintf(stderr, msg)
+
+/* #define CTYPE_PACKED */
+#define UPLOW_IDX_SHIFT 3
+/* best if 2 unpacked or 3 packed */
+#define CTYPE_IDX_SHIFT 3
+/* 3 or 4 are very similar */
+#define C2WC_IDX_SHIFT 3
+
+#define CTYPE_IDX_LEN (128 >> (CTYPE_IDX_SHIFT))
+#define UPLOW_IDX_LEN (128 >> (UPLOW_IDX_SHIFT))
+#define C2WC_IDX_LEN (128 >> (C2WC_IDX_SHIFT))
+
+/* #ifdef CTYPE_PACKED */
+/* #define CTYPE_ROW_LEN (1 << ((CTYPE_IDX_SHIFT)-1)) */
+/* #else */
+#define CTYPE_ROW_LEN (1 << (CTYPE_IDX_SHIFT))
+/* #endif */
+#define UPLOW_ROW_LEN (1 << (UPLOW_IDX_SHIFT))
+#define C2WC_ROW_LEN (1 << (C2WC_IDX_SHIFT))
+
+
+
+#define MAX_WCHAR (0x2600-1)
+
+static unsigned char ctype_tbl[256 * CTYPE_ROW_LEN];
+static unsigned char uplow_tbl[256 * UPLOW_ROW_LEN];
+#ifdef DO_WIDE_CHAR
+static unsigned short c2wc_tbl[256 * C2WC_ROW_LEN];
+#endif
+static unsigned char tt[MAX_WCHAR+1];
+static unsigned char ti[MAX_WCHAR+1];
+static unsigned char xi[MAX_WCHAR+1];
+
+static int n_ctype_rows;
+static int n_uplow_rows;
+#ifdef DO_WIDE_CHAR
+static int n_c2wc_rows;
+#endif
+static int tt_num;
+static int ti_num;
+
+#define RANGE MAX_WCHAR
+
+#define TT_SHIFT 4
+#define TI_SHIFT 4
+
+#define II_LEN ((MAX_WCHAR+1) >> (TT_SHIFT+TI_SHIFT))
+
+typedef struct {
+ unsigned long c2w[256];
+ unsigned char w2c[MAX_WCHAR];
+ unsigned char ii[II_LEN];
+ unsigned char ctype_idx[CTYPE_IDX_LEN];
+ unsigned char uplow_idx[UPLOW_IDX_LEN];
+ unsigned char c2wc_idx[C2WC_IDX_LEN];
+} charset_data;
+
+int main(int argc, char **argv)
+{
+ FILE *fp;
+ charset_data csd[30];
+ unsigned long max_wchar;
+ unsigned char *p;
+ int numsets;
+ int i;
+ int j;
+ char buf[80];
+ unsigned char row[256];
+#ifdef DO_WIDE_CHAR
+ unsigned short wrow[256];
+#endif
+ char codeset_list[500];
+ char codeset_index[30];
+ int codeset_list_end = 0;
+ int total_size = 0;
+
+ if (!setlocale(LC_CTYPE, "en_US.UTF-8")) {
+ /* Silly foreigners disabling en_US locales */
+ FILE *fp = popen("locale -a", "r");
+ if (!fp)
+ goto locale_failure;
+
+ while (!feof(fp)) {
+ char buf[256];
+ size_t len;
+
+ if (fgets(buf, sizeof(buf) - 10, fp) == NULL)
+ goto locale_failure;
+
+ len = strlen(buf);
+ if (len > 0 && buf[len - 1] == '\n')
+ buf[--len] = '\0';
+ if (len < 5 || strcasecmp(&buf[len-5], ".UTF8") != 0)
+ strcat(buf, ".UTF8");
+ if (setlocale(LC_CTYPE, buf))
+ goto locale_success;
+ }
+
+ locale_failure:
+ printf("could not find a UTF8 locale ... please enable en_US.UTF-8\n");
+ return EXIT_FAILURE;
+ locale_success:
+ pclose(fp);
+ }
+
+#if 0
+ if (argc == 1) {
+ /* User requested 8-bit codesets, but didn't list any... */
+ /* Allow to build, just so this feature can be left on in config. */
+ printf("#ifdef __CTYPE_HAS_8_BIT_LOCALES\n");
+ printf("#warning ignoring 8 bit codesets request"
+ " as no codesets specified.\n");
+ printf("#endif\n");
+ printf("#undef __CTYPE_HAS_8_BIT_LOCALES\n\n");
+
+ printf("#define __LOCALE_DATA_NUM_CODESETS\t\t0\n");
+ printf("#define __LOCALE_DATA_CODESET_LIST\t\t\"\"\n");
+ return EXIT_SUCCESS;
+ }
+
+/* printf("#define __CTYPE_HAS_8_BIT_LOCALES\t1\n\n"); */
+ printf("#ifdef __CTYPE_HAS_8_BIT_LOCALES\n\n");
+#endif
+
+ if (argc == 1) {
+ printf("#undef __CTYPE_HAS_8_BIT_LOCALES\n\n");
+
+ printf("#define __LOCALE_DATA_NUM_CODESETS\t\t0\n");
+ printf("#define __LOCALE_DATA_CODESET_LIST\t\t\"\"\n");
+ } else {
+ printf("#define __CTYPE_HAS_8_BIT_LOCALES\t\t1\n\n");
+ }
+
+ printf("#define __LOCALE_DATA_Cctype_IDX_SHIFT\t%d\n", CTYPE_IDX_SHIFT);
+ printf("#define __LOCALE_DATA_Cctype_IDX_LEN\t\t%d\n", CTYPE_IDX_LEN);
+#ifdef CTYPE_PACKED
+ printf("#define __LOCALE_DATA_Cctype_ROW_LEN\t\t%d\n", CTYPE_ROW_LEN >> 1);
+ printf("#define __LOCALE_DATA_Cctype_PACKED\t\t1\n");
+#else
+ printf("#define __LOCALE_DATA_Cctype_ROW_LEN\t\t%d\n", CTYPE_ROW_LEN);
+ printf("#undef __LOCALE_DATA_Cctype_PACKED\n");
+#endif
+
+ printf("\n#define __LOCALE_DATA_Cuplow_IDX_SHIFT\t%d\n", UPLOW_IDX_SHIFT);
+ printf("#define __LOCALE_DATA_Cuplow_IDX_LEN\t\t%d\n", UPLOW_IDX_LEN);
+ printf("#define __LOCALE_DATA_Cuplow_ROW_LEN\t\t%d\n", UPLOW_ROW_LEN);
+
+#ifdef DO_WIDE_CHAR
+ printf("\n#define __LOCALE_DATA_Cc2wc_IDX_LEN\t\t%d\n", C2WC_IDX_LEN);
+ printf("#define __LOCALE_DATA_Cc2wc_IDX_SHIFT\t\t%d\n", C2WC_IDX_SHIFT);
+ printf("#define __LOCALE_DATA_Cc2wc_ROW_LEN\t\t%d\n", C2WC_ROW_LEN);
+#endif
+
+ printf("\ntypedef struct {\n");
+ printf("\tunsigned char idx8ctype[%d];\n", CTYPE_IDX_LEN);
+ printf("\tunsigned char idx8uplow[%d];\n", UPLOW_IDX_LEN);
+#ifdef DO_WIDE_CHAR
+ printf("\tunsigned char idx8c2wc[%d];\n", C2WC_IDX_LEN);
+ printf("\tunsigned char idx8wc2c[%d];\n", II_LEN);
+#endif
+ printf("} __codeset_8_bit_t;\n\n");
+
+ printf("#ifdef WANT_DATA\n\n");
+ printf("static const __codeset_8_bit_t codeset_8_bit[%d] = {\n", argc-1);
+
+ max_wchar = 0x7f;
+ numsets = 0;
+ codeset_index[0] = 0;
+ while (--argc) {
+ if (!(fp = fopen(*++argv,"r"))) {
+ fprintf(stderr, "cannot open file \"%s\"\n", *argv);
+ return EXIT_FAILURE;
+ }
+ fprintf(stderr, "processing %s... ", *argv);
+
+ {
+ char *s0;
+ char *s1;
+ int n;
+
+ s0 = strrchr(*argv, '/');
+ if (!s0) {
+ s0 = *argv;
+ } else {
+ ++s0;
+ }
+ s1 = strrchr(s0, '.');
+ if (!s1) {
+ n = strlen(s0);
+ } else {
+ n = s1 - s0;
+ }
+
+/* if ((numsets == 0) && strncmp("ASCII", s0, n)) { */
+/* printf("error - first codeset isn't ASCII!\n"); */
+/* return EXIT_FAILURE; */
+/* } */
+
+ if (numsets >= sizeof(codeset_index)) {
+ fprintf(stderr, "error - too many codesets!\n");
+ return EXIT_FAILURE;
+ }
+
+ if (codeset_list_end + n + 1 + numsets + 1 + 1 >= 256) {
+ fprintf(stderr, "error - codeset list to big!\n");
+ return EXIT_FAILURE;
+ }
+
+ codeset_index[numsets+1] = codeset_index[numsets] + n+1;
+ strncpy(codeset_list + codeset_list_end, s0, n);
+ codeset_list_end += (n+1);
+ codeset_list[codeset_list_end - 1] = 0;
+
+ printf("\t{ /* %.*s */", n, s0);
+ }
+
+ memset(&csd[numsets], 0, sizeof(charset_data));
+ memset(xi, 0, sizeof(xi));
+ {
+ unsigned long c, wc;
+ int lines;
+ lines = 0;
+ while (fgets(buf,sizeof(buf),fp)) {
+ if ((2 != sscanf(buf, "{ %lx , %lx", &c, &wc))
+ || (c >= 256) || (wc > MAX_WCHAR)) {
+ fprintf(stderr, "error: scanf failure! \"%s\"\n", buf);
+ return EXIT_FAILURE;
+ }
+
+ /* don't put in w2c... dynamicly build tt instead. */
+
+ if (c <= 0x7f) { /* check the 7bit entries but don't store */
+ if (c != wc) {
+ fprintf(stderr, "error: c != wc in %s\n", buf);
+ return EXIT_FAILURE;
+ }
+ csd[numsets].c2w[c] = wc;
+ csd[numsets].w2c[wc] = 0; /* ignore */
+ if (wc > max_wchar) {
+ max_wchar = wc;
+ }
+ } else {
+ csd[numsets].c2w[c] = wc;
+ csd[numsets].w2c[wc] = c;
+ if (wc > max_wchar) {
+ max_wchar = wc;
+ }
+ }
+ ++lines;
+ }
+ fprintf(stderr, "%d lines ", lines);
+
+ for (i = 0 ; i <= MAX_WCHAR ; i += (1 << TT_SHIFT)) {
+ p = &csd[numsets].w2c[i];
+ for (j = 0 ; j < tt_num ; j++) {
+ if (!memcmp(p, &tt[j << TT_SHIFT], (1 << TT_SHIFT))) {
+ break;
+ }
+ }
+ if (j == tt_num) { /* new entry */
+ memcpy(&tt[j << TT_SHIFT], p, (1 << TT_SHIFT));
+ ++tt_num;
+ }
+ xi[i >> TT_SHIFT] = j;
+ }
+
+ for (i = 0 ; i <= (MAX_WCHAR >> TT_SHIFT) ; i += (1 << TI_SHIFT)) {
+ p = &xi[i];
+ for (j = 0 ; j < ti_num ; j++) {
+ if (!memcmp(p, &ti[j << TI_SHIFT], (1 << TI_SHIFT))) {
+ break;
+ }
+ }
+ if (j == ti_num) { /* new entry */
+ memcpy(&ti[j << TI_SHIFT], p, (1 << TI_SHIFT));
+ ++ti_num;
+ }
+ csd[numsets].ii[i >> TI_SHIFT] = j;
+/* fprintf(stderr, "%d ", i >> TI_SHIFT); */
+ }
+
+#if 1
+ printf("\n\t\t/* idx8ctype data */\n\t\t{");
+ for (i = 128 ; i < 256 ; i++) {
+ wchar_t c;
+ unsigned int d;
+
+/* if (!(i & 0x7)) { */
+/* printf("\n"); */
+/* } */
+
+ c = csd[numsets].c2w[i];
+
+ if (c == 0) { /* non-existant char in codeset */
+ d = __CTYPE_unclassified;
+ } else if (iswdigit(c)) {
+ d = __CTYPE_digit;
+ } else if (iswalpha(c)) {
+ d = __CTYPE_alpha_nonupper_nonlower;
+ if (iswlower(c)) {
+ d = __CTYPE_alpha_lower;
+ if (iswupper(c)) {
+ d = __CTYPE_alpha_upper_lower;
+ }
+ } else if (iswupper(c)) {
+ d = __CTYPE_alpha_upper;
+ }
+ } else if (iswpunct(c)) {
+ d = __CTYPE_punct;
+ } else if (iswgraph(c)) {
+ d = __CTYPE_graph;
+ } else if (iswprint(c)) {
+ d = __CTYPE_print_space_nonblank;
+ if (iswblank(c)) {
+ d = __CTYPE_print_space_blank;
+ }
+ } else if (iswspace(c) && !iswcntrl(c)) {
+ d = __CTYPE_space_nonblank_noncntrl;
+ if (iswblank(c)) {
+ d = __CTYPE_space_blank_noncntrl;
+ }
+ } else if (iswcntrl(c)) {
+ d = __CTYPE_cntrl_nonspace;
+ if (iswspace(c)) {
+ d = __CTYPE_cntrl_space_nonblank;
+ if (iswblank(c)) {
+ d = __CTYPE_cntrl_space_blank;
+ }
+ }
+ } else {
+ d = __CTYPE_unclassified;
+ }
+
+#if 1
+ row[i & (CTYPE_ROW_LEN-1)] = d;
+ if ((i & (CTYPE_ROW_LEN-1)) == (CTYPE_ROW_LEN-1)) {
+ p = ctype_tbl;
+ for (j=0 ; j < n_ctype_rows ; j++) {
+ if (!memcmp(p, row, CTYPE_ROW_LEN)) {
+ break;
+ }
+ p += CTYPE_ROW_LEN;
+ }
+ if (j == n_ctype_rows) { /* new entry */
+ if (++n_ctype_rows > 256) {
+ fprintf(stderr, "error -- to many ctype rows!\n");
+ return EXIT_FAILURE;
+ }
+ memcpy(p, row, CTYPE_ROW_LEN);
+ }
+ csd[numsets].ctype_idx[i >> CTYPE_IDX_SHIFT] = j;
+ if (!((i >> CTYPE_IDX_SHIFT) & 0x7)
+ && (i != (127 + CTYPE_ROW_LEN))
+ ) {
+ printf("\n\t\t ");
+ }
+ printf(" %#4x,", j);
+ }
+#else
+ printf(" %#4x,", d);
+#endif
+ }
+#endif
+ printf(" }");
+
+#if 1
+ printf(",\n\t\t/* idx8uplow data */\n\t\t{");
+ for (i = 128 ; i < 256 ; i++) {
+ wchar_t c, u, l;
+/* if (!(i & 0x7)) { */
+/* printf("\n"); */
+/* } */
+ c = csd[numsets].c2w[i];
+ if ((c != 0) || 1) {
+ u = towupper(c);
+ l = towlower(c);
+
+ if (u >= 0x80) u = csd[numsets].w2c[u];
+ if (l >= 0x80) l = csd[numsets].w2c[l];
+
+ if (u == 0) u = i; /* upper is missing, so ignore */
+ if (l == 0) l = i; /* lower is missing, so ignore */
+
+#if 1
+ /* store as unsigned char and let overflow handle it. */
+/* if ((((u-i) < CHAR_MIN) || ((u-i) > CHAR_MAX)) */
+/* || (((i-l) < CHAR_MIN) || ((i-l) > CHAR_MAX)) */
+/* ) { */
+/* fprintf(stderr, "error - uplow diff out of range! %d %ld %ld\n", */
+/* i, u, l); */
+/* return EXIT_FAILURE; */
+/* } */
+
+ row[i & (UPLOW_ROW_LEN-1)] = ((l==i) ? (u-i) : (i-l));
+ if ((i & (UPLOW_ROW_LEN-1)) == (UPLOW_ROW_LEN-1)) {
+ p = uplow_tbl;
+ for (j=0 ; j < n_uplow_rows ; j++) {
+ if (!memcmp(p, row, UPLOW_ROW_LEN)) {
+ break;
+ }
+ p += UPLOW_ROW_LEN;
+ }
+ if (j == n_uplow_rows) { /* new entry */
+ if (++n_uplow_rows > 256) {
+ fprintf(stderr, "error -- to many uplow rows!\n");
+ return EXIT_FAILURE;
+ }
+ memcpy(p, row, UPLOW_ROW_LEN);
+ }
+ csd[numsets].uplow_idx[i >> UPLOW_IDX_SHIFT] = j;
+ if (!((i >> UPLOW_IDX_SHIFT) & 0x7)
+ && (i != (127 + UPLOW_ROW_LEN))
+ ) {
+ printf("\n\t\t ");
+ }
+ printf(" %#4x,", j);
+ }
+
+#elif 0
+ if (!(i & 0x7) && i) {
+ printf("\n");
+ }
+ printf(" %4ld,", (l==i) ? (u-i) : (i-l));
+/* printf(" %4ld,", (l==i) ? u : l); */
+#else
+ if ((u != i) || (l != i)) {
+#if 0
+ printf(" %#08lx, %#08lx, %#08lx, %#08lx, %#08lx, %#08lx, \n",
+ (unsigned long) i,
+ (unsigned long) c,
+ (unsigned long) l,
+ (unsigned long) towlower(c),
+ (unsigned long) u,
+ (unsigned long) towupper(c));
+
+#else
+ printf(" %#08lx, %8ld, %d, %8ld, %d, %#08lx\n",
+ (unsigned long) i,
+ (long) (l - i),
+ iswupper(c),
+ (long) (i - u),
+ iswlower(c),
+ (unsigned long) c);
+#endif
+ }
+#endif
+ }
+ }
+ printf(" }");
+#endif
+
+#ifndef DO_WIDE_CHAR
+ printf("\n");
+#else /* DO_WIDE_CHAR */
+
+#if 1
+ printf(",\n\t\t/* idx8c2wc data */\n\t\t{");
+ for (i = 128 ; i < 256 ; i++) {
+#if 1
+ wrow[i & (C2WC_ROW_LEN-1)] = csd[numsets].c2w[i];
+ if ((i & (C2WC_ROW_LEN-1)) == (C2WC_ROW_LEN-1)) {
+ p = (unsigned char *) c2wc_tbl;
+ for (j=0 ; j < n_c2wc_rows ; j++) {
+ if (!memcmp(p, (char *) wrow, 2*C2WC_ROW_LEN)) {
+ break;
+ }
+ p += 2*C2WC_ROW_LEN;
+ }
+ if (j == n_c2wc_rows) { /* new entry */
+ if (++n_c2wc_rows > 256) {
+ fprintf(stderr, "error -- to many c2wc rows!\n");
+ return EXIT_FAILURE;
+ }
+ memcpy(p, (char *) wrow, 2*C2WC_ROW_LEN);
+ }
+ csd[numsets].c2wc_idx[i >> C2WC_IDX_SHIFT] = j;
+ if (!((i >> C2WC_IDX_SHIFT) & 0x7)
+ && (i != (127 + C2WC_ROW_LEN))
+ ) {
+ printf("\n\t\t ");
+ }
+ printf(" %#4x,", j);
+ }
+#else
+ if (!(i & 0x7) && i) {
+ printf("\n");
+ }
+ printf(" %#6lx,", csd[numsets].c2w[i]);
+#endif
+ }
+ printf(" },\n");
+#endif
+
+#if 1
+/* fprintf(stderr, "\nII_LEN = %d\n", II_LEN); */
+ printf("\t\t/* idx8wc2c data */\n\t\t{");
+ for (i = 0 ; i < II_LEN ; i++) {
+ if (!(i & 0x7) && i) {
+ printf("\n\t\t ");
+ }
+ printf(" %#4x,", csd[numsets].ii[i]);
+ }
+ printf(" }\n");
+#endif
+
+#endif /* DO_WIDE_CHAR */
+ printf("\t},\n");
+
+ }
+ ++numsets;
+ fprintf(stderr, "done\n");
+ }
+ printf("};\n");
+ printf("\n#endif /* WANT_DATA */\n");
+
+#ifdef DO_WIDE_CHAR
+ printf("\n");
+ printf("#define __LOCALE_DATA_Cwc2c_DOMAIN_MAX\t%#x\n", RANGE);
+ printf("#define __LOCALE_DATA_Cwc2c_TI_SHIFT\t\t%d\n", TI_SHIFT);
+ printf("#define __LOCALE_DATA_Cwc2c_TT_SHIFT\t\t%d\n", TT_SHIFT);
+ printf("#define __LOCALE_DATA_Cwc2c_II_LEN\t\t%d\n", II_LEN);
+ printf("#define __LOCALE_DATA_Cwc2c_TI_LEN\t\t%d\n", ti_num << TI_SHIFT);
+ printf("#define __LOCALE_DATA_Cwc2c_TT_LEN\t\t%d\n", tt_num << TT_SHIFT);
+ printf("\n");
+
+ printf("\n#define __LOCALE_DATA_Cwc2c_TBL_LEN\t\t%d\n",
+ (ti_num << TI_SHIFT) + (tt_num << TT_SHIFT));
+
+ printf("#ifdef WANT_DATA\n\n");
+ printf("static const unsigned char __LOCALE_DATA_Cwc2c_data[%d] = {\n",
+ (ti_num << TI_SHIFT) + (tt_num << TT_SHIFT));
+ printf("\t/* ti_table */\n\t");
+ for (i=0 ; i < ti_num << TI_SHIFT ; i++) {
+ if (!(i & 7) && i) {
+ printf("\n\t");
+ }
+ printf(" %#4x,", ti[i]);
+ }
+ printf("\n");
+ printf("\t/* tt_table */\n\t");
+ for (i=0 ; i < tt_num << TT_SHIFT ; i++) {
+ if (!(i & 7) && i) {
+ printf("\n\t");
+ }
+ printf(" %#4x,", tt[i]);
+ }
+ printf("\n};\n");
+
+ printf("\n#endif /* WANT_DATA */\n");
+#endif /* DO_WIDE_CHAR */
+
+ printf("\n#define __LOCALE_DATA_Cuplow_TBL_LEN\t\t%d\n",
+ n_uplow_rows * UPLOW_ROW_LEN);
+ printf("\n#ifdef WANT_DATA\n\n");
+
+ printf("\nstatic const unsigned char __LOCALE_DATA_Cuplow_data[%d] = {\n",
+ n_uplow_rows * UPLOW_ROW_LEN);
+ p = uplow_tbl;
+ for (j=0 ; j < n_uplow_rows ; j++) {
+ printf("\t");
+ for (i=0 ; i < UPLOW_ROW_LEN ; i++) {
+ printf(" %#4x,", (unsigned int)((unsigned char) p[i]));
+ }
+ printf("\n");
+ p += UPLOW_ROW_LEN;
+ }
+ printf("};\n");
+
+ printf("\n#endif /* WANT_DATA */\n");
+ printf("\n#define __LOCALE_DATA_Cctype_TBL_LEN\t\t%d\n",
+#ifdef CTYPE_PACKED
+ n_ctype_rows * CTYPE_ROW_LEN / 2
+#else
+ n_ctype_rows * CTYPE_ROW_LEN
+#endif
+ );
+ printf("\n#ifdef WANT_DATA\n\n");
+
+
+ printf("\nstatic const unsigned char __LOCALE_DATA_Cctype_data[%d] = {\n",
+#ifdef CTYPE_PACKED
+ n_ctype_rows * CTYPE_ROW_LEN / 2
+#else
+ n_ctype_rows * CTYPE_ROW_LEN
+#endif
+ );
+ p = ctype_tbl;
+ for (j=0 ; j < n_ctype_rows ; j++) {
+ printf("\t");
+ for (i=0 ; i < CTYPE_ROW_LEN ; i++) {
+#ifdef CTYPE_PACKED
+ printf(" %#4x,", (unsigned int)(p[i] + (p[i+1] << 4)));
+ ++i;
+#else
+ printf(" %#4x,", (unsigned int)p[i]);
+#endif
+ }
+ printf("\n");
+ p += CTYPE_ROW_LEN;
+ }
+ printf("};\n");
+
+ printf("\n#endif /* WANT_DATA */\n");
+
+#ifdef DO_WIDE_CHAR
+
+ printf("\n#define __LOCALE_DATA_Cc2wc_TBL_LEN\t\t%d\n",
+ n_c2wc_rows * C2WC_ROW_LEN);
+ printf("\n#ifdef WANT_DATA\n\n");
+
+ printf("\nstatic const unsigned short __LOCALE_DATA_Cc2wc_data[%d] = {\n",
+ n_c2wc_rows * C2WC_ROW_LEN);
+ p = (unsigned char *) c2wc_tbl;
+ for (j=0 ; j < n_c2wc_rows ; j++) {
+ printf("\t");
+ for (i=0 ; i < C2WC_ROW_LEN ; i++) {
+ printf(" %#6x,", (unsigned int)(((unsigned short *)p)[i]));
+ }
+ printf("\n");
+ p += 2*C2WC_ROW_LEN;
+ }
+ printf("};\n");
+ printf("\n#endif /* WANT_DATA */\n");
+#endif /* DO_WIDE_CHAR */
+ printf("\n\n");
+
+ printf("#define __LOCALE_DATA_NUM_CODESETS\t\t%d\n", numsets);
+ printf("#define __LOCALE_DATA_CODESET_LIST \\\n\t\"");
+ for (i=0 ; i < numsets ; i++) {
+ printf("\\x%02x", numsets + 1 + (unsigned char) codeset_index[i]);
+ if (((i & 7) == 7) && (i + 1 < numsets)) {
+ printf("\" \\\n\t\"");
+ }
+ }
+ printf("\" \\\n\t\"\\0\"");
+ for (i=0 ; i < numsets ; i++) {
+ printf(" \\\n\t\"%s\\0\"",
+ codeset_list + ((unsigned char)codeset_index[i]));
+ }
+
+ printf("\n\n");
+ for (i=0 ; i < numsets ; i++) {
+ char buf[30];
+ char *z;
+ strcpy(buf, codeset_list + ((unsigned char)codeset_index[i]));
+ for (z=buf ; *z ; z++) {
+ if (*z == '-') {
+ *z = '_';
+ }
+ }
+ printf("#define __CTYPE_HAS_CODESET_%s\n", buf);
+ }
+#ifdef DO_WIDE_CHAR
+ printf("#define __CTYPE_HAS_CODESET_UTF_8\n");
+#endif /* DO_WIDE_CHAR */
+
+#if 0
+ printf("\n#endif /* __CTYPE_HAS_8_BIT_LOCALES */\n\n");
+#endif
+
+ total_size = 0;
+#ifdef DO_WIDE_CHAR
+ fprintf(stderr, "tt_num = %d ti_num = %d\n", tt_num, ti_num);
+ fprintf(stderr, "max_wchar = %#lx\n", max_wchar);
+
+ fprintf(stderr, "size is %d * %d + %d * %d + %d * %d = %d\n",
+ tt_num, 1 << TT_SHIFT, ti_num, 1 << TI_SHIFT,
+ ((MAX_WCHAR >> (TT_SHIFT + TI_SHIFT)) + 1), numsets,
+ j = tt_num * (1 << TT_SHIFT) + ti_num * (1 << TI_SHIFT)
+ + ((MAX_WCHAR >> (TT_SHIFT + TI_SHIFT)) + 1) * numsets);
+ total_size += j;
+#endif /* DO_WIDE_CHAR */
+
+#ifdef CTYPE_PACKED
+ i = 2;
+#else
+ i = 1;
+#endif
+
+ fprintf(stderr, "ctype - CTYPE_IDX_SHIFT = %d -- %d * %d + %d * %d = %d\n",
+ CTYPE_IDX_SHIFT, numsets, CTYPE_IDX_LEN, n_ctype_rows, CTYPE_ROW_LEN / i,
+ j = numsets * CTYPE_IDX_LEN + n_ctype_rows * CTYPE_ROW_LEN / i);
+ total_size += j;
+
+ fprintf(stderr, "uplow - UPLOW_IDX_SHIFT = %d -- %d * %d + %d * %d = %d\n",
+ UPLOW_IDX_SHIFT, numsets, UPLOW_IDX_LEN, n_uplow_rows, UPLOW_ROW_LEN,
+ j = numsets * UPLOW_IDX_LEN + n_uplow_rows * UPLOW_ROW_LEN);
+ total_size += j;
+
+#ifdef DO_WIDE_CHAR
+
+ fprintf(stderr, "c2wc - C2WC_IDX_SHIFT = %d -- %d * %d + 2 * %d * %d = %d\n",
+ C2WC_IDX_SHIFT, numsets, C2WC_IDX_LEN, n_c2wc_rows, C2WC_ROW_LEN,
+ j = numsets * C2WC_IDX_LEN + 2 * n_c2wc_rows * C2WC_ROW_LEN);
+ total_size += j;
+
+#endif /* DO_WIDE_CHAR */
+
+ fprintf(stderr, "total size = %d\n", total_size);
+
+/* for (i=0 ; i < numsets ; i++) { */
+/* printf("codeset_index[i] = %d codeset_list[ci[i]] = \"%s\"\n", */
+/* (unsigned char) codeset_index[i], */
+/* codeset_list + ((unsigned char)codeset_index[i])); */
+/* } */
+
+ return EXIT_SUCCESS;
+}
diff --git a/ap/build/uClibc/extra/locale/gen_wctype.c b/ap/build/uClibc/extra/locale/gen_wctype.c
new file mode 100644
index 0000000..b5d7e39
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/gen_wctype.c
@@ -0,0 +1,814 @@
+/*
+ * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ */
+#define _GNU_SOURCE
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <locale.h>
+#include <wctype.h>
+#include <limits.h>
+#include <stdint.h>
+#include <wchar.h>
+#include <ctype.h>
+
+#include "include/bits/uClibc_charclass.h"
+
+/* 0x9 : space blank */
+/* 0xa : space */
+/* 0xb : space */
+/* 0xc : space */
+/* 0xd : space */
+/* 0x20 : space blank */
+/* 0x1680 : space blank */
+/* 0x2000 : space blank */
+/* 0x2001 : space blank */
+/* 0x2002 : space blank */
+/* 0x2003 : space blank */
+/* 0x2004 : space blank */
+/* 0x2005 : space blank */
+/* 0x2006 : space blank */
+/* 0x2008 : space blank */
+/* 0x2009 : space blank */
+/* 0x200a : space blank */
+/* 0x200b : space blank */
+/* 0x2028 : space */
+/* 0x2029 : space */
+/* 0x3000 : space blank */
+
+/* typecount[ 0] = 88670 C_alpha_nonupper_nonlower */
+/* typecount[ 1] = 742 C_alpha_lower */
+/* typecount[ 2] = 4 C_alpha_upper_lower */
+/* typecount[ 3] = 731 C_alpha_upper */
+/* typecount[ 4] = 10 C_digit */
+/* typecount[ 5] = 10270 C_punct */
+/* typecount[ 6] = 0 C_graph */
+/* typecount[ 7] = 0 C_print_space_nonblank */
+/* typecount[ 8] = 14 C_print_space_blank */
+/* typecount[ 9] = 0 C_space_nonblank_noncntrl */
+/* typecount[10] = 0 C_space_blank_noncntrl */
+/* typecount[11] = 6 C_cntrl_space_nonblank */
+/* typecount[12] = 1 C_cntrl_space_blank */
+/* typecount[13] = 60 C_cntrl_nonspace */
+/* typecount[14] = 96100 C_unclassified */
+/* typecount[15] = 0 empty_slot */
+
+
+/* Set to #if 0 to restrict wchars to 16 bits. */
+#if 1
+#define RANGE 0x2ffffUL
+#elif 0
+#define RANGE 0x1ffffUL
+#else
+#define RANGE 0xffffUL /* Restrict for 16-bit wchar_t... */
+#endif
+
+/* Some macros that test for various (w)ctype classes when passed one of the
+ * designator values enumerated above. */
+#define mywalnum(D,C) ((unsigned)(D - 1) <= (__CTYPE_digit - 1))
+#define mywalpha(D,C) ((unsigned)(D - 1) <= (__CTYPE_alpha_upper - 1))
+#define mywblank(D,C) ((unsigned)(D - __CTYPE_print_space_nonblank) <= 5 && (D & 1))
+#define mywcntrl(D,C) ((unsigned)(D - __CTYPE_cntrl_space_nonblank) <= 2)
+#define mywdigit(D,C) (D == __CTYPE_digit)
+#define mywgraph(D,C) ((unsigned)(D - 1) <= (__CTYPE_graph - 1))
+#define mywlower(D,C) ((unsigned)(D - __CTYPE_alpha_lower) <= 1)
+#define mywprint(D,C) ((unsigned)(D - 1) <= (__CTYPE_print_space_blank - 1))
+#define mywpunct(D,C) (D == __CTYPE_punct)
+#define mywspace(D,C) ((unsigned)(D - __CTYPE_print_space_nonblank) <= 5)
+#define mywupper(D,C) ((unsigned)(D - __CTYPE_alpha_upper_lower) <= 1)
+/* #define mywxdigit(D,C) -- isxdigit is untestable this way.
+ * But that's ok as isxdigit() (and isdigit() too) are locale-invariant. */
+#define mywxdigit(D,C) (mywdigit(D,C) || (unsigned)(((C) | 0x20) - 'a') <= 5)
+
+typedef struct {
+ short l;
+ short u;
+} uldiff_entry;
+
+typedef struct {
+ uint16_t ii_len;
+ uint16_t ti_len;
+ uint16_t ut_len;
+
+ unsigned char ii_shift;
+ unsigned char ti_shift;
+
+ unsigned char *ii;
+ unsigned char *ti;
+ unsigned char *ut;
+} table_data;
+
+static unsigned verbose;
+#define verbose_msg(msg...) if (verbose) fprintf(stderr, msg)
+
+void output_table(const char *name, table_data *tbl)
+{
+ size_t i;
+
+ printf("#define __LOCALE_DATA_WC%s_II_LEN %7u\n", name, tbl->ii_len);
+ printf("#define __LOCALE_DATA_WC%s_TI_LEN %7u\n", name, tbl->ti_len);
+ printf("#define __LOCALE_DATA_WC%s_UT_LEN %7u\n", name, tbl->ut_len);
+
+ printf("#define __LOCALE_DATA_WC%s_II_SHIFT %7u\n", name, tbl->ii_shift);
+ printf("#define __LOCALE_DATA_WC%s_TI_SHIFT %7u\n", name, tbl->ti_shift);
+
+ printf("\n#ifdef WANT_WC%s_data\n", name);
+
+ i = tbl->ii_len + tbl->ti_len + tbl->ut_len;
+ printf("\nstatic const unsigned char __LOCALE_DATA_WC%s_data[%zu] = {", name, i);
+ for (i = 0; i < tbl->ii_len; i++) {
+ if (i % 12 == 0) {
+ printf("\n");
+ }
+ printf(" %#04x,", tbl->ii[i]);
+ }
+ for (i = 0; i < tbl->ti_len; i++) {
+ if (i % 12 == 0) {
+ printf("\n");
+ }
+ printf(" %#04x,", tbl->ti[i]);
+ }
+ for (i = 0; i < tbl->ut_len; i++) {
+ if (i % 12 == 0) {
+ printf("\n");
+ }
+ printf(" %#04x,", tbl->ut[i]);
+ }
+ printf("\n};\n\n");
+
+ printf("#endif /* WANT_WC%s_data */\n\n", name);
+}
+
+static void dump_table_data(table_data *tbl)
+{
+ verbose_msg("ii_shift = %d ti_shift = %d\n"
+ "ii_len = %d ti_len = %d ut_len = %d\n"
+ "total = %d\n",
+ tbl->ii_shift, tbl->ti_shift,
+ tbl->ii_len, tbl->ti_len, tbl->ut_len,
+ (int) tbl->ii_len + (int) tbl->ti_len + (int) tbl->ut_len);
+}
+
+/* For sorting the blocks of unsigned chars. */
+static size_t nu_val;
+
+int nu_memcmp(const void *a, const void *b)
+{
+ return memcmp(*(unsigned char**)a, *(unsigned char**)b, nu_val);
+}
+
+static size_t newopt(unsigned char *ut, size_t usize, int shift, table_data *tbl);
+
+#define MAXTO 255 /* Restrict to minimal unsigned char max. */
+
+int main(int argc, char **argv)
+{
+ long int u, l, tt;
+ size_t smallest, t;
+ unsigned int c;
+ unsigned int d;
+ int i, n;
+ int ul_count = 0;
+ uldiff_entry uldiff[MAXTO];
+ table_data cttable;
+ table_data ultable;
+#if 0
+ table_data combtable;
+ table_data widthtable;
+ long int last_comb = 0;
+#endif
+ unsigned char wct[(RANGE/2)+1]; /* wctype table (nibble per wchar) */
+ unsigned char ult[RANGE+1]; /* upper/lower table */
+ unsigned char combt[(RANGE/4)+1]; /* combining */
+ unsigned char widtht[(RANGE/4)+1]; /* width */
+ wctrans_t totitle;
+ wctype_t is_comb, is_comb3;
+
+ long int typecount[16];
+ const char *typename[16];
+ static const char empty_slot[] = "empty_slot";
+ int built = 0;
+
+#define INIT_TYPENAME(X) typename[__CTYPE_##X] = "C_" #X
+
+ for (i = 0; i < 16; i++) {
+ typename[i] = empty_slot;
+ }
+
+ INIT_TYPENAME(unclassified);
+ INIT_TYPENAME(alpha_nonupper_nonlower);
+ INIT_TYPENAME(alpha_lower);
+ INIT_TYPENAME(alpha_upper_lower);
+ INIT_TYPENAME(alpha_upper);
+ INIT_TYPENAME(digit);
+ INIT_TYPENAME(punct);
+ INIT_TYPENAME(graph);
+ INIT_TYPENAME(print_space_nonblank);
+ INIT_TYPENAME(print_space_blank);
+ INIT_TYPENAME(space_nonblank_noncntrl);
+ INIT_TYPENAME(space_blank_noncntrl);
+ INIT_TYPENAME(cntrl_space_nonblank);
+ INIT_TYPENAME(cntrl_space_blank);
+ INIT_TYPENAME(cntrl_nonspace);
+
+ memset(&cttable, 0, sizeof(table_data));
+ memset(&ultable, 0, sizeof(table_data));
+#if 0
+ memset(combtable, 0, sizeof(table_data));
+ memset(widthtable, 0, sizeof(table_data));
+#endif
+ setvbuf(stdout, NULL, _IONBF, 0);
+
+ while (--argc) {
+ ++argv;
+ if (!strcmp(*argv, "-v")) {
+ ++verbose;
+ continue;
+ }
+ if (!setlocale(LC_CTYPE, *argv)) {
+ verbose_msg("setlocale(LC_CTYPE,%s) failed! Skipping this locale...\n", *argv);
+ continue;
+ }
+
+ if (!(totitle = wctrans("totitle"))) {
+ verbose_msg("no totitle transformation.\n");
+ }
+ if (!(is_comb = wctype("combining"))) {
+ verbose_msg("no combining wctype.\n");
+ }
+ if (!(is_comb3 = wctype("combining_level3"))) {
+ verbose_msg("no combining_level3 wctype.\n");
+ }
+
+ if (!built) {
+ built = 1;
+ ul_count = 1;
+ uldiff[0].u = uldiff[0].l = 0;
+
+ memset(wct, 0, sizeof(wct));
+ memset(combt, 0, sizeof(combt));
+ memset(widtht, 0, sizeof(widtht));
+
+ for (i = 0; i < 16; i++) {
+ typecount[i] = 0;
+ }
+
+ for (c = 0; c <= RANGE; c++) {
+ if (iswdigit(c)) {
+ d = __CTYPE_digit;
+ } else if (iswalpha(c)) {
+ d = __CTYPE_alpha_nonupper_nonlower;
+ if (iswlower(c)) {
+ d = __CTYPE_alpha_lower;
+ if (iswupper(c)) {
+ d = __CTYPE_alpha_upper_lower;
+ }
+ } else if (iswupper(c)) {
+ d = __CTYPE_alpha_upper;
+ }
+ } else if (iswpunct(c)) {
+ d = __CTYPE_punct;
+ } else if (iswgraph(c)) {
+ d = __CTYPE_graph;
+ } else if (iswprint(c)) {
+ d = __CTYPE_print_space_nonblank;
+ if (iswblank(c)) {
+ d = __CTYPE_print_space_blank;
+ }
+ } else if (iswspace(c) && !iswcntrl(c)) {
+ d = __CTYPE_space_nonblank_noncntrl;
+ if (iswblank(c)) {
+ d = __CTYPE_space_blank_noncntrl;
+ }
+ } else if (iswcntrl(c)) {
+ d = __CTYPE_cntrl_nonspace;
+ if (iswspace(c)) {
+ d = __CTYPE_cntrl_space_nonblank;
+ if (iswblank(c)) {
+ d = __CTYPE_cntrl_space_blank;
+ }
+ }
+ } else {
+ d = __CTYPE_unclassified;
+ }
+
+ ++typecount[d];
+#if 0
+ if (iswspace(c)) {
+ if (iswblank(c)) {
+ verbose_msg("%#8x : space blank\n", c);
+ } else {
+ verbose_msg("%#8x : space\n", c);
+ }
+ }
+#endif
+#if 0
+ if (c < 256) {
+ unsigned int glibc;
+
+ glibc = 0;
+ if (isalnum(c)) ++glibc; glibc <<= 1;
+ if (isalpha(c)) ++glibc; glibc <<= 1;
+ if (isblank(c)) ++glibc; glibc <<= 1;
+ if (iscntrl(c)) ++glibc; glibc <<= 1;
+ if (isdigit(c)) ++glibc; glibc <<= 1;
+ if (isgraph(c)) ++glibc; glibc <<= 1;
+ if (islower(c)) ++glibc; glibc <<= 1;
+ if (isprint(c)) ++glibc; glibc <<= 1;
+ if (ispunct(c)) ++glibc; glibc <<= 1;
+ if (isspace(c)) ++glibc; glibc <<= 1;
+ if (isupper(c)) ++glibc; glibc <<= 1;
+ if (isxdigit(c)) ++glibc;
+ verbose_msg("%#8x : ctype %#4x\n", c, glibc);
+ }
+#endif
+#if 1
+ /* Paranoid checking... */
+ {
+ unsigned int glibc;
+ unsigned int mine;
+
+ glibc = 0;
+ if (iswalnum(c)) ++glibc; glibc <<= 1;
+ if (iswalpha(c)) ++glibc; glibc <<= 1;
+ if (iswblank(c)) ++glibc; glibc <<= 1;
+ if (iswcntrl(c)) ++glibc; glibc <<= 1;
+ if (iswdigit(c)) ++glibc; glibc <<= 1;
+ if (iswgraph(c)) ++glibc; glibc <<= 1;
+ if (iswlower(c)) ++glibc; glibc <<= 1;
+ if (iswprint(c)) ++glibc; glibc <<= 1;
+ if (iswpunct(c)) ++glibc; glibc <<= 1;
+ if (iswspace(c)) ++glibc; glibc <<= 1;
+ if (iswupper(c)) ++glibc; glibc <<= 1;
+ if (iswxdigit(c)) ++glibc;
+
+ mine = 0;
+ if (mywalnum(d,c)) ++mine; mine <<= 1;
+ if (mywalpha(d,c)) ++mine; mine <<= 1;
+ if (mywblank(d,c)) ++mine; mine <<= 1;
+ if (mywcntrl(d,c)) ++mine; mine <<= 1;
+ if (mywdigit(d,c)) ++mine; mine <<= 1;
+ if (mywgraph(d,c)) ++mine; mine <<= 1;
+ if (mywlower(d,c)) ++mine; mine <<= 1;
+ if (mywprint(d,c)) ++mine; mine <<= 1;
+ if (mywpunct(d,c)) ++mine; mine <<= 1;
+ if (mywspace(d,c)) ++mine; mine <<= 1;
+ if (mywupper(d,c)) ++mine; mine <<= 1;
+ if (mywxdigit(d,c)) ++mine;
+
+ if (glibc != mine) {
+ verbose_msg("%#8x : glibc %#4x != %#4x mine %u\n", c, glibc, mine, d);
+ return EXIT_FAILURE;
+ }
+#if 0
+ if (iswctype(c,is_comb) || iswctype(c,is_comb3)) {
+/* if (!iswpunct(c)) { */
+ verbose_msg("%#8x : %d %d %#4x\n",
+ c, iswctype(c,is_comb),iswctype(c,is_comb3), glibc);
+/* } */
+ }
+#endif
+#if 0
+ if (iswctype(c,is_comb) || iswctype(c,is_comb3)) {
+ if (!last_comb) {
+ verbose_msg("%#8x - ", c);
+ last_comb = c;
+ } else if (last_comb + 1 < c) {
+ verbose_msg("%#8x\n%#8x - ", last_comb, c);
+ last_comb = c;
+ } else {
+ last_comb = c;
+ }
+ }
+#endif
+ }
+#endif
+
+ combt[c/4] |= ((((!!iswctype(c,is_comb)) << 1) | !!iswctype(c,is_comb3))
+ << ((c & 3) << 1));
+/* comb3t[c/8] |= ((!!iswctype(c,is_comb3)) << (c & 7)); */
+
+/* widtht[c/4] |= (wcwidth(c) << ((c & 3) << 1)); */
+
+ if (c & 1) { /* Use the high nibble for odd numbered wchars. */
+ d <<= 4;
+ }
+ wct[c/2] |= d;
+
+ l = (long)(int) towlower(c) - c;
+ u = (long)(int) towupper(c) - c;
+ ult[c] = 0;
+ if (l || u) {
+ if ((l != (short)l) || (u != (short)u)) {
+ verbose_msg("range assumption error! %x %ld %ld\n", c, l, u);
+ return EXIT_FAILURE;
+ }
+ for (i = 0; i < ul_count; i++) {
+ if ((l == uldiff[i].l) && (u == uldiff[i].u)) {
+ goto found;
+ }
+ }
+ uldiff[ul_count].l = l;
+ uldiff[ul_count].u = u;
+ ++ul_count;
+ if (ul_count > MAXTO) {
+ verbose_msg("too many touppers/tolowers!\n");
+ return EXIT_FAILURE;
+ }
+ found:
+ ult[c] = i;
+ }
+ }
+
+ for (i = 0; i < 16; i++) {
+ verbose_msg("typecount[%2d] = %8ld %s\n", i, typecount[i], typename[i]);
+ }
+
+ verbose_msg("optimizing is* table..\n");
+ n = -1;
+ smallest = SIZE_MAX;
+ cttable.ii = NULL;
+ for (i = 0; i < 14; i++) {
+ t = newopt(wct, (RANGE/2)+1, i, &cttable);
+ if (smallest >= t) {
+ n = i;
+ smallest = t;
+/* } else { */
+/* break; */
+ }
+ }
+ verbose_msg("smallest = %zu\n", smallest);
+ if (!(cttable.ii = malloc(smallest))) {
+ verbose_msg("couldn't allocate space!\n");
+ return EXIT_FAILURE;
+ }
+ smallest = SIZE_MAX;
+ newopt(wct, (RANGE/2)+1, n, &cttable);
+ ++cttable.ti_shift; /* correct for nibble mode */
+
+ verbose_msg("optimizing u/l-to table..\n");
+ smallest = SIZE_MAX;
+ ultable.ii = NULL;
+ for (i = 0; i < 14; i++) {
+ t = newopt(ult, RANGE+1, i, &ultable);
+ if (smallest >= t) {
+ n = i;
+ smallest = t;
+/* } else { */
+/* break; */
+ }
+ }
+ verbose_msg("%lu (smallest) + %lu (u/l diffs) = %lu\n",
+ (unsigned long) smallest,
+ (unsigned long) (4 * ul_count),
+ (unsigned long) (smallest + 4 * ul_count)
+ );
+ verbose_msg("smallest = %zu\n", smallest);
+ if (!(ultable.ii = malloc(smallest))) {
+ verbose_msg("couldn't allocate space!\n");
+ return EXIT_FAILURE;
+ }
+ smallest = SIZE_MAX;
+ newopt(ult, RANGE+1, n, &ultable);
+#if 0
+ verbose_msg("optimizing comb table..\n");
+ smallest = SIZE_MAX;
+ combtable.ii = NULL;
+ for (i = 0; i < 14; i++) {
+ t = newopt(combt, sizeof(combt), i, &combtable);
+ if (smallest >= t) {
+ n = i;
+ smallest = t;
+/* } else { */
+/* break; */
+ }
+ }
+ verbose_msg("smallest = %zu\n", smallest);
+ if (!(combtable.ii = malloc(smallest))) {
+ verbose_msg("couldn't allocate space!\n");
+ return EXIT_FAILURE;
+ }
+ smallest = SIZE_MAX;
+ newopt(combt, sizeof(combt), n, &combtable);
+ combtable.ti_shift += 4; /* correct for 4 entries per */
+#endif
+#if 0
+ verbose_msg("optimizing width table..\n");
+ smallest = SIZE_MAX;
+ widthtable.ii = NULL;
+ for (i = 0; i < 14; i++) {
+ t = newopt(widtht, sizeof(widtht), i, &widthtable);
+ if (smallest >= t) {
+ n = i;
+ smallest = t;
+/* } else { */
+/* break; */
+ }
+ }
+ verbose_msg("smallest = %zu\n", smallest);
+ if (!(widthtable.ii = malloc(smallest))) {
+ verbose_msg("couldn't allocate space!\n");
+ return EXIT_FAILURE;
+ }
+ smallest = SIZE_MAX;
+ newopt(widtht, sizeof(widtht), n, &widthtable);
+ widthtable.ti_shift += 4; /* correct for 4 entries per */
+#endif
+#if 0
+ verbose_msg("optimizing comb3 table..\n");
+ smallest = SIZE_MAX;
+ comb3table.ii = NULL;
+ for (i = 0; i < 14; i++) {
+ t = newopt(comb3t, sizeof(comb3t), i, &comb3table);
+ if (smallest >= t) {
+ n = i;
+ smallest = t;
+/* } else { */
+/* break; */
+ }
+ }
+ verbose_msg("smallest = %zu\n", smallest);
+ if (!(comb3table.ii = malloc(smallest))) {
+ verbose_msg("couldn't allocate space!\n");
+ return EXIT_FAILURE;
+ }
+ smallest = SIZE_MAX;
+ newopt(comb3t, sizeof(comb3t), n, &comb3table);
+ comb3table.ti_shift += 8; /* correct for 4 entries per */
+#endif
+
+ dump_table_data(&cttable);
+ dump_table_data(&ultable);
+#if 0
+ dump_table_data(&combtable);
+#endif
+ }
+
+ verbose_msg("verifying for %s...\n", *argv);
+#if RANGE == 0xffffU
+ for (c = 0; c <= 0xffffUL; c++)
+#else
+ for (c = 0; c <= 0x10ffffUL; c++)
+#endif
+ {
+ unsigned int glibc;
+ unsigned int mine;
+ unsigned int upper, lower;
+
+#if 0
+#if RANGE < 0x10000UL
+ if (c == 0x10000UL) {
+ c = 0x30000UL; /* skip 1st and 2nd sup planes */
+ }
+#elif RANGE < 0x20000UL
+ if (c == 0x20000UL) {
+ c = 0x30000UL; /* skip 2nd sup planes */
+ }
+#endif
+#endif
+ glibc = 0;
+ if (iswalnum(c)) ++glibc; glibc <<= 1;
+ if (iswalpha(c)) ++glibc; glibc <<= 1;
+ if (iswblank(c)) ++glibc; glibc <<= 1;
+ if (iswcntrl(c)) ++glibc; glibc <<= 1;
+ if (iswdigit(c)) ++glibc; glibc <<= 1;
+ if (iswgraph(c)) ++glibc; glibc <<= 1;
+ if (iswlower(c)) ++glibc; glibc <<= 1;
+ if (iswprint(c)) ++glibc; glibc <<= 1;
+ if (iswpunct(c)) ++glibc; glibc <<= 1;
+ if (iswspace(c)) ++glibc; glibc <<= 1;
+ if (iswupper(c)) ++glibc; glibc <<= 1;
+ if (iswxdigit(c)) ++glibc;
+
+ {
+ unsigned int u;
+ int n = 0, sc = 0; /* = 0 for verbose_msg only */
+ int i0 = 0, i1 = 0;
+
+ u = c;
+ if (u <= RANGE) {
+ sc = u & ((1 << cttable.ti_shift) - 1);
+ u >>= cttable.ti_shift;
+ n = u & ((1 << cttable.ii_shift) - 1);
+ u >>= cttable.ii_shift;
+
+ i0 = cttable.ii[u];
+ i0 <<= cttable.ii_shift;
+ i1 = cttable.ti[i0 + n];
+ i1 <<= (cttable.ti_shift - 1);
+ d = cttable.ut[i1 + (sc >> 1)];
+
+ if (sc & 1) {
+ d >>= 4;
+ }
+ d &= 0x0f;
+ } else if (((unsigned)(c - 0xe0020UL) <= 0x5f) || (c == 0xe0001UL)) {
+ d = __CTYPE_punct;
+ } else if ((unsigned)(c - 0xf0000UL) < 0x20000UL) {
+ if ((c & 0xffffU) <= 0xfffdU) {
+ d = __CTYPE_punct;
+ } else {
+ d = __CTYPE_unclassified;
+ }
+ } else {
+ d = __CTYPE_unclassified;
+ }
+
+ mine = 0;
+ if (mywalnum(d,c)) ++mine; mine <<= 1;
+ if (mywalpha(d,c)) ++mine; mine <<= 1;
+ if (mywblank(d,c)) ++mine; mine <<= 1;
+ if (mywcntrl(d,c)) ++mine; mine <<= 1;
+ if (mywdigit(d,c)) ++mine; mine <<= 1;
+ if (mywgraph(d,c)) ++mine; mine <<= 1;
+ if (mywlower(d,c)) ++mine; mine <<= 1;
+ if (mywprint(d,c)) ++mine; mine <<= 1;
+ if (mywpunct(d,c)) ++mine; mine <<= 1;
+ if (mywspace(d,c)) ++mine; mine <<= 1;
+ if (mywupper(d,c)) ++mine; mine <<= 1;
+ if (mywxdigit(d,c)) ++mine;
+
+ if (glibc != mine) {
+ verbose_msg("%#8x : glibc %#4x != %#4x mine %d\n", c, glibc, mine, d);
+ if (c < 0x30000UL) {
+ verbose_msg("sc=%#x u=%#x n=%#x i0=%#x i1=%#x\n", sc, u, n, i0, i1);
+ }
+ }
+
+ upper = lower = u = c;
+ if (u <= RANGE) {
+ sc = u & ((1 << ultable.ti_shift) - 1);
+ u >>= ultable.ti_shift;
+ n = u & ((1 << ultable.ii_shift) - 1);
+ u >>= ultable.ii_shift;
+
+ i0 = ultable.ii[u];
+ i0 <<= ultable.ii_shift;
+ i1 = ultable.ti[i0 + n];
+ i1 <<= (ultable.ti_shift);
+ i1 += sc;
+ i0 = ultable.ut[i1];
+ upper = c + uldiff[i0].u;
+ lower = c + uldiff[i0].l;
+ }
+
+ if (towupper(c) != upper) {
+ verbose_msg("%#8x : towupper glibc %#4x != %#4x mine\n",
+ c, towupper(c), upper);
+ }
+
+ if (towlower(c) != lower) {
+ verbose_msg("%#8x : towlower glibc %#4x != %#4x mine i0 = %d\n",
+ c, towlower(c), lower, i0);
+ }
+
+ if (totitle && ((tt = towctrans(c, totitle)) != upper)) {
+ verbose_msg("%#8x : totitle glibc %#4lx != %#4x mine i0 = %d\n",
+ c, tt, upper, i0);
+ }
+ }
+
+ if ((c & 0xfff) == 0xfff) verbose_msg(".");
+ }
+ verbose_msg("done\n");
+ }
+
+ if (built) {
+ printf("#define __LOCALE_DATA_WC_TABLE_DOMAIN_MAX %#8lx\n\n",
+ (unsigned long) RANGE);
+ output_table("ctype", &cttable);
+ output_table("uplow", &ultable);
+
+#warning fix the upper bound on the upper/lower tables... save 200 bytes or so
+ printf("#define __LOCALE_DATA_WCuplow_diffs %7u\n", ul_count);
+ printf("\n#ifdef WANT_WCuplow_diff_data\n\n");
+ printf("\nstatic const short __LOCALE_DATA_WCuplow_diff_data[%zu] = {",
+ 2 * (size_t) ul_count);
+ for (i = 0; i < ul_count; i++) {
+ if (i % 4 == 0) {
+ printf("\n");
+ }
+ printf(" %6d, %6d,", uldiff[i].u, uldiff[i].l);
+ }
+ printf("\n};\n\n");
+ printf("#endif /* WANT_WCuplow_diff_data */\n\n");
+
+/* output_table("comb", &combtable); */
+/* output_table("width", &widthtable); */
+ }
+
+ return !built;
+}
+
+size_t newopt(unsigned char *ut, size_t usize, int shift, table_data *tbl)
+{
+ static int recurse;
+ unsigned char *ti[RANGE+1]; /* table index */
+ size_t numblocks;
+ size_t blocksize;
+ size_t uniq;
+ size_t i, j;
+ size_t smallest, t;
+ unsigned char *ii_save;
+ int uniqblock[256];
+ unsigned char uit[RANGE+1];
+ int shift2;
+
+ memset(uniqblock, 0x00, sizeof(uniqblock));
+
+ ii_save = NULL;
+ blocksize = 1 << shift;
+ numblocks = usize >> shift;
+
+ /* init table index */
+ for (i=j = 0; i < numblocks; i++) {
+ ti[i] = ut + j;
+ j += blocksize;
+ }
+
+ /* sort */
+ nu_val = blocksize;
+ qsort(ti, numblocks, sizeof(unsigned char *), nu_memcmp);
+
+ uniq = 1;
+ uit[(ti[0]-ut)/blocksize] = 0;
+ for (i=1; i < numblocks; i++) {
+ if (memcmp(ti[i-1], ti[i], blocksize) < 0) {
+ if (++uniq > 255) {
+ break;
+ }
+ uniqblock[uniq - 1] = i;
+ }
+#if 1
+ else if (memcmp(ti[i-1], ti[i], blocksize) > 0) {
+ verbose_msg("bad sort %li!\n", (long) i);
+ abort();
+ }
+#endif
+ uit[(ti[i]-ut)/blocksize] = uniq - 1;
+ }
+
+ smallest = SIZE_MAX;
+ shift2 = -1;
+
+ if (uniq > 255)
+ return SIZE_MAX;
+
+ smallest = numblocks + uniq * blocksize;
+ if (!recurse) {
+ ++recurse;
+ for (j=1; j < 14; j++) {
+ if ((numblocks >> j) < 2) break;
+ if (tbl) {
+ ii_save = tbl->ii;
+ tbl->ii = NULL;
+ }
+ if ((t = newopt(uit, numblocks, j, tbl)) < SIZE_MAX) {
+ t += uniq * blocksize;
+ }
+ if (tbl) {
+ tbl->ii = ii_save;
+ }
+ if (smallest >= t) {
+ shift2 = j;
+ smallest = t;
+ if (!tbl->ii) {
+ verbose_msg("ishift %u tshift %u size %lu\n",
+ shift2, shift, (unsigned long) t);
+ }
+/* } else { */
+/* break; */
+ }
+ }
+ --recurse;
+ }
+
+ if (tbl->ii) {
+ if (recurse) {
+ tbl->ii_shift = shift;
+ tbl->ii_len = numblocks;
+ memcpy(tbl->ii, uit, numblocks);
+ tbl->ti = tbl->ii + tbl->ii_len;
+ tbl->ti_len = uniq * blocksize;
+ for (i = 0; i < uniq; i++) {
+ memcpy(tbl->ti + i * blocksize, ti[uniqblock[i]], blocksize);
+ }
+ } else {
+ ++recurse;
+ verbose_msg("setting ishift %u tshift %u\n",
+ shift2, shift);
+ newopt(uit, numblocks, shift2, tbl);
+ --recurse;
+ tbl->ti_shift = shift;
+ tbl->ut_len = uniq * blocksize;
+ tbl->ut = tbl->ti + tbl->ti_len;
+ for (i = 0; i < uniq; i++) {
+ memcpy(tbl->ut + i * blocksize, ti[uniqblock[i]], blocksize);
+ }
+ }
+ }
+ return smallest;
+}
+/* vi: set sw=4 ts=4: */
diff --git a/ap/build/uClibc/extra/locale/lmmtolso.c b/ap/build/uClibc/extra/locale/lmmtolso.c
new file mode 100644
index 0000000..2437a8f
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/lmmtolso.c
@@ -0,0 +1,72 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <fcntl.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+int main(void)
+{
+ FILE *lmm; /* mmap-able file */
+ FILE *lso; /* static object */
+ struct stat fd_stat;
+ int c;
+ size_t i;
+
+ if (!(lmm = fopen("locale.mmap", "r"))) {
+ printf("cannot open locale.mmap!\n");
+ return EXIT_FAILURE;
+ }
+
+ if (fstat(fileno(lmm), &fd_stat)) {
+ printf("cannot stat locale.mmap!\n");
+ fclose(lmm);
+ return EXIT_FAILURE;
+ }
+
+ if (!(lso = fopen("locale_data.c", "w"))) {
+ printf("cannot open locale_data.c!\n");
+ fclose(lmm);
+ return EXIT_FAILURE;
+ }
+
+ fprintf(lso,
+ "#include <stddef.h>\n"
+ "#include <stdint.h>\n"
+ "#include \"lt_defines.h\"\n"
+ "#include \"locale_mmap.h\"\n\n"
+ "typedef union {\n"
+ "\tunsigned char buf[%zu];\n"
+ "\t__locale_mmap_t lmm;\n"
+ "} locale_union_t;\n\n"
+ "static const locale_union_t locale_union = { {",
+ (size_t) fd_stat.st_size
+ );
+
+ i = 0;
+ while ((c = getc(lmm)) != EOF) {
+ if (!(i & 0x7)) {
+ fprintf(lso, "\n\t");
+ }
+ fprintf(lso, "%#04x, ", c);
+ ++i;
+ }
+ fprintf(lso,
+ "\n} };\n\n"
+ "const __locale_mmap_t *__locale_mmap = &locale_union.lmm;\n\n"
+ );
+
+ if (ferror(lmm)) {
+ printf("error reading!\n");
+ return EXIT_FAILURE;
+ }
+
+ if (ferror(lso) || fclose(lso)) {
+ printf("error writing!\n");
+ return EXIT_FAILURE;
+ }
+
+ fclose(lmm);
+
+ return EXIT_SUCCESS;
+}
diff --git a/ap/build/uClibc/extra/locale/locale_mmap.h b/ap/build/uClibc/extra/locale/locale_mmap.h
new file mode 100644
index 0000000..5b0df90
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/locale_mmap.h
@@ -0,0 +1,91 @@
+/* #define __LOCALE_DATA_MAGIC_SIZE 64 */
+#ifndef __WCHAR_ENABLED
+#if 0
+#warning WHOA!!! __WCHAR_ENABLED is not defined! defining it now...
+#endif
+#define __WCHAR_ENABLED
+#endif
+
+/* TODO - fix */
+#ifdef __WCHAR_ENABLED
+#define __LOCALE_DATA_WCctype_TBL_LEN (__LOCALE_DATA_WCctype_II_LEN + __LOCALE_DATA_WCctype_TI_LEN + __LOCALE_DATA_WCctype_UT_LEN)
+#define __LOCALE_DATA_WCuplow_TBL_LEN (__LOCALE_DATA_WCuplow_II_LEN + __LOCALE_DATA_WCuplow_TI_LEN + __LOCALE_DATA_WCuplow_UT_LEN)
+#define __LOCALE_DATA_WCuplow_diff_TBL_LEN (2 * __LOCALE_DATA_WCuplow_diffs)
+/* #define WCcomb_TBL_LEN (WCcomb_II_LEN + WCcomb_TI_LEN + WCcomb_UT_LEN) */
+#endif
+
+#undef __PASTE2
+#define __PASTE2(A,B) A ## B
+#undef __PASTE3
+#define __PASTE3(A,B,C) A ## B ## C
+
+#define __LOCALE_DATA_COMMON_MMAP(X) \
+ unsigned char __PASTE3(lc_,X,_data)[__PASTE3(__lc_,X,_data_LEN)];
+
+#define __LOCALE_DATA_COMMON_MMIDX(X) \
+ unsigned char __PASTE3(lc_,X,_rows)[__PASTE3(__lc_,X,_rows_LEN)]; \
+ uint16_t __PASTE3(lc_,X,_item_offsets)[__PASTE3(__lc_,X,_item_offsets_LEN)]; \
+ uint16_t __PASTE3(lc_,X,_item_idx)[__PASTE3(__lc_,X,_item_idx_LEN)]; \
+
+
+typedef struct {
+#ifdef __LOCALE_DATA_MAGIC_SIZE
+ unsigned char magic[__LOCALE_DATA_MAGIC_SIZE];
+#endif
+
+#ifdef __CTYPE_HAS_8_BIT_LOCALES
+ const unsigned char tbl8ctype[__LOCALE_DATA_Cctype_TBL_LEN];
+ const unsigned char tbl8uplow[__LOCALE_DATA_Cuplow_TBL_LEN];
+#ifdef __WCHAR_ENABLED
+ const uint16_t tbl8c2wc[__LOCALE_DATA_Cc2wc_TBL_LEN]; /* char > 0x7f to wide char */
+ const unsigned char tbl8wc2c[__LOCALE_DATA_Cwc2c_TBL_LEN];
+ /* translit */
+#endif /* __WCHAR_ENABLED */
+#endif /* __CTYPE_HAS_8_BIT_LOCALES */
+#ifdef __WCHAR_ENABLED
+ const unsigned char tblwctype[__LOCALE_DATA_WCctype_TBL_LEN];
+ const unsigned char tblwuplow[__LOCALE_DATA_WCuplow_TBL_LEN];
+ const int16_t tblwuplow_diff[__LOCALE_DATA_WCuplow_diff_TBL_LEN];
+/* const unsigned char tblwcomb[WCcomb_TBL_LEN]; */
+ /* width?? */
+#endif
+
+ __LOCALE_DATA_COMMON_MMAP(ctype)
+ __LOCALE_DATA_COMMON_MMAP(numeric)
+ __LOCALE_DATA_COMMON_MMAP(monetary)
+ __LOCALE_DATA_COMMON_MMAP(time)
+ /* collate is different */
+ __LOCALE_DATA_COMMON_MMAP(messages)
+
+
+#ifdef __CTYPE_HAS_8_BIT_LOCALES
+ const __codeset_8_bit_t codeset_8_bit[__LOCALE_DATA_NUM_CODESETS];
+#endif
+
+ __LOCALE_DATA_COMMON_MMIDX(ctype)
+ __LOCALE_DATA_COMMON_MMIDX(numeric)
+ __LOCALE_DATA_COMMON_MMIDX(monetary)
+ __LOCALE_DATA_COMMON_MMIDX(time)
+ /* collate is different */
+ __LOCALE_DATA_COMMON_MMIDX(messages)
+
+ const uint16_t collate_data[__lc_collate_data_LEN];
+
+ unsigned char lc_common_item_offsets_LEN[__LOCALE_DATA_CATEGORIES];
+ size_t lc_common_tbl_offsets[__LOCALE_DATA_CATEGORIES * 4];
+ /* offsets from start of locale_mmap_t */
+ /* rows, item_offsets, item_idx, data */
+
+#ifdef __LOCALE_DATA_NUM_LOCALES
+ unsigned char locales[__LOCALE_DATA_NUM_LOCALES * __LOCALE_DATA_WIDTH_LOCALES];
+ unsigned char locale_names5[5*__LOCALE_DATA_NUM_LOCALE_NAMES];
+ unsigned char locale_at_modifiers[__LOCALE_DATA_AT_MODIFIERS_LENGTH];
+#endif
+
+ unsigned char lc_names[__lc_names_LEN];
+#ifdef __CTYPE_HAS_8_BIT_LOCALES
+ unsigned char codeset_list[sizeof(__LOCALE_DATA_CODESET_LIST)]; /* TODO - fix */
+#endif
+} __locale_mmap_t;
+
+extern const __locale_mmap_t *__locale_mmap;
diff --git a/ap/build/uClibc/extra/locale/programs/categories.def b/ap/build/uClibc/extra/locale/programs/categories.def
new file mode 100644
index 0000000..c248ba7
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/programs/categories.def
@@ -0,0 +1,357 @@
+/*
+ *
+ * Copyright (c) 2008 STMicroelectronics Ltd
+ * Filippo Arcidiacono (filippo.arcidiacono@st.com)
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ *
+ * Taken from glibc 2.6
+ *
+ */
+
+
+/* Definition of all available locale categories and their items. -*- C -*-
+
+ These definitions are used by the 'locale' the program.
+
+ The general format of the descriptions is like this:
+
+ DEFINE_CATEGORY (ID, name, ( items ), setlocale-postload)
+
+ where items itself is an array of entries in the form
+
+ { ID, name, standard, value-type, min, max }
+
+ The usage of the load, check, output functions depends on the individual
+ program code which loads this file.
+
+ The various value types for the items are `string', `stringarray', `byte'
+ `bytearray', and `word'. These cover all possible values in the current
+ locale definitions. `min' and `max' can be individually used again. */
+
+#ifndef NO_POSTLOAD
+#define NO_POSTLOAD NULL
+#endif
+
+#if 0
+DEFINE_CATEGORY
+(
+ LC_COLLATE, "LC_COLLATE",
+ (
+ DEFINE_ELEMENT (_NL_COLLATE_NRULES, "collate-nrules", std, word)
+ DEFINE_ELEMENT (_NL_COLLATE_RULESETS, "collate-rulesets", std, string)
+ DEFINE_ELEMENT (_NL_COLLATE_TABLEMB, "collate-tablemb", std, wstring)
+ DEFINE_ELEMENT (_NL_COLLATE_WEIGHTMB, "collate-weightmb", std, wstring)
+ DEFINE_ELEMENT (_NL_COLLATE_EXTRAMB, "collate-extramb", std, wstring)
+ DEFINE_ELEMENT (_NL_COLLATE_INDIRECTMB, "collate-indirectmb", std, wstring)
+ DEFINE_ELEMENT (_NL_COLLATE_TABLEWC, "collate-tablewc", std, wstring)
+ DEFINE_ELEMENT (_NL_COLLATE_WEIGHTWC, "collate-weightwc", std, wstring)
+ DEFINE_ELEMENT (_NL_COLLATE_EXTRAWC, "collate-extrawc", std, wstring)
+ DEFINE_ELEMENT (_NL_COLLATE_INDIRECTWC, "collate-indirectwc", std, wstring)
+ DEFINE_ELEMENT (_NL_COLLATE_SYMB_HASH_SIZEMB, "collate-symb-hash-sizemb", std, word)
+ DEFINE_ELEMENT (_NL_COLLATE_SYMB_TABLEMB, "collate-symb-tablemb", std, wstring)
+ DEFINE_ELEMENT (_NL_COLLATE_SYMB_EXTRAMB, "collate-symb-extramb", std, wstring)
+ DEFINE_ELEMENT (_NL_COLLATE_COLLSEQMB, "collate-collseqmb", std, wstring)
+ DEFINE_ELEMENT (_NL_COLLATE_COLLSEQWC, "collate-collseqwc", std, wstring)
+ DEFINE_ELEMENT (_NL_COLLATE_CODESET, "collate-codeset", std, string)
+ ), NO_POSTLOAD)
+#endif
+
+
+/* The actual definition of ctype is meaningless here. It is hard coded in
+ the code because it has to be handled very specially. Only the names of
+ the functions and the value types are important. */
+DEFINE_CATEGORY
+(
+ LC_CTYPE, "LC_CTYPE",
+ (
+#if 0
+ DEFINE_ELEMENT (_NL_CTYPE_CLASS, "ctype-class", std, wstring)
+ DEFINE_ELEMENT (_NL_CTYPE_TOUPPER, "ctype-toupper", std, wstring)
+ DEFINE_ELEMENT (_NL_CTYPE_TOLOWER, "ctype-tolower", std, wstring)
+ DEFINE_ELEMENT (_NL_CTYPE_CLASS32, "ctype-class32", std, wstring)
+ DEFINE_ELEMENT (_NL_CTYPE_CLASS_NAMES, "ctype-class-names", std, stringlist, 10, 32)
+ DEFINE_ELEMENT (_NL_CTYPE_MAP_NAMES, "ctype-map-names", std, stringlist, 2, 32)
+ DEFINE_ELEMENT (_NL_CTYPE_WIDTH, "ctype-width", std, bytearray)
+ DEFINE_ELEMENT (_NL_CTYPE_MB_CUR_MAX, "ctype-mb-cur-max", std, word)
+ DEFINE_ELEMENT (_NL_CTYPE_CODESET_NAME, "charmap", std, string)
+ DEFINE_ELEMENT (_NL_CTYPE_TOUPPER32, "ctype-toupper32", std, wstring)
+ DEFINE_ELEMENT (_NL_CTYPE_TOLOWER32, "ctype-tolower32", std, wstring)
+ DEFINE_ELEMENT (_NL_CTYPE_CLASS_OFFSET, "ctype-class-offset", std, word)
+ DEFINE_ELEMENT (_NL_CTYPE_MAP_OFFSET, "ctype-map-offset", std, word)
+ DEFINE_ELEMENT (_NL_CTYPE_INDIGITS_MB_LEN, "ctype-indigits_mb-len", std, word)
+ DEFINE_ELEMENT (_NL_CTYPE_INDIGITS0_MB, "ctype-indigits0_mb", std, string)
+ DEFINE_ELEMENT (_NL_CTYPE_INDIGITS1_MB, "ctype-indigits1_mb", std, string)
+ DEFINE_ELEMENT (_NL_CTYPE_INDIGITS2_MB, "ctype-indigits2_mb", std, string)
+ DEFINE_ELEMENT (_NL_CTYPE_INDIGITS3_MB, "ctype-indigits3_mb", std, string)
+ DEFINE_ELEMENT (_NL_CTYPE_INDIGITS4_MB, "ctype-indigits4_mb", std, string)
+ DEFINE_ELEMENT (_NL_CTYPE_INDIGITS5_MB, "ctype-indigits5_mb", std, string)
+ DEFINE_ELEMENT (_NL_CTYPE_INDIGITS6_MB, "ctype-indigits6_mb", std, string)
+ DEFINE_ELEMENT (_NL_CTYPE_INDIGITS7_MB, "ctype-indigits7_mb", std, string)
+ DEFINE_ELEMENT (_NL_CTYPE_INDIGITS8_MB, "ctype-indigits8_mb", std, string)
+ DEFINE_ELEMENT (_NL_CTYPE_INDIGITS9_MB, "ctype-indigits9_mb", std, string)
+ DEFINE_ELEMENT (_NL_CTYPE_INDIGITS_WC_LEN, "ctype-indigits_wc-len", std, word)
+ DEFINE_ELEMENT (_NL_CTYPE_INDIGITS0_WC, "ctype-indigits0_wc", std, wstring)
+ DEFINE_ELEMENT (_NL_CTYPE_INDIGITS1_WC, "ctype-indigits1_wc", std, wstring)
+ DEFINE_ELEMENT (_NL_CTYPE_INDIGITS2_WC, "ctype-indigits2_wc", std, wstring)
+ DEFINE_ELEMENT (_NL_CTYPE_INDIGITS3_WC, "ctype-indigits3_wc", std, wstring)
+ DEFINE_ELEMENT (_NL_CTYPE_INDIGITS4_WC, "ctype-indigits4_wc", std, wstring)
+ DEFINE_ELEMENT (_NL_CTYPE_INDIGITS5_WC, "ctype-indigits5_wc", std, wstring)
+ DEFINE_ELEMENT (_NL_CTYPE_INDIGITS6_WC, "ctype-indigits6_wc", std, wstring)
+ DEFINE_ELEMENT (_NL_CTYPE_INDIGITS7_WC, "ctype-indigits7_wc", std, wstring)
+ DEFINE_ELEMENT (_NL_CTYPE_INDIGITS8_WC, "ctype-indigits8_wc", std, wstring)
+ DEFINE_ELEMENT (_NL_CTYPE_INDIGITS9_WC, "ctype-indigits9_wc", std, wstring)
+#endif
+ DEFINE_ELEMENT (_NL_CTYPE_OUTDIGIT0_MB, "ctype-outdigit0_mb", std, string)
+ DEFINE_ELEMENT (_NL_CTYPE_OUTDIGIT1_MB, "ctype-outdigit1_mb", std, string)
+ DEFINE_ELEMENT (_NL_CTYPE_OUTDIGIT2_MB, "ctype-outdigit2_mb", std, string)
+ DEFINE_ELEMENT (_NL_CTYPE_OUTDIGIT3_MB, "ctype-outdigit3_mb", std, string)
+ DEFINE_ELEMENT (_NL_CTYPE_OUTDIGIT4_MB, "ctype-outdigit4_mb", std, string)
+ DEFINE_ELEMENT (_NL_CTYPE_OUTDIGIT5_MB, "ctype-outdigit5_mb", std, string)
+ DEFINE_ELEMENT (_NL_CTYPE_OUTDIGIT6_MB, "ctype-outdigit6_mb", std, string)
+ DEFINE_ELEMENT (_NL_CTYPE_OUTDIGIT7_MB, "ctype-outdigit7_mb", std, string)
+ DEFINE_ELEMENT (_NL_CTYPE_OUTDIGIT8_MB, "ctype-outdigit8_mb", std, string)
+ DEFINE_ELEMENT (_NL_CTYPE_OUTDIGIT9_MB, "ctype-outdigit9_mb", std, string)
+#if 0
+ DEFINE_ELEMENT (_NL_CTYPE_OUTDIGIT0_WC, "ctype-outdigit0_wc", std, word)
+ DEFINE_ELEMENT (_NL_CTYPE_OUTDIGIT1_WC, "ctype-outdigit1_wc", std, word)
+ DEFINE_ELEMENT (_NL_CTYPE_OUTDIGIT2_WC, "ctype-outdigit2_wc", std, word)
+ DEFINE_ELEMENT (_NL_CTYPE_OUTDIGIT3_WC, "ctype-outdigit3_wc", std, word)
+ DEFINE_ELEMENT (_NL_CTYPE_OUTDIGIT4_WC, "ctype-outdigit4_wc", std, word)
+ DEFINE_ELEMENT (_NL_CTYPE_OUTDIGIT5_WC, "ctype-outdigit5_wc", std, word)
+ DEFINE_ELEMENT (_NL_CTYPE_OUTDIGIT6_WC, "ctype-outdigit6_wc", std, word)
+ DEFINE_ELEMENT (_NL_CTYPE_OUTDIGIT7_WC, "ctype-outdigit7_wc", std, word)
+ DEFINE_ELEMENT (_NL_CTYPE_OUTDIGIT8_WC, "ctype-outdigit8_wc", std, word)
+ DEFINE_ELEMENT (_NL_CTYPE_OUTDIGIT9_WC, "ctype-outdigit9_wc", std, word)
+ DEFINE_ELEMENT (_NL_CTYPE_TRANSLIT_TAB_SIZE, "ctype-translit-tab-size", std, word)
+ DEFINE_ELEMENT (_NL_CTYPE_TRANSLIT_FROM_IDX, "ctype-translit-from-idx", std, wstring)
+ DEFINE_ELEMENT (_NL_CTYPE_TRANSLIT_FROM_TBL, "ctype-translit-from-tbl", std, wstring)
+ DEFINE_ELEMENT (_NL_CTYPE_TRANSLIT_TO_IDX, "ctype-translit-to-idx", std, wstring)
+ DEFINE_ELEMENT (_NL_CTYPE_TRANSLIT_TO_TBL, "ctype-translit-to-tbl", std, wstring)
+ DEFINE_ELEMENT (_NL_CTYPE_TRANSLIT_DEFAULT_MISSING_LEN, "ctype-translit-default-missing-len", std, word)
+ DEFINE_ELEMENT (_NL_CTYPE_TRANSLIT_DEFAULT_MISSING, "ctype-translit-default-missing", std, wstring)
+ DEFINE_ELEMENT (_NL_CTYPE_TRANSLIT_IGNORE_LEN, "ctype-translit-ignore-len", std, word)
+ DEFINE_ELEMENT (_NL_CTYPE_TRANSLIT_IGNORE, "ctype-translit-ignore", std, string)
+ DEFINE_ELEMENT (_NL_CTYPE_MAP_TO_NONASCII, "map-to-nonascii", std, word)
+#endif
+ ), _nl_postload_ctype)
+
+
+DEFINE_CATEGORY
+(
+ LC_MONETARY, "LC_MONETARY",
+ (
+ DEFINE_ELEMENT (INT_CURR_SYMBOL, "int_curr_symbol", std, string)
+ DEFINE_ELEMENT (CURRENCY_SYMBOL, "currency_symbol", std, string)
+ DEFINE_ELEMENT (MON_DECIMAL_POINT, "mon_decimal_point", std, string)
+ DEFINE_ELEMENT (MON_THOUSANDS_SEP, "mon_thousands_sep", std, string)
+ DEFINE_ELEMENT (MON_GROUPING, "mon_grouping", std, bytearray)
+ DEFINE_ELEMENT (POSITIVE_SIGN, "positive_sign", std, string)
+ DEFINE_ELEMENT (NEGATIVE_SIGN, "negative_sign", std, string)
+ DEFINE_ELEMENT (INT_FRAC_DIGITS, "int_frac_digits", std, byte)
+ DEFINE_ELEMENT (FRAC_DIGITS, "frac_digits", std, byte)
+ DEFINE_ELEMENT (P_CS_PRECEDES, "p_cs_precedes", std, byte, 0, 1)
+ DEFINE_ELEMENT (P_SEP_BY_SPACE, "p_sep_by_space", std, byte, 0, 2)
+ DEFINE_ELEMENT (N_CS_PRECEDES, "n_cs_precedes", std, byte, 0, 1)
+ DEFINE_ELEMENT (N_SEP_BY_SPACE, "n_sep_by_space", std, byte, 0, 2)
+ DEFINE_ELEMENT (P_SIGN_POSN, "p_sign_posn", std, byte, 0, 4)
+ DEFINE_ELEMENT (N_SIGN_POSN, "n_sign_posn", std, byte, 0, 4)
+ DEFINE_ELEMENT (__INT_P_CS_PRECEDES, "int_p_cs_precedes", std, byte, 0, 1)
+ DEFINE_ELEMENT (__INT_P_SEP_BY_SPACE, "int_p_sep_by_space", std, byte, 0, 2)
+ DEFINE_ELEMENT (__INT_N_CS_PRECEDES, "int_n_cs_precedes", std, byte, 0, 1)
+ DEFINE_ELEMENT (__INT_N_SEP_BY_SPACE, "int_n_sep_by_space", std, byte, 0, 2)
+ DEFINE_ELEMENT (__INT_P_SIGN_POSN, "int_p_sign_posn", std, byte, 0, 4)
+ DEFINE_ELEMENT (__INT_N_SIGN_POSN, "int_n_sign_posn", std, byte, 0, 4)
+#if 0
+ DEFINE_ELEMENT (_NL_MONETARY_DUO_INT_CURR_SYMBOL, "duo_int_curr_symbol", std, string)
+ DEFINE_ELEMENT (_NL_MONETARY_DUO_CURRENCY_SYMBOL, "duo_currency_symbol", std, string)
+ DEFINE_ELEMENT (_NL_MONETARY_DUO_INT_FRAC_DIGITS, "duo_int_frac_digits", std, byte)
+ DEFINE_ELEMENT (_NL_MONETARY_DUO_FRAC_DIGITS, "duo_frac_digits", std, byte)
+ DEFINE_ELEMENT (_NL_MONETARY_DUO_P_CS_PRECEDES, "duo_p_cs_precedes", std, byte, 0, 1)
+ DEFINE_ELEMENT (_NL_MONETARY_DUO_P_SEP_BY_SPACE, "duo_p_sep_by_space", std, byte, 0, 2)
+ DEFINE_ELEMENT (_NL_MONETARY_DUO_N_CS_PRECEDES, "duo_n_cs_precedes", std, byte, 0, 1)
+ DEFINE_ELEMENT (_NL_MONETARY_DUO_N_SEP_BY_SPACE, "duo_n_sep_by_space", std, byte, 0, 2)
+ DEFINE_ELEMENT (_NL_MONETARY_DUO_INT_P_CS_PRECEDES, "duo_int_p_cs_precedes", std, byte, 0, 1)
+ DEFINE_ELEMENT (_NL_MONETARY_DUO_INT_P_SEP_BY_SPACE, "duo_int_p_sep_by_space", std, byte, 0, 2)
+ DEFINE_ELEMENT (_NL_MONETARY_DUO_INT_N_CS_PRECEDES, "duo_int_n_cs_precedes", std, byte, 0, 1)
+ DEFINE_ELEMENT (_NL_MONETARY_DUO_INT_N_SEP_BY_SPACE, "duo_int_n_sep_by_space", std, byte, 0, 2)
+ DEFINE_ELEMENT (_NL_MONETARY_DUO_P_SIGN_POSN, "duo_p_sign_posn", std, byte, 0, 4)
+ DEFINE_ELEMENT (_NL_MONETARY_DUO_N_SIGN_POSN, "duo_n_sign_posn", std, byte, 0, 4)
+ DEFINE_ELEMENT (_NL_MONETARY_DUO_INT_P_SIGN_POSN, "duo_int_p_sign_posn", std, byte, 0, 4)
+ DEFINE_ELEMENT (_NL_MONETARY_DUO_INT_N_SIGN_POSN, "duo_int_n_sign_posn", std, byte, 0, 4)
+ DEFINE_ELEMENT (_NL_MONETARY_UNO_VALID_FROM, "uno_valid_from", std, word)
+ DEFINE_ELEMENT (_NL_MONETARY_UNO_VALID_TO, "uno_valid_to", std, word)
+ DEFINE_ELEMENT (_NL_MONETARY_DUO_VALID_FROM, "duo_valid_from", std, word)
+ DEFINE_ELEMENT (_NL_MONETARY_DUO_VALID_TO, "duo_valid_to", std, word)
+ DEFINE_ELEMENT (_NL_MONETARY_CONVERSION_RATE, "conversion_rate", std, wordarray, 2, 2)
+ DEFINE_ELEMENT (_NL_MONETARY_DECIMAL_POINT_WC, "monetary-decimal-point-wc", std, word)
+ DEFINE_ELEMENT (_NL_MONETARY_THOUSANDS_SEP_WC, "monetary-thousands-sep-wc", std, word)
+ DEFINE_ELEMENT (_NL_MONETARY_CODESET, "monetary-codeset", std, string)
+#else
+ DEFINE_ELEMENT (_NL_MONETARY_CRNCYSTR, "monetary-crncystr", std, string)
+#endif
+ ), NO_POSTLOAD)
+
+
+DEFINE_CATEGORY
+(
+ LC_NUMERIC, "LC_NUMERIC",
+ (
+ DEFINE_ELEMENT (DECIMAL_POINT, "decimal_point", std, string)
+ DEFINE_ELEMENT (THOUSANDS_SEP, "thousands_sep", std, string)
+ DEFINE_ELEMENT (GROUPING, "grouping", std, bytearray)
+#if 0
+ DEFINE_ELEMENT (_NL_NUMERIC_DECIMAL_POINT_WC, "numeric-decimal-point-wc", std, word)
+ DEFINE_ELEMENT (_NL_NUMERIC_THOUSANDS_SEP_WC, "numeric-thousands-sep-wc", std, word)
+ DEFINE_ELEMENT (_NL_NUMERIC_CODESET, "numeric-codeset", std, string)
+#endif
+
+ ), NO_POSTLOAD)
+
+
+DEFINE_CATEGORY
+(
+ LC_TIME, "LC_TIME",
+ (
+ DEFINE_ELEMENT (ABDAY_1, "abday", std, stringarray, 7, 7)
+ DEFINE_ELEMENT (DAY_1, "day", std, stringarray, 7, 7)
+ DEFINE_ELEMENT (ABMON_1, "abmon", std, stringarray, 12, 12)
+ DEFINE_ELEMENT (MON_1, "mon", std, stringarray, 12, 12)
+ DEFINE_ELEMENT (AM_STR, "am_pm", std, stringarray, 2, 2)
+ DEFINE_ELEMENT (D_T_FMT, "d_t_fmt", std, string)
+ DEFINE_ELEMENT (D_FMT, "d_fmt", std, string)
+ DEFINE_ELEMENT (T_FMT, "t_fmt", std, string)
+ DEFINE_ELEMENT (T_FMT_AMPM, "t_fmt_ampm", std, string)
+ DEFINE_ELEMENT (ERA, "era", opt, stringlist, 0, 100)
+ DEFINE_ELEMENT (ERA_YEAR, "era_year", opt, string)
+ DEFINE_ELEMENT (ERA_D_FMT, "era_d_fmt", opt, string)
+ DEFINE_ELEMENT (ALT_DIGITS, "alt_digits", opt, stringlist, 100, 100)
+ DEFINE_ELEMENT (ERA_D_T_FMT, "era_d_t_fmt", opt, string)
+ DEFINE_ELEMENT (ERA_T_FMT, "era_t_fmt", opt, string)
+#if 0
+ DEFINE_ELEMENT (_NL_TIME_ERA_NUM_ENTRIES, "time-era-num-entries", opt, word)
+ DEFINE_ELEMENT (_NL_TIME_ERA_ENTRIES, "time-era-entries", opt, string)
+ DEFINE_ELEMENT (_NL_WABDAY_1, "wide-abday", std, wstringarray, 7, 7)
+ DEFINE_ELEMENT (_NL_WDAY_1, "wide-day", std, wstringarray, 7, 7)
+ DEFINE_ELEMENT (_NL_WABMON_1, "wide-abmon", std, wstringarray, 12, 12)
+ DEFINE_ELEMENT (_NL_WMON_1, "wide-mon", std, wstringarray, 12, 12)
+ DEFINE_ELEMENT (_NL_WAM_STR, "wide-am_pm", std, wstringarray, 2, 2)
+ DEFINE_ELEMENT (_NL_WD_T_FMT, "wide-d_t_fmt", std, wstring)
+ DEFINE_ELEMENT (_NL_WD_FMT, "wide-d_fmt", std, wstring)
+ DEFINE_ELEMENT (_NL_WT_FMT, "wide-t_fmt", std, wstring)
+ DEFINE_ELEMENT (_NL_WT_FMT_AMPM, "wide-t_fmt_ampm", std, wstring)
+ DEFINE_ELEMENT (_NL_WERA_YEAR, "wide-era_year", opt, wstring)
+ DEFINE_ELEMENT (_NL_WERA_D_FMT, "wide-era_d_fmt", opt, wstring)
+ DEFINE_ELEMENT (_NL_WALT_DIGITS, "wide-alt_digits", opt, wstringlist, 1000, 100)
+ DEFINE_ELEMENT (_NL_WERA_D_T_FMT, "wide-era_d_t_fmt", opt, wstring)
+ DEFINE_ELEMENT (_NL_WERA_T_FMT, "wide-era_t_fmt", opt, wstring)
+ DEFINE_ELEMENT (_NL_TIME_WEEK_NDAYS, "week-ndays", std, byte)
+ DEFINE_ELEMENT (_NL_TIME_WEEK_1STDAY, "week-1stday", std, word)
+ DEFINE_ELEMENT (_NL_TIME_WEEK_1STWEEK, "week-1stweek", std, byte)
+ DEFINE_ELEMENT (_NL_TIME_FIRST_WEEKDAY, "first_weekday", std, byte)
+ DEFINE_ELEMENT (_NL_TIME_FIRST_WORKDAY, "first_workday", std, byte)
+ DEFINE_ELEMENT (_NL_TIME_CAL_DIRECTION, "cal_direction", std, byte)
+ DEFINE_ELEMENT (_NL_TIME_TIMEZONE, "timezone", std, string)
+ DEFINE_ELEMENT (_DATE_FMT, "date_fmt", opt, string)
+ DEFINE_ELEMENT (_NL_W_DATE_FMT, "wide-date_fmt", opt, wstring)
+ DEFINE_ELEMENT (_NL_TIME_CODESET, "time-codeset", std, string)
+#endif
+ ), NO_POSTLOAD)
+
+
+DEFINE_CATEGORY
+(
+ LC_MESSAGES, "LC_MESSAGES",
+ (
+ DEFINE_ELEMENT (YESEXPR, "yesexpr", std, string)
+ DEFINE_ELEMENT (NOEXPR, "noexpr", std, string)
+ DEFINE_ELEMENT (YESSTR, "yesstr", opt, string)
+ DEFINE_ELEMENT (NOSTR, "nostr", opt, string)
+#if 0
+ DEFINE_ELEMENT (_NL_MESSAGES_CODESET, "messages-codeset", std, string)
+#endif
+ ), NO_POSTLOAD)
+
+#if 0
+DEFINE_CATEGORY
+(
+ LC_PAPER, "LC_PAPER",
+ (
+ DEFINE_ELEMENT (_NL_PAPER_HEIGHT, "height", std, word)
+ DEFINE_ELEMENT (_NL_PAPER_WIDTH, "width", std, word)
+ DEFINE_ELEMENT (_NL_PAPER_CODESET, "paper-codeset", std, string)
+ ), NO_POSTLOAD)
+
+DEFINE_CATEGORY
+(
+ LC_NAME, "LC_NAME",
+ (
+ DEFINE_ELEMENT (_NL_NAME_NAME_FMT, "name_fmt", std, string)
+ DEFINE_ELEMENT (_NL_NAME_NAME_GEN, "name_gen", std, string)
+ DEFINE_ELEMENT (_NL_NAME_NAME_MR, "name_mr", std, string)
+ DEFINE_ELEMENT (_NL_NAME_NAME_MRS, "name_mrs", std, string)
+ DEFINE_ELEMENT (_NL_NAME_NAME_MISS, "name_miss", std, string)
+ DEFINE_ELEMENT (_NL_NAME_NAME_MS, "name_ms", std, string)
+ DEFINE_ELEMENT (_NL_NAME_CODESET, "name-codeset", std, string)
+ ), NO_POSTLOAD)
+
+DEFINE_CATEGORY
+(
+ LC_ADDRESS, "LC_ADDRESS",
+ (
+ DEFINE_ELEMENT (_NL_ADDRESS_POSTAL_FMT, "postal_fmt", std, string)
+ DEFINE_ELEMENT (_NL_ADDRESS_COUNTRY_NAME, "country_name", std, string)
+ DEFINE_ELEMENT (_NL_ADDRESS_COUNTRY_POST, "country_post", std, string)
+ DEFINE_ELEMENT (_NL_ADDRESS_COUNTRY_AB2, "country_ab2", std, string)
+ DEFINE_ELEMENT (_NL_ADDRESS_COUNTRY_AB3, "country_ab3", std, string)
+ DEFINE_ELEMENT (_NL_ADDRESS_COUNTRY_CAR, "country_car", std, string)
+ DEFINE_ELEMENT (_NL_ADDRESS_COUNTRY_NUM, "country_num", std, word)
+ DEFINE_ELEMENT (_NL_ADDRESS_COUNTRY_ISBN, "country_isbn", std, string)
+ DEFINE_ELEMENT (_NL_ADDRESS_LANG_NAME, "lang_name", std, string)
+ DEFINE_ELEMENT (_NL_ADDRESS_LANG_AB, "lang_ab", std, string)
+ DEFINE_ELEMENT (_NL_ADDRESS_LANG_TERM, "lang_term", std, string)
+ DEFINE_ELEMENT (_NL_ADDRESS_LANG_LIB, "lang_lib", std, string)
+ DEFINE_ELEMENT (_NL_ADDRESS_CODESET, "address-codeset", std, string)
+ ), NO_POSTLOAD)
+
+DEFINE_CATEGORY
+(
+ LC_TELEPHONE, "LC_TELEPHONE",
+ (
+ DEFINE_ELEMENT (_NL_TELEPHONE_TEL_INT_FMT, "tel_int_fmt", std, string)
+ DEFINE_ELEMENT (_NL_TELEPHONE_TEL_DOM_FMT, "tel_dom_fmt", std, string)
+ DEFINE_ELEMENT (_NL_TELEPHONE_INT_SELECT, "int_select", std, string)
+ DEFINE_ELEMENT (_NL_TELEPHONE_INT_PREFIX, "int_prefix", std, string)
+ DEFINE_ELEMENT (_NL_TELEPHONE_CODESET, "telephone-codeset", std, string)
+ ), NO_POSTLOAD)
+
+DEFINE_CATEGORY
+(
+ LC_MEASUREMENT, "LC_MEASUREMENT",
+ (
+ DEFINE_ELEMENT (_NL_MEASUREMENT_MEASUREMENT, "measurement", std, byte)
+ DEFINE_ELEMENT (_NL_MEASUREMENT_CODESET, "measurement-codeset", std, string)
+ ), NO_POSTLOAD)
+
+DEFINE_CATEGORY
+(
+ LC_IDENTIFICATION, "LC_IDENTIFICATION",
+ (
+ DEFINE_ELEMENT (_NL_IDENTIFICATION_TITLE, "title", std, string)
+ DEFINE_ELEMENT (_NL_IDENTIFICATION_SOURCE, "source", std, string)
+ DEFINE_ELEMENT (_NL_IDENTIFICATION_ADDRESS, "address", std, string)
+ DEFINE_ELEMENT (_NL_IDENTIFICATION_CONTACT, "contact", std, string)
+ DEFINE_ELEMENT (_NL_IDENTIFICATION_EMAIL, "email", std, string)
+ DEFINE_ELEMENT (_NL_IDENTIFICATION_TEL, "tel", std, string)
+ DEFINE_ELEMENT (_NL_IDENTIFICATION_FAX, "fax", std, string)
+ DEFINE_ELEMENT (_NL_IDENTIFICATION_LANGUAGE, "language", std, string)
+ DEFINE_ELEMENT (_NL_IDENTIFICATION_TERRITORY, "territory", std, string)
+ DEFINE_ELEMENT (_NL_IDENTIFICATION_AUDIENCE, "audience", std, string)
+ DEFINE_ELEMENT (_NL_IDENTIFICATION_APPLICATION, "application", std, string)
+ DEFINE_ELEMENT (_NL_IDENTIFICATION_ABBREVIATION, "abbreviation", std, string)
+ DEFINE_ELEMENT (_NL_IDENTIFICATION_REVISION, "revision", std, string)
+ DEFINE_ELEMENT (_NL_IDENTIFICATION_DATE, "date", std, string)
+ DEFINE_ELEMENT (_NL_IDENTIFICATION_CATEGORY, "category", std, stringarray, 13, 13)
+ DEFINE_ELEMENT (_NL_IDENTIFICATION_CODESET, "identification-codeset", std, string)
+ ), NO_POSTLOAD)
+#endif
diff --git a/ap/build/uClibc/extra/locale/programs/locale.c b/ap/build/uClibc/extra/locale/programs/locale.c
new file mode 100644
index 0000000..dfd2029
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/programs/locale.c
@@ -0,0 +1,486 @@
+/* vi: set sw=4 ts=4: */
+/*
+ *
+ * Copyright (c) 2008 STMicroelectronics Ltd
+ * Filippo Arcidiacono (filippo.arcidiacono@st.com)
+ *
+ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+ *
+ * A 'locale' command implementation for uClibc.
+ *
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <langinfo.h>
+#include <unistd.h>
+#ifdef __UCLIBC_HAS_GETOPT_LONG__
+#include <getopt.h>
+#endif
+
+typedef struct {
+ unsigned char idx_name;
+ char dot_cs; /* 0 if no codeset specified */
+ char cs;
+ unsigned char lc_ctype_row;
+ unsigned char lc_numeric_row;
+ unsigned char lc_monetary_row;
+ unsigned char lc_time_row;
+ unsigned char lc_collate_row;
+ unsigned char lc_messages_row;
+} locale_entry;
+
+/* Need to include this before locale.h and xlocale.h! */
+#include <bits/uClibc_locale.h>
+
+#undef CODESET_LIST
+#define CODESET_LIST (__locale_mmap->codeset_list)
+#include <locale.h>
+#define LOCALE_NAMES (__locale_mmap->locale_names5)
+#define LOCALES (__locale_mmap->locales)
+#define LOCALE_AT_MODIFIERS (__locale_mmap->locale_at_modifiers)
+#define CATEGORY_NAMES (__locale_mmap->lc_names)
+
+#define GET_CODESET_NAME(N) (const char *)(CODESET_LIST + *(CODESET_LIST + N - 3))
+#define GET_LOCALE_ENTRY(R) (locale_entry *)(LOCALES + (__LOCALE_DATA_WIDTH_LOCALES * R))
+#define GET_CATEGORY_NAME(X) (CATEGORY_NAMES + *(CATEGORY_NAMES + X))
+#define GET_LOCALE_NAME(I) (const char *)(LOCALE_NAMES + 5 * (I - 1))
+
+static const char utf8[] = "UTF-8";
+static const char ascii[] = "ASCII";
+
+/* If set print the name of the category. */
+static int show_category_name = 0;
+
+/* If set print the name of the item. */
+static int show_keyword_name = 0;
+
+/* If set print the usage command. */
+static int show_usage = 0;
+
+/* Print names of all available locales. */
+static int do_all = 0;
+
+/* Print names of all available character maps. */
+static int do_charmaps = 0;
+
+static int remaining = 0;
+
+/* We can map the types of the entries into a few categories. */
+enum value_type {
+ none,
+ string,
+ stringarray,
+ byte,
+ bytearray,
+ word,
+ stringlist,
+ wordarray,
+ wstring,
+ wstringarray,
+ wstringlist
+};
+
+/* Definition of the data structure which represents a category and its
+ items. */
+struct category {
+ int cat_id;
+ const char *name;
+ size_t number;
+ struct cat_item {
+ int item_id;
+ const char *name;
+ enum { std, opt } status;
+ enum value_type value_type;
+ int min;
+ int max;
+ } *item_desc;
+};
+
+/* Simple helper macro. */
+#define NELEMS(arr) ((sizeof (arr)) / (sizeof (arr[0])))
+
+/* For some tricky stuff. */
+#define NO_PAREN(Item, More...) Item, ## More
+
+/* We have all categories defined in `categories.def'. Now construct
+ the description and data structure used for all categories. */
+#define DEFINE_ELEMENT(Item, More...) { Item, ## More },
+#define DEFINE_CATEGORY(category, name, items, postload) \
+ static struct cat_item category##_desc[] = \
+ { \
+ NO_PAREN items \
+ };
+
+#include "categories.def"
+#undef DEFINE_CATEGORY
+
+static struct category category[] = {
+#define DEFINE_CATEGORY(category, name, items, postload) \
+ [category] = { _NL_NUM_##category, name, NELEMS (category##_desc), \
+ category##_desc },
+#include "categories.def"
+#undef DEFINE_CATEGORY
+};
+
+#define NCATEGORIES NELEMS (category)
+
+static void usage(const char *name);
+static void usage(const char *name)
+{
+ const char *s;
+
+ s = basename(name);
+#ifdef __UCLIBC_HAS_GETOPT_LONG__
+ fprintf(stderr,
+ "Usage: %s [-a | -m] [FORMAT] name...\n\n"
+ "\t-a, --all-locales\tWrite names of all available locales\n"
+ "\t-m, --charmaps\tWrite names of available charmaps\n"
+ "\nFORMAT:\n"
+ "\t-c, --category-name\tWrite names of selected categories\n"
+ "\t-k, --keyword-name\tWrite names of selected keywords\n"
+ , s);
+#else
+ fprintf(stderr,
+ "Usage: %s [-a | -m] [FORMAT] name...\n\n"
+ "\t-a\tWrite names of all available locales\n"
+ "\t-m\tWrite names of available charmaps\n"
+ "\nFORMAT:\n"
+ "\t-c\tWrite names of selected categories\n"
+ "\t-k\tWrite names of selected keywords\n"
+ , s);
+#endif
+}
+
+static int argp_parse(int argc, char *argv[]);
+static int argp_parse(int argc, char *argv[])
+{
+ int c;
+ char *progname;
+#ifdef __UCLIBC_HAS_GETOPT_LONG__
+ static const struct option long_options[] = {
+ {"all-locales", no_argument, NULL, 'a'},
+ {"charmaps", no_argument, NULL, 'm'},
+ {"category-name", no_argument, NULL, 'c'},
+ {"keyword-name", no_argument, NULL, 'k'},
+ {"help", no_argument, NULL, 'h'},
+ {NULL, 0, NULL, 0}};
+#endif
+ progname = *argv;
+#ifdef __UCLIBC_HAS_GETOPT_LONG__
+ while ((c = getopt_long(argc, argv, "amckh", long_options, NULL)) >= 0)
+#else
+ while ((c = getopt(argc, argv, "amckh")) >= 0)
+#endif
+ switch (c) {
+ case 'a':
+ do_all = 1;
+ break;
+ case 'c':
+ show_category_name = 1;
+ break;
+ case 'm':
+ do_charmaps = 1;
+ break;
+ case 'k':
+ show_keyword_name = 1;
+ break;
+ case 'h':
+ show_usage = 1;
+ break;
+ case '?':
+ fprintf(stderr, "Unknown option.\n");
+ usage(progname);
+ return 1;
+
+ default:
+ fprintf(stderr, "This should never happen!\n");
+ return 1;
+ }
+
+ remaining = optind;
+
+ return 0;
+}
+
+static unsigned const char *find_at(char c);
+static unsigned const char *find_at(char c)
+{
+ const unsigned char *q;
+
+ q = LOCALE_AT_MODIFIERS;
+ do {
+ if (q[1] == c) {
+ return (unsigned const char *) q + 2;
+ }
+ q += 2 + *q;
+ } while (*q);
+
+ return NULL;
+}
+
+static void find_locale_string(locale_entry * loc_rec, char *loc)
+{
+ char at = 0;
+ unsigned char idx;
+ uint16_t dotcs, cs;
+
+ idx = loc_rec->idx_name;
+ if (!idx) {
+ *loc++ = 'C'; /* jump the first locale (C) */
+ *loc = '\0';
+ } else {
+ dotcs = (uint16_t) loc_rec->dot_cs;
+ cs = (uint16_t) loc_rec->cs;;
+ loc = strncpy(loc, GET_LOCALE_NAME(idx), 5);
+
+ if (loc[2] == '_') {
+ sprintf(loc, "%5.5s%c%s\0", loc, (dotcs != 0) ? '.' : ' ',
+ (cs == 1) ? ascii
+ : ((cs == 2) ?
+ utf8
+: GET_CODESET_NAME(cs)));
+ } else {
+ at = loc[2];
+ loc[2] = '_';
+ sprintf(loc, "%5.5s%c%s@%s\0", loc, (dotcs != 0) ? '.' : ' ',
+ (cs ==
+ 1) ? ascii : ((cs == 2) ? utf8 : GET_CODESET_NAME(cs)),
+ find_at(at));
+ }
+ }
+}
+
+static void list_locale(void);
+static void list_locale()
+{
+ char loc[40];
+ uint16_t n = 0;
+ locale_entry *locales = (locale_entry *) LOCALES;
+
+ do {
+ find_locale_string(locales, loc);
+ printf("%s\n", loc);
+ ++n;
+ locales++;
+ } while (n < __LOCALE_DATA_NUM_LOCALES);
+}
+
+static void list_charmaps(void);
+static void list_charmaps()
+{
+ unsigned const char *cl;
+
+ cl = CODESET_LIST;
+ do {
+ printf("%s\n", CODESET_LIST + *cl);
+ } while (*++cl);
+
+}
+
+static void print_item(struct cat_item *item);
+static void print_item(struct cat_item *item)
+{
+ switch (item->value_type) {
+ case string:
+ if (show_keyword_name)
+ printf("%s=\"", item->name);
+ fputs(nl_langinfo(item->item_id) ? : "", stdout);
+ if (show_keyword_name)
+ putchar('"');
+ putchar('\n');
+ break;
+ case stringarray:
+ {
+ int cnt;
+ const char *val;
+
+ if (show_keyword_name)
+ printf("%s=\"", item->name);
+
+ for (cnt = 0; cnt < item->max - 1; ++cnt) {
+ val = nl_langinfo(item->item_id + cnt);
+ if (val != NULL)
+ fputs(val, stdout);
+ putchar(';');
+ }
+
+ val = nl_langinfo(item->item_id + cnt);
+ if (val != NULL)
+ fputs(val, stdout);
+
+ if (show_keyword_name)
+ putchar('"');
+ putchar('\n');
+ }
+ break;
+ case stringlist:
+ {
+ int first = 1;
+ const char *val = nl_langinfo(item->item_id) ? : "";
+ int cnt;
+
+ if (show_keyword_name)
+ printf("%s=", item->name);
+
+ for (cnt = 0; cnt < item->max && *val != '\0'; ++cnt) {
+ printf("%s%s%s%s", first ? "" : ";",
+ show_keyword_name ? "\"" : "", val,
+ show_keyword_name ? "\"" : "");
+ val = strchr(val, '\0') + 1;
+ first = 0;
+ }
+ putchar('\n');
+ }
+ break;
+ case byte:
+ {
+ const char *val = nl_langinfo(item->item_id);
+
+ if (show_keyword_name)
+ printf("%s=", item->name);
+
+ if (val != NULL)
+ printf("%d", *val == '\177' ? -1 : *val);
+ putchar('\n');
+ }
+ break;
+ case bytearray:
+ {
+ const char *val = nl_langinfo(item->item_id);
+ int cnt = val ? strlen(val) : 0;
+
+ if (show_keyword_name)
+ printf("%s=", item->name);
+
+ while (cnt > 1) {
+ printf("%d;", *val == '\177' ? -1 : *val);
+ --cnt;
+ ++val;
+ }
+
+ printf("%d\n", cnt == 0 || *val == '\177' ? -1 : *val);
+ }
+ break;
+ case word:
+ {
+ union {
+ unsigned int word;
+ char *string;
+ } val;
+
+ val.string = nl_langinfo(item->item_id);
+ if (show_keyword_name)
+ printf("%s=", item->name);
+
+ printf("%d\n", val.word);
+ }
+ break;
+ case wstring:
+ case wstringarray:
+ case wstringlist:
+ /* We don't print wide character information since the same
+ information is available in a multibyte string. */
+ default:
+ break;
+
+ }
+}
+
+/* Show the information request for NAME. */
+static void show_info(const char *name);
+static void show_info(const char *name)
+{
+ size_t cat_no, item_no;
+ const unsigned char *cat_name;
+
+ /* Now all categories in an unspecified order. */
+ for (cat_no = 0; cat_no < __LC_ALL; ++cat_no) {
+ cat_name = GET_CATEGORY_NAME(cat_no);
+ if (strcmp(name, (const char *) cat_name) == 0) {
+ if (show_category_name)
+ printf("%s\n", name);
+
+ for (item_no = 0; item_no < category[cat_no].number; ++item_no)
+ print_item(&category[cat_no].item_desc[item_no]);
+
+ return;
+ }
+
+ for (item_no = 0; item_no < category[cat_no].number; ++item_no)
+ if (strcmp(name, category[cat_no].item_desc[item_no].name) == 0) {
+ if (show_category_name != 0)
+ puts(category[cat_no].name);
+
+ print_item(&category[cat_no].item_desc[item_no]);
+ return;
+ }
+ }
+}
+
+static void show_locale_vars(void);
+static void show_locale_vars()
+{
+ size_t cat_no;
+ int row; /* locale row */
+ const char *lcall = getenv("LC_ALL");
+ const char *lang = getenv("LANG") ? : "";
+ unsigned char *cur_loc = __global_locale->cur_locale + 1;
+ char loc_name[40];
+ locale_entry *locales;
+
+ /* LANG has to be the first value. */
+ printf("LANG=%s\n", lang);
+
+ /* Now all categories in an unspecified order. */
+ for (cat_no = 0; cat_no < __LC_ALL; ++cat_no) {
+ row = (((int) (*cur_loc & 0x7f)) << 7) + (cur_loc[1] & 0x7f);
+/* assert(row < __LOCALE_DATA_NUM_LOCALES); */
+
+ locales = GET_LOCALE_ENTRY(row);
+ find_locale_string(locales, loc_name);
+ printf("%s=%s\n", GET_CATEGORY_NAME(cat_no), loc_name);
+
+ cur_loc += 2;
+ }
+
+ /* The last is the LC_ALL value. */
+ printf("LC_ALL=%s\n", lcall ? : "");
+}
+
+int main(int argc, char *argv[])
+{
+ /* Parse and process arguments. */
+ if (argp_parse(argc, argv))
+ return 1;
+
+ if (do_all) {
+ list_locale();
+ exit(EXIT_SUCCESS);
+ }
+
+ if (do_charmaps) {
+ list_charmaps();
+ exit(EXIT_SUCCESS);
+ }
+
+ if (show_usage) {
+ usage(*argv);
+ exit(EXIT_SUCCESS);
+ }
+
+ /* If no real argument is given we have to print the contents of the
+ current locale definition variables. These are LANG and the LC_*. */
+ if (remaining == argc && show_category_name == 0
+ && show_keyword_name == 0) {
+ show_locale_vars();
+ exit(EXIT_SUCCESS);
+ }
+
+ /* Process all given names. */
+ while (remaining < argc)
+ show_info(argv[remaining++]);
+
+ exit(EXIT_SUCCESS);
+}
diff --git a/ap/build/uClibc/extra/locale/tst_nl_langinfo.c b/ap/build/uClibc/extra/locale/tst_nl_langinfo.c
new file mode 100644
index 0000000..fcf2fe2
--- /dev/null
+++ b/ap/build/uClibc/extra/locale/tst_nl_langinfo.c
@@ -0,0 +1,296 @@
+#include <locale.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <langinfo.h>
+#include <nl_types.h>
+
+#if !defined(__UCLIBC__) && 0
+#define DO_EXTRA
+#endif
+
+int main(int argc, char **argv)
+{
+ char *l;
+ const unsigned char *x;
+/* const unsigned char *y; */
+ const unsigned char *p;
+
+ if (argc > 2) {
+ printf("invalid args\n");
+ return EXIT_FAILURE;
+ }
+ if (argc == 1) {
+ l = "";
+ } else {
+ l = *++argv;
+ }
+
+ if (!(x = setlocale(LC_ALL,l))) {
+ printf("couldn't set locale %s\n", l);
+ return EXIT_FAILURE;
+ }
+
+/* printf("\nsetlocale returned:\n "); */
+/* do { */
+/* printf("\\x%02x", *x); */
+/* } while (*x++); */
+/* printf("\n"); */
+
+#ifndef __BCC__
+#define STR(X) #X
+#else
+#define STR(X) __STR(X)
+#endif
+#define __PASTE2(A,B) A.B
+
+#define DO_NL_I(X) \
+ printf( STR(X) " = %d\n", (int) nl_langinfo(X) );
+#define DO_NL_S(X) \
+ printf( STR(X) " = \"%s\"\n", nl_langinfo(X) );
+#define DO_NL_C(X) \
+ printf( STR(X) " = \"\\x%02x\"\n", *((unsigned char *) nl_langinfo(X)) );
+
+ printf("ctype\n");
+
+ DO_NL_S(CODESET);
+#ifdef DO_EXTRA
+ DO_NL_I(_NL_CTYPE_INDIGITS_MB_LEN);
+ DO_NL_S(_NL_CTYPE_INDIGITS0_MB);
+ DO_NL_S(_NL_CTYPE_INDIGITS1_MB);
+ DO_NL_S(_NL_CTYPE_INDIGITS2_MB);
+ DO_NL_S(_NL_CTYPE_INDIGITS3_MB);
+ DO_NL_S(_NL_CTYPE_INDIGITS4_MB);
+ DO_NL_S(_NL_CTYPE_INDIGITS5_MB);
+ DO_NL_S(_NL_CTYPE_INDIGITS6_MB);
+ DO_NL_S(_NL_CTYPE_INDIGITS7_MB);
+ DO_NL_S(_NL_CTYPE_INDIGITS8_MB);
+ DO_NL_S(_NL_CTYPE_INDIGITS9_MB);
+#endif
+ DO_NL_S(_NL_CTYPE_OUTDIGIT0_MB);
+ DO_NL_S(_NL_CTYPE_OUTDIGIT1_MB);
+ DO_NL_S(_NL_CTYPE_OUTDIGIT2_MB);
+ DO_NL_S(_NL_CTYPE_OUTDIGIT3_MB);
+ DO_NL_S(_NL_CTYPE_OUTDIGIT4_MB);
+ DO_NL_S(_NL_CTYPE_OUTDIGIT5_MB);
+ DO_NL_S(_NL_CTYPE_OUTDIGIT6_MB);
+ DO_NL_S(_NL_CTYPE_OUTDIGIT7_MB);
+ DO_NL_S(_NL_CTYPE_OUTDIGIT8_MB);
+ DO_NL_S(_NL_CTYPE_OUTDIGIT9_MB);
+
+
+ printf("numeric\n");
+
+ DO_NL_S(RADIXCHAR); /* DECIMAL_POINT */
+ DO_NL_S(THOUSEP); /* THOUSANDS_SEP */
+/* DO_NL_S(GROUPING); */
+
+ printf("GROUPING = \"");
+ for (p = (unsigned char *) nl_langinfo(GROUPING) ; *p ; p++) {
+ printf("\\x%02x", *p);
+ }
+ printf("\"\n\n");
+
+ printf("monetary\n");
+
+ DO_NL_S(INT_CURR_SYMBOL);
+ DO_NL_S(CURRENCY_SYMBOL);
+ DO_NL_S(MON_DECIMAL_POINT);
+ DO_NL_S(MON_THOUSANDS_SEP);
+/* DO_NL_S(MON_GROUPING); */
+
+ printf("MON_GROUPING = \"");
+ for (p = (unsigned char *) nl_langinfo(MON_GROUPING) ; *p ; p++) {
+ printf("\\x%02x", *p);
+ }
+ printf("\"\n\n");
+
+ DO_NL_S(POSITIVE_SIGN);
+ DO_NL_S(NEGATIVE_SIGN);
+ DO_NL_C(INT_FRAC_DIGITS);
+ DO_NL_C(FRAC_DIGITS);
+ DO_NL_C(P_CS_PRECEDES);
+ DO_NL_C(P_SEP_BY_SPACE);
+ DO_NL_C(N_CS_PRECEDES);
+ DO_NL_C(N_SEP_BY_SPACE);
+ DO_NL_C(P_SIGN_POSN);
+ DO_NL_C(N_SIGN_POSN);
+ DO_NL_C(INT_P_CS_PRECEDES);
+ DO_NL_C(INT_P_SEP_BY_SPACE);
+ DO_NL_C(INT_N_CS_PRECEDES);
+ DO_NL_C(INT_N_SEP_BY_SPACE);
+ DO_NL_C(INT_P_SIGN_POSN);
+ DO_NL_C(INT_N_SIGN_POSN);
+
+ DO_NL_S(CRNCYSTR); /* CURRENCY_SYMBOL */
+
+
+ printf("time\n");
+
+ DO_NL_S(ABDAY_1);
+ DO_NL_S(ABDAY_2);
+ DO_NL_S(ABDAY_3);
+ DO_NL_S(ABDAY_4);
+ DO_NL_S(ABDAY_5);
+ DO_NL_S(ABDAY_6);
+ DO_NL_S(ABDAY_7);
+
+ DO_NL_S(DAY_1);
+ DO_NL_S(DAY_2);
+ DO_NL_S(DAY_3);
+ DO_NL_S(DAY_4);
+ DO_NL_S(DAY_5);
+ DO_NL_S(DAY_6);
+ DO_NL_S(DAY_7);
+
+ DO_NL_S(ABMON_1);
+ DO_NL_S(ABMON_2);
+ DO_NL_S(ABMON_3);
+ DO_NL_S(ABMON_4);
+ DO_NL_S(ABMON_5);
+ DO_NL_S(ABMON_6);
+ DO_NL_S(ABMON_7);
+ DO_NL_S(ABMON_8);
+ DO_NL_S(ABMON_9);
+ DO_NL_S(ABMON_10);
+ DO_NL_S(ABMON_11);
+ DO_NL_S(ABMON_12);
+
+ DO_NL_S(MON_1);
+ DO_NL_S(MON_2);
+ DO_NL_S(MON_3);
+ DO_NL_S(MON_4);
+ DO_NL_S(MON_5);
+ DO_NL_S(MON_6);
+ DO_NL_S(MON_7);
+ DO_NL_S(MON_8);
+ DO_NL_S(MON_9);
+ DO_NL_S(MON_10);
+ DO_NL_S(MON_11);
+ DO_NL_S(MON_12);
+
+ DO_NL_S(AM_STR);
+ DO_NL_S(PM_STR);
+
+ DO_NL_S(D_T_FMT);
+ DO_NL_S(D_FMT);
+ DO_NL_S(T_FMT);
+ DO_NL_S(T_FMT_AMPM);
+/* DO_NL_S(ERA); */
+ {
+ const char *p = nl_langinfo(ERA);
+ if (!p || !*p) {
+ printf("ERA = (none)\n");
+ } else {
+ int i;
+ printf("ERA:\n");
+ for (i=0 ; i < 100 ; i++) {
+ printf(" %3d: \"%s\"\n", i, p);
+ while (*p) ++p;
+ ++p;
+ if (!*p) break;
+ }
+ }
+ }
+
+ DO_NL_S(ERA_YEAR); /* non SuSv3 */
+ DO_NL_S(ERA_D_FMT);
+/* DO_NL_S(ALT_DIGITS); */
+ {
+ const char *p = nl_langinfo(ALT_DIGITS);
+ if (!p || !*p) {
+ printf("ALT_DIGITS = (none)\n");
+ } else {
+ int i;
+ printf("ALT_DIGITS:\n");
+ for (i=0 ; i < 100 ; i++) {
+ printf(" %3d: \"%s\"\n", i, p);
+ while (*p) ++p;
+ ++p;
+ }
+ }
+ }
+ DO_NL_S(ERA_D_T_FMT);
+ DO_NL_S(ERA_T_FMT);
+
+#ifdef DO_EXTRA
+ DO_NL_C(_NL_TIME_WEEK_NDAYS);
+ DO_NL_I(_NL_TIME_WEEK_1STDAY); /* grr... this won't work with 16bit ptrs */
+ DO_NL_C(_NL_TIME_WEEK_1STWEEK);
+ DO_NL_C(_NL_TIME_FIRST_WEEKDAY);
+ DO_NL_C(_NL_TIME_FIRST_WORKDAY);
+ DO_NL_C(_NL_TIME_CAL_DIRECTION);
+ DO_NL_S(_NL_TIME_TIMEZONE);
+ DO_NL_S(_DATE_FMT);
+#endif
+
+ printf("messages\n");
+
+ DO_NL_S(YESEXPR);
+ DO_NL_S(NOEXPR);
+ DO_NL_S(YESSTR);
+ DO_NL_S(NOSTR);
+
+#ifdef DO_EXTRA
+
+ printf("paper\n");
+
+ DO_NL_I(_NL_PAPER_HEIGHT);
+ DO_NL_I(_NL_PAPER_WIDTH);
+
+ printf("name\n");
+
+ DO_NL_S(_NL_NAME_NAME_FMT);
+ DO_NL_S(_NL_NAME_NAME_GEN);
+ DO_NL_S(_NL_NAME_NAME_MR);
+ DO_NL_S(_NL_NAME_NAME_MRS);
+ DO_NL_S(_NL_NAME_NAME_MISS);
+ DO_NL_S(_NL_NAME_NAME_MS);
+
+ printf("address\n");
+
+ DO_NL_S(_NL_ADDRESS_POSTAL_FMT);
+ DO_NL_S(_NL_ADDRESS_COUNTRY_NAME);
+ DO_NL_S(_NL_ADDRESS_COUNTRY_POST);
+ DO_NL_S(_NL_ADDRESS_COUNTRY_AB2);
+ DO_NL_S(_NL_ADDRESS_COUNTRY_AB3);
+ DO_NL_S(_NL_ADDRESS_COUNTRY_CAR);
+ DO_NL_I(_NL_ADDRESS_COUNTRY_NUM);
+ DO_NL_S(_NL_ADDRESS_COUNTRY_ISBN);
+ DO_NL_S(_NL_ADDRESS_LANG_NAME);
+ DO_NL_S(_NL_ADDRESS_LANG_AB);
+ DO_NL_S(_NL_ADDRESS_LANG_TERM);
+ DO_NL_S(_NL_ADDRESS_LANG_LIB);
+
+ printf("telephone\n");
+
+ DO_NL_S(_NL_TELEPHONE_TEL_INT_FMT);
+ DO_NL_S(_NL_TELEPHONE_TEL_DOM_FMT);
+ DO_NL_S(_NL_TELEPHONE_INT_SELECT);
+ DO_NL_S(_NL_TELEPHONE_INT_PREFIX);
+
+ printf("measurement\n");
+
+ DO_NL_C(_NL_MEASUREMENT_MEASUREMENT); /* 1 is metric, 2 is US */
+
+ printf("identification\n");
+
+ DO_NL_S(_NL_IDENTIFICATION_TITLE);
+ DO_NL_S(_NL_IDENTIFICATION_SOURCE);
+ DO_NL_S(_NL_IDENTIFICATION_ADDRESS);
+ DO_NL_S(_NL_IDENTIFICATION_CONTACT);
+ DO_NL_S(_NL_IDENTIFICATION_EMAIL);
+ DO_NL_S(_NL_IDENTIFICATION_TEL);
+ DO_NL_S(_NL_IDENTIFICATION_FAX);
+ DO_NL_S(_NL_IDENTIFICATION_LANGUAGE);
+ DO_NL_S(_NL_IDENTIFICATION_TERRITORY);
+ DO_NL_S(_NL_IDENTIFICATION_AUDIENCE);
+ DO_NL_S(_NL_IDENTIFICATION_APPLICATION);
+ DO_NL_S(_NL_IDENTIFICATION_ABBREVIATION);
+ DO_NL_S(_NL_IDENTIFICATION_REVISION);
+ DO_NL_S(_NL_IDENTIFICATION_DATE);
+ DO_NL_S(_NL_IDENTIFICATION_CATEGORY);
+
+#endif
+
+ return EXIT_SUCCESS;
+}
diff --git a/ap/build/uClibc/extra/scripts/MAKEALL b/ap/build/uClibc/extra/scripts/MAKEALL
new file mode 100755
index 0000000..f46d3bd
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/MAKEALL
@@ -0,0 +1,146 @@
+#!/bin/sh
+#
+# helper script to quick build testing with cross-compilers
+#
+
+: ${MAKE:=make}
+
+: ${BUILD_NCPUS:=$(getconf _NPROCESSORS_ONLN)}
+if [ "$BUILD_NCPUS" -gt 1 ] ; then
+ JOBS=-j$((BUILD_NCPUS + 1))
+else
+ JOBS=""
+fi
+MAKE="${MAKE} ${JOBS}"
+
+: ${CROSS_COMPILE:=${CROSS_COMPILER_PREFIX}}
+
+setconfig()
+{
+ local opt=$1
+ shift
+ case $1 in
+ [yn]) ;;
+ [0-9]*) ;;
+ *) set -- '"'$*'"'
+ esac
+ sed -i \
+ -e "/${opt}=/s:=.*:=$*:" \
+ .config
+ echo " ## setconfig ${opt} $*"
+}
+
+get_arches()
+{
+ case $1 in
+ hppa) echo hppa hppa2.0 hppa1.1 hppa1.0;;
+ i386) echo i386 i486 i586 i686;;
+ sh) echo sh4 sh2 sh3 sh1 sh;;
+ sparc) echo sparc sparc64;;
+ *) echo $1;;
+ esac
+}
+
+find_compiler()
+{
+ local t a v o l
+ for a in $(get_arches $1) ; do
+ for l in uclibc gnu gnueabi "" ; do
+ for v in unknown pc gentoo "" ; do
+ for o in linux uclinux "" ; do
+ t="${a}${v:+-${v}}${o:+-${o}}${l:+-${l}}"
+ if ${t}-gcc --help > /dev/null 2>&1 ; then
+ echo ${t}-
+ return 0
+ fi
+ done
+ done
+ done
+ done
+}
+
+do_make()
+{
+ echo " ## ${MAKE} -s $*"
+ ${MAKE} -s "$@"
+}
+
+mark_arch()
+{
+ local r=$1 a=$2
+ eval $r=\"\$$r $a\"
+}
+
+if [ -z "$*" ] ; then
+ set -- $(awk \
+ '$0 ~ /^config TARGET_/ { sub("TARGET_",""); print $NF }' \
+ extra/Configs/Config.in | grep -v SUBARCH)
+fi
+pass=""
+fail=""
+skip=""
+for a in "$@" ; do
+ if [ -z "${CROSS_COMPILE}" ] ; then
+ CROSS_COMPILE=$(find_compiler ${a})
+ fi
+
+ if [ -z "${CROSS_COMPILE}" ] ; then
+ mark_arch skip $a
+ echo " ### SKIP: ${a}: could not find compiler"
+ continue
+ fi
+
+ rm -f ${a}.log ${a}.fail
+ (
+ set -e
+
+ echo " ### Building target ${a} (${CROSS_COMPILE})"
+
+ do_make distclean
+ do_make ARCH=$a defconfig
+ do_make oldconfig
+
+ setconfig CROSS_COMPILER_PREFIX ${CROSS_COMPILE}
+
+ header_path=${KERNEL_HEADERS:-$(echo '#include <linux/version.h>' | ${CROSS_COMPILE}cpp 2>/dev/null | grep -o '[^"]*linux/version.h')} || :
+ if [ -z "${header_path}" ] ; then
+ for p in /usr/${CROSS_COMPILE%-}/usr/include ; do
+ if [ -e ${p}/linux/version.h ] ; then
+ header_path=${p}
+ break
+ fi
+ done
+ if [ -z "${header_path}" ] ; then
+ echo " ## unable to locate KERNEL_HEADERS"
+ fi
+ fi
+ setconfig KERNEL_HEADERS ${header_path%/linux/version.h}
+
+ if do_make ; then
+ echo " ## PASS"
+ else
+ echo " ## FAIL"
+ touch ${a}.fail
+ fi
+ ) 2>&1 | tee ${a}.log
+
+ if [ -e ${a}.fail ] ; then
+ rm -f ${a}.fail
+ mark_arch fail $a
+ else
+ mark_arch pass $a
+ fi
+
+ unset CROSS_COMPILE
+done
+
+if [ -n "${skip}" ] ; then
+ printf '\nSKIPPED: %s\n' "${skip}"
+fi
+if [ -n "${fail}" ] ; then
+ printf '\nPASSED: %s\nFAILED: %s\n\n' "${pass}" "${fail}"
+ exit 1
+else
+ printf '\nAll arches passed!\n\n'
+ exit 0
+fi
diff --git a/ap/build/uClibc/extra/scripts/Makefile.arch.lvl3 b/ap/build/uClibc/extra/scripts/Makefile.arch.lvl3
new file mode 100644
index 0000000..ac00637
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/Makefile.arch.lvl3
@@ -0,0 +1,13 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+top_srcdir=../../../
+top_builddir=../../../
+all: objs
+include $(top_builddir)Rules.mak
+include Makefile.arch
+include $(top_srcdir)Makerules
diff --git a/ap/build/uClibc/extra/scripts/Makefile.arch.lvl4 b/ap/build/uClibc/extra/scripts/Makefile.arch.lvl4
new file mode 100644
index 0000000..633c91f
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/Makefile.arch.lvl4
@@ -0,0 +1,13 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+top_srcdir=../../../../
+top_builddir=../../../../
+all: objs
+include $(top_builddir)Rules.mak
+include Makefile.arch
+include $(top_srcdir)Makerules
diff --git a/ap/build/uClibc/extra/scripts/Makefile.libs.lvl0 b/ap/build/uClibc/extra/scripts/Makefile.libs.lvl0
new file mode 100644
index 0000000..4709fc2
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/Makefile.libs.lvl0
@@ -0,0 +1,13 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+top_srcdir=./
+top_builddir=./
+#include $(top_builddir)Rules.mak
+#all: libs
+include Makefile.in
+include $(top_srcdir)Makerules
diff --git a/ap/build/uClibc/extra/scripts/Makefile.libs.lvl1 b/ap/build/uClibc/extra/scripts/Makefile.libs.lvl1
new file mode 100644
index 0000000..c8dc9b4
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/Makefile.libs.lvl1
@@ -0,0 +1,13 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+top_srcdir=../
+top_builddir=../
+include $(top_builddir)Rules.mak
+all: libs
+include Makefile.in
+include $(top_srcdir)Makerules
diff --git a/ap/build/uClibc/extra/scripts/Makefile.libs.lvl2 b/ap/build/uClibc/extra/scripts/Makefile.libs.lvl2
new file mode 100644
index 0000000..f910021
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/Makefile.libs.lvl2
@@ -0,0 +1,13 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+top_srcdir=../../
+top_builddir=../../
+include $(top_builddir)Rules.mak
+all: libs
+include Makefile.in
+include $(top_srcdir)Makerules
diff --git a/ap/build/uClibc/extra/scripts/Makefile.objs.lvl2 b/ap/build/uClibc/extra/scripts/Makefile.objs.lvl2
new file mode 100644
index 0000000..11f362a
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/Makefile.objs.lvl2
@@ -0,0 +1,13 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+top_srcdir=../../
+top_builddir=../../
+all: objs
+include $(top_builddir)Rules.mak
+include Makefile.in
+include $(top_srcdir)Makerules
diff --git a/ap/build/uClibc/extra/scripts/Makefile.objs.lvl3 b/ap/build/uClibc/extra/scripts/Makefile.objs.lvl3
new file mode 100644
index 0000000..4a8f4a0
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/Makefile.objs.lvl3
@@ -0,0 +1,13 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+top_srcdir=../../../
+top_builddir=../../../
+all: objs
+include $(top_builddir)Rules.mak
+include Makefile.in
+include $(top_srcdir)Makerules
diff --git a/ap/build/uClibc/extra/scripts/Makefile.objs.lvl4 b/ap/build/uClibc/extra/scripts/Makefile.objs.lvl4
new file mode 100644
index 0000000..3ed177a
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/Makefile.objs.lvl4
@@ -0,0 +1,13 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+top_srcdir=../../../../
+top_builddir=../../../../
+all: objs
+include $(top_builddir)Rules.mak
+include Makefile.in
+include $(top_srcdir)Makerules
diff --git a/ap/build/uClibc/extra/scripts/Makefile.utils.lvl1 b/ap/build/uClibc/extra/scripts/Makefile.utils.lvl1
new file mode 100644
index 0000000..bdaea9f
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/Makefile.utils.lvl1
@@ -0,0 +1,13 @@
+# Makefile for uClibc
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+top_srcdir=../
+top_builddir=../
+include $(top_builddir)Rules.mak
+all: utils
+include Makefile.in
+include $(top_srcdir)Makerules
diff --git a/ap/build/uClibc/extra/scripts/conf-header.sh b/ap/build/uClibc/extra/scripts/conf-header.sh
new file mode 100755
index 0000000..8044f8c
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/conf-header.sh
@@ -0,0 +1,27 @@
+#!/bin/sh -e
+
+# Turn .config into a header file
+
+if [ -z "$1" ] ; then
+ echo "Usage: conf-header.sh <.config>"
+ exit 1
+fi
+
+cat <<EOF
+#if !defined _FEATURES_H && !defined __need_uClibc_config_h
+# error Never include <bits/uClibc_config.h> directly; use <features.h> instead
+#endif
+
+#define __UCLIBC_MAJOR__ ${MAJOR_VERSION}
+#define __UCLIBC_MINOR__ ${MINOR_VERSION}
+#define __UCLIBC_SUBLEVEL__ ${SUBLEVEL}
+EOF
+
+exec \
+sed \
+ -e '/^#$/d' \
+ -e '/^[^#]/s:^\([^=]*\)=\(.*\):#define __\1__ \2:' \
+ -e '/^#define /s: y$: 1:' \
+ -e '/^# .* is not set$/s:^# \(.*\) is not set$:#undef __\1__:' \
+ -e 's:^# \(.*\)$:/* \1 */:' \
+ $1
diff --git a/ap/build/uClibc/extra/scripts/cppcheck.sh b/ap/build/uClibc/extra/scripts/cppcheck.sh
new file mode 100755
index 0000000..127c509
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/cppcheck.sh
@@ -0,0 +1,56 @@
+#! /bin/sh
+
+# usage:
+#
+# make \
+# REAL_CC=gcc-mine \
+# CC=extra/scripts/cppcheck.sh \
+# CPPCHECK_FLAGS="--enable=style,performance,portability,information,missingInclude --max-configs=256 -j $(($(getconf _NPROCESSORS_ONLN)-1))" \
+# CPPCHECK_LIMIT="yes"
+
+# CPPCHECK_FLAGS are optional and are not set per default.
+# CPPCHECK_LIMIT limits cppcheck to the -D and -U that would be passed to CC.
+# Setting CPPCHECK_LIMIT greatly improves the check-time but obviously
+# just checks a small subset of the defines found in a file.
+
+: ${REAL_CC:=gcc}
+${REAL_CC} $@
+args=""
+limits=""
+next_arg=0
+next_limit=0
+
+for i in $@
+do
+ if [ $next_arg -eq 1 ] ; then
+ next_arg=0
+ case "/$i" in
+ /-*) exit 0 ;;
+ esac
+ [ "x$args" = "x" ] && args="$i" || args="$args $i"
+ continue
+ fi
+ if [ $next_limit -eq 1 ] ; then
+ next_limit=0
+ [ "x$limits" = "x" ] && limits="$i" || limits="$limits $i"
+ continue
+ fi
+ case "/$i" in
+ /-c) next_arg=1 ;;
+ /-isystem)
+ next_arg=1;
+ [ "x$args" = "x" ] && args="-I" || args="$args -I" ;;
+ /-I)
+ next_arg=1;
+ [ "x$args" = "x" ] && args="$i" || args="$args $i" ;;
+ /-I*) [ "x$args" = "x" ] && args="$i" || args="$args $i" ;;
+ /-D|/-U)
+ next_limit=1;
+ [ "x$limit" = "x" ] && limit="$i" || limit="$limit $i" ;;
+ /-D*) [ "x$limits" = "x" ] && limits="$i" || limits="$limits $i" ;;
+ /-s|/-S|/-dump*|/--print*|/-print*) exit 0 ;;
+ *) ;;
+ esac
+done
+[ -z "${CPPCHECK_LIMIT}" ] && limits=""
+[ -z "${args}" ] || exec cppcheck ${CPPCHECK_FLAGS} ${args} ${limits}
diff --git a/ap/build/uClibc/extra/scripts/create_makefiles.sh b/ap/build/uClibc/extra/scripts/create_makefiles.sh
new file mode 100755
index 0000000..1d94b0d
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/create_makefiles.sh
@@ -0,0 +1,71 @@
+#!/bin/sh
+#
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+# Creates the necessary Makefiles to build w/ the Makefile.{arch,in} files
+
+DIRS="ldso libc libcrypt libintl libm libnsl libpthread libresolv librt libutil"
+
+if [ ! -f Makerules ] ; then
+ echo "Run this command in top_srcdir"
+ exit 1
+fi
+
+if [ -z "${USE_CMD}" ] ; then
+USE_CMD="cp"
+fi
+
+RM="rm -f"
+${RM} Makefile
+${USE_CMD} extra/scripts/Makefile.libs.lvl0 Makefile
+
+#for x in ${DIRS} ; do
+# find ./${x} -name Makefile -exec rm -f {} \;
+#done
+
+for x in */Makefile.in ; do
+ ${RM} `dirname ${x}`/Makefile
+ ${USE_CMD} extra/scripts/Makefile.libs.lvl1 `dirname ${x}`/Makefile
+done
+
+for x in utils/Makefile.in ; do
+ ${RM} `dirname ${x}`/Makefile
+ ${USE_CMD} extra/scripts/Makefile.utils.lvl1 `dirname ${x}`/Makefile
+done
+
+for x in */*/Makefile.in ; do
+ ${RM} `dirname ${x}`/Makefile
+ ${USE_CMD} extra/scripts/Makefile.objs.lvl2 `dirname ${x}`/Makefile
+done
+
+# overwrites the earlier ones, we do not add arch specific to libm/arch
+for x in ldso/*/Makefile.in libpthread/*/Makefile.in ; do
+ ${RM} `dirname ${x}`/Makefile
+ ${USE_CMD} extra/scripts/Makefile.libs.lvl2 `dirname ${x}`/Makefile
+done
+
+for x in */*/*/Makefile.in ; do
+ ${RM} `dirname ${x}`/Makefile
+ ${USE_CMD} extra/scripts/Makefile.objs.lvl3 `dirname ${x}`/Makefile
+done
+
+for x in libc/*/*/Makefile.arch ; do
+ ${RM} `dirname ${x}`/Makefile
+ ${USE_CMD} extra/scripts/Makefile.arch.lvl3 `dirname ${x}`/Makefile
+done
+
+for x in */*/*/*/Makefile.in ; do
+ ${RM} `dirname ${x}`/Makefile
+ ${USE_CMD} extra/scripts/Makefile.objs.lvl4 `dirname ${x}`/Makefile
+done
+
+# we do not add these to libpthread/PTNAME/sysdeps/arch
+for x in libc/*/*/*/Makefile.arch ; do
+ ${RM} `dirname ${x}`/Makefile
+ ${USE_CMD} extra/scripts/Makefile.arch.lvl4 `dirname ${x}`/Makefile
+done
+
+exit 0
diff --git a/ap/build/uClibc/extra/scripts/defs.awk b/ap/build/uClibc/extra/scripts/defs.awk
new file mode 100644
index 0000000..1716fb1
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/defs.awk
@@ -0,0 +1,27 @@
+/^[ ]*\.endp/ { need_endp = 1 }
+/^[ ]*\.end/ { need_end = 1 }
+/^[ ]*\.align/ { if($2 > max) max = $2; }
+
+END {
+ if(need_endp)
+ {
+ print "#define END_INIT .endp _init";
+ print "#define END_FINI .endp _fini";
+ } else if(need_end)
+ {
+ print "#define END_INIT .end _init";
+ print "#define END_FINI .end _fini";
+ }
+ else
+ {
+ print "#define END_INIT";
+ print "#define END_FINI";
+ }
+ if(max)
+ print "#define ALIGN .align", max;
+ else
+ print "#define ALIGN";
+
+ print "#include <libc-symbols.h>";
+ #print "weak_extern (__gmon_start__)";
+}
diff --git a/ap/build/uClibc/extra/scripts/format.lds b/ap/build/uClibc/extra/scripts/format.lds
new file mode 100644
index 0000000..c20212e
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/format.lds
@@ -0,0 +1,3 @@
+/* GNU ld script
+ * Use the shared library, but some functions are only in
+ * the static library, so try that secondarily. */
diff --git a/ap/build/uClibc/extra/scripts/gen-as-const.awk b/ap/build/uClibc/extra/scripts/gen-as-const.awk
new file mode 100644
index 0000000..013bd6e
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/gen-as-const.awk
@@ -0,0 +1,33 @@
+# Script used in producing headers of assembly constants from C expressions.
+# The input to this script looks like:
+# #cpp-directive ...
+# NAME1
+# NAME2 expression ...
+# The output of this script is C code to be run through gcc -S and then
+# massaged to extract the integer constant values of the given C expressions.
+# A line giving just a name implies an expression consisting of just that name.
+
+BEGIN { started = 0 }
+
+# cpp directives go straight through.
+/^#/ { print; next }
+
+NF >= 1 && !started {
+ printf "void dummy(void);\n";
+ print "void dummy(void) {";
+ started = 1;
+}
+
+# Separator.
+$1 == "--" { next }
+
+NF == 1 { sub(/^.*$/, "& &"); }
+
+NF > 1 {
+ name = $1;
+ sub(/^[^ ]+[ ]+/, "");
+ printf "__asm__ (\"@@@name@@@%s@@@value@@@%%0@@@end@@@\" : : \"i\" ((long) %s));\n",
+ name, $0;
+}
+
+END { if (started) print "}" }
diff --git a/ap/build/uClibc/extra/scripts/gen_bits_syscall_h.sh b/ap/build/uClibc/extra/scripts/gen_bits_syscall_h.sh
new file mode 100755
index 0000000..f6353ba
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/gen_bits_syscall_h.sh
@@ -0,0 +1,46 @@
+#!/bin/sh
+#
+# Copyright (C) 2001 Manuel Novoa III <mjn3@uclibc.org>
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+# June 27, 2001 Manuel Novoa III
+#
+# This script expects top_builddir and CC (as used in the Makefiles) to be set
+# in the environment, and outputs the appropriate
+# $top_builddir/include/bits/sysnum.h # corresponding to
+# $top_builddir/include/asm/unistd.h to stdout.
+#
+# Warning!!! This does _no_ error checking!!!
+
+INCLUDE_OPTS="-nostdinc -I${KERNEL_HEADERS}"
+
+case $CC in
+*icc*) CC_SYSNUM_ARGS="-dM" ;;
+*) CC_SYSNUM_ARGS="-dN" ;;
+esac
+
+( echo "#include <asm/unistd.h>";
+ echo "#include <asm/unistd.h>" |
+ $CC -E $CC_SYSNUM_ARGS $INCLUDE_OPTS - |
+ sed -ne 's/^[ ]*#define[ ]*\(__ARM_NR_\|__NR_\)\([A-Za-z0-9_]*\).*/UCLIBC\1\2 \1\2/gp' \
+ -e 's/^[ ]*#undef[ ]*\(__ARM_NR_\|__NR_\)\([A-Za-z0-9_]*\).*/UNDEFUCLIBC\1\2 \1\2/gp' # needed to strip out any kernel-internal defines
+) |
+$CC -E $INCLUDE_OPTS - |
+( echo "/* WARNING!!! AUTO-GENERATED FILE!!! DO NOT EDIT!!! */" ;
+ echo ;
+ echo "#ifndef _BITS_SYSNUM_H" ;
+ echo "#define _BITS_SYSNUM_H" ;
+ echo ;
+ echo "#ifndef _SYSCALL_H" ;
+ echo "# error \"Never use <bits/sysnum.h> directly; include <sys/syscall.h> instead.\"" ;
+ echo "#endif" ; echo ;
+ sed -ne 's/^UCLIBC\(__ARM_NR_\|__NR_\)\([A-Za-z0-9_]*\) *\(.*\)/#undef \1\2\
+#define \1\2 \3\
+#define SYS_\2 \1\2/gp' \
+ -e 's/^UNDEFUCLIBC\(__ARM_NR_\|__NR_\)\([A-Za-z0-9_]*\).*/#undef \1\2/gp'
+ echo ;
+ echo "#endif" ;
+)
diff --git a/ap/build/uClibc/extra/scripts/getent b/ap/build/uClibc/extra/scripts/getent
new file mode 100755
index 0000000..30d515b
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/getent
@@ -0,0 +1,43 @@
+#!/bin/sh
+# $Header: /var/cvs/uClibc/extra/scripts/getent,v 1.2 2005/02/02 14:18:01 solar Exp $
+#
+# Closely (not perfectly) emulate the behavior of glibc's getent utility
+#
+#passwd|shadow|group|aliases|hosts|networks|ethers|netgroup|protocols|services|rpc
+# only returns the first match (by design)
+# dns based search is not supported (hosts,networks)
+# case-insensitive matches not supported (ethers; others?)
+# may return false-positives (hosts,protocols,rpc,services,ethers)
+
+export PATH="${PATH}:/bin:/usr/bin"
+
+file="/etc/$1"
+case $1 in
+ passwd|group)
+ match="^$2:\|^[^:]*:[^:]*:$2:" ;;
+ shadow)
+ match="^$2:" ;;
+ networks|netgroup)
+ match="^[[:space:]]*$2\>" ;;
+ hosts|protocols|rpc|services|ethers)
+ match="\<$2\>" ;;
+ aliases)
+ match="^[[:space:]]*$2[[:space:]]*:" ;;
+ ""|-h|--help)
+ echo "USAGE: $0 database [key]"
+ exit 0 ;;
+ *)
+ echo "$0: Unknown database: $1" 1>&2
+ exit 1 ;;
+esac
+
+if [ ! -f "$file" ] ; then
+ echo "$0: Could not find database file for $1" 1>&2
+ exit 1
+fi
+
+if [ $# -eq 1 ] ; then
+ exec cat "$file"
+else
+ sed "s/#.*//; /$match/q; d" "$file" | grep . || exit 2
+fi
diff --git a/ap/build/uClibc/extra/scripts/install_headers.sh b/ap/build/uClibc/extra/scripts/install_headers.sh
new file mode 100755
index 0000000..14d64dc
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/install_headers.sh
@@ -0,0 +1,76 @@
+#!/bin/sh
+# Parameters:
+# $1 = source dir
+# $2 = dst dir
+# $top_builddir = well you guessed it
+
+srcdir=${1:-include}
+dstdir=${2:-`. ./.config 2>/dev/null && echo ${DEVEL_PREFIX}/include`}
+: ${top_builddir:=.}
+
+die_if_not_dir()
+{
+ for dir in "$@"; do
+ test -d "$dir" && continue
+ echo "Error: '$dir' is not a directory"
+ exit 1
+ done
+}
+
+
+# Ensure that created dirs/files have 755/644 perms
+umask 022
+
+
+# Sanity tests
+die_if_not_dir "${srcdir}"
+mkdir -p "${dstdir}" 2>/dev/null
+die_if_not_dir "${dstdir}"
+die_if_not_dir "$top_builddir"
+if ! test -x "$top_builddir/extra/scripts/unifdef"; then
+ echo "Error: need '$top_builddir/extra/scripts/unifdef' executable"
+ exit 1
+fi
+
+
+# Sanitize and copy uclibc headers
+(
+# We must cd, or else we'll prepend "${srcdir}" to filenames!
+cd "${srcdir}" || exit 1
+find . ! -name '.' -a ! -path '*/.*' | sed -e 's/^\.\///' -e '/^config\//d' \
+ -e '/^config$/d'
+) | \
+(
+IFS=''
+while read -r filename; do
+ if test -d "${srcdir}/$filename"; then
+ mkdir -p "${dstdir}/$filename" 2>/dev/null
+ continue
+ fi
+ if test x"${filename##libc-*.h}" = x""; then
+ # Do not install libc-XXXX.h files
+ continue
+ fi
+ # NB: unifdef exits with 1 if output is not
+ # exactly the same as input. That's ok.
+ # Do not abort the script if unifdef "fails"!
+ # NB2: careful with sed command arguments, they contain tab character
+ "$top_builddir/extra/scripts/unifdef" \
+ -U_LIBC \
+ -U__UCLIBC_GEN_LOCALE \
+ -U__NO_CTYPE \
+ "${srcdir}/$filename" \
+ | sed -e '/^rtld_hidden_proto[ ]*([a-zA-Z0-9_]*)$/d' \
+ | sed -e '/^lib\(c\|m\|resolv\|dl\|intl\|rt\|nsl\|util\|crypt\|pthread\)_hidden_proto[ ]*([a-zA-Z0-9_]*)$/d' \
+ >"${dstdir}/$filename"
+done
+)
+
+
+# Fix mode/owner bits
+cd "${dstdir}" || exit 1
+chmod -R u=rwX,go=rX . >/dev/null 2>&1
+chown -R `id | sed 's/^uid=\([0-9]*\).*gid=\([0-9]*\).*$/\1:\2/'` . >/dev/null 2>&1
+
+# ignore errors on unrelated files
+exit 0
diff --git a/ap/build/uClibc/extra/scripts/randconfig.sh b/ap/build/uClibc/extra/scripts/randconfig.sh
new file mode 100755
index 0000000..4c7126b
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/randconfig.sh
@@ -0,0 +1,44 @@
+#!/bin/sh
+
+# build random configurations
+# Usage:
+# ARCH=i386 nohup ./extra/scripts/randconfig.sh & sleep 1800 && touch STOP
+#
+# The above builds random i386 configs and automatically stops after 30 minutes
+
+test "x$AWK" = "x" && AWK=awk
+test "x$ARCH" = "x" && ARCH=`uname -m`
+KCONFIG_ALLCONFIG=.config.allconfig
+(echo TARGET_$ARCH=y
+ echo '# UCLIBC_PREGENERATED_LOCALE_DATA is not set'
+ echo '# DOMULTI is not set'
+ echo '# UCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA is not set'
+) > $KCONFIG_ALLCONFIG
+export KCONFIG_ALLCONFIG
+
+if test "x$NCPU" = "x"
+then
+ test -r /proc/cpuinfo && \
+ eval `$AWK 'BEGIN{NCPU=0}
+/processor/{let NCPU++}
+END{if (NCPU<1) {NCPU=1}; print("NCPU="NCPU);}' /proc/cpuinfo` || \
+ NCPU=1
+fi
+MAKELEVEL="-j$NCPU"
+i=0
+while test ! -f STOP
+do
+ ARCH=$ARCH make $* randconfig > /dev/null
+ ARCH=$ARCH make $* silentoldconfig > /dev/null
+ if (make $MAKELEVEL $*) 2>&1 >& mk.log
+ then
+ :
+ else
+ i=`expr $i + 1`
+ num=`printf "%.5d" $i`
+ mv .config FAILED.$num.config
+ mv mk.log FAILED.$num.log
+ fi
+ make distclean > /dev/null || true
+done
+rm -f STOP
diff --git a/ap/build/uClibc/extra/scripts/relative_path.sh b/ap/build/uClibc/extra/scripts/relative_path.sh
new file mode 100755
index 0000000..4dddefa
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/relative_path.sh
@@ -0,0 +1,47 @@
+#! /bin/sh
+#
+# Copyright 2003 Alexandre Oliva <aoliva@redhat.com>
+# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>
+#
+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
+#
+
+# This script computes a relative pathname from $1 to $2
+# They are assumed to not contain . or .. pathname components,
+# but if both directories exist and cd/pwd canonicalizes pathnames,
+# this shouldn't matter. PWD_CMD may be set to some pwd command that does.
+
+from=`(cd $1 > /dev/null && ${PWD_CMD-pwd} || echo $1) 2>/dev/null | sed 's,//*,/,g;s,/*$,,'`
+target=`(cd $2 > /dev/null && ${PWD_CMD-pwd} || echo $2) 2>/dev/null | sed 's,//*,/,g;s,/*$,,'`
+
+case $from in /* | "") ;; *) from=`${PWD_CMD-pwd}`/$from ;; esac
+case $target in /* | "") ;; *) target=`${PWD_CMD-pwd}`/$target ;; esac
+
+case $target in
+"$from" | "$from/"*)
+ dots=`echo $from | sed s,.,.,g`
+ echo $target | sed "s,^$dots/*,,;s,[^/]$,&/,"
+ exit 0
+ ;;
+esac
+
+case $from in
+"$target/"*)
+ dots=`echo $target | sed s,.,.,g`
+ echo $from/ | sed "s,^$dots/*,,;s,[^/]$,&/,;s,[^/]*/*,../,g;s,[^/]$,&/,"
+ exit 0
+ ;;
+esac
+
+# Without trailing slash, from=/usr/lib and target=/uclibc/lib
+# mistakenly concludes that prefix=/u
+#prefix=`echo $from///$target | sed 's,\(\(/[^/]*\)*\).*///\1.*,\1,'`
+prefix=`echo $from///$target | sed 's,\(\(/[^/]*\)*/\).*///\1.*,\1,'`
+dots=`echo $prefix | sed s,.,.,g`
+from=`echo $from | sed "s,^$dots,,"`
+target=`echo $target | sed "s,^$dots,,"`
+
+from=`echo $from | sed 's,[^/][^/]*,..,g;s,.$,&/,'`
+echo ${from}$target/
+
+exit 0
diff --git a/ap/build/uClibc/extra/scripts/relinfo.pl b/ap/build/uClibc/extra/scripts/relinfo.pl
new file mode 100755
index 0000000..ec4a5df
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/relinfo.pl
@@ -0,0 +1,78 @@
+#! /usr/bin/perl
+eval "exec /usr/bin/perl -S $0 $*"
+ if 0;
+# Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 Red Hat, Inc.
+# Written by Ulrich Drepper <drepper@redhat.com>, 2000.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
+
+for ($cnt = 0; $cnt <= $#ARGV; ++$cnt) {
+ $relent = 0;
+ $relsz = 0;
+ $relcount = 0;
+ $pltrelsz = 0;
+ $extplt = 0;
+ $users = 0;
+
+ open (READLINK, "readlink -f $ARGV[$cnt] |") || die "cannot open readlink";
+ while (<READLINK>) {
+ chop;
+ $fullpath = $_;
+ }
+ close (READLINK);
+
+ open (READELF, "eu-readelf -d $ARGV[$cnt] |") || die "cannot open $ARGV[$cnt]";
+ while (<READELF>) {
+ chop;
+ if (/.* RELA?ENT *([0-9]*).*/) {
+ $relent = $1 + 0;
+ } elsif (/.* RELA?SZ *([0-9]*).*/) {
+ $relsz = $1 + 0;
+ } elsif (/.* RELA?COUNT *([0-9]*).*/) {
+ $relcount = $1 + 0;
+ } elsif (/.* PLTRELSZ *([0-9]*).*/) {
+ $pltrelsz = $1 + 0;
+ }
+ }
+ close (READELF);
+
+ open (READELF, "eu-readelf -r $ARGV[$cnt] | sed '/'.gnu.conflict'/,/^\$/d' |") || die "cannot open $ARGV[$cnt]";
+ while (<READELF>) {
+ chop;
+ if (/.*JU?MP_SLOT *0+ .*/) {
+ ++$extplt;
+ }
+ }
+ close (READELF);
+
+ if (open (PRELINK, "/usr/sbin/prelink -p 2>/dev/null | fgrep \"$fullpath\" |")) {
+ while (<PRELINK>) {
+ ++$users;
+ }
+ close(PRELINK);
+ } else {
+ $users = -1;
+ }
+
+ printf ("%s: %d relocations, %d relative (%d%%), %d PLT entries, %d for local syms (%d%%)",
+ $ARGV[$cnt], $relent == 0 ? 0 : $relsz / $relent, $relcount,
+ $relent == 0 ? 0 : ($relcount * 100) / ($relsz / $relent),
+ $relent == 0 ? 0 : $pltrelsz / $relent,
+ $relent == 0 ? 0 : $pltrelsz / $relent - $extplt,
+ $relent == 0 ? 0 : (($pltrelsz / $relent - $extplt) * 100) / ($pltrelsz / $relent));
+ if ($users >= 0) {
+ printf(", %d users", $users);
+ }
+ printf("\n");
+}
diff --git a/ap/build/uClibc/extra/scripts/unifdef.c b/ap/build/uClibc/extra/scripts/unifdef.c
new file mode 100644
index 0000000..56abf89
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/unifdef.c
@@ -0,0 +1,1072 @@
+/*
+ * Copyright (c) 2002 - 2005 Tony Finch <dot@dotat.at>. All rights reserved.
+ *
+ * This code is derived from software contributed to Berkeley by Dave Yost.
+ * It was rewritten to support ANSI C by Tony Finch. The original version of
+ * unifdef carried the following copyright notice. None of its code remains
+ * in this version (though some of the names remain).
+ *
+ * Copyright (c) 1985, 1993
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include <sys/cdefs.h>
+
+#ifndef lint
+#if 0
+static const char copyright[] =
+"@(#) Copyright (c) 1985, 1993\n\
+ The Regents of the University of California. All rights reserved.\n";
+#endif
+#ifdef __IDSTRING
+__IDSTRING(Berkeley, "@(#)unifdef.c 8.1 (Berkeley) 6/6/93");
+__IDSTRING(NetBSD, "$NetBSD: unifdef.c,v 1.8 2000/07/03 02:51:36 matt Exp $");
+__IDSTRING(dotat, "$dotat: things/unifdef.c,v 1.171 2005/03/08 12:38:48 fanf2 Exp $");
+#endif
+#endif /* not lint */
+#ifdef __FBSDID
+__FBSDID("$FreeBSD: /repoman/r/ncvs/src/usr.bin/unifdef/unifdef.c,v 1.20 2005/05/21 09:55:09 ru Exp $");
+#endif
+
+/*
+ * unifdef - remove ifdef'ed lines
+ *
+ * Wishlist:
+ * provide an option which will append the name of the
+ * appropriate symbol after #else's and #endif's
+ * provide an option which will check symbols after
+ * #else's and #endif's to see that they match their
+ * corresponding #ifdef or #ifndef
+ *
+ * The first two items above require better buffer handling, which would
+ * also make it possible to handle all "dodgy" directives correctly.
+ */
+
+#include <errno.h>
+#include <ctype.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+/* Avoid err.h since uClibc can disable these things */
+#define vwarnx(fmt, args) ({ fprintf(stderr, "unifdef: "); vfprintf(stderr, fmt, args); fprintf(stderr, "\n"); })
+#define warnx(fmt, args...) fprintf(stderr, "unifdef: " fmt "\n", ## args)
+#define errx(exit_code, fmt, args...) ({ warnx(fmt, ## args); exit(exit_code); })
+#define err(exit_code, fmt, args...) errx(exit_code, fmt ": %s", ## args, strerror(errno))
+
+/* types of input lines: */
+typedef enum {
+ LT_TRUEI, /* a true #if with ignore flag */
+ LT_FALSEI, /* a false #if with ignore flag */
+ LT_IF, /* an unknown #if */
+ LT_TRUE, /* a true #if */
+ LT_FALSE, /* a false #if */
+ LT_ELIF, /* an unknown #elif */
+ LT_ELTRUE, /* a true #elif */
+ LT_ELFALSE, /* a false #elif */
+ LT_ELSE, /* #else */
+ LT_ENDIF, /* #endif */
+ LT_DODGY, /* flag: directive is not on one line */
+ LT_DODGY_LAST = LT_DODGY + LT_ENDIF,
+ LT_PLAIN, /* ordinary line */
+ LT_EOF, /* end of file */
+ LT_COUNT
+} Linetype;
+
+static char const * const linetype_name[] = {
+ "TRUEI", "FALSEI", "IF", "TRUE", "FALSE",
+ "ELIF", "ELTRUE", "ELFALSE", "ELSE", "ENDIF",
+ "DODGY TRUEI", "DODGY FALSEI",
+ "DODGY IF", "DODGY TRUE", "DODGY FALSE",
+ "DODGY ELIF", "DODGY ELTRUE", "DODGY ELFALSE",
+ "DODGY ELSE", "DODGY ENDIF",
+ "PLAIN", "EOF"
+};
+
+/* state of #if processing */
+typedef enum {
+ IS_OUTSIDE,
+ IS_FALSE_PREFIX, /* false #if followed by false #elifs */
+ IS_TRUE_PREFIX, /* first non-false #(el)if is true */
+ IS_PASS_MIDDLE, /* first non-false #(el)if is unknown */
+ IS_FALSE_MIDDLE, /* a false #elif after a pass state */
+ IS_TRUE_MIDDLE, /* a true #elif after a pass state */
+ IS_PASS_ELSE, /* an else after a pass state */
+ IS_FALSE_ELSE, /* an else after a true state */
+ IS_TRUE_ELSE, /* an else after only false states */
+ IS_FALSE_TRAILER, /* #elifs after a true are false */
+ IS_COUNT
+} Ifstate;
+
+static char const * const ifstate_name[] = {
+ "OUTSIDE", "FALSE_PREFIX", "TRUE_PREFIX",
+ "PASS_MIDDLE", "FALSE_MIDDLE", "TRUE_MIDDLE",
+ "PASS_ELSE", "FALSE_ELSE", "TRUE_ELSE",
+ "FALSE_TRAILER"
+};
+
+/* state of comment parser */
+typedef enum {
+ NO_COMMENT = false, /* outside a comment */
+ C_COMMENT, /* in a comment like this one */
+ CXX_COMMENT, /* between // and end of line */
+ STARTING_COMMENT, /* just after slash-backslash-newline */
+ FINISHING_COMMENT, /* star-backslash-newline in a C comment */
+ CHAR_LITERAL, /* inside '' */
+ STRING_LITERAL /* inside "" */
+} Comment_state;
+
+static char const * const comment_name[] = {
+ "NO", "C", "CXX", "STARTING", "FINISHING", "CHAR", "STRING"
+};
+
+/* state of preprocessor line parser */
+typedef enum {
+ LS_START, /* only space and comments on this line */
+ LS_HASH, /* only space, comments, and a hash */
+ LS_DIRTY /* this line can't be a preprocessor line */
+} Line_state;
+
+static char const * const linestate_name[] = {
+ "START", "HASH", "DIRTY"
+};
+
+/*
+ * Minimum translation limits from ISO/IEC 9899:1999 5.2.4.1
+ */
+#define MAXDEPTH 64 /* maximum #if nesting */
+#define MAXLINE 4096 /* maximum length of line */
+#define MAXSYMS 4096 /* maximum number of symbols */
+
+/*
+ * Sometimes when editing a keyword the replacement text is longer, so
+ * we leave some space at the end of the tline buffer to accommodate this.
+ */
+#define EDITSLOP 10
+
+/*
+ * Globals.
+ */
+
+static bool complement; /* -c: do the complement */
+static bool debugging; /* -d: debugging reports */
+static bool iocccok; /* -e: fewer IOCCC errors */
+static bool killconsts; /* -k: eval constant #ifs */
+static bool lnblank; /* -l: blank deleted lines */
+static bool lnnum; /* -n: add #line directives */
+static bool symlist; /* -s: output symbol list */
+static bool text; /* -t: this is a text file */
+
+static const char *symname[MAXSYMS]; /* symbol name */
+static const char *value[MAXSYMS]; /* -Dsym=value */
+static bool ignore[MAXSYMS]; /* -iDsym or -iUsym */
+static int nsyms; /* number of symbols */
+
+static FILE *input; /* input file pointer */
+static const char *filename; /* input file name */
+static int linenum; /* current line number */
+
+static char tline[MAXLINE+EDITSLOP];/* input buffer plus space */
+static char *keyword; /* used for editing #elif's */
+
+static Comment_state incomment; /* comment parser state */
+static Line_state linestate; /* #if line parser state */
+static Ifstate ifstate[MAXDEPTH]; /* #if processor state */
+static bool ignoring[MAXDEPTH]; /* ignore comments state */
+static int stifline[MAXDEPTH]; /* start of current #if */
+static int depth; /* current #if nesting */
+static int delcount; /* count of deleted lines */
+static bool keepthis; /* don't delete constant #if */
+
+static int exitstat; /* program exit status */
+
+static void addsym(bool, bool, char *);
+static void debug(const char *, ...);
+static void done(void);
+static void error(const char *);
+static int findsym(const char *);
+static void flushline(bool);
+static Linetype get_line(void);
+static Linetype ifeval(const char **);
+static void ignoreoff(void);
+static void ignoreon(void);
+static void keywordedit(const char *);
+static void nest(void);
+static void process(void);
+static const char *skipcomment(const char *);
+static const char *skipsym(const char *);
+static void state(Ifstate);
+static int strlcmp(const char *, const char *, size_t);
+static void unnest(void);
+static void usage(void);
+
+#define endsym(c) (!isalpha((unsigned char)c) && !isdigit((unsigned char)c) && c != '_')
+
+/*
+ * The main program.
+ */
+int
+main(int argc, char *argv[])
+{
+ int opt;
+
+ while ((opt = getopt(argc, argv, "i:D:U:I:cdeklnst")) != -1)
+ switch (opt) {
+ case 'i': /* treat stuff controlled by these symbols as text */
+ /*
+ * For strict backwards-compatibility the U or D
+ * should be immediately after the -i but it doesn't
+ * matter much if we relax that requirement.
+ */
+ opt = *optarg++;
+ if (opt == 'D')
+ addsym(true, true, optarg);
+ else if (opt == 'U')
+ addsym(true, false, optarg);
+ else
+ usage();
+ break;
+ case 'D': /* define a symbol */
+ addsym(false, true, optarg);
+ break;
+ case 'U': /* undef a symbol */
+ addsym(false, false, optarg);
+ break;
+ case 'I':
+ /* no-op for compatibility with cpp */
+ break;
+ case 'c': /* treat -D as -U and vice versa */
+ complement = true;
+ break;
+ case 'd':
+ debugging = true;
+ break;
+ case 'e': /* fewer errors from dodgy lines */
+ iocccok = true;
+ break;
+ case 'k': /* process constant #ifs */
+ killconsts = true;
+ break;
+ case 'l': /* blank deleted lines instead of omitting them */
+ lnblank = true;
+ break;
+ case 'n': /* add #line directive after deleted lines */
+ lnnum = true;
+ break;
+ case 's': /* only output list of symbols that control #ifs */
+ symlist = true;
+ break;
+ case 't': /* don't parse C comments */
+ text = true;
+ break;
+ default:
+ usage();
+ }
+ argc -= optind;
+ argv += optind;
+ if (argc > 1) {
+ errx(2, "can only do one file");
+ } else if (argc == 1 && strcmp(*argv, "-") != 0) {
+ filename = *argv;
+ input = fopen(filename, "r");
+ if (input == NULL)
+ err(2, "can't open %s", filename);
+ } else {
+ filename = "[stdin]";
+ input = stdin;
+ }
+ process();
+ debug("bug at line %d", __LINE__);
+ abort(); /* bug */
+}
+
+static void
+usage(void)
+{
+ fprintf(stderr, "usage: unifdef [-cdeklnst] [-Ipath]"
+ " [-Dsym[=val]] [-Usym] [-iDsym[=val]] [-iUsym] ... [file]\n");
+ exit(2);
+}
+
+/*
+ * A state transition function alters the global #if processing state
+ * in a particular way. The table below is indexed by the current
+ * processing state and the type of the current line.
+ *
+ * Nesting is handled by keeping a stack of states; some transition
+ * functions increase or decrease the depth. They also maintain the
+ * ignore state on a stack. In some complicated cases they have to
+ * alter the preprocessor directive, as follows.
+ *
+ * When we have processed a group that starts off with a known-false
+ * #if/#elif sequence (which has therefore been deleted) followed by a
+ * #elif that we don't understand and therefore must keep, we edit the
+ * latter into a #if to keep the nesting correct.
+ *
+ * When we find a true #elif in a group, the following block will
+ * always be kept and the rest of the sequence after the next #elif or
+ * #else will be discarded. We edit the #elif into a #else and the
+ * following directive to #endif since this has the desired behaviour.
+ *
+ * "Dodgy" directives are split across multiple lines, the most common
+ * example being a multi-line comment hanging off the right of the
+ * directive. We can handle them correctly only if there is no change
+ * from printing to dropping (or vice versa) caused by that directive.
+ * If the directive is the first of a group we have a choice between
+ * failing with an error, or passing it through unchanged instead of
+ * evaluating it. The latter is not the default to avoid questions from
+ * users about unifdef unexpectedly leaving behind preprocessor directives.
+ */
+typedef void state_fn(void);
+
+/* report an error */
+static void Eelif (void) { error("Inappropriate #elif"); }
+static void Eelse (void) { error("Inappropriate #else"); }
+static void Eendif(void) { error("Inappropriate #endif"); }
+static void Eeof (void) { error("Premature EOF"); }
+static void Eioccc(void) { error("Obfuscated preprocessor control line"); }
+/* plain line handling */
+static void print (void) { flushline(true); }
+static void drop (void) { flushline(false); }
+/* output lacks group's start line */
+static void Strue (void) { drop(); ignoreoff(); state(IS_TRUE_PREFIX); }
+static void Sfalse(void) { drop(); ignoreoff(); state(IS_FALSE_PREFIX); }
+static void Selse (void) { drop(); state(IS_TRUE_ELSE); }
+/* print/pass this block */
+static void Pelif (void) { print(); ignoreoff(); state(IS_PASS_MIDDLE); }
+static void Pelse (void) { print(); state(IS_PASS_ELSE); }
+static void Pendif(void) { print(); unnest(); }
+/* discard this block */
+static void Dfalse(void) { drop(); ignoreoff(); state(IS_FALSE_TRAILER); }
+static void Delif (void) { drop(); ignoreoff(); state(IS_FALSE_MIDDLE); }
+static void Delse (void) { drop(); state(IS_FALSE_ELSE); }
+static void Dendif(void) { drop(); unnest(); }
+/* first line of group */
+static void Fdrop (void) { nest(); Dfalse(); }
+static void Fpass (void) { nest(); Pelif(); }
+static void Ftrue (void) { nest(); Strue(); }
+static void Ffalse(void) { nest(); Sfalse(); }
+/* variable pedantry for obfuscated lines */
+static void Oiffy (void) { if (!iocccok) Eioccc(); Fpass(); ignoreon(); }
+static void Oif (void) { if (!iocccok) Eioccc(); Fpass(); }
+static void Oelif (void) { if (!iocccok) Eioccc(); Pelif(); }
+/* ignore comments in this block */
+static void Idrop (void) { Fdrop(); ignoreon(); }
+static void Itrue (void) { Ftrue(); ignoreon(); }
+static void Ifalse(void) { Ffalse(); ignoreon(); }
+/* edit this line */
+static void Mpass (void) { strncpy(keyword, "if ", 4); Pelif(); }
+static void Mtrue (void) { keywordedit("else\n"); state(IS_TRUE_MIDDLE); }
+static void Melif (void) { keywordedit("endif\n"); state(IS_FALSE_TRAILER); }
+static void Melse (void) { keywordedit("endif\n"); state(IS_FALSE_ELSE); }
+
+static state_fn * const trans_table[IS_COUNT][LT_COUNT] = {
+/* IS_OUTSIDE */
+{ Itrue, Ifalse,Fpass, Ftrue, Ffalse,Eelif, Eelif, Eelif, Eelse, Eendif,
+ Oiffy, Oiffy, Fpass, Oif, Oif, Eelif, Eelif, Eelif, Eelse, Eendif,
+ print, done },
+/* IS_FALSE_PREFIX */
+{ Idrop, Idrop, Fdrop, Fdrop, Fdrop, Mpass, Strue, Sfalse,Selse, Dendif,
+ Idrop, Idrop, Fdrop, Fdrop, Fdrop, Mpass, Eioccc,Eioccc,Eioccc,Eioccc,
+ drop, Eeof },
+/* IS_TRUE_PREFIX */
+{ Itrue, Ifalse,Fpass, Ftrue, Ffalse,Dfalse,Dfalse,Dfalse,Delse, Dendif,
+ Oiffy, Oiffy, Fpass, Oif, Oif, Eioccc,Eioccc,Eioccc,Eioccc,Eioccc,
+ print, Eeof },
+/* IS_PASS_MIDDLE */
+{ Itrue, Ifalse,Fpass, Ftrue, Ffalse,Pelif, Mtrue, Delif, Pelse, Pendif,
+ Oiffy, Oiffy, Fpass, Oif, Oif, Pelif, Oelif, Oelif, Pelse, Pendif,
+ print, Eeof },
+/* IS_FALSE_MIDDLE */
+{ Idrop, Idrop, Fdrop, Fdrop, Fdrop, Pelif, Mtrue, Delif, Pelse, Pendif,
+ Idrop, Idrop, Fdrop, Fdrop, Fdrop, Eioccc,Eioccc,Eioccc,Eioccc,Eioccc,
+ drop, Eeof },
+/* IS_TRUE_MIDDLE */
+{ Itrue, Ifalse,Fpass, Ftrue, Ffalse,Melif, Melif, Melif, Melse, Pendif,
+ Oiffy, Oiffy, Fpass, Oif, Oif, Eioccc,Eioccc,Eioccc,Eioccc,Pendif,
+ print, Eeof },
+/* IS_PASS_ELSE */
+{ Itrue, Ifalse,Fpass, Ftrue, Ffalse,Eelif, Eelif, Eelif, Eelse, Pendif,
+ Oiffy, Oiffy, Fpass, Oif, Oif, Eelif, Eelif, Eelif, Eelse, Pendif,
+ print, Eeof },
+/* IS_FALSE_ELSE */
+{ Idrop, Idrop, Fdrop, Fdrop, Fdrop, Eelif, Eelif, Eelif, Eelse, Dendif,
+ Idrop, Idrop, Fdrop, Fdrop, Fdrop, Eelif, Eelif, Eelif, Eelse, Eioccc,
+ drop, Eeof },
+/* IS_TRUE_ELSE */
+{ Itrue, Ifalse,Fpass, Ftrue, Ffalse,Eelif, Eelif, Eelif, Eelse, Dendif,
+ Oiffy, Oiffy, Fpass, Oif, Oif, Eelif, Eelif, Eelif, Eelse, Eioccc,
+ print, Eeof },
+/* IS_FALSE_TRAILER */
+{ Idrop, Idrop, Fdrop, Fdrop, Fdrop, Dfalse,Dfalse,Dfalse,Delse, Dendif,
+ Idrop, Idrop, Fdrop, Fdrop, Fdrop, Dfalse,Dfalse,Dfalse,Delse, Eioccc,
+ drop, Eeof }
+/*TRUEI FALSEI IF TRUE FALSE ELIF ELTRUE ELFALSE ELSE ENDIF
+ TRUEI FALSEI IF TRUE FALSE ELIF ELTRUE ELFALSE ELSE ENDIF (DODGY)
+ PLAIN EOF */
+};
+
+/*
+ * State machine utility functions
+ */
+static void
+done(void)
+{
+ if (incomment)
+ error("EOF in comment");
+ exit(exitstat);
+}
+static void
+ignoreoff(void)
+{
+ if (depth == 0) {
+ debug("bug at line %d", __LINE__);
+ abort(); /* bug */
+ }
+ ignoring[depth] = ignoring[depth-1];
+}
+static void
+ignoreon(void)
+{
+ ignoring[depth] = true;
+}
+static void
+keywordedit(const char *replacement)
+{
+ size_t size = tline + sizeof(tline) - keyword;
+ char *dst = keyword;
+ const char *src = replacement;
+ if (size != 0) {
+ while ((--size != 0) && (*src != '\0'))
+ *dst++ = *src++;
+ *dst = '\0';
+ }
+ print();
+}
+static void
+nest(void)
+{
+ depth += 1;
+ if (depth >= MAXDEPTH)
+ error("Too many levels of nesting");
+ stifline[depth] = linenum;
+}
+static void
+unnest(void)
+{
+ if (depth == 0) {
+ debug("bug at line %d", __LINE__);
+ abort(); /* bug */
+ }
+ depth -= 1;
+}
+static void
+state(Ifstate is)
+{
+ ifstate[depth] = is;
+}
+
+/*
+ * Write a line to the output or not, according to command line options.
+ */
+static void
+flushline(bool keep)
+{
+ if (symlist)
+ return;
+ if (keep ^ complement) {
+ if (lnnum && delcount > 0)
+ printf("#line %d\n", linenum);
+ fputs(tline, stdout);
+ delcount = 0;
+ } else {
+ if (lnblank)
+ putc('\n', stdout);
+ exitstat = 1;
+ delcount += 1;
+ }
+}
+
+/*
+ * The driver for the state machine.
+ */
+static void
+process(void)
+{
+ Linetype lineval;
+
+ for (;;) {
+ linenum++;
+ lineval = get_line();
+ trans_table[ifstate[depth]][lineval]();
+ debug("process %s -> %s depth %d",
+ linetype_name[lineval],
+ ifstate_name[ifstate[depth]], depth);
+ }
+}
+
+/*
+ * Parse a line and determine its type. We keep the preprocessor line
+ * parser state between calls in the global variable linestate, with
+ * help from skipcomment().
+ */
+static Linetype
+get_line(void)
+{
+ const char *cp;
+ int cursym;
+ int kwlen;
+ Linetype retval;
+ Comment_state wascomment;
+
+ if (fgets(tline, MAXLINE, input) == NULL)
+ return (LT_EOF);
+ retval = LT_PLAIN;
+ wascomment = incomment;
+ cp = skipcomment(tline);
+ if (linestate == LS_START) {
+ if (*cp == '#') {
+ linestate = LS_HASH;
+ cp = skipcomment(cp + 1);
+ } else if (*cp != '\0')
+ linestate = LS_DIRTY;
+ }
+ if (!incomment && linestate == LS_HASH) {
+ keyword = tline + (cp - tline);
+ cp = skipsym(cp);
+ kwlen = cp - keyword;
+ /* no way can we deal with a continuation inside a keyword */
+ if (strncmp(cp, "\\\n", 2) == 0)
+ Eioccc();
+ if (strlcmp("ifdef", keyword, kwlen) == 0 ||
+ strlcmp("ifndef", keyword, kwlen) == 0) {
+ cp = skipcomment(cp);
+ if ((cursym = findsym(cp)) < 0)
+ retval = LT_IF;
+ else {
+ retval = (keyword[2] == 'n')
+ ? LT_FALSE : LT_TRUE;
+ if (value[cursym] == NULL)
+ retval = (retval == LT_TRUE)
+ ? LT_FALSE : LT_TRUE;
+ if (ignore[cursym])
+ retval = (retval == LT_TRUE)
+ ? LT_TRUEI : LT_FALSEI;
+ }
+ cp = skipsym(cp);
+ } else if (strlcmp("if", keyword, kwlen) == 0)
+ retval = ifeval(&cp);
+ else if (strlcmp("elif", keyword, kwlen) == 0)
+ retval = ifeval(&cp) - LT_IF + LT_ELIF;
+ else if (strlcmp("else", keyword, kwlen) == 0)
+ retval = LT_ELSE;
+ else if (strlcmp("endif", keyword, kwlen) == 0)
+ retval = LT_ENDIF;
+ else {
+ linestate = LS_DIRTY;
+ retval = LT_PLAIN;
+ }
+ cp = skipcomment(cp);
+ if (*cp != '\0') {
+ linestate = LS_DIRTY;
+ if (retval == LT_TRUE || retval == LT_FALSE ||
+ retval == LT_TRUEI || retval == LT_FALSEI)
+ retval = LT_IF;
+ if (retval == LT_ELTRUE || retval == LT_ELFALSE)
+ retval = LT_ELIF;
+ }
+ if (retval != LT_PLAIN && (wascomment || incomment)) {
+ retval += LT_DODGY;
+ if (incomment)
+ linestate = LS_DIRTY;
+ }
+ /* skipcomment should have changed the state */
+// Hmm hppens sometimes on valid files
+// if (linestate == LS_HASH) {
+// debug("bug at line %d", __LINE__);
+// abort(); /* bug */
+// }
+ }
+ if (linestate == LS_DIRTY) {
+ while (*cp != '\0')
+ cp = skipcomment(cp + 1);
+ }
+ debug("parser %s comment %s line",
+ comment_name[incomment], linestate_name[linestate]);
+ return (retval);
+}
+
+/*
+ * These are the binary operators that are supported by the expression
+ * evaluator. Note that if support for division is added then we also
+ * need short-circuiting booleans because of divide-by-zero.
+ */
+static int op_lt(int a, int b) { return (a < b); }
+static int op_gt(int a, int b) { return (a > b); }
+static int op_le(int a, int b) { return (a <= b); }
+static int op_ge(int a, int b) { return (a >= b); }
+static int op_eq(int a, int b) { return (a == b); }
+static int op_ne(int a, int b) { return (a != b); }
+static int op_or(int a, int b) { return (a || b); }
+static int op_and(int a, int b) { return (a && b); }
+
+/*
+ * An evaluation function takes three arguments, as follows: (1) a pointer to
+ * an element of the precedence table which lists the operators at the current
+ * level of precedence; (2) a pointer to an integer which will receive the
+ * value of the expression; and (3) a pointer to a char* that points to the
+ * expression to be evaluated and that is updated to the end of the expression
+ * when evaluation is complete. The function returns LT_FALSE if the value of
+ * the expression is zero, LT_TRUE if it is non-zero, or LT_IF if the
+ * expression could not be evaluated.
+ */
+struct ops;
+
+typedef Linetype eval_fn(const struct ops *, int *, const char **);
+
+static eval_fn eval_table, eval_unary;
+
+/*
+ * The precedence table. Expressions involving binary operators are evaluated
+ * in a table-driven way by eval_table. When it evaluates a subexpression it
+ * calls the inner function with its first argument pointing to the next
+ * element of the table. Innermost expressions have special non-table-driven
+ * handling.
+ */
+static const struct ops {
+ eval_fn *inner;
+ struct op {
+ const char *str;
+ int short_circuit_val;
+ int (*fn)(int, int);
+ } op[5];
+} eval_ops[] = {
+ { eval_table, { { "||", 1, op_or } } },
+ { eval_table, { { "&&", 0, op_and } } },
+ { eval_table, { { "==", -1, op_eq },
+ { "!=", -1, op_ne } } },
+ { eval_unary, { { "<=", -1, op_le },
+ { ">=", -1, op_ge },
+ { "<", -1, op_lt },
+ { ">", -1, op_gt } } }
+};
+
+/*
+ * Function for evaluating the innermost parts of expressions, viz.
+ * "!expr", "(expr)", "defined(symbol)", "defined symbol", "symbol", "number".
+ * We reset the keepthis flag when we find a non-constant subexpression.
+ */
+// TODO: we use LT_IF both as "I don't know whether it's false or true"
+// (example: "#if defined FOO") and when we see syntax error
+// (example: "#if (1 || 2" - no closing paren!), but this is wrong.
+// Binary && and || need to distinguish these cases in order to handle this:
+// "#if defined KNOWN_UNDEFINED && FOO" - discard
+// "#if defined KNOWN_UNDEFINED && (syntax_error_here" - do not discard!
+static Linetype
+eval_unary(const struct ops *ops, int *valp, const char **cpp)
+{
+ const char *cp;
+ char *ep;
+ int sym;
+
+ cp = skipcomment(*cpp);
+ if (*cp == '!') {
+ debug("eval%d !", ops - eval_ops);
+ cp++;
+ if (eval_unary(ops, valp, &cp) == LT_IF) {
+ *cpp = cp;
+ return (LT_IF);
+ }
+ *valp = !*valp;
+
+ } else if (*cp == '(') {
+ Linetype expr_res;
+
+ cp++;
+ debug("eval%d (%s", ops - eval_ops, cp);
+ expr_res = eval_table(eval_ops, valp, &cp);
+ cp = skipcomment(cp);
+ *cpp = cp;
+ if (*cp++ != ')')
+ return (LT_IF);
+ *cpp = cp;
+ if (expr_res == LT_IF)
+ return (LT_IF);
+
+ } else if (isdigit((unsigned char)*cp)) {
+ debug("eval%d number", ops - eval_ops);
+ *valp = strtol(cp, &ep, 0);
+ cp = skipsym(cp);
+
+ } else if (strncmp(cp, "defined", 7) == 0 && endsym(cp[7])) {
+ bool parens;
+
+ cp = skipcomment(cp+7);
+ debug("eval%d defined '%s'", ops - eval_ops, cp);
+ parens = (*cp == '(');
+ if (parens)
+ cp = skipcomment(cp+1);
+ sym = findsym(cp);
+ cp = skipsym(cp);
+ cp = skipcomment(cp);
+ if (parens) {
+ if (*cp != ')')
+ return (LT_IF);
+ cp = skipcomment(cp+1);
+ }
+ *cpp = cp;
+ if (sym < 0) {
+ debug("sym not found, returning LT_IF");
+ return (LT_IF);
+ }
+ *valp = (value[sym] != NULL);
+ keepthis = false;
+
+ } else if (!endsym(*cp)) {
+ debug("eval%d symbol", ops - eval_ops);
+ sym = findsym(cp);
+ cp = skipsym(cp);
+ *cpp = cp;
+ if (sym < 0)
+ return (LT_IF);
+ if (value[sym] == NULL)
+ *valp = 0;
+ else {
+ *valp = strtol(value[sym], &ep, 0);
+ if (*ep != '\0' || ep == value[sym])
+ return (LT_IF);
+ }
+ keepthis = false;
+
+ } else {
+ debug("eval%d bad expr", ops - eval_ops);
+ return (LT_IF);
+ }
+
+ *cpp = cp;
+ debug("eval%d = %d", ops - eval_ops, *valp);
+ return (*valp ? LT_TRUE : LT_FALSE);
+}
+
+/*
+ * Table-driven evaluation of binary operators.
+ */
+static Linetype
+eval_table(const struct ops *ops, int *valp, const char **cpp)
+{
+ Linetype left_side;
+ const struct op *op;
+ const char *cp;
+ int val;
+
+ debug("eval%d '%s'", ops - eval_ops, *cpp);
+ left_side = ops->inner(ops+1, valp, cpp);
+ cp = *cpp;
+
+ for (;;) {
+ Linetype right_side;
+
+ cp = skipcomment(cp);
+ for (op = ops->op; op->str != NULL; op++)
+ if (strncmp(cp, op->str, strlen(op->str)) == 0)
+ break;
+ if (op->str == NULL)
+ break;
+ cp += strlen(op->str);
+ debug("eval%d '%s'", ops - eval_ops, op->str);
+ right_side = ops->inner(ops+1, &val, &cp);
+ *cpp = cp;
+
+ /* If short_circuit_val is 0 or 1, we can ignore
+ * right side if left size is known, and its value
+ * (i.e., *valp) is 0 or !0, respectively */
+ if (left_side != LT_IF && op->short_circuit_val == !!*valp) {
+ debug("op->short_circuit_val:%d *valp:%d cp:'%s'",
+ op->short_circuit_val, *valp, cp);
+ *valp = !!*valp;
+ break;
+ }
+ /* Same for the right side */
+ if (right_side != LT_IF && op->short_circuit_val == !!val) {
+ debug("op->short_circuit_val:%d val:%d cp:'%s'",
+ op->short_circuit_val, val, cp);
+ left_side = right_side;
+ *valp = !!val;
+ break;
+ }
+
+ if (left_side == LT_IF || right_side == LT_IF)
+ return (LT_IF);
+ *valp = op->fn(*valp, val);
+ left_side = right_side;
+ }
+
+ debug("eval%d = %d LT_IF:%d", ops - eval_ops, *valp, (left_side == LT_IF));
+ if (left_side == LT_IF)
+ return (LT_IF);
+ return (*valp ? LT_TRUE : LT_FALSE);
+}
+
+/*
+ * Evaluate the expression on a #if or #elif line. If we can work out
+ * the result we return LT_TRUE or LT_FALSE accordingly, otherwise we
+ * return just a generic LT_IF.
+ */
+static Linetype
+ifeval(const char **cpp)
+{
+ int ret;
+ int val;
+
+ debug("eval %s", *cpp);
+ keepthis = killconsts ? false : true;
+ ret = eval_table(eval_ops, &val, cpp);
+ debug("val:%d ret:%d keepthis:%d", val, ret, keepthis);
+ return (keepthis ? LT_IF : ret);
+}
+
+/*
+ * Skip over comments, strings, and character literals and stop at the
+ * next character position that is not whitespace. Between calls we keep
+ * the comment state in the global variable incomment, and we also adjust
+ * the global variable linestate when we see a newline.
+ * XXX: doesn't cope with the buffer splitting inside a state transition.
+ */
+static const char *
+skipcomment(const char *cp)
+{
+ if (text || ignoring[depth]) {
+ for (; isspace((unsigned char)*cp); cp++)
+ if (*cp == '\n')
+ linestate = LS_START;
+ return (cp);
+ }
+ while (*cp != '\0')
+ /* don't reset to LS_START after a line continuation */
+ if (strncmp(cp, "\\\n", 2) == 0)
+ cp += 2;
+ else switch (incomment) {
+ case NO_COMMENT:
+ if (strncmp(cp, "/\\\n", 3) == 0) {
+ incomment = STARTING_COMMENT;
+ cp += 3;
+ } else if (strncmp(cp, "/*", 2) == 0) {
+ incomment = C_COMMENT;
+ cp += 2;
+ } else if (strncmp(cp, "//", 2) == 0) {
+ incomment = CXX_COMMENT;
+ cp += 2;
+ } else if (strncmp(cp, "\'", 1) == 0) {
+ incomment = CHAR_LITERAL;
+ linestate = LS_DIRTY;
+ cp += 1;
+ } else if (strncmp(cp, "\"", 1) == 0) {
+ incomment = STRING_LITERAL;
+ linestate = LS_DIRTY;
+ cp += 1;
+ } else if (strncmp(cp, "\n", 1) == 0) {
+ linestate = LS_START;
+ cp += 1;
+ } else if (strchr(" \t", *cp) != NULL) {
+ cp += 1;
+ } else
+ return (cp);
+ continue;
+ case CXX_COMMENT:
+ if (strncmp(cp, "\n", 1) == 0) {
+ incomment = NO_COMMENT;
+ linestate = LS_START;
+ }
+ cp += 1;
+ continue;
+ case CHAR_LITERAL:
+ case STRING_LITERAL:
+ if ((incomment == CHAR_LITERAL && cp[0] == '\'') ||
+ (incomment == STRING_LITERAL && cp[0] == '\"')) {
+ incomment = NO_COMMENT;
+ cp += 1;
+ } else if (cp[0] == '\\') {
+ if (cp[1] == '\0')
+ cp += 1;
+ else
+ cp += 2;
+ } else if (strncmp(cp, "\n", 1) == 0) {
+ if (incomment == CHAR_LITERAL)
+ error("unterminated char literal");
+ else
+ error("unterminated string literal");
+ } else
+ cp += 1;
+ continue;
+ case C_COMMENT:
+ if (strncmp(cp, "*\\\n", 3) == 0) {
+ incomment = FINISHING_COMMENT;
+ cp += 3;
+ } else if (strncmp(cp, "*/", 2) == 0) {
+ incomment = NO_COMMENT;
+ cp += 2;
+ } else
+ cp += 1;
+ continue;
+ case STARTING_COMMENT:
+ if (*cp == '*') {
+ incomment = C_COMMENT;
+ cp += 1;
+ } else if (*cp == '/') {
+ incomment = CXX_COMMENT;
+ cp += 1;
+ } else {
+ incomment = NO_COMMENT;
+ linestate = LS_DIRTY;
+ }
+ continue;
+ case FINISHING_COMMENT:
+ if (*cp == '/') {
+ incomment = NO_COMMENT;
+ cp += 1;
+ } else
+ incomment = C_COMMENT;
+ continue;
+ default:
+ debug("bug at line %d", __LINE__);
+ abort(); /* bug */
+ }
+ return (cp);
+}
+
+/*
+ * Skip over an identifier.
+ */
+static const char *
+skipsym(const char *cp)
+{
+ while (!endsym(*cp))
+ ++cp;
+ return (cp);
+}
+
+/*
+ * Look for the symbol in the symbol table. If is is found, we return
+ * the symbol table index, else we return -1.
+ */
+static int
+findsym(const char *str)
+{
+ const char *cp;
+ int symind;
+
+ cp = skipsym(str);
+ if (cp == str)
+ return (-1);
+ if (symlist) {
+ printf("%.*s\n", (int)(cp-str), str);
+ /* we don't care about the value of the symbol */
+ return (0);
+ }
+ for (symind = 0; symind < nsyms; ++symind) {
+ if (strlcmp(symname[symind], str, cp-str) == 0) {
+ debug("findsym %s %s", symname[symind],
+ value[symind] ? value[symind] : "");
+ return (symind);
+ }
+ }
+ return (-1);
+}
+
+/*
+ * Add a symbol to the symbol table.
+ */
+static void
+addsym(bool ignorethis, bool definethis, char *sym)
+{
+ int symind;
+ char *val;
+
+ symind = findsym(sym);
+ if (symind < 0) {
+ if (nsyms >= MAXSYMS)
+ errx(2, "too many symbols");
+ symind = nsyms++;
+ }
+ symname[symind] = sym;
+ ignore[symind] = ignorethis;
+ val = sym + (skipsym(sym) - sym);
+ if (definethis) {
+ if (*val == '=') {
+ value[symind] = val+1;
+ *val = '\0';
+ } else if (*val == '\0')
+ value[symind] = "";
+ else
+ usage();
+ } else {
+ if (*val != '\0')
+ usage();
+ value[symind] = NULL;
+ }
+}
+
+/*
+ * Compare s with n characters of t.
+ * The same as strncmp() except that it checks that s[n] == '\0'.
+ */
+static int
+strlcmp(const char *s, const char *t, size_t n)
+{
+ while (n-- && *t != '\0')
+ if (*s != *t)
+ return ((unsigned char)*s - (unsigned char)*t);
+ else
+ ++s, ++t;
+ return ((unsigned char)*s);
+}
+
+/*
+ * Diagnostics.
+ */
+static void
+debug(const char *msg, ...)
+{
+ va_list ap;
+
+ if (debugging) {
+ va_start(ap, msg);
+ vwarnx(msg, ap);
+ va_end(ap);
+ }
+}
+
+static void
+error(const char *msg)
+{
+ if (depth == 0)
+ warnx("%s: %d: %s", filename, linenum, msg);
+ else
+ warnx("%s: %d: %s (#if line %d depth %d)",
+ filename, linenum, msg, stifline[depth], depth);
+ errx(2, "output may be truncated");
+}
diff --git a/ap/build/uClibc/extra/scripts/unifdef.test b/ap/build/uClibc/extra/scripts/unifdef.test
new file mode 100644
index 0000000..5ba4e48
--- /dev/null
+++ b/ap/build/uClibc/extra/scripts/unifdef.test
@@ -0,0 +1,67 @@
+Run me through unifdef -UA
+*** Nothing should be visible here:
+#if defined A && defined B
+hello world
+#endif
+#if defined A && B
+hello world
+#endif
+#if defined A && 1
+hello world
+#endif
+#if defined A && (1 > 0)
+hello world
+#endif
+#if defined B && defined A
+hello world
+#endif
+#if B && defined A
+hello world
+#endif
+#if 1 && defined A
+hello world
+#endif
+#if (1 > 0) && defined A
+hello world
+#endif
+#if defined A && (defined FOO || defined BAR)
+hello world
+#endif
+#if (defined FOO || defined BAR) && defined A
+hello world
+#endif
+
+*** Everything should be visible here, but #if/#endif removed:
+#if defined B || !defined A
+hello world 1
+#endif
+#if !defined A || defined B
+hello world 2 (last)
+#endif
+
+*** This should be unchanged (#if/#endif not removed):
+#if defined A || defined B
+I am here 1
+#endif
+#if defined B || defined A
+I am here 2
+#endif
+I am here 3
+#if !defined FOO && !defined BAR \
+ && !defined BAZ
+# error "I am here 4"
+#endif
+I am here 5
+#if (!defined FOO \
+ && (defined BAR || defined BAZ \
+ || defined XYZ))
+I am here 6
+#endif
+I am here 7
+#if !defined FOO \
+ && defined BAR
+I am here 8
+#endif
+I am here 9 (last)
+
+*** End